{"version":3,"file":"js/app.c14287b5.js","mappings":"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Y,IAAIC,WAAW,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,KAC94CC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,y3FACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,KACx5CC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,27FACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,G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I,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC55CC,sBAAsB,GAE1B,CACIlwB,KAAM,kBACN2vB,OAAQ,CACJ3vB,KAAM,SACN4vB,IAAK,6CAETC,QAAS,CACL7vB,KAAM,sEACN4vB,IAAK,qDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,wQACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,I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AI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IA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IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,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,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,KACh6CC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,y4FACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,KACx6CC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,u4FACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAA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AI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,KACl7CC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,44FACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAC36CC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,y5FACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,I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AI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IA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IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,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,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,KACj5CC,sBAAsB,GAE1B,CACIlwB,KAAM,SACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,o5FACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,KACn7CC,sBAAsB,GAE1B,CACIlwB,KAAM,SACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,81FACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAA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AE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAC9wCC,sBAAsB,GAE1B,CACIlwB,KAAM,QACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,8nWACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,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I,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,KAChtFC,sBAAsB,GAE1B,CACIlwB,KAAM,SACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,2sFACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,IAC3uCC,sBAAsB,GAE1B,CACIlwB,KAAM,UACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,o4WACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAC3uFC,sBAAsB,GAE1B,CACIlwB,KAAM,SACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,21FACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC33CC,sBAAsB,GAE1B,CACIlwB,KAAM,eACN2vB,OAAQ,CACJ3vB,KAAM,mBACN4vB,IAAK,MAETC,QAAS,CACL7vB,KAAM,gBACN4vB,IAAK,MAET9S,MAAO,EAAE,EAAG,GACZgT,WAAW,EACXC,WAAY,0oBACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KAC3LC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,w1FACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MACt3CC,sBAAsB,GAE1B,CACIlwB,KAAM,MACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,opFACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE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G,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KACp5CC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,o5FACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,MACl7CC,sBAAsB,GAE1B,CACIlwB,KAAM,WACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,+7FACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GA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AIC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MACj3CC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,s4WACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAC5uFC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,04WACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAC9uFC,sBAAsB,GAE1B,CACIlwB,KAAM,QACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,0yWACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAC9rFC,sBAAsB,GAE1B,CACIlwB,KAAM,QACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,skXACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAC50FC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,87WACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,IACzwFC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,krFACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IACltCC,sBAAsB,GAE1B,CACIlwB,KAAM,aACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,i2FACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAC/3CC,sBAAsB,GAE1B,CACIlwB,KAAM,YACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,21FACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MACz3CC,sBAAsB,GAE1B,CACIlwB,KAAM,YACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,snFACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MACppCC,sBAAsB,GAE1B,CACIlwB,KAAM,YACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,0wFACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MACxyCC,sBAAsB,GAE1B,CACIlwB,KAAM,eACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,4sFACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,MAC1uCC,sBAAsB,GAE1B,CACIlwB,KAAM,aACN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AI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC33CC,sBAAsB,GAE1B,CACIlwB,KAAM,UACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,itFACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,IACjvCC,sBAAsB,GAE1B,CACIlwB,KAAM,WACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,4vFACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,I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AAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAChwFC,sBAAsB,GAE1B,CACIlwB,KAAM,MACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,orFACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MACltCC,sBAAsB,GAE1B,CACIlwB,KAAM,MACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,8sFACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,KAC7uCC,sBAAsB,GAE1B,CACIlwB,KAAM,MACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,0yWACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAA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AE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IACvvCC,sBAAsB,GAE1B,CACIlwB,KAAM,WACN2vB,OAAQ,CACJ3vB,KAAM,mBACN4vB,IAAK,qBAETC,QAAS,CACL7vB,KAAM,YACN4vB,IAAK,oDAET9S,MAAO,EAAE,IAAK,KACdgT,WAAW,EACXC,WAAY,wFACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MACv1EC,sBAAsB,GAE1B,CACIlwB,KAAM,QACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,y0FACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MACv2CC,sBAAsB,GAE1B,CACIlwB,KAAM,SACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,guWACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KACzpFC,sBAAsB,GAE1B,CACIlwB,KAAM,gBACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,upFACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EA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E,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MACpuCC,sBAAsB,GAE1B,CACIlwB,KAAM,MACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,04WACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KAC9uFC,sBAAsB,GAE1B,CACIlwB,KAAM,QACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,k6WACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KAC1vFC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,y7FACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MACv9CC,sBAAsB,GAE1B,CACIlwB,KAAM,SACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,s0FACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KACr2CC,sBAAsB,GAE1B,CACIlwB,KAAM,QACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,4sFACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,IACxtCC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,83WACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KACxuFC,sBAAsB,GAE1B,CACIlwB,KAAM,UACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,i4FACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IACj6CC,sBAAsB,GAE1B,CACIlwB,KAAM,UACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,qsFACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IACruCC,sBAAsB,GAE1B,CACIlwB,KAAM,QACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,kpWACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KAClnFC,sBAAsB,GAE1B,CACIlwB,KAAM,QACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,4oWACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAA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8FACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IA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I,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KACjvFC,sBAAsB,GAE1B,CACIlwB,KAAM,QACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,85WACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KACxvFC,sBAAsB,GAE1B,CACIlwB,KAAM,UACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,g7FACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAC98CC,sBAAsB,GAE1B,CACIlwB,KAAM,UACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,syWACZC,WAAY,IAAIC,WAAW,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KAC5rFC,sBAAsB,GAE1B,CACIlwB,KAAM,OACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,40WACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAC9sFC,sBAAsB,GAE1B,CACIlwB,KAAM,SACN2vB,OAAQ,CACJ3vB,KAAM,oBACN4vB,IAAK,4BAETC,QAAS,CACL7vB,KAAM,cACN4vB,IAAK,sEAET9S,MAAO,CAAC,EAAG,KACXgT,WAAW,EACXC,WAAY,4uWACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAC/pFC,sBAAsB,GAE1B,CACIlwB,KAAM,QACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,4zFACZC,WAAY,IAAIC,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAC51CC,sBAAsB,GAE1B,CACIlwB,KAAM,WACN2vB,OAAQ,CACJ3vB,KAAM,0BACN4vB,IAAK,0BAETC,QAAS,CACL7vB,KAAM,qBACN4vB,IAAK,oDAET9S,MAAO,CAAC,EAAG,GACXgT,WAAW,EACXC,WAAY,y2FACZC,WAAY,IAAIC,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,I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AAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,MACzuCC,sBAAsB,ICttDpB,MAAOC,EA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","sources":["webpack://tileclient/./src/App.vue","webpack://tileclient/./src/components/threedee.vue","webpack://tileclient/./src/modules/vecmat.ts","webpack://tileclient/./src/modules/tile.ts","webpack://tileclient/./src/services/PositionService.ts","webpack://tileclient/./src/modules/barrier.ts","webpack://tileclient/./src/modules/awaitable_delay.ts","webpack://tileclient/./src/services/SettingsService.ts","webpack://tileclient/./src/modules/Parameter.ts","webpack://tileclient/./src/services/InitializationService.ts","webpack://tileclient/./src/services/InteractionService.ts","webpack://tileclient/./src/shaders/Shaders.ts","webpack://tileclient/./src/services/GLService.ts","webpack://tileclient/./src/colormaps/colormap.js","webpack://tileclient/./src/services/ColormapService.ts","webpack://tileclient/./src/services/TileCacheService.ts","webpack://tileclient/./src/services/TimeService.ts","webpack://tileclient/./src/modules/RenderGroup.ts","webpack://tileclient/./src/services/RenderLayerService.ts","webpack://tileclient/./src/services/SourceInfoService.ts","webpack://tileclient/./src/services/OverlayService.ts","webpack://tileclient/./src/services/DialogBoxService.ts","webpack://tileclient/./src/services/AdaptivePerformanceService.ts","webpack://tileclient/./src/services/RequiredTilesService.ts","webpack://tileclient/./src/modules/renderfilters/RenderFilter.ts","webpack://tileclient/./src/modules/PipelineFramebuffer.ts","webpack://tileclient/./src/services/RenderService.ts","webpack://tileclient/./src/services/UIDService.ts","webpack://tileclient/./src/services/StitchedTilesService.ts","webpack://tileclient/./src/services/LayerMetadataService.ts","webpack://tileclient/./src/services/PointSamplingService.ts","webpack://tileclient/./src/services/ParameterBroadcastService.ts","webpack://tileclient/./src/services/ParticlesService.ts","webpack://tileclient/./src/services/CameraService.ts","webpack://tileclient/./src/services/StaticToBlobService.ts","webpack://tileclient/./src/services/ProgressReportingDownloadService.ts","webpack://tileclient/./src/services/PlaybackService.ts","webpack://tileclient/./src/modules/rendersources/RenderSource.ts","webpack://tileclient/./src/modules/rendersources/TileRenderSource.ts","webpack://tileclient/./src/modules/renderfilters/ColormapFilter.ts","webpack://tileclient/./src/modules/renderfilters/HillShadingFilter.ts","webpack://tileclient/./src/modules/rendersources/VectorPointRenderSource.ts","webpack://tileclient/./src/modules/rendersources/LineRenderSource.ts","webpack://tileclient/./src/modules/rendersources/VectorTracerArrowSource.ts","webpack://tileclient/./src/modules/rendersources/PieChartPointRenderSource.ts","webpack://tileclient/./src/modules/rendersources/PointCloudRenderSource.ts","webpack://tileclient/./src/modules/renderfilters/DomeLightingFilter.ts","webpack://tileclient/./src/modules/rendersources/ColorPointCloudRenderSource.ts","webpack://tileclient/./src/modules/RenderLayer.ts","webpack://tileclient/./src/services/ExtentVisualizationService.ts","webpack://tileclient/./src/services/TextRenderingService.ts","webpack://tileclient/./src/services/DebugService.ts","webpack://tileclient/./src/services/SynchronizationService.ts","webpack://tileclient/./src/services/FormattingService.ts","webpack://tileclient/./src/modules/tar.ts","webpack://tileclient/./src/services/RecordingService.ts","webpack://tileclient/./src/services/FlexibleTimeBaseService.ts","webpack://tileclient/./src/services/ProjectorConfigurationService.ts","webpack://tileclient/./src/modules/ModelObject.ts","webpack://tileclient/./src/services/ModelRepositoryService.ts","webpack://tileclient/./src/services/SerializationService.ts","webpack://tileclient/./src/services/ScaleIndicatorService.ts","webpack://tileclient/./src/services/MeasurementService.ts","webpack://tileclient/./src/services/Services.ts","webpack://tileclient/src/components/threedee.vue","webpack://tileclient/./src/components/threedee.vue?d6e4","webpack://tileclient/./src/components/threedee.vue?5224","webpack://tileclient/./src/components/timeslider.vue","webpack://tileclient/src/components/timeslider.vue","webpack://tileclient/./src/components/timeslider.vue?f4ba","webpack://tileclient/./src/components/timeslider.vue?1c6a","webpack://tileclient/./src/components/compass.vue","webpack://tileclient/./src/components/guikit/svgIcon.vue","webpack://tileclient/src/components/guikit/svgIcon.vue","webpack://tileclient/./src/components/guikit/svgIcon.vue?13bb","webpack://tileclient/./src/components/guikit/svgIcon.vue?0d4a","webpack://tileclient/src/components/compass.vue","webpack://tileclient/./src/components/compass.vue?0247","webpack://tileclient/./src/components/compass.vue?a495","webpack://tileclient/./src/components/overlays.vue","webpack://tileclient/./src/components/overlays/scalarOverlay.vue","webpack://tileclient/src/components/overlays/scalarOverlay.vue","webpack://tileclient/./src/components/overlays/scalarOverlay.vue?9730","webpack://tileclient/./src/components/overlays/scalarOverlay.vue?ed19","webpack://tileclient/./src/components/overlays/colorOverlay.vue","webpack://tileclient/src/components/overlays/colorOverlay.vue","webpack://tileclient/./src/components/overlays/colorOverlay.vue?fe44","webpack://tileclient/./src/components/overlays/colorOverlay.vue?6594","webpack://tileclient/./src/components/overlays/turbidityOverlay.vue","webpack://tileclient/src/components/overlays/turbidityOverlay.vue","webpack://tileclient/./src/components/overlays/turbidityOverlay.vue?cf4e","webpack://tileclient/./src/components/overlays/turbidityOverlay.vue?8889","webpack://tileclient/./src/components/overlays/scaleOverlay.vue","webpack://tileclient/./src/components/guikit/numberinput.vue","webpack://tileclient/src/components/guikit/numberinput.vue","webpack://tileclient/./src/components/guikit/numberinput.vue?f47f","webpack://tileclient/./src/components/guikit/numberinput.vue?87ca","webpack://tileclient/src/components/overlays/scaleOverlay.vue","webpack://tileclient/./src/components/overlays/scaleOverlay.vue?e7ab","webpack://tileclient/./src/components/overlays/scaleOverlay.vue?1102","webpack://tileclient/src/components/overlays.vue","webpack://tileclient/./src/components/overlays.vue?b3f9","webpack://tileclient/./src/components/overlays.vue?9212","webpack://tileclient/./src/components/scale.vue","webpack://tileclient/src/components/scale.vue","webpack://tileclient/./src/components/scale.vue?20c5","webpack://tileclient/./src/components/scale.vue?5bd8","webpack://tileclient/./src/components/loadingindicator.vue","webpack://tileclient/src/components/loadingindicator.vue","webpack://tileclient/./src/components/loadingindicator.vue?eb3c","webpack://tileclient/./src/components/loadingindicator.vue?a09d","webpack://tileclient/./src/components/menucomponent.vue","webpack://tileclient/src/components/menucomponent.vue","webpack://tileclient/./src/components/menucomponent.vue?55dc","webpack://tileclient/./src/components/menucomponent.vue?cd27","webpack://tileclient/./src/components/dialogBoxes.vue","webpack://tileclient/./src/components/settingscomponent.vue","webpack://tileclient/./src/components/guikit/foldGroup.vue","webpack://tileclient/src/components/guikit/foldGroup.vue","webpack://tileclient/./src/components/guikit/foldGroup.vue?c96f","webpack://tileclient/./src/components/guikit/foldGroup.vue?bb0d","webpack://tileclient/src/components/settingscomponent.vue","webpack://tileclient/./src/components/settingscomponent.vue?2146","webpack://tileclient/./src/components/settingscomponent.vue?db29","webpack://tileclient/./src/components/aboutdialogue.vue","webpack://tileclient/./src/components/guikit/scrollbox.vue","webpack://tileclient/src/components/guikit/scrollbox.vue","webpack://tileclient/./src/components/guikit/scrollbox.vue?57e1","webpack://tileclient/./src/components/guikit/scrollbox.vue?81af","webpack://tileclient/src/components/aboutdialogue.vue","webpack://tileclient/./src/components/aboutdialogue.vue?1c3e","webpack://tileclient/./src/components/aboutdialogue.vue?b3cb","webpack://tileclient/./src/components/dialogbox.vue","webpack://tileclient/src/components/dialogbox.vue","webpack://tileclient/./src/components/dialogbox.vue?e40c","webpack://tileclient/./src/components/dialogbox.vue?6808","webpack://tileclient/./src/components/typeselectiondialog.vue","webpack://tileclient/src/components/typeselectiondialog.vue","webpack://tileclient/./src/components/typeselectiondialog.vue?2097","webpack://tileclient/./src/components/typeselectiondialog.vue?1911","webpack://tileclient/./src/components/layerstack.vue","webpack://tileclient/./src/components/layergroupcomponent.vue","webpack://tileclient/src/components/layergroupcomponent.vue","webpack://tileclient/./src/components/layergroupcomponent.vue?ff90","webpack://tileclient/./src/components/layergroupcomponent.vue?233b","webpack://tileclient/src/components/layerstack.vue","webpack://tileclient/./src/components/layerstack.vue?65f0","webpack://tileclient/./src/components/layerstack.vue?47c9","webpack://tileclient/./src/components/sourceselectiondialog.vue","webpack://tileclient/./src/components/sourcelayerbadge.vue","webpack://tileclient/src/components/sourcelayerbadge.vue","webpack://tileclient/./src/components/sourcelayerbadge.vue?77f8","webpack://tileclient/./src/components/sourcelayerbadge.vue?a64a","webpack://tileclient/src/components/sourceselectiondialog.vue","webpack://tileclient/./src/components/sourceselectiondialog.vue?9770","webpack://tileclient/./src/components/sourceselectiondialog.vue?b6bd","webpack://tileclient/./src/components/playbackcomponent.vue","webpack://tileclient/src/components/playbackcomponent.vue","webpack://tileclient/./src/components/playbackcomponent.vue?9672","webpack://tileclient/./src/components/playbackcomponent.vue?a86b","webpack://tileclient/./src/components/layercomponent.vue","webpack://tileclient/./src/components/parametercomponent.vue","webpack://tileclient/./src/components/guikit/vectorinput.vue","webpack://tileclient/src/components/guikit/vectorinput.vue","webpack://tileclient/./src/components/guikit/vectorinput.vue?f9b3","webpack://tileclient/./src/components/guikit/vectorinput.vue?b7e8","webpack://tileclient/src/components/parametercomponent.vue","webpack://tileclient/./src/components/parametercomponent.vue?d6db","webpack://tileclient/./src/components/parametercomponent.vue?6896","webpack://tileclient/src/components/layercomponent.vue","webpack://tileclient/./src/components/layercomponent.vue?f268","webpack://tileclient/./src/components/layercomponent.vue?44b8","webpack://tileclient/./src/components/debugcomponent.vue","webpack://tileclient/src/components/debugcomponent.vue","webpack://tileclient/./src/components/debugcomponent.vue?a74d","webpack://tileclient/./src/components/debugcomponent.vue?65d0","webpack://tileclient/./src/components/recordingplayback.vue","webpack://tileclient/src/components/recordingplayback.vue","webpack://tileclient/./src/components/recordingplayback.vue?6032","webpack://tileclient/./src/components/recordingplayback.vue?a51b","webpack://tileclient/./src/components/programstatuscomponent.vue","webpack://tileclient/src/components/programstatuscomponent.vue","webpack://tileclient/./src/components/programstatuscomponent.vue?8827","webpack://tileclient/./src/components/programstatuscomponent.vue?a510","webpack://tileclient/./src/components/savedialogue.vue","webpack://tileclient/src/components/savedialogue.vue","webpack://tileclient/./src/components/savedialogue.vue?64ce","webpack://tileclient/./src/components/savedialogue.vue?7bd9","webpack://tileclient/./src/components/manualcomponent.vue","webpack://tileclient/src/components/manualcomponent.vue","webpack://tileclient/./src/components/manualcomponent.vue?f91d","webpack://tileclient/./src/components/manualcomponent.vue?4df6","webpack://tileclient/src/components/dialogBoxes.vue","webpack://tileclient/./src/components/dialogBoxes.vue?85cc","webpack://tileclient/./src/components/dialogBoxes.vue?7375","webpack://tileclient/./src/components/logocomponent.vue","webpack://tileclient/src/components/logocomponent.vue","webpack://tileclient/./src/components/logocomponent.vue?fbc4","webpack://tileclient/./src/components/logocomponent.vue?ad1b","webpack://tileclient/src/App.vue","webpack://tileclient/./src/App.vue?c036","webpack://tileclient/./src/App.vue?0e40","webpack://tileclient/./src/main.ts","webpack://tileclient/webpack/bootstrap","webpack://tileclient/webpack/runtime/chunk loaded","webpack://tileclient/webpack/runtime/define property getters","webpack://tileclient/webpack/runtime/global","webpack://tileclient/webpack/runtime/hasOwnProperty shorthand","webpack://tileclient/webpack/runtime/jsonp chunk loading","webpack://tileclient/webpack/startup"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"inner\"}},[_c('a',{staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"downloadlink\",\"href\":\"#\",\"download\":\"initial_layers.json\"}}),_c('threedee'),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ui_visible),expression:\"ui_visible\"}],attrs:{\"id\":\"ui\"}},[_c('timeslider'),_c('compass'),_c('overlays'),_c('dialogboxes'),_c('scale'),_c('loadingindicator'),_c('menucomponent'),_c('logo')],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"display\",on:{\"wheel\":_vm.wheel_evt,\"mousedown\":_vm.mousedown_evt,\"mouseup\":_vm.mouseup_evt,\"mouseleave\":_vm.mouseout_evt,\"touchstart\":_vm.touchstart_evt,\"dblclick\":_vm.doubleclick_evt}},[_c('canvas',{staticStyle:{\"position\":\"absolute\",\"top\":\"0\",\"left\":\"0\",\"width\":\"100%\",\"height\":\"100%\"},attrs:{\"id\":\"canvas\"}}),_c('svg',{staticStyle:{\"position\":\"absolute\",\"top\":\"0\",\"left\":\"0\",\"width\":\"100%\",\"height\":\"100%\",\"opacity\":\"0\"},attrs:{\"id\":\"scale-svg\",\"viewBox\":\"0 0 1 1\"}}),_c('svg',{staticStyle:{\"position\":\"absolute\",\"top\":\"0\",\"left\":\"0\",\"width\":\"100%\",\"height\":\"100%\",\"opacity\":\"0\"},attrs:{\"id\":\"measure-svg\",\"viewBox\":\"0 0 1 1\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nexport class Vec2{\r\n public x1: number;\r\n public x2: number;\r\n\r\n constructor(x1: number, x2: number){\r\n this.x1 = x1;\r\n this.x2 = x2;\r\n }\r\n\r\n public mul(rhs: number): Vec2 {\r\n return new Vec2(this.x1 * rhs, this.x2 * rhs);\r\n }\r\n\r\n public add(rhs: Vec2): Vec2 {\r\n return new Vec2(this.x1 + rhs.x1, this.x2 + rhs.x2);\r\n }\r\n\r\n public sub(rhs: Vec2): Vec2{\r\n return new Vec2(this.x1 - rhs.x1, this.x2 - rhs.x2);\r\n }\r\n\r\n public neg(): Vec2{\r\n return new Vec2(-this.x1, -this.x2);\r\n }\r\n\r\n public dot(rhs: Vec2) : number {\r\n return this.x1 * rhs.x1 + this.x2 * rhs.x2;\r\n }\r\n public cross(rhs: Vec2) : number {\r\n return this.x1 * rhs.x2 - this.x2 * rhs.x1;\r\n }\r\n\r\n public abs() : number {\r\n return Math.sqrt(this.x1 * this.x1 + this.x2 * this.x2);\r\n }\r\n\r\n public norm() : Vec2 {\r\n return this.mul(1.0 / this.abs());\r\n }\r\n\r\n ///Returns the vector with the components swapped\r\n public transpose(): Vec2{\r\n return new Vec2(this.x2, this.x1);\r\n }\r\n\r\n ///Returns the vector with the components swapped\r\n public orthogonal(): Vec2{\r\n let sign = Math.sign(this.x2);\r\n return new Vec2(Math.abs(this.x2), sign * -1.0 * this.x1);\r\n }\r\n\r\n public len(): number{\r\n return Math.sqrt((this.x1 * this.x1) + (this.x2 * this.x2));\r\n }\r\n}\r\n\r\n\r\nexport class Vec3 {\r\n public x1: number;\r\n public x2: number;\r\n public x3: number;\r\n\r\n constructor(x1: number, x2: number, x3: number){\r\n this.x1 = x1;\r\n this.x2 = x2;\r\n this.x3 = x3;\r\n }\r\n\r\n public static empty() : Vec3 {\r\n return new Vec3(\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n );\r\n }\r\n\r\n public static from_fv(x1: number, x2x3: Vec2) : Vec3 {\r\n return new Vec3(\r\n x1,\r\n x2x3.x1,\r\n x2x3.x2,\r\n );\r\n }\r\n\r\n public static from_vf(x1x2: Vec2, x3: number) : Vec3 {\r\n return new Vec3(\r\n x1x2.x1,\r\n x1x2.x2,\r\n x3,\r\n );\r\n }\r\n\r\n public dot(rhs: Vec3) : number {\r\n return this.x1 * rhs.x1 + this.x2 * rhs.x2 + this.x3 * rhs.x3;\r\n }\r\n\r\n public cross(rhs: Vec3) : Vec3 {\r\n return new Vec3(\r\n this.x2 * rhs.x3 - this.x3 * rhs.x2,\r\n this.x3 * rhs.x1 - this.x1 * rhs.x3,\r\n this.x1 * rhs.x2 - this.x2 * rhs.x1,\r\n );\r\n }\r\n \r\n public dyadic(rhs: Vec3) : Mat3 {\r\n return new Mat3(\r\n this.x1 * rhs.x1,\r\n this.x1 * rhs.x2,\r\n this.x1 * rhs.x3,\r\n this.x2 * rhs.x1,\r\n this.x2 * rhs.x2,\r\n this.x2 * rhs.x3,\r\n this.x3 * rhs.x1,\r\n this.x3 * rhs.x2,\r\n this.x3 * rhs.x3\r\n );\r\n }\r\n\r\n public abs() : number {\r\n return Math.sqrt(this.x1 * this.x1 + this.x2 * this.x2 + this.x3 * this.x3);\r\n }\r\n\r\n public norm() : Vec3 {\r\n return this.mul(1.0 / this.abs());\r\n }\r\n\r\n public mul(rhs: number) : Vec3 {\r\n return new Vec3(this.x1 * rhs, this.x2 * rhs, this.x3 * rhs);\r\n }\r\n\r\n public add(rhs: Vec3) : Vec3 {\r\n return new Vec3(this.x1 + rhs.x1, this.x2 + rhs.x2, this.x3 + rhs.x3);\r\n }\r\n\r\n public sub(rhs: Vec3) : Vec3 {\r\n return new Vec3(this.x1 - rhs.x1, this.x2 - rhs.x2, this.x3 - rhs.x3);\r\n }\r\n\r\n public neg() : Vec3 {\r\n return new Vec3(-this.x1, -this.x2, -this.x3);\r\n }\r\n\r\n public ortho() : Vec3 {\r\n if (this.x1 == 0 && this.x2 == 0) return new Vec3(1, 0, 0);\r\n return new Vec3(this.x2, -this.x1, 0).norm();\r\n }\r\n}\r\n\r\n\r\nexport class Vec4{\r\n public x1: number;\r\n public x2: number;\r\n public x3: number;\r\n public x4: number;\r\n\r\n constructor(r: number, g: number, b: number, a: number){\r\n this.x1 = r;\r\n this.x2 = g;\r\n this.x3 = b;\r\n this.x4 = a;\r\n }\r\n\r\n public static empty(): Vec4 {\r\n return new Vec4 (\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n );\r\n }\r\n\r\n public static from_vff(rg: Vec2, b: number, a: number) : Vec4 {\r\n return new Vec4(\r\n rg.x1,\r\n rg.x2,\r\n b,\r\n a\r\n );\r\n }\r\n\r\n public static from_vf(rgb: Vec3, a: number) : Vec4 {\r\n return new Vec4(\r\n rgb.x1,\r\n rgb.x2,\r\n rgb.x3,\r\n a\r\n );\r\n }\r\n\r\n public static from_fvf(r: number, gb: Vec2, a: number) : Vec4 {\r\n return new Vec4 (\r\n r,\r\n gb.x1,\r\n gb.x2,\r\n a\r\n );\r\n }\r\n\r\n public static from_ffv(r: number, g: number, ba: Vec2) : Vec4 {\r\n return new Vec4 (\r\n r,\r\n g,\r\n ba.x1,\r\n ba.x2,\r\n );\r\n }\r\n\r\n public static from_fv(r: number, gba: Vec3) : Vec4 {\r\n return new Vec4 (\r\n r,\r\n gba.x1,\r\n gba.x2,\r\n gba.x3,\r\n );\r\n }\r\n\r\n public static from_vv(rg: Vec2, ba: Vec2) : Vec4 {\r\n return new Vec4(\r\n rg.x1,\r\n rg.x2,\r\n ba.x1,\r\n ba.x2,\r\n );\r\n }\r\n\r\n public dot(rhs: Vec4) : number {\r\n return this.x1 * rhs.x1 + this.x2 * rhs.x2 + this.x3 * rhs.x3 + this.x4 * rhs.x4;\r\n }\r\n\r\n public abs() : number {\r\n return Math.sqrt(this.x1 * this.x1 + this.x2 * this.x2 + this.x3 * this.x3 + this.x4 * this.x4);\r\n }\r\n\r\n public norm() : Vec4 {\r\n return this.mul(1.0 / this.abs());\r\n }\r\n\r\n public mul(rhs: number) : Vec4 {\r\n return new Vec4(this.x1 * rhs, this.x2 * rhs, this.x3 * rhs, this.x4 * rhs);\r\n }\r\n\r\n public add(rhs: Vec4) : Vec4 {\r\n return new Vec4(\r\n this.x1 + rhs.x1,\r\n this.x2 + rhs.x2,\r\n this.x3 + rhs.x3,\r\n this.x4 + rhs.x4,\r\n );\r\n }\r\n\r\n public sub(rhs: Vec4) : Vec4 {\r\n return new Vec4(\r\n this.x1 - rhs.x1,\r\n this.x2 - rhs.x2,\r\n this.x3 - rhs.x3,\r\n this.x4 - rhs.x4,\r\n );\r\n }\r\n\r\n public neg() : Vec4 {\r\n return new Vec4(-this.x1, -this.x2, -this.x3, -this.x4);\r\n }\r\n\r\n public rgb() : Vec3 {\r\n return new Vec3(this.x1, this.x2, this.x3);\r\n }\r\n}\r\n\r\nexport class Quaternion{\r\n public w: number;\r\n public x: number;\r\n public y: number;\r\n public z: number;\r\n \r\n constructor(w: number, x: number, y: number, z: number){\r\n this.w = w;\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n }\r\n\r\n public mul_scalar(scalar: number): Quaternion{\r\n return new Quaternion(\r\n this.w * scalar,\r\n this.x * scalar,\r\n this.y * scalar,\r\n this.z * scalar\r\n );\r\n }\r\n\r\n public add(rhs: Quaternion): Quaternion{\r\n return new Quaternion(\r\n this.w + rhs.w,\r\n this.x + rhs.x,\r\n this.y + rhs.y,\r\n this.z + rhs.z\r\n );\r\n }\r\n\r\n public sub(rhs: Quaternion): Quaternion{\r\n return new Quaternion(\r\n this.w - rhs.w,\r\n this.x - rhs.x,\r\n this.y - rhs.y,\r\n this.z - rhs.z\r\n );\r\n }\r\n\r\n public mul(rhs: Quaternion): Quaternion{\r\n return new Quaternion(\r\n (\r\n (this.w * rhs.w)\r\n - (this.x * rhs.x)\r\n - (this.y * rhs.y)\r\n - (this.z * rhs.z)\r\n ),\r\n (\r\n (this.w * rhs.x)\r\n + (this.x * rhs.w)\r\n + (this.y * rhs.z)\r\n - (this.z * rhs.y)\r\n ),\r\n (\r\n (this.w * rhs.y)\r\n - (this.x * rhs.z)\r\n + (this.y * rhs.w)\r\n + (this.z * rhs.x)\r\n ),\r\n (\r\n (this.w * rhs.z)\r\n + (this.x * rhs.y)\r\n - (this.y * rhs.x)\r\n + (this.z * rhs.w)\r\n )\r\n )\r\n }\r\n\r\n public normalize(): Quaternion{\r\n let len = this.length();\r\n return new Quaternion(\r\n this.w / len,\r\n this.x / len,\r\n this.y / len,\r\n this.z / len\r\n )\r\n }\r\n\r\n public norm(): number{\r\n return Math.pow(this.w, 2) + Math.pow(this.x, 2) + Math.pow(this.y, 2) + Math.pow(this.z, 2);\r\n }\r\n\r\n public length(): number{\r\n return Math.sqrt(this.norm());\r\n }\r\n\r\n public conjugate(): Quaternion{\r\n return new Quaternion(\r\n this.w,\r\n -this.x,\r\n -this.y,\r\n -this.z\r\n );\r\n }\r\n\r\n public invert(): Quaternion{\r\n return this.mul_scalar(1 / this.norm());\r\n }\r\n\r\n public neg(): Quaternion{\r\n return this.mul_scalar(-1);\r\n }\r\n\r\n public static fromVec4(v: Vec4): Quaternion{\r\n return new Quaternion(v.x1, v.x2, v.x3, v.x4);\r\n }\r\n\r\n public to_rotation_matrix(): Mat3{\r\n return new Mat3(\r\n 1 - (2 * (Math.pow(this.y, 2) + Math.pow(this.z, 2))), (-2 * this.w * this.z) + (2 * this.x * this.y), (2 * this.w * this.y) + (2 * this.x * this.z),\r\n\r\n (2 * this.w * this.z) + (2 * this.x * this.y), 1 - (2 * (Math.pow(this.x, 2) + Math.pow(this.z, 2))), (-2 * this.w * this.x) + (2 * this.y * this.z),\r\n\r\n (-2 * this.w * this.y) + (2 * this.x * this.z), (2* this.w * this.x) + (2 * this.y * this.z), 1 - (2 * (Math.pow(this.x, 2) + Math.pow(this.y, 2)))\r\n )\r\n }\r\n\r\n public static from_rotation_matrix(rot: Mat3): Quaternion{\r\n let trace = 1 + rot.a11 + rot.a22 + rot.a33;\r\n if(trace <= 0){\r\n throw \"The trace of the rotation matrix needs to be larger than zero to construct a quaternion from it\";\r\n }\r\n return new Quaternion(\r\n trace,\r\n rot.a32 - rot.a23,\r\n rot.a13 - rot.a31,\r\n rot.a21 - rot.a12\r\n )\r\n }\r\n\r\n public static from_axis_and_angle(axis: Vec3, angle: number): Quaternion{\r\n let normal_axis = axis.norm();\r\n let sin_a_half = Math.sin(angle / 2);\r\n return new Quaternion(\r\n Math.cos(angle / 2),\r\n normal_axis.x1 * sin_a_half,\r\n normal_axis.x2 * sin_a_half,\r\n normal_axis.x3 * sin_a_half\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\nexport class Mat2 {\r\n public a11: number;\r\n public a12: number;\r\n public a21: number;\r\n public a22: number;\r\n\r\n constructor(a11: number, a12: number, a21: number, a22: number){\r\n this.a11 = a11;\r\n this.a12 = a12;\r\n this.a21 = a21;\r\n this.a22 = a22;\r\n }\r\n\r\n public static from_cols(a1: Vec2, a2: Vec2) : Mat2 {\r\n return new Mat2(\r\n a1.x1,\r\n a2.x1,\r\n a1.x2,\r\n a2.x2,\r\n );\r\n }\r\n\r\n public static from_lins(a1: Vec2, a2: Vec2) : Mat2 {\r\n return new Mat2(\r\n a1.x1,\r\n a1.x2,\r\n a2.x1,\r\n a2.x2,\r\n );\r\n }\r\n\r\n public static rot(phi: number) : Mat2 {\r\n return new Mat2(\r\n Math.cos(phi),\r\n -(Math.sin(phi)),\r\n Math.sin(phi),\r\n Math.cos(phi),\r\n );\r\n }\r\n\r\n public static identity() : Mat2 {\r\n return new Mat2(\r\n 1.0,\r\n 0.0,\r\n 0.0,\r\n 1.0,\r\n );\r\n }\r\n\r\n public transpose() : Mat2 {\r\n return new Mat2(\r\n this.a11,\r\n this.a21,\r\n this.a12,\r\n this.a22,\r\n );\r\n }\r\n\r\n public det() : number {\r\n return this.a11 * this.a22 - this.a12 * this.a21;\r\n }\r\n\r\n public adj() : Mat2 {\r\n return new Mat2(\r\n this.a22,\r\n -this.a12,\r\n -this.a21,\r\n this.a11,\r\n );\r\n }\r\n\r\n public inverse() : Mat2{\r\n if(this.det() == 0.0){\r\n return null;\r\n } else {\r\n return this.adj().mul_number(1.0 / this.det());\r\n }\r\n }\r\n\r\n public mul_number(rhs: number) : Mat2{\r\n return new Mat2(\r\n this.a11 * rhs,\r\n this.a12 * rhs,\r\n this.a21 * rhs,\r\n this.a22 * rhs,\r\n );\r\n }\r\n\r\n public mul_vec2(rhs: Vec2) : Vec2 {\r\n return new Vec2(\r\n this.a11 * rhs.x1 + this.a12 * rhs.x2,\r\n this.a21 * rhs.x1 + this.a22 * rhs.x2,\r\n );\r\n }\r\n\r\n public mul_mat2(rhs: Mat2) : Mat2 {\r\n return new Mat2(\r\n this.a11 * rhs.a11 + this.a12 * rhs.a21,\r\n this.a11 * rhs.a12 + this.a12 * rhs.a22,\r\n this.a21 * rhs.a11 + this.a22 * rhs.a21,\r\n this.a21 * rhs.a12 + this.a22 * rhs.a22,\r\n );\r\n }\r\n}\r\n\r\nexport class Mat3 {\r\n public a11: number;\r\n public a12: number;\r\n public a13: number;\r\n public a21: number;\r\n public a22: number;\r\n public a23: number;\r\n public a31: number;\r\n public a32: number;\r\n public a33: number;\r\n\r\n constructor(a11: number, a12: number, a13: number, a21: number, a22: number, a23: number, a31: number, a32: number, a33: number){\r\n this.a11 = a11;\r\n this.a12 = a12;\r\n this.a13 = a13;\r\n this.a21 = a21;\r\n this.a22 = a22;\r\n this.a23 = a23;\r\n this.a31 = a31;\r\n this.a32 = a32;\r\n this.a33 = a33;\r\n }\r\n\r\n public static from_cols(a1: Vec3, a2: Vec3, a3: Vec3) : Mat3 {\r\n return new Mat3(\r\n a1.x1,\r\n a2.x1,\r\n a3.x1,\r\n a1.x2,\r\n a2.x2,\r\n a3.x2,\r\n a1.x3,\r\n a2.x3,\r\n a3.x3,\r\n );\r\n }\r\n\r\n public static from_lins(a1: Vec3, a2: Vec3, a3: Vec3) : Mat3 {\r\n return new Mat3(\r\n a1.x1,\r\n a1.x2,\r\n a1.x3,\r\n a2.x1,\r\n a2.x2,\r\n a2.x3,\r\n a3.x1,\r\n a3.x2,\r\n a3.x3,\r\n );\r\n }\r\n\r\n public static identity() : Mat3 {\r\n return new Mat3(\r\n 1.0,\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n 1.0,\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n 1.0,\r\n )\r\n }\r\n\r\n public static rot(phi: number, axis: Vec3) : Mat3 {\r\n let s = Math.sin(phi);\r\n let c = Math.cos(phi);\r\n let c1 = 1.0 - c;\r\n let n = axis.norm();\r\n return new Mat3(\r\n n.x1 * n.x1 * c1 + c,\r\n n.x1 * n.x2 * c1 - n.x3 * s,\r\n n.x1 * n.x3 * c1 + n.x2 * s,\r\n n.x2 * n.x1 * c1 + n.x3 * s,\r\n n.x2 * n.x2 * c1 + c,\r\n n.x2 * n.x3 * c1 - n.x1 * s,\r\n n.x3 * n.x1 * c1 - n.x2 * s,\r\n n.x3 * n.x2 * c1 + n.x1 * s,\r\n n.x3 * n.x3 * c1 + c,\r\n );\r\n }\r\n\r\n public translate(offset: Vec3) : Mat4 {\r\n return new Mat4(\r\n this.a11,\r\n this.a12,\r\n this.a13,\r\n offset.x1,\r\n this.a21,\r\n this.a22,\r\n this.a23,\r\n offset.x2,\r\n this.a31,\r\n this.a32,\r\n this.a33,\r\n offset.x3,\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n 1.0,\r\n );\r\n }\r\n\r\n public extend() : Mat4 {\r\n return new Mat4(\r\n this.a11,\r\n this.a12,\r\n this.a13,\r\n 0.0,\r\n this.a21,\r\n this.a22,\r\n this.a23,\r\n 0.0,\r\n this.a31,\r\n this.a32,\r\n this.a33,\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n 1.0,\r\n );\r\n }\r\n\r\n public transpose() : Mat3 {\r\n return new Mat3(\r\n this.a11,\r\n this.a21,\r\n this.a31,\r\n this.a12,\r\n this.a22,\r\n this.a32,\r\n this.a13,\r\n this.a23,\r\n this.a33,\r\n );\r\n }\r\n\r\n public det() : number {\r\n return (this.a11\r\n * new Mat2(\r\n this.a22,\r\n this.a23,\r\n this.a32,\r\n this.a33,\r\n )\r\n .det()\r\n - this.a21\r\n * new Mat2(\r\n this.a12,\r\n this.a13,\r\n this.a32,\r\n this.a33,\r\n )\r\n .det()\r\n + this.a31\r\n * new Mat2 (\r\n this.a12,\r\n this.a13,\r\n this.a22,\r\n this.a23,\r\n )\r\n .det());\r\n }\r\n\r\n public adj() : Mat3 {\r\n return new Mat3(\r\n new Mat2(\r\n this.a22,\r\n this.a23,\r\n this.a32,\r\n this.a33,\r\n )\r\n .det(),\r\n - new Mat2(\r\n this.a21,\r\n this.a23,\r\n this.a31,\r\n this.a33,\r\n )\r\n .det(),\r\n new Mat2(\r\n this.a21,\r\n this.a22,\r\n this.a31,\r\n this.a32,\r\n )\r\n .det(),\r\n - new Mat2(\r\n this.a12,\r\n this.a13,\r\n this.a32,\r\n this.a33,\r\n )\r\n .det(),\r\n new Mat2(\r\n this.a11,\r\n this.a13,\r\n this.a31,\r\n this.a33,\r\n )\r\n .det(),\r\n - new Mat2(\r\n this.a11,\r\n this.a12,\r\n this.a31,\r\n this.a32,\r\n ).det(),\r\n new Mat2(\r\n this.a12,\r\n this.a13,\r\n this.a22,\r\n this.a23,\r\n )\r\n .det(),\r\n - new Mat2(\r\n this.a11,\r\n this.a13,\r\n this.a21,\r\n this.a23,\r\n )\r\n .det(),\r\n new Mat2(\r\n this.a11,\r\n this.a12,\r\n this.a21,\r\n this.a22,\r\n )\r\n .det(),\r\n )\r\n .transpose();\r\n }\r\n\r\n public inverse() : Mat3 {\r\n if(this.det() == 0.0){\r\n return null\r\n } else {\r\n return (this.adj().mul_number(1.0 / this.det()))\r\n }\r\n }\r\n \r\n public mul_number(rhs: number) : Mat3{\r\n return new Mat3(\r\n this.a11 * rhs,\r\n this.a12 * rhs,\r\n this.a13 * rhs,\r\n this.a21 * rhs,\r\n this.a22 * rhs,\r\n this.a23 * rhs,\r\n this.a31 * rhs,\r\n this.a32 * rhs,\r\n this.a33 * rhs,\r\n );\r\n }\r\n\r\n public mul_vec3(rhs: Vec3) : Vec3 {\r\n return new Vec3(\r\n this.a11 * rhs.x1 + this.a12 * rhs.x2 + this.a13 * rhs.x3,\r\n this.a21 * rhs.x1 + this.a22 * rhs.x2 + this.a23 * rhs.x3,\r\n this.a31 * rhs.x1 + this.a32 * rhs.x2 + this.a33 * rhs.x3,\r\n );\r\n }\r\n\r\n public mul_mat3(rhs: Mat3): Mat3 {\r\n return new Mat3(\r\n this.a11 * rhs.a11 + this.a12 * rhs.a21 + this.a13 * rhs.a31,\r\n this.a11 * rhs.a12 + this.a12 * rhs.a22 + this.a13 * rhs.a32,\r\n this.a11 * rhs.a13 + this.a12 * rhs.a23 + this.a13 * rhs.a33,\r\n this.a21 * rhs.a11 + this.a22 * rhs.a21 + this.a23 * rhs.a31,\r\n this.a21 * rhs.a12 + this.a22 * rhs.a22 + this.a23 * rhs.a32,\r\n this.a21 * rhs.a13 + this.a22 * rhs.a23 + this.a23 * rhs.a33,\r\n this.a31 * rhs.a11 + this.a32 * rhs.a21 + this.a33 * rhs.a31,\r\n this.a31 * rhs.a12 + this.a32 * rhs.a22 + this.a33 * rhs.a32,\r\n this.a31 * rhs.a13 + this.a32 * rhs.a23 + this.a33 * rhs.a33,\r\n );\r\n }\r\n}\r\n\r\n{\r\n let q1 = Quaternion.from_axis_and_angle(new Vec3(1, 2, 3), 1);\r\n let m1 = Mat3.rot(1, new Vec3(1, 2, 3));\r\n let q2 = Quaternion.from_axis_and_angle(new Vec3(-1, 2, 3), 1);\r\n let m2 = Mat3.rot(1, new Vec3(-1, 2, 3));\r\n let q3 = q1.mul(q2);\r\n let m3 = m1.mul_mat3(m2);\r\n}\r\n\r\nexport class Mat4 {\r\n public a11: number;\r\n public a12: number;\r\n public a13: number;\r\n public a14: number;\r\n public a21: number;\r\n public a22: number;\r\n public a23: number;\r\n public a24: number;\r\n public a31: number;\r\n public a32: number;\r\n public a33: number;\r\n public a34: number;\r\n public a41: number;\r\n public a42: number;\r\n public a43: number;\r\n public a44: number;\r\n\r\n constructor(a11: number, a12: number, a13: number, a14: number, a21: number, a22: number, a23: number, a24: number, a31: number, a32: number, a33: number, a34: number, a41: number, a42: number, a43: number, a44: number){\r\n this.a11 = a11;\r\n this.a12 = a12;\r\n this.a13 = a13;\r\n this.a14 = a14;\r\n this.a21 = a21;\r\n this.a22 = a22;\r\n this.a23 = a23;\r\n this.a24 = a24;\r\n this.a31 = a31;\r\n this.a32 = a32;\r\n this.a33 = a33;\r\n this.a34 = a34;\r\n this.a41 = a41;\r\n this.a42 = a42;\r\n this.a43 = a43;\r\n this.a44 = a44;\r\n }\r\n\r\n public static from_cols(a1: Vec4, a2: Vec4, a3: Vec4, a4: Vec4) : Mat4 {\r\n return new Mat4(\r\n a1.x1,\r\n a2.x1,\r\n a3.x1,\r\n a4.x1,\r\n a1.x2,\r\n a2.x2,\r\n a3.x2,\r\n a4.x2,\r\n a1.x3,\r\n a2.x3,\r\n a3.x3,\r\n a4.x3,\r\n a1.x4,\r\n a2.x4,\r\n a3.x4,\r\n a4.x4,\r\n );\r\n }\r\n\r\n public as_cols(): Vec4[] {\r\n return [\r\n new Vec4(this.a11, this.a21, this.a31, this.a41),\r\n new Vec4(this.a12, this.a22, this.a32, this.a42),\r\n new Vec4(this.a13, this.a23, this.a33, this.a43),\r\n new Vec4(this.a14, this.a24, this.a34, this.a44)\r\n ];\r\n }\r\n\r\n public static from_lins(a1: Vec4, a2: Vec4, a3: Vec4, a4: Vec4) : Mat4 {\r\n return new Mat4(\r\n a1.x1,\r\n a1.x2,\r\n a1.x3,\r\n a1.x4,\r\n a2.x1,\r\n a2.x2,\r\n a2.x3,\r\n a2.x4,\r\n a3.x1,\r\n a3.x2,\r\n a3.x3,\r\n a3.x4,\r\n a4.x1,\r\n a4.x2,\r\n a4.x3,\r\n a4.x4,\r\n );\r\n }\r\n\r\n public static identity() : Mat4 {\r\n return new Mat4(\r\n 1.0,\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n 1.0,\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n 1.0,\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n 0.0,\r\n 1.0,\r\n );\r\n }\r\n\r\n //Field of view angle is based on the cone that the frustum touches from the inside. Should give a more uniform FOV between different aspect ratios.\r\n public static perspective(fov: number, aspect: number, near: number, far: number) : Mat4 {\r\n var x = 1 / Math.tan(fov / 2);\r\n var y = aspect / Math.tan(fov / 2);\r\n var c = (far + near) / (far - near);\r\n var d = -2 * far * near / (far - near);\r\n\r\n return new Mat4(\r\n x, 0.0, 0.0, 0.0,\r\n 0.0, y, 0.0, 0.0,\r\n 0.0, 0.0, c, d,\r\n 0.0, 0.0, 1.0, 0.0\r\n );\r\n }\r\n\r\n public static perspective_ext(left: number, right: number, top: number, bottom: number, near: number, far: number): Mat4 {\r\n var x = 2 / (right - left);\r\n var y = 2 / (top - bottom);\r\n \r\n var a = (right + left) / (right - left);\r\n var b = (top + bottom) / (top - bottom);\r\n\r\n var c = (far + near) / (far - near);\r\n var d = - 2 * far * near / (far - near);\r\n \r\n return new Mat4(\r\n x, 0.0, a, 0.0,\r\n 0.0, y, b, 0.0,\r\n 0.0, 0.0, c, d,\r\n 0.0, 0.0, 1.0, 0.0\r\n );\r\n }\r\n \r\n public transpose() : Mat4 {\r\n return new Mat4(\r\n this.a11,\r\n this.a21,\r\n this.a31,\r\n this.a41,\r\n this.a12,\r\n this.a22,\r\n this.a32,\r\n this.a42,\r\n this.a13,\r\n this.a23,\r\n this.a33,\r\n this.a43,\r\n this.a14,\r\n this.a24,\r\n this.a34,\r\n this.a44,\r\n );\r\n }\r\n\r\n public static look_at(from: Vec3, to: Vec3, up: Vec3) : Mat4{\r\n let z = to.sub(from).norm();\r\n let x = up.cross(z).norm();\r\n let y = z.cross(x);\r\n let m = Mat3.from_cols(x, y, z);\r\n return Mat3.identity().translate(from).mul_mat4(m.extend());\r\n }\r\n\r\n //Auto-transposes the Matrix for GL loading\r\n public as_typed(): Float32Array {\r\n return new Float32Array([\r\n this.a11,\r\n this.a21,\r\n this.a31,\r\n this.a41,\r\n this.a12,\r\n this.a22,\r\n this.a32,\r\n this.a42,\r\n this.a13,\r\n this.a23,\r\n this.a33,\r\n this.a43,\r\n this.a14,\r\n this.a24,\r\n this.a34,\r\n this.a44\r\n ]);\r\n }\r\n\r\n public det() : number {\r\n return (this.a11\r\n * new Mat3(\r\n this.a22,\r\n this.a23,\r\n this.a24,\r\n this.a32,\r\n this.a33,\r\n this.a34,\r\n this.a42,\r\n this.a43,\r\n this.a44,\r\n )\r\n .det()\r\n - this.a21\r\n * new Mat3(\r\n this.a12,\r\n this.a13,\r\n this.a14,\r\n this.a32,\r\n this.a33,\r\n this.a34,\r\n this.a42,\r\n this.a43,\r\n this.a44,\r\n )\r\n .det()\r\n + this.a31\r\n * new Mat3(\r\n this.a12,\r\n this.a13,\r\n this.a14,\r\n this.a22,\r\n this.a23,\r\n this.a24,\r\n this.a42,\r\n this.a43,\r\n this.a44,\r\n )\r\n .det()\r\n - this.a41\r\n * new Mat3(\r\n this.a12,\r\n this.a13,\r\n this.a14,\r\n this.a22,\r\n this.a23,\r\n this.a24,\r\n this.a32,\r\n this.a33,\r\n this.a34,\r\n )\r\n .det()\r\n );\r\n }\r\n\r\n public adj() : Mat4 {\r\n return new Mat4(\r\n new Mat3(\r\n this.a22,\r\n this.a23,\r\n this.a24,\r\n this.a32,\r\n this.a33,\r\n this.a34,\r\n this.a42,\r\n this.a43,\r\n this.a44,\r\n )\r\n .det(),\r\n -new Mat3 (\r\n this.a21,\r\n this.a23,\r\n this.a24,\r\n this.a31,\r\n this.a33,\r\n this.a34,\r\n this.a41,\r\n this.a43,\r\n this.a44,\r\n )\r\n .det(),\r\n new Mat3 (\r\n this.a21,\r\n this.a22,\r\n this.a24,\r\n this.a31,\r\n this.a32,\r\n this.a34,\r\n this.a41,\r\n this.a42,\r\n this.a44,\r\n )\r\n .det(),\r\n -new Mat3 (\r\n this.a21,\r\n this.a22,\r\n this.a23,\r\n this.a31,\r\n this.a32,\r\n this.a33,\r\n this.a41,\r\n this.a42,\r\n this.a43,\r\n )\r\n .det(),\r\n -new Mat3 (\r\n this.a12,\r\n this.a13,\r\n this.a14,\r\n this.a32,\r\n this.a33,\r\n this.a34,\r\n this.a42,\r\n this.a43,\r\n this.a44,\r\n )\r\n .det(),\r\n new Mat3 (\r\n this.a11,\r\n this.a13,\r\n this.a14,\r\n this.a31,\r\n this.a33,\r\n this.a34,\r\n this.a41,\r\n this.a43,\r\n this.a44,\r\n )\r\n .det(),\r\n -new Mat3 (\r\n this.a11,\r\n this.a12,\r\n this.a14,\r\n this.a31,\r\n this.a32,\r\n this.a34,\r\n this.a41,\r\n this.a42,\r\n this.a44,\r\n )\r\n .det(),\r\n new Mat3 (\r\n this.a11,\r\n this.a12,\r\n this.a13,\r\n this.a31,\r\n this.a32,\r\n this.a33,\r\n this.a41,\r\n this.a42,\r\n this.a43,\r\n )\r\n .det(),\r\n new Mat3 (\r\n this.a12,\r\n this.a13,\r\n this.a14,\r\n this.a22,\r\n this.a23,\r\n this.a24,\r\n this.a42,\r\n this.a43,\r\n this.a44,\r\n )\r\n .det(),\r\n -new Mat3 (\r\n this.a11,\r\n this.a13,\r\n this.a14,\r\n this.a21,\r\n this.a23,\r\n this.a24,\r\n this.a41,\r\n this.a43,\r\n this.a44,\r\n )\r\n .det(),\r\n new Mat3 (\r\n this.a11,\r\n this.a12,\r\n this.a14,\r\n this.a21,\r\n this.a22,\r\n this.a24,\r\n this.a41,\r\n this.a42,\r\n this.a44,\r\n )\r\n .det(),\r\n -new Mat3 (\r\n this.a11,\r\n this.a12,\r\n this.a13,\r\n this.a21,\r\n this.a22,\r\n this.a23,\r\n this.a41,\r\n this.a42,\r\n this.a43,\r\n )\r\n .det(),\r\n -new Mat3 (\r\n this.a12,\r\n this.a13,\r\n this.a14,\r\n this.a22,\r\n this.a23,\r\n this.a24,\r\n this.a32,\r\n this.a33,\r\n this.a34,\r\n )\r\n .det(),\r\n new Mat3 (\r\n this.a11,\r\n this.a13,\r\n this.a14,\r\n this.a21,\r\n this.a23,\r\n this.a24,\r\n this.a31,\r\n this.a33,\r\n this.a34,\r\n )\r\n .det(),\r\n -new Mat3 (\r\n this.a11,\r\n this.a12,\r\n this.a14,\r\n this.a21,\r\n this.a22,\r\n this.a24,\r\n this.a31,\r\n this.a32,\r\n this.a34,\r\n )\r\n .det(),\r\n new Mat3 (\r\n this.a11,\r\n this.a12,\r\n this.a13,\r\n this.a21,\r\n this.a22,\r\n this.a23,\r\n this.a31,\r\n this.a32,\r\n this.a33,\r\n )\r\n .det(),\r\n )\r\n .transpose()\r\n }\r\n\r\n public inverse(): Mat4 {\r\n if(this.det() == 0.0){\r\n return null;\r\n } else {\r\n return (this.adj().mul_number(1.0 / this.det()));\r\n }\r\n }\r\n\r\n public mul_number(rhs: number) : Mat4{\r\n return new Mat4(\r\n this.a11 * rhs,\r\n this.a12 * rhs,\r\n this.a13 * rhs,\r\n this.a14 * rhs,\r\n this.a21 * rhs,\r\n this.a22 * rhs,\r\n this.a23 * rhs,\r\n this.a24 * rhs,\r\n this.a31 * rhs,\r\n this.a32 * rhs,\r\n this.a33 * rhs,\r\n this.a34 * rhs,\r\n this.a41 * rhs,\r\n this.a42 * rhs,\r\n this.a43 * rhs,\r\n this.a44 * rhs,\r\n )\r\n }\r\n\r\n public mul_vec4(rhs: Vec4) : Vec4 {\r\n return new Vec4(\r\n this.a11 * rhs.x1 + this.a12 * rhs.x2 + this.a13 * rhs.x3 + this.a14 * rhs.x4,\r\n this.a21 * rhs.x1 + this.a22 * rhs.x2 + this.a23 * rhs.x3 + this.a24 * rhs.x4,\r\n this.a31 * rhs.x1 + this.a32 * rhs.x2 + this.a33 * rhs.x3 + this.a34 * rhs.x4,\r\n this.a41 * rhs.x1 + this.a42 * rhs.x2 + this.a43 * rhs.x3 + this.a44 * rhs.x4,\r\n );\r\n }\r\n\r\n public mul_mat4(rhs: Mat4) : Mat4 {\r\n return new Mat4(\r\n this.a11 * rhs.a11 + this.a12 * rhs.a21 + this.a13 * rhs.a31 + this.a14 * rhs.a41,\r\n this.a11 * rhs.a12 + this.a12 * rhs.a22 + this.a13 * rhs.a32 + this.a14 * rhs.a42,\r\n this.a11 * rhs.a13 + this.a12 * rhs.a23 + this.a13 * rhs.a33 + this.a14 * rhs.a43,\r\n this.a11 * rhs.a14 + this.a12 * rhs.a24 + this.a13 * rhs.a34 + this.a14 * rhs.a44,\r\n this.a21 * rhs.a11 + this.a22 * rhs.a21 + this.a23 * rhs.a31 + this.a24 * rhs.a41,\r\n this.a21 * rhs.a12 + this.a22 * rhs.a22 + this.a23 * rhs.a32 + this.a24 * rhs.a42,\r\n this.a21 * rhs.a13 + this.a22 * rhs.a23 + this.a23 * rhs.a33 + this.a24 * rhs.a43,\r\n this.a21 * rhs.a14 + this.a22 * rhs.a24 + this.a23 * rhs.a34 + this.a24 * rhs.a44,\r\n this.a31 * rhs.a11 + this.a32 * rhs.a21 + this.a33 * rhs.a31 + this.a34 * rhs.a41,\r\n this.a31 * rhs.a12 + this.a32 * rhs.a22 + this.a33 * rhs.a32 + this.a34 * rhs.a42,\r\n this.a31 * rhs.a13 + this.a32 * rhs.a23 + this.a33 * rhs.a33 + this.a34 * rhs.a43,\r\n this.a31 * rhs.a14 + this.a32 * rhs.a24 + this.a33 * rhs.a34 + this.a34 * rhs.a44,\r\n this.a41 * rhs.a11 + this.a42 * rhs.a21 + this.a43 * rhs.a31 + this.a44 * rhs.a41,\r\n this.a41 * rhs.a12 + this.a42 * rhs.a22 + this.a43 * rhs.a32 + this.a44 * rhs.a42,\r\n this.a41 * rhs.a13 + this.a42 * rhs.a23 + this.a43 * rhs.a33 + this.a44 * rhs.a43,\r\n this.a41 * rhs.a14 + this.a42 * rhs.a24 + this.a43 * rhs.a34 + this.a44 * rhs.a44,\r\n );\r\n }\r\n}\r\n\r\nexport class AaBb {\r\n public max: Vec3;\r\n public min: Vec3;\r\n\r\n constructor(max: Vec3, min: Vec3){\r\n this.max = max;\r\n this.min = min;\r\n }\r\n\r\n public static from_point(p: Vec3) : AaBb {\r\n return new AaBb(p,p);\r\n }\r\n\r\n public get_corner(x1: boolean, x2: boolean, x3: boolean) : Vec3 {\r\n return new Vec3(\r\n x1 ? this.max.x1 : this.min.x1,\r\n x2 ? this.max.x2 : this.min.x2,\r\n x3 ? this.max.x3 : this.min.x3,\r\n )\r\n }\r\n\r\n public corners() : Vec3[] {\r\n return [\r\n this.get_corner(false, false, false),\r\n this.get_corner(false, false, true),\r\n this.get_corner(false, true, false),\r\n this.get_corner(false, true, true),\r\n this.get_corner(true, false, false),\r\n this.get_corner(true, false, true),\r\n this.get_corner(true, true, false),\r\n this.get_corner(true, true, true),\r\n ];\r\n }\r\n\r\n public check_for_all_corners(pred: (v: Vec3) => boolean): boolean {\r\n let v = new Vec3(this.min.x1, this.min.x2, this.min.x3); //000\r\n if(!pred(v))return false;\r\n v.x1 = this.max.x1; //001\r\n if(!pred(v))return false;\r\n v.x2 = this.max.x2; //011\r\n if(!pred(v))return false;\r\n v.x1 = this.min.x1; //010\r\n if(!pred(v))return false;\r\n v.x3 = this.max.x3; //110\r\n if(!pred(v))return false;\r\n v.x1 = this.max.x1; //111\r\n if(!pred(v))return false;\r\n v.x2 = this.min.x2; //101\r\n if(!pred(v))return false;\r\n v.x1 = this.min.x1;//100\r\n return pred(v);\r\n }\r\n\r\n public add_vec3(rhs: Vec3) : AaBb {\r\n return new AaBb(\r\n new Vec3 (\r\n Math.max(this.max.x1, rhs.x1),\r\n Math.max(this.max.x2, rhs.x2),\r\n Math.max(this.max.x3, rhs.x3),\r\n ),\r\n new Vec3 (\r\n Math.min(this.min.x1, rhs.x1),\r\n Math.min(this.min.x2, rhs.x2),\r\n Math.min(this.min.x3, rhs.x3),\r\n ),\r\n )\r\n }\r\n\r\n public add_aabb(rhs: AaBb) : AaBb {\r\n return new AaBb(\r\n new Vec3(\r\n Math.max(this.max.x1,rhs.max.x1),\r\n Math.max(this.max.x2,rhs.max.x2),\r\n Math.max(this.max.x3,rhs.max.x3),\r\n ),\r\n new Vec3(\r\n Math.min(this.min.x1,rhs.min.x1),\r\n Math.min(this.min.x2,rhs.min.x2),\r\n Math.min(this.min.x3,rhs.min.x3),\r\n ),\r\n );\r\n }\r\n}\r\n","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport {AaBb, Vec3, Vec2} from './vecmat';\r\n\r\nexport class Coord{\r\n lat: number;\r\n lon: number;\r\n\r\n constructor(lat: number, lon: number){\r\n this.lat = lat;\r\n this.lon = lon;\r\n }\r\n\r\n static from_UEC(u: UEC): Coord{\r\n return new Coord(\r\n 90.0 - (180 * u.y),\r\n (u.x * 360) - 180.0 \r\n )\r\n }\r\n\r\n}\r\n\r\nexport class GeoPoint{\r\n public position: UEC;\r\n public height: number;\r\n public value: number;\r\n public time: number;\r\n constructor(position: UEC, height: number, value: number, time: number){\r\n this.position = position;\r\n this.height = height;\r\n this.value = value;\r\n this.time = time;\r\n }\r\n\r\n haversine_distance_with_heights(other: GeoPoint): number{\r\n let ground_distance = this.position.haversine_distance_to(other.position);\r\n let height_distance = Math.abs(other.height - this.height);\r\n return Math.sqrt(Math.pow(ground_distance, 2) + Math.pow(height_distance, 2));\r\n }\r\n}\r\n\r\nexport class UEC{\r\n x: number;\r\n y: number;\r\n\r\n constructor(x: number, y: number){\r\n this.x = x;\r\n this.y = y;\r\n }\r\n\r\n static from_Coord(c: Coord): UEC{\r\n return new UEC(\r\n (c.lon + 180.0) / 360.0,\r\n 1.0 - ((c.lat + 90.0) / 180.0)\r\n )\r\n }\r\n\r\n as_vec2(): Vec2{\r\n return new Vec2(this.x, this.y);\r\n }\r\n\r\n add(other: UEC): UEC{\r\n return new UEC(this.x + other.x, this.y + other.y);\r\n }\r\n\r\n subtract(other: UEC): UEC{\r\n return new UEC(this.x - other.x, this.y - other.y);\r\n }\r\n\r\n static from_ueclike(ueclike: Object): UEC{\r\n return new UEC(ueclike['x'], ueclike['y']);\r\n }\r\n\r\n haversine_distance_to(other: UEC): number{\r\n let self_coord = Coord.from_UEC(this);\r\n let other_coord = Coord.from_UEC(other);\r\n let lat1 = self_coord.lat;\r\n let lat2 = other_coord.lat;\r\n let lon1 = self_coord.lon;\r\n let lon2 = other_coord.lon;\r\n //Function from https://www.movable-type.co.uk/scripts/latlong.html\r\n const R = 6371e3; // metres\r\n let φ1= lat1 * Math.PI/180.0; // φ, λ in radians\r\n let φ2 = lat2 * Math.PI/180.0;\r\n let Δφ = (lat2-lat1) * Math.PI/180.0;\r\n let Δλ = (lon2-lon1) * Math.PI/180.0;\r\n let a = Math.sin(Δφ/2.0) * Math.sin(Δφ/2.0) +\r\n Math.cos(φ1) * Math.cos(φ2) *\r\n Math.sin(Δλ/2.0) * Math.sin(Δλ/2.0);\r\n let c = 2.0 * Math.atan2(Math.sqrt(a), (Math.sqrt(1.0-a)));\r\n return R * c // in metres\r\n }\r\n\r\n move_by_meters(east: number, south: number): UEC{\r\n const CIRCUMFERENCE_EQUATOR_METRES = 40_075_017;\r\n let offset_x = east / (CIRCUMFERENCE_EQUATOR_METRES * Math.sin(this.y * Math.PI));\r\n let offset_y = south / (CIRCUMFERENCE_EQUATOR_METRES / 2.0);\r\n return new UEC(this.x + offset_x, this.y + offset_y);\r\n }\r\n}\r\n\r\nexport class UECArea{\r\n public position: UEC;\r\n public extent: UEC;\r\n\r\n constructor(position: UEC, extent: UEC){\r\n this.position = position;\r\n this.extent = extent;\r\n }\r\n\r\n public static fromUECAreaLike(uecarealike: Object): UECArea{\r\n return new UECArea(\r\n UEC.from_ueclike(uecarealike[0]),\r\n UEC.from_ueclike(uecarealike[1])\r\n );\r\n }\r\n\r\n public static fromPositionExtentTuple(tuple: [UEC, UEC]): UECArea{\r\n return new UECArea(tuple[0], tuple[1]);\r\n }\r\n\r\n public static betweenTwoPoints(topLeft: UEC, bottomRight: UEC): UECArea{\r\n return new UECArea(topLeft, bottomRight.subtract(topLeft));\r\n }\r\n\r\n public static fromPoints(points: UEC[]): UECArea{\r\n //Check that we have any points at all\r\n if(points.length == 0){\r\n throw \"Cannot create UEC Area without any points\";\r\n }\r\n\r\n let min_x = points[0].x;\r\n let min_y = points[0].y;\r\n\r\n let max_x = points[0].x;\r\n let max_y = points[0].y;\r\n\r\n points.forEach(p => {\r\n if(p.x < min_x){\r\n min_x = p.x;\r\n }\r\n if(p.x > max_x){\r\n max_x = p.x;\r\n }\r\n if(p.y < min_y){\r\n min_y = p.y;\r\n }\r\n if(p.y > max_y){\r\n max_y = p.y;\r\n }\r\n });\r\n return UECArea.betweenTwoPoints(new UEC(min_x, min_y), new UEC(max_x, max_y));\r\n }\r\n\r\n public topLeft(): UEC{\r\n return this.position;\r\n }\r\n\r\n public bottomRight(): UEC{\r\n return this.position.add(this.extent);\r\n }\r\n}\r\n\r\n\r\n\r\nexport class Tile{\r\n position: UEC;\r\n size: UEC;\r\n path: string;\r\n\r\n static from_XYWH(x: number, y: number, w: number, h: number, path: string): Tile{\r\n let t = new Tile();\r\n t.position = new UEC(x,y);\r\n t.size = new UEC(w,h);\r\n t.path = path;\r\n return t;\r\n }\r\n\r\n area():UECArea{\r\n return new UECArea(this.position, this.size);\r\n }\r\n\r\n copy(): Tile{\r\n return Tile.from_XYWH(this.position.x, this.position.y, this.size.x, this.size.y, this.path);\r\n }\r\n\r\n in_extent(extent: UECArea): boolean {\r\n return (this.position.x + this.size.x > extent.position.x) && \r\n (this.position.x < extent.position.x + extent.extent.x) &&\r\n (this.position.y + this.size.y > extent.position.y) &&\r\n (this.position.y < extent.position.y + extent.extent.y)\r\n }\r\n\r\n bounds(radius_min: number, radius_max: number): AaBb {\r\n let radius = radius_max;\r\n if(this.path == \"W\")return new AaBb(new Vec3(radius, radius, radius), new Vec3(-radius, -radius, -radius));\r\n if(this.path == \"E\")return new AaBb(new Vec3(radius, radius, radius), new Vec3(-radius, -radius, -radius));\r\n let point_worldspace = (p: Vec2) => {\r\n var px = (p.x1 + 0.5) * 2.0 * Math.PI;\r\n var py = -(p.x2 - 0.5) * Math.PI;\r\n var sp = new Vec3(\r\n Math.cos(px) * Math.cos(py),\r\n Math.sin(px) * Math.cos(py),\r\n Math.sin(py),\r\n );\r\n return sp;\r\n }\r\n //This is the naive version, you could probably write a much faster version if you take into account all implicit constraints on tile data.\r\n let p0 = point_worldspace(new Vec2(this.position.x, this.position.y));\r\n let p1 = point_worldspace(new Vec2(this.position.x + this.size.x, this.position.y));\r\n let p2 = point_worldspace(new Vec2(this.position.x, this.position.y + this.size.y));\r\n let p3 = point_worldspace(new Vec2(this.position.x + this.size.x, this.position.y + this.size.y));\r\n let res = AaBb.from_point(p0.mul(radius_min));\r\n res = res.add_vec3(p0.mul(radius_max));\r\n res = res.add_vec3(p1.mul(radius_min));\r\n res = res.add_vec3(p1.mul(radius_max));\r\n res = res.add_vec3(p2.mul(radius_min));\r\n res = res.add_vec3(p2.mul(radius_max));\r\n res = res.add_vec3(p3.mul(radius_min));\r\n res = res.add_vec3(p3.mul(radius_max));\r\n return res;\r\n }\r\n\r\n A(): Tile{\r\n return Tile.from_XYWH(\r\n this.position.x,\r\n this.position.y,\r\n this.size.x / 2.0,\r\n this.size.y / 2.0,\r\n this.path + \"A\"\r\n )\r\n }\r\n\r\n B(): Tile{\r\n return Tile.from_XYWH(\r\n this.position.x + (this.size.x / 2.0),\r\n this.position.y,\r\n this.size.x / 2.0,\r\n this.size.y / 2.0,\r\n this.path + \"B\"\r\n )\r\n }\r\n\r\n C(): Tile{\r\n return Tile.from_XYWH(\r\n this.position.x,\r\n this.position.y + (this.size.y / 2.0),\r\n this.size.x / 2.0,\r\n this.size.y / 2.0,\r\n this.path + \"C\"\r\n )\r\n }\r\n\r\n D(): Tile{\r\n return Tile.from_XYWH(\r\n this.position.x + (this.size.x / 2.0),\r\n this.position.y + (this.size.y / 2.0),\r\n this.size.x / 2.0,\r\n this.size.y / 2.0,\r\n this.path + \"D\"\r\n )\r\n }\r\n\r\n U(): Tile{\r\n return Tile.from_XYWH(\r\n this.position.x,\r\n this.position.y,\r\n this.size.x,\r\n this.size.y / 2.0,\r\n this.path + \"U\"\r\n )\r\n }\r\n\r\n L(): Tile{\r\n return Tile.from_XYWH(\r\n this.position.x,\r\n this.position.y + (this.size.y / 2.0),\r\n this.size.x,\r\n this.size.y / 2.0, \r\n this.path + \"L\"\r\n )\r\n }\r\n\r\n parent(): Tile{\r\n if(this.path.length > 1) return Tile.from_tilepath(this.path.substring(0, this.path.length - 1));\r\n else return null;\r\n }\r\n\r\n posInTile(other: Tile): number[]{\r\n let lx = (this.position.x - other.position.x) / other.size.x;\r\n let ly = (this.position.y - other.position.y) / other.size.y;\r\n let sx = this.size.x / other.size.x;\r\n let sy = this.size.y / other.size.y;\r\n return [lx, ly, sx, sy];\r\n }\r\n\r\n split(): Tile[] {\r\n let width = 2.0 * this.size.x * Math.sin((this.position.y + this.size.y / 2.0) * Math.PI);\r\n let height = this.size.y;\r\n let aspect_ratio = width / height;\r\n if(aspect_ratio < 0.5){\r\n return [this.U(), this.L()];\r\n }else{\r\n return [this.A(), this.B(), this.C(), this.D()];\r\n }\r\n }\r\n\r\n //Gets tile bounds from the tile path\r\n static from_tilepath(tilepath: string): Tile{\r\n let t = null;\r\n if(tilepath.startsWith(\"W\")){\r\n t = Tile.from_XYWH(0.0, 0.0, 0.5, 1.0, \"W\");\r\n }else if(tilepath.startsWith(\"E\")){\r\n t = Tile.from_XYWH(0.5, 0.0, 0.5, 1.0, \"E\");\r\n }else throw new Error(\"Invalid tile path: \\\"\\\"\");\r\n\r\n for(let c of [...tilepath.substring(1)]){\r\n let width = 2.0 * t.size.x * Math.sin((t.position.y + t.size.y / 2.0) * Math.PI);\r\n let height = t.size.y;\r\n let aspect_ratio = width / height;\r\n if(aspect_ratio < 0.5){\r\n if(c == 'U'){\r\n t = t.U();\r\n }else if (c=='L'){\r\n t = t.L();\r\n }else{\r\n throw new Error(\"Invalid tile path: \" + tilepath);\r\n }\r\n }else{\r\n switch(c){\r\n case 'A': \r\n t = t.A();\r\n break;\r\n case 'B':\r\n t = t.B();\r\n break;\r\n case 'C': \r\n t = t.C();\r\n break;\r\n case 'D':\r\n t = t.D();\r\n break;\r\n default:\r\n throw new Error(\"Invalid tile path: \" + tilepath);\r\n }\r\n }\r\n }\r\n\r\n return t;\r\n }\r\n\r\n\r\n \r\n \r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport { Vec2, Vec3, Vec4, Mat3, Mat4, Quaternion } from '../modules/vecmat';\r\nimport { Services } from './Services';\r\nimport {UEC, Coord} from '../modules/tile';\r\nimport { FlexibleTimeBaseService } from './FlexibleTimeBaseService';\r\n\r\nexport interface CameraPosition{\r\n Latitude: number;\r\n Longitude: number;\r\n Distance: number;\r\n Azimuth: number;\r\n Elevation: number;\r\n VerticalPosition: number;\r\n}\r\n\r\ntype AnimPolynomial = [number, number, number, number, number];\r\n\r\nexport class ScreenPosition{\r\n x: number;\r\n y: number;\r\n z: number;\r\n constructor(x: number, y: number, z: number){\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n }\r\n\r\n public toVec3(){\r\n return new Vec3(this.x, this.y, this.z);\r\n }\r\n\r\n public static fromVec3(v: Vec3){\r\n return new ScreenPosition(v.x1, v.x2, v.x3);\r\n }\r\n}\r\n\r\nexport class CameraPositionChangedEvent extends Event{\r\n position: CameraPosition;\r\n constructor(pos: CameraPosition){\r\n super(\"CameraPositionChanged\");\r\n this.position = pos;\r\n }\r\n}\r\n\r\nexport class CameraPositionTargetChangedEvent extends Event{\r\n position: CameraPosition;\r\n constructor(pos: CameraPosition){\r\n super(\"CameraPositionTargetChanged\");\r\n this.position = pos;\r\n }\r\n}\r\n\r\nexport class DisplayParametersChangedEvent extends Event{\r\n constructor(){\r\n super(\"DisplayParameterChanged\");\r\n }\r\n}\r\n\r\nexport class RotationLockChangedEvent extends Event{\r\n constructor(){\r\n super(\"RotationLockChanged\");\r\n }\r\n}\r\n\r\nconst ELEV_ANG_MIN = 0;\r\nconst ELEV_ANG_MAX = Math.PI / 2;\r\nconst ANIM_SPEED = 1.5;\r\nconst ZOOM_IN_LIMIT = 1e-10;\r\nconst ZOOM_OUT_LIMIT = 10;\r\n\r\nconst SPHERICAL_LIMIT = 0.005;\r\nconst POLAR_LIMIT = 0.1;\r\n\r\nconst CAMERA_FOV = 45;\r\n\r\nexport class PositionService extends EventTarget{\r\n animStart: number;\r\n\r\n projection_mode: \"EQUIRECT\" | \"SPHERE\" | \"POLAR\";\r\n\r\n world_rotation: Quaternion;\r\n world_rotation_pw: AnimPolynomial;\r\n world_rotation_px: AnimPolynomial;\r\n world_rotation_py: AnimPolynomial;\r\n world_rotation_pz: AnimPolynomial;\r\n world_rotation_filtered: Quaternion;\r\n\r\n camera_elevation: number;\r\n camera_elevation_p: AnimPolynomial;\r\n camera_elevation_filtered: number;\r\n\r\n camera_distance: number;\r\n camera_distance_p: AnimPolynomial;\r\n camera_distance_filtered: number;\r\n\r\n camera_zposition: number;\r\n camera_zposition_p: AnimPolynomial;\r\n camera_zposition_filtered: number;\r\n\r\n world_transform: Mat4 = Mat4.identity();\r\n\r\n camera_transform: Mat4 = Mat4.identity();\r\n\r\n private display_width: number;\r\n private display_height: number;\r\n\r\n mouse_position: UEC;\r\n mouse_height: number;\r\n\r\n public nearDistance: number;\r\n public farDistance: number;\r\n\r\n private rotation_locked_interal: boolean = true;\r\n public light_locked: boolean = true;\r\n\r\n public earthPosition: Vec3;\r\n public cameraPosition: Vec3;\r\n public viewDirection: Vec3;\r\n\r\n private cameraPositionInternal: CameraPosition;\r\n private cameraPositionFilteredInternal:CameraPosition;\r\n private camPosDirty: boolean = true;\r\n\r\n public get rotation_locked(){\r\n return this.rotation_locked_interal;\r\n }\r\n\r\n public set rotation_locked(value: boolean){\r\n if(value != this.rotation_locked_interal){\r\n this.rotation_locked_interal = value;\r\n this.dispatchEvent(new RotationLockChangedEvent());\r\n }\r\n }\r\n\r\n timebaseservice: FlexibleTimeBaseService = null;\r\n\r\n constructor(tbs: FlexibleTimeBaseService){\r\n super();\r\n this.timebaseservice = tbs;\r\n }\r\n\r\n //Ported\r\n public filterUpdate() {\r\n let animT = ((this.timebaseservice.now() / 1000) - this.animStart) * ANIM_SPEED;\r\n\r\n this.world_rotation_filtered = (new Quaternion(\r\n this.evalAnimPolynomial(this.world_rotation_pw, animT),\r\n this.evalAnimPolynomial(this.world_rotation_px, animT),\r\n this.evalAnimPolynomial(this.world_rotation_py, animT),\r\n this.evalAnimPolynomial(this.world_rotation_pz, animT)\r\n )).normalize();\r\n this.camera_elevation_filtered = this.evalAnimPolynomial(this.camera_elevation_p, animT);\r\n this.camera_distance_filtered = this.evalAnimPolynomial(this.camera_distance_p, animT);\r\n this.camera_zposition_filtered = this.evalAnimPolynomial(this.camera_zposition_p, animT);\r\n \r\n this.recalculate_matrices();\r\n this.dispatchEvent(new CameraPositionChangedEvent(this.getCameraPositionFiltered()));\r\n if(animT <= 2)\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n }\r\n\r\n //Ported\r\n public forceFilteredToTarget() {\r\n this.animStart = 0;\r\n this.world_rotation_filtered = this.world_rotation;\r\n this.camera_distance_filtered = this.camera_distance;\r\n this.camera_elevation_filtered = this.camera_elevation;\r\n this.camera_zposition_filtered = this.camera_zposition;\r\n this.recalculate_matrices();\r\n }\r\n\r\n update_projection_mode() {\r\n if(this.camera_distance_filtered > SPHERICAL_LIMIT)\r\n this.projection_mode = \"SPHERE\";\r\n //else if (true) // check the polar limit here by scalar product of transformed polar axis and viewer z axis\r\n // this.projection_mode = \"POLAR\";\r\n else \r\n this.projection_mode = \"EQUIRECT\";\r\n }\r\n\r\n recalculate_world_transform() {\r\n let pos;\r\n let scaling_mat = Mat3.identity().mul_number(1/this.camera_distance_filtered).extend();\r\n let rotmat;\r\n switch (this.projection_mode) {\r\n case \"EQUIRECT\":\r\n //calculate latlon\r\n pos = this.getCameraPositionFiltered();\r\n let uecpos = UEC.from_Coord(new Coord(pos.Latitude, pos.Longitude));\r\n //move\r\n let offsetmat = Mat3.identity().translate(new Vec3(-uecpos.x, -uecpos.y, 0.0));\r\n let xy_correction_mat = new Mat4( - Math.PI * 2 * Math.cos(pos.Latitude / 180 * Math.PI), 0, 0, 0, 0, Math.PI, 0, 0,0, 0, 1, 0, 0,0,0,1); \r\n //rotate\r\n rotmat = Mat3.rot((90 - pos.Azimuth) / 180 * Math.PI, new Vec3(0, 0, 1)).extend();\r\n //scale\r\n this.world_transform = scaling_mat.mul_mat4(rotmat).mul_mat4(xy_correction_mat.mul_mat4(offsetmat));\r\n this.UECHeightToScreenPixels = this.UECHeightToScreenPixels_equirect;\r\n return;\r\n case \"POLAR\":\r\n pos = this.world_rot_to_uec_pos(this.world_rotation);\r\n if(pos.y > 0.5) { //South Pole\r\n\r\n } else {\r\n\r\n }\r\n //calculate latlon\r\n \r\n //move\r\n\r\n //rotate\r\n\r\n //scale\r\n\r\n return;\r\n default:\r\n //turn\r\n rotmat = this.world_rotation_filtered.to_rotation_matrix();\r\n //move down\r\n let tmat = rotmat.translate(new Vec3(0, 0, -1));\r\n //scale\r\n this.world_transform = scaling_mat.mul_mat4(tmat);\r\n this.UECHeightToScreenPixels = this.UECHeightToScreenPixels_spherical;\r\n return;\r\n }\r\n }\r\n\r\n //Y to the right,\r\n //X to the camera heading,\r\n //Z up in the camera view\r\n public recalculate_camera_transform() {\r\n let perspective = Mat4.perspective(\r\n CAMERA_FOV / 180 * Math.PI, \r\n this.display_width / this.display_height,\r\n 0.1,\r\n 2.1\r\n );\r\n let result = this.calculate_camera_pretransform_internal();\r\n this.camera_transform = perspective.mul_mat4(result);\r\n }\r\n\r\n public recalculate_camera_transform_stereo_offset(offset: number) {\r\n let perspective = Mat4.perspective(\r\n CAMERA_FOV / 180 * Math.PI, \r\n this.display_width / this.display_height,\r\n 0.1,\r\n 2.1\r\n );\r\n let result = this.calculate_camera_pretransform_internal();\r\n let offset_mat = Mat3.rot(Math.atan(offset), new Vec3(0, -1, 0)).translate(new Vec3(offset, 0, 0));\r\n this.camera_transform = perspective.mul_mat4(offset_mat).mul_mat4(result);\r\n }\r\n\r\n public recalculate_camera_transform_dome_top(domeTilt: number) {\r\n let perspective = Mat4.perspective_ext(\r\n -1, \r\n 1,\r\n 1,\r\n -1,\r\n 0.025,\r\n 3\r\n );\r\n let result = this.calculate_camera_pretransform_internal();\r\n this.camera_transform = perspective\r\n .mul_mat4(\r\n Mat3.rot(\r\n (90 - domeTilt) / 180 * Math.PI,\r\n new Vec3(1, 0, 0))\r\n .extend()\r\n .mul_mat4(result)\r\n );\r\n }\r\n\r\n public recalculate_camera_transform_single_frustum(\r\n domeTilt: number,\r\n f: {\r\n \"name\": string,\r\n \"fov\": {\r\n \"up\": number,\r\n \"down\": number,\r\n \"left\": number,\r\n \"right\": number\r\n },\r\n \"orientation\": {\r\n \"yaw\": number,\r\n \"pitch\": number,\r\n \"roll\": number\r\n }\r\n }\r\n ) {\r\n let afc = 2/3;\r\n let perspective = Mat4.perspective_ext(\r\n -Math.tan(f.fov.left / 180 * Math.PI),\r\n Math.tan(f.fov.right / 180 * Math.PI),\r\n Math.tan(f.fov.up / 180 * Math.PI),\r\n -Math.tan(f.fov.down / 180 * Math.PI),\r\n 0.025,\r\n 3\r\n );\r\n /*let perspective = Mat4.perspective((f.fov.left + f.fov.right) / 180 * Math.PI,\r\n Math.tan(f.fov.left)\r\n , 0.025, 3);*/\r\n let result = this.calculate_camera_pretransform_internal();\r\n let axes = {\r\n \"NR\" : Mat3.rot(f.orientation.roll / 180 * Math.PI, new Vec3(0, 0, -1)),\r\n \"PR\" : Mat3.rot(f.orientation.roll / 180 * Math.PI, new Vec3(0, 0, 1)),\r\n \"NH\" : Mat3.rot(f.orientation.yaw / 180 * Math.PI, new Vec3(0, -1, 0)),\r\n \"PH\": Mat3.rot(f.orientation.yaw / 180 * Math.PI, new Vec3(0, 1, 0)),\r\n \"NP\":Mat3.rot(f.orientation.pitch / 180 * Math.PI, new Vec3(1, 0, 0)),\r\n \"PP\":Mat3.rot(f.orientation.pitch / 180 * Math.PI, new Vec3(1, 0, 0))\r\n };\r\n /*let mt = \r\n Mat3.rot(f.orientation.roll / 180 * Math.PI, new Vec3(0, 0, -1)).mul_mat3(\r\n Mat3.rot(f.orientation.pitch / 180 * Math.PI, new Vec3(1, 0, 0))\r\n ).mul_mat3(\r\n Mat3.rot(f.orientation.yaw / 180 * Math.PI, new Vec3(0, -1, 0))\r\n )*/\r\n \r\n let orientation_str = \"PRPPNH\";\r\n orientation_str = Services.ProjectorConfigurationService.getRotationOrderString();\r\n let rot_a = axes[orientation_str.substr(0,2)];\r\n let rot_b = axes[orientation_str.substr(2,2)];\r\n let rot_c = axes[orientation_str.substr(4,2)];\r\n\r\n let mt = rot_a.mul_mat3(rot_b).mul_mat3(rot_c);\r\n /*\r\n let mt = Mat3.rot(f.orientation.roll / 180 * Math.PI, new Vec3(0, 0, 1))\r\n .mul_mat3(Mat3.rot(f.orientation.pitch / 180 * Math.PI, new Vec3(1, 0, 0))).mul_mat3(Mat3.rot(f.orientation.yaw / 180 * Math.PI, new Vec3(0, -1, 0)));\r\n */\r\n this.camera_transform = perspective\r\n .mul_mat4(mt.extend())\r\n .mul_mat4(\r\n Mat3.rot(\r\n (90 - domeTilt) / 180 * Math.PI,\r\n new Vec3(1, 0, 0))\r\n .extend()\r\n .mul_mat4(result)\r\n );\r\n }\r\n\r\n public recalculate_camera_transform_dome_side(domeTilt: number, rot_z: number) {\r\n let perspective = Mat4.perspective_ext(\r\n -1, \r\n 1,\r\n 0,\r\n -1,\r\n 0.025,\r\n 3\r\n );\r\n let mt;\r\n switch (rot_z) {\r\n case 1:\r\n mt = new Mat4(\r\n 1, 0, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, -1, 0, 0,\r\n 0, 0, 0, 1\r\n );\r\n break;\r\n case 2:\r\n mt = new Mat4(\r\n 0, -1, 0, 0,\r\n 0, 0, 1, 0,\r\n -1, 0, 0, 0,\r\n 0, 0, 0, 1\r\n );\r\n break;\r\n case 3: \r\n mt = new Mat4(\r\n -1, 0, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 0, 1\r\n );\r\n break;\r\n default:\r\n mt = new Mat4(\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n 1, 0, 0, 0,\r\n 0, 0, 0, 1\r\n );\r\n }\r\n let result = this.calculate_camera_pretransform_internal();\r\n this.camera_transform = perspective\r\n .mul_mat4(mt)\r\n .mul_mat4(\r\n Mat3.rot(\r\n (90 - domeTilt) / 180 * Math.PI,\r\n new Vec3(1, 0, 0))\r\n .extend()\r\n .mul_mat4(result)\r\n );\r\n }\r\n\r\n calculate_camera_pretransform_internal(): Mat4 {\r\n let result = Mat3.identity().translate(new Vec3(0, 0, (this.camera_zposition_filtered - 1) * (Services.SettingsService.getValueOrDefault(\"Exaggeration\", 1) / this.camera_distance_filtered)));\r\n result = Mat3.rot(Math.PI / 2 - this.camera_elevation_filtered, new Vec3(1, 0, 0)).extend().mul_mat4(result);\r\n result = Mat3.identity().translate(new Vec3(0, 0, 1)).mul_mat4(result);\r\n return result.mul_mat4(new Mat4(0, -1, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1));\r\n }\r\n\r\n recalculate_matrices() {\r\n this.camPosDirty = true;\r\n this.update_projection_mode();\r\n this.recalculate_camera_transform();\r\n this.recalculate_world_transform();\r\n }\r\n\r\n //Ported\r\n public moveCamera(x: number, y: number) {\r\n if (x == 0 && y == 0) return;\r\n const correction_fac = 1.2;\r\n let pos_old = this.world_rotation;\r\n let cam_dist = this.camera_distance;\r\n let yfac = -y / this.display_height * cam_dist * correction_fac;\r\n let xfac = -x / this.display_width * cam_dist * correction_fac;\r\n let mixed_axis = new Vec3(-xfac, yfac, 0.0);\r\n this.world_rotation = Quaternion.from_axis_and_angle(mixed_axis, mixed_axis.abs()).mul(this.world_rotation);\r\n if(this.rotation_locked){\r\n let rotmat_old = pos_old.to_rotation_matrix();\r\n let cam_northing = Math.atan2(rotmat_old.a23, rotmat_old.a13);\r\n let rotmat_new = this.world_rotation.to_rotation_matrix();\r\n let cam_northing_new = Math.atan2(rotmat_new.a23, rotmat_new.a13);\r\n this.world_rotation = Quaternion.from_axis_and_angle(new Vec3(0, 0, 1), - cam_northing_new + cam_northing).mul(this.world_rotation);\r\n }\r\n this.updateCameraPolynomials();\r\n this.dispatchEvent(new CameraPositionTargetChangedEvent(this.getCameraPosition()));\r\n }\r\n\r\n //Ported\r\n public tiltCamera(x: number, y: number) {\r\n if (x == 0 && y == 0) return;\r\n const correction_fac_az = 2.0;\r\n const correction_fac_elev = -2.0;\r\n let yfac = -y / this.display_height * correction_fac_elev;\r\n let xfac = -x / this.display_width * correction_fac_az;\r\n this.world_rotation = Quaternion.from_axis_and_angle(new Vec3(0, 0, 1), -xfac).mul(this.world_rotation);\r\n this.camera_elevation = Math.min(ELEV_ANG_MAX, Math.max(ELEV_ANG_MIN, this.camera_elevation + yfac))\r\n this.updateCameraPolynomials();\r\n this.dispatchEvent(new CameraPositionTargetChangedEvent(this.getCameraPosition()));\r\n }\r\n\r\n public zoomCamera(z: number) {\r\n this.camera_distance *= Math.exp(\r\n Math.log(\r\n 1.5\r\n ) * z\r\n );\r\n this.camera_distance = Math.min(ZOOM_OUT_LIMIT, Math.max(ZOOM_IN_LIMIT, this.camera_distance));\r\n this.updateCameraPolynomials();\r\n this.dispatchEvent(new CameraPositionTargetChangedEvent(this.getCameraPosition()));\r\n }\r\n\r\n //Ported\r\n public setCameraPosition(pos: CameraPosition, external: boolean = false) {\r\n let oldrot = this.world_rotation;\r\n this.camera_elevation = pos.Elevation * Math.PI / 180;\r\n let az = (180 - pos.Azimuth) * Math.PI / 180;\r\n let lon = pos.Longitude * Math.PI / 180;\r\n let lat = (90 - pos.Latitude) * Math.PI / 180;\r\n let rot = Quaternion.from_axis_and_angle(new Vec3(0, 0, 1), -lon);\r\n rot = Quaternion.from_axis_and_angle(new Vec3(0, 1, 0), -lat).mul(rot);\r\n let newrot = Quaternion.from_axis_and_angle(new Vec3(0, 0, 1), az).mul(rot);\r\n this.camera_distance = Math.min(ZOOM_OUT_LIMIT, Math.max(ZOOM_IN_LIMIT, pos.Distance));\r\n this.camera_zposition = pos.VerticalPosition;\r\n\r\n if(oldrot && oldrot.sub(newrot).length() < oldrot.sub(newrot.neg()).length())\r\n this.world_rotation = newrot;\r\n else\r\n this.world_rotation = newrot.neg();\r\n \r\n this.updateCameraPolynomials();\r\n if(!external){\r\n this.dispatchEvent(new CameraPositionTargetChangedEvent(pos));\r\n }\r\n }\r\n\r\n //Ported\r\n updateCameraPolynomials(){\r\n let n = this.timebaseservice.now(); \r\n let animT = ((n / 1000) - this.animStart) * ANIM_SPEED;\r\n this.animStart = n / 1000;\r\n\r\n if(this.world_rotation_pw){\r\n this.world_rotation_pw = this.genAnimPolynomial(\r\n this.evalAnimPolynomial(this.world_rotation_pw, animT),\r\n this.evalAnimPolynomialDeriv(this.world_rotation_pw, animT),\r\n this.world_rotation.w,\r\n 0,\r\n 0\r\n ); \r\n this.world_rotation_px = this.genAnimPolynomial(\r\n this.evalAnimPolynomial(this.world_rotation_px, animT),\r\n this.evalAnimPolynomialDeriv(this.world_rotation_px, animT),\r\n this.world_rotation.x,\r\n 0,\r\n 0\r\n ); \r\n this.world_rotation_py = this.genAnimPolynomial(\r\n this.evalAnimPolynomial(this.world_rotation_py, animT),\r\n this.evalAnimPolynomialDeriv(this.world_rotation_py, animT),\r\n this.world_rotation.y,\r\n 0,\r\n 0\r\n ); \r\n this.world_rotation_pz = this.genAnimPolynomial(\r\n this.evalAnimPolynomial(this.world_rotation_pz, animT),\r\n this.evalAnimPolynomialDeriv(this.world_rotation_pz, animT),\r\n this.world_rotation.z,\r\n 0,\r\n 0\r\n ); \r\n this.camera_distance_p = this.genAnimPolynomial(\r\n this.evalAnimPolynomial(this.camera_distance_p, animT),\r\n this.evalAnimPolynomialDeriv(this.camera_distance_p, animT),\r\n this.camera_distance,\r\n 0,\r\n 0\r\n );\r\n this.camera_elevation_p = this.genAnimPolynomial(\r\n this.evalAnimPolynomial(this.camera_elevation_p, animT),\r\n this.evalAnimPolynomialDeriv(this.camera_elevation_p, animT),\r\n this.camera_elevation,\r\n 0,\r\n 0\r\n );\r\n this.camera_zposition_p = this.genAnimPolynomial(\r\n this.evalAnimPolynomial(this.camera_zposition_p, animT),\r\n this.evalAnimPolynomialDeriv(this.camera_zposition_p, animT),\r\n this.camera_zposition,\r\n 0,\r\n 0\r\n );\r\n }else{\r\n //if camera_position_px isn't set, assume that none are set\r\n //these polynomials just return the constant value, so their derivatives are 0.\r\n this.world_rotation_pw = [0, 0, 0, 0, this.world_rotation.w];\r\n this.world_rotation_px = [0, 0, 0, 0, this.world_rotation.x];\r\n this.world_rotation_py = [0, 0, 0, 0, this.world_rotation.y];\r\n this.world_rotation_pz = [0, 0, 0, 0, this.world_rotation.z];\r\n this.camera_distance_p = [0, 0, 0, 0, this.camera_distance];\r\n this.camera_elevation_p = [0, 0, 0, 0, this.camera_elevation];\r\n this.camera_zposition_p = [0, 0, 0, 0, this.camera_zposition];\r\n }\r\n }\r\n\r\n world_rot_to_uec_pos(rot: Quaternion): UEC{\r\n let rotmat = rot.to_rotation_matrix();\r\n let rot_x = new Vec3(rotmat.a11, rotmat.a21, rotmat.a31);\r\n let rot_y = new Vec3(rotmat.a12, rotmat.a22, rotmat.a32);\r\n let rot_z = new Vec3(rotmat.a13, rotmat.a23, rotmat.a33);\r\n let lat_phi = Math.asin(rot_z.x3);\r\n let rot_xy = new Vec3(0 - rot_z.x1, 0 - rot_z.x2, 1 - rot_z.x3);\r\n let lon_phi = Math.atan2(rot_y.dot(rot_xy), rot_x.dot(rot_xy));\r\n return UEC.from_Coord(new Coord(\r\n lat_phi / Math.PI * 180,\r\n lon_phi / Math.PI * 180\r\n ));\r\n }\r\n\r\n private calculateCameraPositionInternalRad(rotation: Quaternion, elevation: number, distance: number, zposition: number): CameraPosition {\r\n let rotmat = rotation.to_rotation_matrix();\r\n let rot_x = new Vec3(rotmat.a11, rotmat.a21, rotmat.a31);\r\n let rot_y = new Vec3(rotmat.a12, rotmat.a22, rotmat.a32);\r\n let rot_z = new Vec3(rotmat.a13, rotmat.a23, rotmat.a33);\r\n\r\n let lat_phi = Math.asin(rot_z.x3);\r\n\r\n let cam_northing = Math.atan2(-rot_z.x2, rot_z.x1);\r\n\r\n let rot_xy = new Vec3(0 - rot_z.x1, 0 - rot_z.x2, 1 - rot_z.x3);\r\n\r\n let lon_phi = Math.atan2(rot_y.dot(rot_xy), rot_x.dot(rot_xy));\r\n \r\n return {\r\n Latitude: lat_phi,\r\n Longitude: lon_phi,\r\n Distance: distance,\r\n Elevation: elevation,\r\n Azimuth: cam_northing,\r\n VerticalPosition: zposition\r\n };\r\n }\r\n\r\n //probably just move this to the public getters\r\n calculateCameraPositionInternal(rotation: Quaternion, elevation: number, distance: number, zposition: number): CameraPosition {\r\n let r = this.calculateCameraPositionInternalRad(rotation, elevation, distance, zposition);\r\n return {\r\n Latitude: r.Latitude * 180 / Math.PI,\r\n Longitude: r.Longitude * 180 / Math.PI,\r\n Distance: distance,\r\n Elevation: r.Elevation * 180 / Math.PI,\r\n Azimuth: r.Azimuth * 180 / Math.PI,\r\n VerticalPosition: zposition\r\n };\r\n }\r\n\r\n public getCameraPosition(): CameraPosition {\r\n if(this.camPosDirty){\r\n this.cameraPositionInternal = this.calculateCameraPositionInternal(this.world_rotation, this.camera_elevation, this.camera_distance, this.camera_zposition);\r\n this.cameraPositionFilteredInternal = this.calculateCameraPositionInternal(this.world_rotation_filtered, this.camera_elevation_filtered, this.camera_distance_filtered, this.camera_zposition_filtered);\r\n this.camPosDirty = false;\r\n }\r\n return this.cameraPositionInternal\r\n }\r\n\r\n public getCameraPositionFiltered(): CameraPosition {\r\n if(this.camPosDirty){\r\n this.cameraPositionInternal = this.calculateCameraPositionInternal(this.world_rotation, this.camera_elevation, this.camera_distance, this.camera_zposition);\r\n this.cameraPositionFilteredInternal = this.calculateCameraPositionInternal(this.world_rotation_filtered, this.camera_elevation_filtered, this.camera_distance_filtered, this.camera_zposition_filtered);\r\n this.camPosDirty = false;\r\n }\r\n return this.cameraPositionFilteredInternal\r\n }\r\n\r\n /*\r\n * Sets the screen size. This is NOT the canvas pixel size.\r\n */\r\n public setScreenDimensions(width: number, height: number){\r\n this.display_width = width;\r\n this.display_height = height;\r\n this.dispatchEvent(new DisplayParametersChangedEvent());\r\n this.recalculate_matrices();\r\n }\r\n\r\n // NOT THE CANVAS PIXEL SIZE\r\n public getScreenDimensions(){\r\n return ({\r\n width: this.display_width,\r\n height: this.display_height\r\n });\r\n }\r\n\r\n\r\n UECHeightToScreenPixels_equirect(position: UEC, height: number): ScreenPosition{\r\n let location_to_screenspace = (p: Vec2, h: number) => {\r\n let sp = this.world_transform.mul_vec4(Vec4.from_vff(p, h - 1, 1));\r\n sp = this.camera_transform.mul_vec4(sp);\r\n sp.x1 /= sp.x4;\r\n sp.x2 /= -sp.x4;\r\n sp.x3 /= sp.x4;\r\n sp.x1 += 1;\r\n sp.x2 += 1;\r\n sp.x1 /= 2;\r\n sp.x2 /= 2;\r\n sp.x1 *= this.display_width;\r\n sp.x2 *= this.display_height;\r\n sp.x3 = ((1 - sp.x3) * 1000) | 0;\r\n return sp.rgb();\r\n };\r\n let screenspace_pos = location_to_screenspace(new Vec2(position.x, position.y),height);\r\n return ScreenPosition.fromVec3(screenspace_pos);\r\n }\r\n\r\n public UECHeightToScreenPixels;\r\n\r\n UECHeightToScreenPixels_spherical(position: UEC, height: number): ScreenPosition{\r\n let location_to_screenspace = (p: Vec2, h: number) => {\r\n var px = (p.x1 + 0.5) * 2.0 * Math.PI;\r\n var py = -(p.x2 - 0.5) * Math.PI;\r\n let cy = Math.cos(py);\r\n var sp = new Vec4(\r\n Math.cos(px) * cy * h,\r\n Math.sin(px) * cy * h,\r\n Math.sin(py) * h,\r\n 1.0\r\n );\r\n sp = this.world_transform.mul_vec4(sp);\r\n sp = this.camera_transform.mul_vec4(sp);\r\n sp.x1 /= sp.x4;\r\n sp.x2 /= -sp.x4;\r\n sp.x3 /= sp.x4;\r\n sp.x1 += 1;\r\n sp.x2 += 1;\r\n sp.x1 /= 2;\r\n sp.x2 /= 2;\r\n sp.x1 *= this.display_width;\r\n sp.x2 *= this.display_height;\r\n sp.x3 = ((1 - sp.x3) * 1000) | 0;\r\n return sp.rgb();\r\n };\r\n let screenspace_pos = location_to_screenspace(new Vec2(position.x, position.y),height);\r\n return ScreenPosition.fromVec3(screenspace_pos);\r\n }\r\n\r\n //calculate the coefficients of the fourth order animation polynomial\r\n //x0, x1: values at start and end\r\n //v0, v1: first order derivatives at start and end. \r\n //a1: second order derivative at the end.\r\n genAnimPolynomial(x0: number, v0: number, x1: number, v1: number, a1: number): AnimPolynomial {\r\n let e = x0;\r\n let d = v0;\r\n let c = -(-12 * x1 + 12 * x0 + 6 * v1 + 6 * v0 - a1) / 2;\r\n let b = -8 * x1 + 8 * x0 + 5 * v1 + 3 * v0 - a1;\r\n let a = -(-6 * x1 + 6 * x0 + 4 * v1 + 2 * v0 - a1) / 2;\r\n return [a, b, c, d, e];\r\n }\r\n\r\n //Calculate the value of the animation polynomial at time t\r\n evalAnimPolynomial(p: AnimPolynomial, t: number): number {\r\n t = Math.min(1, Math.max(0, t));\r\n return (((p[0] * t + p[1]) * t + p[2]) * t + p[3]) * t + p[4];\r\n }\r\n\r\n //Calculate the derivative of the animation polynomial at time t\r\n evalAnimPolynomialDeriv(p: AnimPolynomial, t: number): number {\r\n if(t > 1 || t < 0) return 0;\r\n return ((p[0] * 4 * t + p[1] * 3) * t + p[2] * 2) * t + p[3];\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nexport class Barrier{\r\n private internal_barrier: Promise;\r\n private is_resolved = false;\r\n\r\n private resolve_handler: any;\r\n private reject_handler: any;\r\n\r\n constructor(){\r\n this.internal_barrier = new Promise((res, rej) => {\r\n this.resolve_handler = res;\r\n this.reject_handler = rej;\r\n });\r\n }\r\n\r\n resolve(){\r\n if(!this.is_resolved){\r\n this.resolve_handler();\r\n this.is_resolved = true;\r\n }\r\n }\r\n\r\n reject(){\r\n this.reject_handler();\r\n }\r\n\r\n async wait(){\r\n if(this.is_resolved){\r\n return;\r\n }else{\r\n await this.internal_barrier;\r\n }\r\n }\r\n\r\n isResolved(){\r\n return this.is_resolved;\r\n }\r\n\r\n\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nexport function AwaitableDelay(ms: number): Promise{\r\n return new Promise((res, _rej) => setTimeout(res, ms));\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport { Parameter, SerializedParameter } from \"../modules/Parameter\";\r\n\r\nexport class SettingsChangedEvent extends Event{\r\n public parameter: Parameter;\r\n public remote: boolean = false;\r\n constructor(parameter: Parameter, remote: boolean = false){\r\n super(\"SettingsChanged\");\r\n this.parameter = parameter;\r\n this.remote = remote;\r\n }\r\n}\r\n\r\nexport class SettingsService extends EventTarget{\r\n parameters: {[name: string]: Parameter} = {};\r\n skip_storing: boolean = false;\r\n\r\n constructor(){\r\n super();\r\n let serializedArray = localStorage.getItem(\"digitalearthviewer_settings\");\r\n if(serializedArray){\r\n try{\r\n let deserializedArray: SerializedParameter[] = JSON.parse(serializedArray);\r\n for(let param of deserializedArray){\r\n let parameter = Parameter.deserialize(param);\r\n if(this.parameters[parameter.name]){\r\n Object.assign(this.parameters[parameter.name], parameter);\r\n }else{\r\n this.parameters[parameter.name] = parameter;\r\n }\r\n }\r\n }catch(e){\r\n console.warn(\"Settings unparseable!\", e);\r\n }\r\n }\r\n\r\n window.addEventListener(\"beforeunload\", () => {\r\n if(this.skip_storing){\r\n return;\r\n }\r\n let paramlist = [];\r\n for(let param in this.parameters){\r\n paramlist.push(this.parameters[param]);\r\n }\r\n //Serialize settings on exit\r\n localStorage.setItem(\"digitalearthviewer_settings\", JSON.stringify(paramlist.map(p => p.serialize())));\r\n });\r\n }\r\n\r\n public initializeSetting(default_values: Parameter){\r\n if(!this.parameters.hasOwnProperty(default_values.name)){\r\n this.parameters[default_values.name] = default_values;\r\n }\r\n }\r\n\r\n public getSetting(setting: string): Parameter{\r\n return this.parameters[setting];\r\n }\r\n\r\n public getValueOrDefault(setting: string, default_value: any): any{\r\n let setting_value = this.parameters[setting]?.value;\r\n if(setting_value == null){\r\n return default_value;\r\n }else{\r\n return setting_value;\r\n }\r\n }\r\n\r\n public storeSetting(setting: Parameter){\r\n this.parameters[setting.name] = setting;\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { Services } from \"@/services/Services\";\r\nimport { SettingsChangedEvent } from \"@/services/SettingsService\";\r\nimport { Vec2, Vec3 } from \"./vecmat\";\r\n\r\nexport type SerializedParameter = {\r\n name: string,\r\n shader_name: string,\r\n value: any,\r\n default_value: any,\r\n type: \"number\" | \"string\" | \"boolean\" | \"colormap\" | \"select\" | \"vector2D\" | \"vector3D\" | \"texture\",\r\n range: number[],\r\n step: number,\r\n options: any[],\r\n unit: string,\r\n userVisible: boolean,\r\n}\r\n\r\nexport class Parameter {\r\n public name: string = \"\"; //The user-visible name\r\n public shader_name: string; //The name used in shaders\r\n public value_internal: any;\r\n public get value() : any {\r\n return this.value_internal;\r\n }\r\n public set value(value : any) {\r\n this.value_internal = value;\r\n Services.SettingsService.dispatchEvent(new SettingsChangedEvent(this));\r\n }\r\n public default_value: any;\r\n public type: \"number\" | \"string\" | \"boolean\" | \"colormap\" | \"select\" | \"vector2D\" | \"vector3D\" | \"texture\";\r\n public range: number[];\r\n public step: number = null;\r\n public options: any[];\r\n public unit: string;\r\n public userVisible: boolean = true;\r\n public Actions: ParameterAction[] = [];\r\n\r\n constructor(name: string, default_value: any, type: \"number\" | \"string\" | \"boolean\" | \"colormap\" | \"select\" | \"vector2D\" | \"vector3D\" | \"texture\" = \"number\", userVisible: boolean = true, sync: boolean = false) {\r\n this.name = name;\r\n this.default_value = default_value;\r\n this.value_internal = default_value;\r\n this.type = type;\r\n this.range = null;\r\n this.unit = null;\r\n this.options = [];\r\n this.userVisible = userVisible;\r\n }\r\n\r\n setValue(value: any, remote=false){\r\n switch(this.type){\r\n case \"vector2D\":\r\n this.value_internal = new Vec2(value.x1, value.x2);\r\n break;\r\n case \"vector3D\":\r\n this.value_internal = new Vec3(value.x1, value.x2, value.x3);\r\n break;\r\n case \"boolean\":\r\n this.value_internal = !!value;\r\n break;\r\n default:\r\n this.value_internal = value;\r\n }\r\n this.value_internal = value;\r\n Services.SettingsService.dispatchEvent(new SettingsChangedEvent(this, remote));\r\n } \r\n\r\n\r\n setRange(min: number, max: number) {\r\n this.range = [min, max];\r\n return this;\r\n }\r\n\r\n setStep(step: number){\r\n this.step = step;\r\n return this;\r\n }\r\n\r\n setUnit(unit: string) {\r\n this.unit = unit;\r\n return this;\r\n }\r\n\r\n setShaderName(name: string) {\r\n this.shader_name = name;\r\n return this;\r\n }\r\n\r\n addOption(option: any){\r\n this.options.push(option);\r\n return this;\r\n }\r\n\r\n registerAction(Name: string, Action: (() => void)){\r\n this.Actions.push(new ParameterAction(Name, Action));\r\n }\r\n\r\n executeAction(name: string){\r\n let action = this.Actions.find(a => a.Name == name);\r\n if(action){\r\n action.Action();\r\n }\r\n }\r\n\r\n ///Does NOT serialize the actions!\r\n serialize(): SerializedParameter{\r\n return ({\r\n name: this.name,\r\n shader_name: this.shader_name,\r\n value: this.value_internal,\r\n default_value: this.default_value,\r\n type: this.type,\r\n range: this.range,\r\n step: this.step,\r\n options: this.options,\r\n unit: this.unit,\r\n userVisible: this.userVisible,\r\n });\r\n }\r\n\r\n static deserialize(serialized_object: SerializedParameter): Parameter{\r\n let default_value = serialized_object.default_value;\r\n let value = serialized_object.value;\r\n if(serialized_object.type == \"vector3D\"){\r\n default_value = new Vec3(default_value.x1, default_value.x2, default_value.x3);\r\n value = new Vec3(value.x1, value.x2, value.x3);\r\n }else if(serialized_object.type == \"vector2D\"){\r\n default_value = new Vec2(default_value.x1, default_value.x2);\r\n value = new Vec2(value.x1, value.x2);\r\n }\r\n let param = new Parameter(serialized_object.name, serialized_object.default_value, serialized_object.type);\r\n param.value_internal = value;\r\n param.range = serialized_object.range;\r\n param.step = serialized_object.step;\r\n param.options = serialized_object.options;\r\n param.unit = serialized_object.unit;\r\n param.userVisible = serialized_object.userVisible;\r\n param.shader_name = serialized_object.shader_name;\r\n return param;\r\n }\r\n\r\n\r\n}\r\n\r\nexport class ParameterAction{\r\n public Name: string;\r\n public Action: (() => any);\r\n\r\n constructor(Name: string, Action: (() => any)){\r\n this.Name = Name;\r\n this.Action = Action;\r\n }\r\n\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\n/*\r\nThew initialization service initializes a few constants, such as the tileserver URL (which it gets from the location of the site) and the tilesize (which it loads from the server)\r\nIt serves as somewhat of a settings service as well, but that usage should be replaced with a real settings service which uses localstorage or the like\r\n*/\r\n\r\nimport {PositionService} from './PositionService';\r\nimport {Barrier} from '../modules/barrier';\r\nimport { GLBarrier, ServiceBarrier, Services } from './Services';\r\nimport { RenderLayerFactory} from '../modules/RenderLayer';\r\nimport { AwaitableDelay } from '../modules/awaitable_delay';\r\nimport { DialogBox } from './DialogBoxService';\r\nimport { Parameter } from '../modules/Parameter';\r\nimport { Vec2, Vec3 } from '../modules/vecmat';\r\nimport { UEC } from '@/modules/tile';\r\nimport { RenderGroup } from '@/modules/RenderGroup';\r\nimport { SceneConfig } from './SerializationService';\r\n\r\nexport class InitializationService extends EventTarget{\r\n init_barrier: Barrier;\r\n\r\n SERVER_URL = \"https://localhost:8080\";\r\n SOURCELIST_URL = \"sourcelist\";\r\n STATUSLIST_URL = \"statuslist\";\r\n SOURCEINFO_URL = \"source_info\";\r\n INITIAL_LAYERS_URL = \"initial_layers\";\r\n TILESIZE_URL = \"tilesize\";\r\n SAMPLE_URL = \"sample\";\r\n VERSIONS_URL = \"versions\";\r\n PRELOAD_ALL = false;\r\n PRODUCTION = true;\r\n LOD = true;\r\n\r\n FOV_LR = 61;\r\n FOV_UD = 49;\r\n\r\n DOME_FRUSTRA = {\r\n \"frustra\": [{\r\n \"name\": \"default\",\r\n \"fov\": {\r\n \"up\": 45,\r\n \"left\": 45,\r\n \"right\": 45,\r\n \"down\": 45\r\n },\r\n \"orientation\": {\r\n \"yaw\": 0,\r\n \"pitch\": 0,\r\n \"roll\": 0\r\n }\r\n }],\r\n \"active\": 0\r\n };\r\n\r\n public SceneName: string = \"\";\r\n\r\n private tilesize = [512,512];\r\n\r\n public EARTH_RADIUS = 6378000.0;\r\n\r\n private versionInfo: {attribute: string, version: string}[]= [];\r\n\r\n constructor(positionService: PositionService){\r\n super();\r\n ServiceBarrier.wait().then(() => {\r\n\r\n let ui_visible = new Parameter(\"UIVisible\", true, \"boolean\", false);\r\n Services.SettingsService.initializeSetting(ui_visible);\r\n\r\n let dome_mode = new Parameter(\"DomeMode\", \"normal\", \"string\", false);\r\n Services.SettingsService.initializeSetting(dome_mode);\r\n\r\n let camera_rotation_offset = new Parameter(\"CameraRotationOffset\", Vec3.empty(), \"vector3D\", false);\r\n Services.SettingsService.initializeSetting(camera_rotation_offset);\r\n\r\n let clearcolor = new Parameter(\"ClearColor\", new Vec3(0,0,0), \"vector3D\", false);\r\n Services.SettingsService.initializeSetting(clearcolor);\r\n\r\n let fontsize = new Parameter(\"FontSize\", 11, \"number\", false);\r\n fontsize.setRange(7,21);\r\n fontsize.setStep(1);\r\n Services.SettingsService.initializeSetting(fontsize);\r\n fontsize = Services.SettingsService.getSetting(\"FontSize\");\r\n document.querySelector(\"html\").style[\"font-size\"] = fontsize.value + \"pt\";\r\n\r\n\r\n let displacement_scale = new Parameter(\"Exaggeration\", 10.0, \"number\", true);\r\n displacement_scale.setShaderName(\"displacement_scale\");\r\n Services.SettingsService.initializeSetting(displacement_scale);\r\n setTimeout(() => Services.SettingsService.getSetting(\"Exaggeration\").userVisible = true, 500);\r\n\r\n let light_direction = new Parameter(\"Light Direction\", new Vec3(1.0, 1.0, 1.0), \"vector3D\", true);\r\n light_direction.shader_name = \"light_direction\";\r\n Services.SettingsService.initializeSetting(light_direction);\r\n\r\n let synchronized = new Parameter(\"Synchronized\", false, \"boolean\", false);\r\n Services.SettingsService.initializeSetting(synchronized);\r\n \r\n Services.SettingsService.initializeSetting(new Parameter(\"DomeTilt\", 0, \"number\"));\r\n\r\n\r\n window[\"Services\"] = Services;\r\n });\r\n this.SERVER_URL = window.location.origin; \r\n this.init_barrier = new Barrier();\r\n this.loadVersionInfo();\r\n positionService.setCameraPosition({\r\n Latitude: 57.31,\r\n Longitude: 3.48,\r\n Distance: 0.148,\r\n Azimuth: 0,\r\n Elevation: 5,\r\n VerticalPosition: 1\r\n });\r\n\r\n if(localStorage.getItem(\"dome_frustra\")){\r\n this.DOME_FRUSTRA = JSON.parse(localStorage.getItem(\"dome_frustra\"));\r\n console.log(\"loaded \" + this.DOME_FRUSTRA.frustra.length + \" frustra (active=\" + this.DOME_FRUSTRA.frustra[this.DOME_FRUSTRA.active].name + \")\");\r\n }\r\n\r\n window.addEventListener(\"beforeunload\", () => {\r\n localStorage.setItem(\"dome_frustra\", JSON.stringify(this.DOME_FRUSTRA, null, 3));\r\n });\r\n\r\n this.refresh_tile_size().then(() => {});\r\n this.init_barrier.resolve();\r\n\r\n GLBarrier.wait().then(async () => {\r\n await (AwaitableDelay(3000));\r\n console.log(\"Rendersize: \" , Services.RenderService.width, Services.RenderService.height);\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n });\r\n\r\n /*GLBarrier.wait().then(async () => {\r\n await (AwaitableDelay(1000));\r\n console.log(\"Resizing\");\r\n Services.RenderService.resized();\r\n });*/\r\n\r\n /*GLBarrier.wait().then(async () => {\r\n await AwaitableDelay(2500);\r\n let cube_str = await fetch(\"static/cube.obj\").then(r => r.text());\r\n let model = ModelObject.load_from_obj(cube_str);\r\n console.log(\"Loaded model with \" + model.vertexCount + \" vertices\", model);\r\n let new_source = new ObjectRenderSource(model); \r\n let new_layer = new RenderLayer();\r\n new_layer.typeHint = \"Model\";\r\n new_layer.source = new_source;\r\n new_layer.name = new_source.name;\r\n new_layer.visible = true;\r\n new_layer.unit = null;\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {\r\n \"layer_opacity\": new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1)\r\n }))\r\n new_layer.compositionFilter.parameters[\"layer_opacity\"].shader_name = \"layer_opacity\";\r\n \r\n Services.RenderLayerService.addLayer(new_layer);\r\n Services.RenderLayerService.selectLayer(new_layer);\r\n console.log(\"Added Layer\", new_layer);\r\n \r\n\r\n });*/\r\n GLBarrier.wait().then(async () => {\r\n Services.ModelRepositoryService.add_from_urls(\"lineal\", \"static/lineal.obj\", \"static/lineal1k.png\");\r\n });\r\n\r\n }\r\n\r\n getTileWidth(): number{\r\n return this.tilesize[0];\r\n }\r\n\r\n getTileHeight(): number{\r\n return this.tilesize[1];\r\n }\r\n\r\n getVersionInfo(){\r\n return this.versionInfo;\r\n }\r\n\r\n async loadVersionInfo(){\r\n this.versionInfo = [];\r\n let versions = await fetch(this.SERVER_URL + \"/\" + this.VERSIONS_URL).then(r => r.json());\r\n for(let key of Object.keys(versions)){\r\n this.versionInfo.push({attribute: key, version: versions[key]});\r\n }\r\n this.versionInfo.sort((a,b) => {\r\n if(a.attribute == \"gitversion\"){\r\n return -1;\r\n }else{\r\n if(a.attribute < b.attribute){\r\n return -1;\r\n }else if(a.attribute > b.attribute){\r\n return 1;\r\n }else{\r\n return 0;\r\n }\r\n }\r\n });\r\n }\r\n\r\n async refresh_tile_size(){\r\n this.tilesize = await fetch(this.SERVER_URL + \"/\" + this.TILESIZE_URL).then(r => r.json());\r\n }\r\n\r\n async initialize(){\r\n let search_str = window.location.search.substr(1);\r\n let hash_str = window.location.hash.substr(1);\r\n\r\n this.SceneName = search_str;\r\n if(this.SceneName != \"\"){\r\n try{\r\n let ilc = await fetch(`scene/${encodeURIComponent(this.SceneName)}`).then(r => r.json())\r\n this.load_initial_layers(ilc);\r\n }catch(e){\r\n console.error(e.message);\r\n await this.load_initial_layers();\r\n }\r\n }else{\r\n this.SceneName = \"default\";\r\n await this.load_initial_layers();\r\n }\r\n\r\n if(hash_str != \"\"){\r\n let parts = hash_str.split(\"&\");\r\n for(let p of parts){\r\n let [key, raw_value] = p.split(\"=\");\r\n key = decodeURIComponent(key);\r\n let value = decodeURIComponent(raw_value);\r\n let setting = Services.SettingsService.getSetting(key);\r\n if(setting){\r\n switch(setting.type){\r\n case 'boolean':\r\n let bool = value == \"true\";\r\n setting.value = bool;\r\n break;\r\n case 'vector2D':\r\n let v2= JSON.parse(value) as number[];\r\n setting.value = new Vec2(v2[0], v2[1]);\r\n break;\r\n case 'vector3D':\r\n let v3 = JSON.parse(value) as number[];\r\n setting.value = new Vec3(v3[0], v3[1], v3[2]);\r\n break;\r\n case 'number':\r\n let num = parseFloat(value);\r\n setting.value = num;\r\n break;\r\n case 'string':\r\n case 'colormap':\r\n let str = value as string;\r\n setting.value = str;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if(Services.SettingsService.getValueOrDefault(\"Synchronized\", false) == true){\r\n Services.SynchronizationService.tryStart();\r\n console.log(\"Synchronized\");\r\n }else{\r\n console.log(\"Not synchronized\");\r\n }\r\n }\r\n\r\n async load_initial_layers(config: SceneConfig = null){\r\n try{\r\n //Load config\r\n if(config == null){\r\n try{\r\n //Try to get the server config\r\n config = await fetch(Services.InitializationService.SERVER_URL + \"/\" + Services.InitializationService.INITIAL_LAYERS_URL).then(r => r.json());\r\n }catch{\r\n // No initial layers, just create the standard layers\r\n config = await fetch(\"default_initial_layers.json\").then(r => r.json());\r\n }\r\n }\r\n\r\n await Services.SerializationService.deserializeScene(config);\r\n\r\n }catch(e){\r\n console.error(\"Error loading initial layers\", e);\r\n await this.load_initial_layers(await fetch(\"default_initial_layers.json\").then(r => r.json()));\r\n }\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { ServiceBarrier, Services } from './Services';\r\n\r\nexport class MouseMoveEvent extends Event{\r\n x: number;\r\n y: number;\r\n constructor(x: number, y: number){\r\n super(\"MouseMove\");\r\n this.x = x;\r\n this.y = y;\r\n }\r\n}\r\n\r\nexport class KeyDownEvent extends Event{\r\n key: string;\r\n keycode: string;\r\n event: KeyboardEvent;\r\n constructor(event: KeyboardEvent){\r\n super(\"KeyDown\");\r\n this.event = event;\r\n this.key = event.key;\r\n this.keycode = event.code;\r\n }\r\n}\r\n\r\nexport class MouseDownEvent extends Event{\r\n x: number;\r\n y: number;\r\n left: boolean;\r\n right: boolean;\r\n constructor(x: number, y: number, left: boolean, right: boolean){\r\n super(\"MouseDown\");\r\n this.x = x;\r\n this.y = y;\r\n this.left = left;\r\n this.right = right;\r\n }\r\n}\r\n\r\nexport class InteractionStateChangedEvent extends Event{\r\n old: InteractionState;\r\n state: InteractionState;\r\n constructor(old: InteractionState, state: InteractionState) {\r\n super(\"InteractionStateChanged\");\r\n this.old = old;\r\n this.state = state;\r\n }\r\n}\r\n\r\nexport enum InteractionState{\r\n Move,\r\n Overlay,\r\n Measure\r\n}\r\n\r\nexport class InteractionService extends EventTarget{\r\n\r\n private target: string;\r\n public mouseMoveHandlers: Mapvoid> = new Map();\r\n public mouseUpHandlers: Mapvoid> = new Map();\r\n public mouseDownHandlers: Mapvoid> = new Map();\r\n public keyDownHandlers: Mapvoid> = new Map();\r\n public lastMousePosition: {x: number, y: number} = {x: 0, y: 0};\r\n\r\n public touchStartHandlers: Map void> = new Map();\r\n public touchEndHandlers: Map void> = new Map();\r\n public touchMoveHandlers: Map void> = new Map();\r\n public lastTouches: TouchList;\r\n public touchMoveHappened: boolean;\r\n\r\n public gamepadid: number;\r\n\r\n private interactionState: InteractionState = InteractionState.Move\r\n\r\n constructor(){\r\n super();\r\n document.addEventListener(\"mousemove\", (e) => {\r\n this.lastMousePosition = {x: e.clientX, y: e.clientY};\r\n this.dispatchEvent(new MouseMoveEvent(e.clientX,e.clientY));\r\n if(this.mouseMoveHandlers.has(this.target)) this.mouseMoveHandlers.get(this.target)(e)\r\n else this.defaultHandler(e);\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n });\r\n document.addEventListener(\"mouseup\", (e) => {\r\n if(this.mouseUpHandlers.has(this.target)) this.mouseUpHandlers.get(this.target)(e)\r\n else this.defaultHandler(e);\r\n });\r\n document.addEventListener(\"mousedown\", e => {\r\n if(this.mouseDownHandlers.has(this.target)) this.mouseDownHandlers.get(this.target)(e)\r\n this.dispatchEvent(new MouseDownEvent(e.clientX, e.clientY, e.buttons == 1, e.buttons==2));\r\n });\r\n document.addEventListener(\"keydown\", e => {\r\n if(this.keyDownHandlers.has(this.target)) this.keyDownHandlers.get(this.target)(e)\r\n this.dispatchEvent(new KeyDownEvent(e));\r\n });\r\n document.addEventListener(\"touchstart\", e => {\r\n if(this.touchStartHandlers.has(this.target)) this.touchStartHandlers.get(this.target)(e)\r\n else this.defaultTouchHandler(e);\r\n });\r\n document.addEventListener(\"touchend\", e => {\r\n if(this.touchEndHandlers.has(this.target)) this.touchEndHandlers.get(this.target)(e)\r\n else this.defaultTouchHandler(e);\r\n });\r\n document.addEventListener(\"touchmove\", e => {\r\n if(this.touchMoveHandlers.has(this.target)) this.touchMoveHandlers.get(this.target)(e)\r\n else this.defaultTouchHandler(e);\r\n });\r\n\r\n\r\n this.touchEndHandlers.set(\"threedee\", (e) => {\r\n if(!this.touchMoveHappened){\r\n let me = new MouseEvent(\"mousedown\", {\r\n buttons: 1\r\n });\r\n this.mouseDownHandlers.get(\"threedee\")(me);\r\n }\r\n });\r\n\r\n this.touchMoveHandlers.set(\"threedee\", (e) => {\r\n if(this.interactionState == InteractionState.Move){\r\n let dist = (x1, y1, x2, y2) => Math.sqrt(Math.pow(x1 - x2,2) + Math.pow(y1+y2, 2));\r\n if(e.touches.length == 1){\r\n //One touch detected, only update movement\r\n let currentTouch = e.touches[0];\r\n let previousTouches = this.lastTouches[0];\r\n let movementX = (currentTouch.clientX - previousTouches.clientX) / 10;\r\n let movementY = (currentTouch.clientY - previousTouches.clientY) / 10;\r\n Services.DebugService.putDebug(`Movement X ${movementX}\\nMovement Y ${movementY}`);\r\n Services.DebugService.commitDebug();\r\n Services.PositionService.moveCamera(movementX, movementY);\r\n this.touchMoveHappened = true;\r\n }else if(e.touches.length == 2){\r\n //Two touches detected, update Movement, Zoom and Rotation\r\n let currentTouch = e.touches[0];\r\n let previousTouches = this.lastTouches[0];\r\n let movementX = (currentTouch.clientX - previousTouches.clientX) / 10;\r\n let movementY = (currentTouch.clientY - previousTouches.clientY) / 10;\r\n\r\n let old_touch_dist = dist(this.lastTouches[0].clientX, this.lastTouches[0].clientY, this.lastTouches[1].clientX, this.lastTouches[1].clientY);\r\n let new_touch_dist = dist(e.touches[0].clientX, e.touches[0].clientY, e.touches[1].clientX, e.touches[1].clientY);\r\n\r\n let zoom = (new_touch_dist - old_touch_dist) / 10;\r\n\r\n let old_angle = Math.atan2(this.lastTouches[1].clientY - this.lastTouches[0].clientY, this.lastTouches[1].clientX - this.lastTouches[0].clientX);\r\n let new_angle = Math.atan2(e.touches[1].clientY - e.touches[0].clientY, e.touches[1].clientX - e.touches[0].clientX);\r\n\r\n let angle_diff = new_angle - old_angle;\r\n\r\n Services.PositionService.zoomCamera(zoom * 0.3);\r\n Services.PositionService.tiltCamera(angle_diff, 0);\r\n\r\n Services.DebugService.putDebug(`Movement X ${movementX}\\nMovement Y ${movementY}\\nZoom: ${new_touch_dist - old_touch_dist}\\n Old Touch Dist ${old_touch_dist}\\nNew Touch Dist ${new_touch_dist}\\n Angle Diff ${angle_diff}`);\r\n Services.DebugService.commitDebug();\r\n Services.PositionService.moveCamera(movementX, movementY);\r\n this.touchMoveHappened = true;\r\n e.preventDefault();\r\n }else if(e.touches.length >= 3){\r\n\r\n }\r\n\r\n\r\n /*if (e.buttons == 1){\r\n if(e.ctrlKey){\r\n Services.PositionService.tiltCamera(e.movementX, e.movementY)\r\n } else {\r\n Services.PositionService.moveCamera(e.movementX, e.movementY)\r\n }\r\n }else if (e.buttons == 4){\r\n Services.PositionService.tiltCamera(e.movementX, e.movementY)\r\n } */\r\n } \r\n if(e.touches.length != this.lastTouches.length){\r\n this.lastTouches = e.touches;\r\n }\r\n });\r\n\r\n this.mouseDownHandlers.set(\"threedee\", (e) => {\r\n if(this.interactionState == InteractionState.Move){\r\n /*if(e.buttons == 2){\r\n Services.OverlayService.addCurrentLayerOverlay();\r\n }*/\r\n } else if (this.interactionState == InteractionState.Overlay) {\r\n if (e.buttons == 1){\r\n Services.OverlayService.addCurrentLayerOverlay();\r\n } \r\n } else if (this.interactionState == InteractionState.Measure){\r\n if (e.buttons == 1){\r\n Services.MeasurementService.set_start()\r\n }\r\n }\r\n })\r\n this.mouseMoveHandlers.set(\"threedee\", (e) => {\r\n if(this.interactionState == InteractionState.Move){\r\n if (e.buttons == 1){\r\n if(e.ctrlKey){\r\n Services.PositionService.tiltCamera(e.movementX, e.movementY)\r\n } else {\r\n Services.PositionService.moveCamera(e.movementX, e.movementY)\r\n }\r\n }else if (e.buttons == 4){\r\n Services.PositionService.tiltCamera(e.movementX, e.movementY)\r\n } \r\n }else if(this.interactionState == InteractionState.Measure){\r\n if(e.buttons == 1){\r\n Services.MeasurementService.set_end();\r\n }else{\r\n \r\n }\r\n }\r\n });\r\n //Handle new gamepad connections\r\n window.addEventListener(\"gamepadconnected\", (e: GamepadEvent) => {\r\n console.log(`Connected gamepad ID ${e.gamepad.id} with ${e.gamepad.buttons.length} buttons and ${e.gamepad.axes.length} axes`);\r\n //this.gamepadid = e.gamepad.index;\r\n });\r\n //Handle gamepad disconnections\r\n window.addEventListener(\"gamepaddisconnected\", (e: GamepadEvent) => {\r\n console.log(`Disconnected gamepad with ID ${e.gamepad.id}`);\r\n if(this.gamepadid == e.gamepad.index){\r\n this.gamepadid = null;\r\n //Look for new gamepad\r\n //@ts-ignore\r\n for(let gp of Navigator.getGamepads()){\r\n if(gp != null){\r\n this.gamepadid = gp.index;\r\n console.log(`Switching to gamepad ID {} with ${gp.buttons.length} buttons and ${gp.axes.length} axes`);\r\n }\r\n }\r\n }\r\n });\r\n\r\n ServiceBarrier.wait().then(() => {\r\n requestAnimationFrame(() => this.updateGamepad());\r\n });\r\n }\r\n\r\n private updateGamepad(){\r\n let toggle_rotation_lock_energy = 0;\r\n let gamepad = this.getGamepad();\r\n if(gamepad != null){\r\n //See https://luser.github.io/gamepadtest/ for button config\r\n let left_stick_x = gamepad.axes[0] || 0;\r\n let left_stick_y = gamepad.axes[1] || 0;\r\n let right_stick_x = gamepad.axes[2] || 0;\r\n let right_stick_y = gamepad.axes[3] || 0;\r\n\r\n let speed = 20;\r\n let threshold = 0.2;\r\n let zoom_speed = 0.2;\r\n\r\n if((Math.abs(right_stick_x) > threshold) || Math.abs(right_stick_y) > threshold){\r\n Services.PositionService.tiltCamera(right_stick_x * speed * -1, right_stick_y * speed * -1);\r\n }\r\n if((Math.abs(left_stick_x) > threshold) || Math.abs(left_stick_y) > threshold){\r\n Services.PositionService.moveCamera(left_stick_x * speed * -1, left_stick_y * speed * -1);\r\n }\r\n\r\n let left_back_trigger = gamepad.buttons[6];\r\n let right_back_trigger = gamepad.buttons[7];\r\n\r\n if(Math.abs(left_back_trigger?.value || 0) > threshold){\r\n Services.PositionService.zoomCamera(left_back_trigger.value * zoom_speed);\r\n }\r\n \r\n if(Math.abs(right_back_trigger?.value || 0) > threshold){\r\n Services.PositionService.zoomCamera(-1 * right_back_trigger.value * zoom_speed);\r\n }\r\n\r\n let button_a = gamepad.buttons[0];\r\n let button_b = gamepad.buttons[1];\r\n let button_c = gamepad.buttons[2];\r\n let button_d = gamepad.buttons[3];\r\n\r\n if(button_a?.pressed){\r\n let pos = Services.PositionService.getCameraPosition();\r\n pos.Azimuth = 0;\r\n pos.Elevation = 90;\r\n Services.PositionService.setCameraPosition(pos);\r\n Services.InteractionService.mousedown(\"compass\");\r\n }\r\n\r\n toggle_rotation_lock_energy += button_b?.pressed ? 1 : -1;\r\n if(toggle_rotation_lock_energy < 0){\r\n toggle_rotation_lock_energy = 0;\r\n }\r\n\r\n if(toggle_rotation_lock_energy > 2){\r\n Services.PositionService.rotation_locked = !Services.PositionService.rotation_locked;\r\n toggle_rotation_lock_energy = -100;\r\n }\r\n\r\n let button_left_shoulder = gamepad.buttons[4];\r\n let button_right_shoulder = gamepad.buttons[5];\r\n let dpad_left = gamepad.buttons[14];\r\n let dpad_right =gamepad.buttons[15];\r\n let dpad_up = gamepad.buttons[12];\r\n let dpad_down = gamepad.buttons[13];\r\n\r\n if(button_left_shoulder?.pressed){Services.TimeService.moveTimeStart();}\r\n if(button_right_shoulder?.pressed){Services.TimeService.moveTimeEnd();}\r\n if(dpad_left?.pressed){Services.TimeService.moveTimeEarlier();}\r\n if(dpad_right?.pressed){Services.TimeService.moveTimeLater();}\r\n if(dpad_up?.pressed){Services.TimeService.increaseTimeRange();}\r\n if(dpad_down?.pressed){Services.TimeService.reduceTimeRange();}\r\n\r\n\r\n //console.log(`A0=${gamepad.axes[0]} A1=${gamepad.axes[1]}`);\r\n }\r\n requestAnimationFrame(() => this.updateGamepad());\r\n }\r\n\r\n public getGamepad(): Gamepad{\r\n if(this.gamepadid == null){\r\n return null;\r\n }else{\r\n return navigator.getGamepads()[this.gamepadid];\r\n }\r\n }\r\n\r\n mousedown(target: string, e?: MouseEvent){\r\n if(e){\r\n this.lastMousePosition = {x: e.clientX, y: e.clientY}\r\n }\r\n this.target = target;\r\n }\r\n\r\n touchstart(target: string, e?: TouchEvent){\r\n if(e){\r\n this.lastTouches = e.touches;\r\n }\r\n this.target = target;\r\n this.touchMoveHappened = false;\r\n }\r\n\r\n setInteractionState(state: InteractionState){\r\n if(state != this.interactionState){\r\n this.dispatchEvent(new InteractionStateChangedEvent(this.interactionState, state));\r\n this.interactionState = state;\r\n }\r\n }\r\n\r\n getInteractionState() {\r\n return this.interactionState;\r\n }\r\n\r\n defaultHandler(e: MouseEvent){\r\n }\r\n\r\n defaultTouchHandler(e: TouchEvent){\r\n\r\n }\r\n\r\n getTarget(): string{\r\n return this.target;\r\n }\r\n\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\n\nexport const Shaders: {[module: string]: {[program_name: string]: {vertex: string, fragment: string}}} = {\n \"compositing\": {\n \"atmosphere\": {\n \"vertex\": \"//@import ../shared/plain.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n screen_coordinate = (position + 1.0) / 2.0;\\r\\n gl_Position = vec4(position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import atmosphere.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n//#extension GL_EXT_draw_buffers : require \\r\\n#extension GL_EXT_frag_depth : require\\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform float layer_opacity;\\r\\n\\r\\nuniform sampler2D color_map; //data that has already been composited\\r\\nuniform sampler2D depth_map;\\r\\nuniform sampler2D normal_map;\\r\\nuniform sampler2D layer_value_map; //data from the layer that is to be composited\\r\\nuniform sampler2D layer_depth_map;\\r\\nuniform sampler2D layer_normal_map;\\r\\n\\r\\nuniform sampler2D gradient;\\r\\n\\r\\nuniform float optical_density;\\r\\nuniform float transmission;\\r\\nuniform float near_ratio;\\r\\n\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\nfloat depth_linear(float depth_raw, float near_ratio){\\r\\n float a = near_ratio / (near_ratio - 1.0);\\r\\n float b = 1.0 - a;\\r\\n return a / (depth_raw - b);\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nfloat lambert_shading(vec3 normal, vec3 light) {\\r\\n return clamp(dot(normal, light), 0.0, 1.0);\\r\\n}\\n\\r\\n\\r\\nfloat sigmoid(float x){\\r\\n return (x / sqrt(1.0 + x * x)) / 2.0 + 0.5;\\r\\n}\\r\\n\\r\\nvoid main(){\\r\\n float ld = depth_linear(texture2D(layer_depth_map, screen_coordinate).x, near_ratio);\\r\\n float d = depth_linear(texture2D(depth_map, screen_coordinate).x, near_ratio);\\r\\n float depth_difference = d - ld;\\r\\n vec4 lvm_color = texture2D(layer_value_map, screen_coordinate);\\r\\n vec4 cm_color = texture2D(color_map, screen_coordinate);\\r\\n bool lvm_isnan = isnan(lvm_color.r + lvm_color.g + lvm_color.b + lvm_color.a);\\r\\n if(lvm_isnan){\\r\\n gl_FragColor = cm_color;\\r\\n gl_FragDepthEXT = d;\\r\\n return;\\r\\n }\\r\\n if(depth_difference < 0.0){\\r\\n gl_FragColor = cm_color;\\r\\n gl_FragDepthEXT = d;\\r\\n return;\\r\\n }\\r\\n\\r\\n gl_FragDepthEXT = min(ld, d);\\r\\n\\r\\n vec3 shading_color = vec3(lvm_color.r);\\r\\n \\r\\n float density_pow_fac = pow(1.0/1000.0, optical_density);\\r\\n float current_depth = pow(depth_difference, density_pow_fac);\\r\\n\\r\\n vec2 gradient_position = vec2(current_depth, 0.5);\\r\\n vec3 water_color = texture2D(gradient, gradient_position).rgb;\\r\\n\\r\\n float transmission_depth = pow(depth_difference, transmission * density_pow_fac);\\r\\n\\r\\n vec3 color = shading_color + mix(cm_color.rgb, water_color, transmission_depth);\\r\\n\\r\\n float alpha = 1.0;\\r\\n if(depth_difference > 0.99){\\r\\n alpha = 0.3;\\r\\n }\\r\\n\\r\\n gl_FragColor = vec4(color,alpha);\\r\\n}\"\n },\n \"blending\": {\n \"vertex\": \"//@import ../shared/plain.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n screen_coordinate = (position + 1.0) / 2.0;\\r\\n gl_Position = vec4(position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import blending.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n//#extension GL_EXT_draw_buffers : require \\r\\n#extension GL_EXT_frag_depth : require\\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform float layer_opacity;\\r\\n\\r\\nuniform sampler2D color_map; //data that has already been composited\\r\\nuniform sampler2D depth_map;\\r\\nuniform sampler2D normal_map;\\r\\nuniform sampler2D layer_value_map; //data from the layer that is to be composited\\r\\nuniform sampler2D layer_depth_map;\\r\\nuniform sampler2D layer_normal_map;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nfloat sigmoid(float x){\\r\\n return (x / sqrt(1.0 + x * x)) / 2.0 + 0.5;\\r\\n}\\r\\n\\r\\nvoid main(){\\r\\n float ld = texture2D(layer_depth_map, screen_coordinate).x;\\r\\n float d = texture2D(depth_map, screen_coordinate).x;\\r\\n float depth_difference = d - ld;\\r\\n vec4 lvm_color = texture2D(layer_value_map, screen_coordinate);\\r\\n vec4 cm_color = texture2D(color_map, screen_coordinate);\\r\\n bool lvm_isnan = isnan(lvm_color.r + lvm_color.g + lvm_color.b + lvm_color.a);\\r\\n if(lvm_isnan){\\r\\n gl_FragColor = cm_color;\\r\\n gl_FragDepthEXT = d;\\r\\n return;\\r\\n }\\r\\n float blendfac = sigmoid(depth_difference * 100000.0) * lvm_color.a * layer_opacity;\\r\\n if(blendfac < 1.0/255.0){\\r\\n gl_FragColor = cm_color;\\r\\n gl_FragDepthEXT = d;\\r\\n return;\\r\\n }\\r\\n gl_FragDepthEXT = min(ld, d);\\r\\n gl_FragColor = blendfac * lvm_color + (1.0 - blendfac) * cm_color;\\r\\n}\"\n },\n \"ocean\": {\n \"vertex\": \"//@import ../shared/plain.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n screen_coordinate = (position + 1.0) / 2.0;\\r\\n gl_Position = vec4(position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import ocean.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n//#extension GL_EXT_draw_buffers : require \\r\\n#extension GL_EXT_frag_depth : require\\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform float layer_opacity;\\r\\n\\r\\nuniform sampler2D color_map; //data that has already been composited\\r\\nuniform sampler2D depth_map;\\r\\nuniform sampler2D normal_map;\\r\\nuniform sampler2D layer_value_map; //data from the layer that is to be composited\\r\\nuniform sampler2D layer_depth_map;\\r\\nuniform sampler2D layer_normal_map;\\r\\n\\r\\nuniform sampler2D gradient;\\r\\n\\r\\nuniform float optical_density;\\r\\nuniform float transmission;\\r\\nuniform float near_ratio;\\r\\n\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\nfloat depth_linear(float depth_raw, float near_ratio){\\r\\n float a = near_ratio / (near_ratio - 1.0);\\r\\n float b = 1.0 - a;\\r\\n return a / (depth_raw - b);\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nfloat lambert_shading(vec3 normal, vec3 light) {\\r\\n return clamp(dot(normal, light), 0.0, 1.0);\\r\\n}\\n\\r\\n\\r\\nfloat sigmoid(float x){\\r\\n return (x / sqrt(1.0 + x * x)) / 2.0 + 0.5;\\r\\n}\\r\\n\\r\\nvoid main(){\\r\\n float ld = depth_linear(texture2D(layer_depth_map, screen_coordinate).x, near_ratio);\\r\\n float d = depth_linear(texture2D(depth_map, screen_coordinate).x, near_ratio);\\r\\n float depth_difference = d - ld;\\r\\n vec4 lvm_color = texture2D(layer_value_map, screen_coordinate);\\r\\n vec4 cm_color = texture2D(color_map, screen_coordinate);\\r\\n bool lvm_isnan = isnan(lvm_color.r + lvm_color.g + lvm_color.b + lvm_color.a);\\r\\n if(lvm_isnan){\\r\\n gl_FragColor = cm_color;\\r\\n gl_FragDepthEXT = d;\\r\\n return;\\r\\n }\\r\\n if(depth_difference < 0.0){\\r\\n gl_FragColor = cm_color;\\r\\n gl_FragDepthEXT = d;\\r\\n return;\\r\\n }\\r\\n\\r\\n gl_FragDepthEXT = min(ld, d);\\r\\n\\r\\n vec3 shading_color = vec3(lvm_color.r);\\r\\n \\r\\n float density_pow_fac = pow(1.0/1000.0, optical_density);\\r\\n float current_depth = pow(depth_difference, density_pow_fac);\\r\\n\\r\\n vec2 gradient_position = vec2(current_depth, 0.5);\\r\\n vec3 water_color = texture2D(gradient, gradient_position).rgb;\\r\\n\\r\\n float transmission_depth = pow(depth_difference, transmission * density_pow_fac);\\r\\n\\r\\n vec3 color = shading_color + mix(cm_color.rgb, water_color, transmission_depth);\\r\\n\\r\\n float alpha = 1.0;\\r\\n if(depth_difference > 0.99){\\r\\n alpha = 0.3;\\r\\n }\\r\\n\\r\\n gl_FragColor = vec4(color,alpha);\\r\\n}\"\n },\n \"selection\": {\n \"vertex\": \"//@import ../shared/plain.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n screen_coordinate = (position + 1.0) / 2.0;\\r\\n gl_Position = vec4(position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import selection.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_frag_depth : require\\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform sampler2D color_map; //data that has already been composited\\r\\nuniform sampler2D depth_map;\\r\\nuniform sampler2D normal_map;\\r\\nuniform sampler2D layer_value_map; //selection bounding box as rendered to screen space\\r\\nuniform sampler2D layer_depth_map;\\r\\nuniform sampler2D layer_normal_map;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nfloat sigmoid_4(float x){\\r\\n return (x / sqrt(1.0 + x * x)) / 4.0 + 0.25;\\r\\n}\\r\\n\\r\\nvoid main(){\\r\\n float ld = texture2D(layer_depth_map, screen_coordinate).x;\\r\\n float d = texture2D(depth_map, screen_coordinate).x;\\r\\n float depth_difference = d - ld;\\r\\n vec4 lvm_color = texture2D(layer_value_map, screen_coordinate);\\r\\n vec4 cm_color = texture2D(color_map, screen_coordinate);\\r\\n bool lvm_isnan = isnan(lvm_color.r + lvm_color.g + lvm_color.b + lvm_color.a);\\r\\n if(lvm_isnan){\\r\\n gl_FragColor = cm_color;\\r\\n gl_FragDepthEXT = d;\\r\\n return;\\r\\n }\\r\\n float blendfac = sigmoid_4(depth_difference * 100000.0) * lvm_color.a;\\r\\n if(blendfac < 1.0/255.0){\\r\\n gl_FragColor = cm_color;\\r\\n gl_FragDepthEXT = d;\\r\\n return;\\r\\n }\\r\\n gl_FragDepthEXT = min(ld, d);\\r\\n gl_FragColor = blendfac * lvm_color + (1.0 - blendfac) * cm_color;\\r\\n}\"\n }\n },\n \"effects\": {\n \"colormap\": {\n \"vertex\": \"//@import ../shared/plain.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n screen_coordinate = (position + 1.0) / 2.0;\\r\\n gl_Position = vec4(position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import colormap.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_frag_depth : require\\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform sampler2D colormap;\\r\\nuniform float colormap_min;\\r\\nuniform float colormap_max;\\r\\n\\r\\nuniform sampler2D value_map;\\r\\nuniform sampler2D depth_map;\\r\\nuniform sampler2D normal_map;\\r\\n//uniform sampler2D worldPosition_map;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main() {\\r\\n vec4 value = texture2D(value_map, screen_coordinate);\\r\\n\\r\\n float cm_val = (value.r - colormap_min) / (colormap_max - colormap_min); \\r\\n\\r\\n if(isnan(cm_val))\\r\\n discard;\\r\\n else{\\r\\n vec3 normal = texture2D(normal_map, screen_coordinate).xyz;\\r\\n vec4 color = texture2D(colormap, vec2(cm_val, 0.5));\\r\\n gl_FragColor = vec4(color.rgb, color.a);\\r\\n gl_FragDepthEXT = texture2D(depth_map, screen_coordinate).r;\\r\\n }\\r\\n}\"\n },\n \"dome_lighting\": {\n \"vertex\": \"//@import ../shared/plain.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n screen_coordinate = (position + 1.0) / 2.0;\\r\\n gl_Position = vec4(position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import dome_lighting.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_frag_depth : require\\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform vec2 screen_resolution;\\r\\n\\r\\nuniform float shading_intensity;\\r\\nuniform float shading_falloff;\\r\\nuniform float brightness;\\r\\nuniform float spread;\\r\\nuniform float depth_falloff;\\r\\n\\r\\nuniform float near_ratio;\\r\\n\\r\\nuniform sampler2D value_map;\\r\\nuniform sampler2D depth_map;\\r\\nuniform sampler2D normal_map;\\r\\nuniform sampler2D worldPosition_map;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nfloat depth_linear(float depth_raw, float near_ratio){\\r\\n float a = near_ratio / (near_ratio - 1.0);\\r\\n float b = 1.0 - a;\\r\\n return a / (depth_raw - b);\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main() {\\r\\n vec2 coord_table[32];\\r\\n float radius_table[33];\\r\\n\\r\\ncoord_table[0] = vec2(-0.5076103117556678, -0.026501346792002348);\\r\\nradius_table[0] = 0.5083016328740999;\\r\\ncoord_table[1] = vec2(0.013822912361196156, -0.7527951948138351);\\r\\nradius_table[1] = 0.7529220930753362;\\r\\ncoord_table[2] = vec2(0.8674557842271451, -0.3566600699357759);\\r\\nradius_table[2] = 0.9379157441240252;\\r\\ncoord_table[3] = vec2(0.9123227307019964, 0.6015114342770946);\\r\\nradius_table[3] = 1.092771142793236;\\r\\ncoord_table[4] = vec2(0.16455805405288593, 1.2175488298117298);\\r\\nradius_table[4] = 1.228618942605715;\\r\\ncoord_table[5] = vec2(-0.8015427878802415, 1.0876331910317771);\\r\\nradius_table[5] = 1.3510798640483086;\\r\\ncoord_table[6] = vec2(-1.4250531377626368, 0.3330658318726109);\\r\\nradius_table[6] = 1.4634579918153205;\\r\\ncoord_table[7] = vec2(-1.4273958103798716, -0.6487057876536729);\\r\\nradius_table[7] = 1.5678896639832098;\\r\\ncoord_table[8] = vec2(-0.8403161415144672, -1.4383759003946675);\\r\\nradius_table[8] = 1.6658500678410204;\\r\\ncoord_table[9] = vec2(0.09285458708271008, -1.7559549007664252);\\r\\nradius_table[9] = 1.758408254037704;\\r\\ncoord_table[10] = vec2(1.0509020989574152, -1.5181173354586193);\\r\\nradius_table[10] = 1.8463681826258487;\\r\\ncoord_table[11] = vec2(1.748450983075471, -0.8180340848810226);\\r\\nradius_table[11] = 1.930352455963603;\\r\\ncoord_table[12] = vec2(2.006179762915575, 0.13704015650821968);\\r\\nradius_table[12] = 2.010854854440715;\\r\\ncoord_table[13] = vec2(1.7752140929048679, 1.0997756856712746);\\r\\nradius_table[13] = 2.0882747985937518;\\r\\ncoord_table[14] = vec2(1.125021373171354, 1.847333161279272);\\r\\nradius_table[14] = 2.162940798740092;\\r\\ncoord_table[15] = vec2(0.2085695982852265, 2.2253743550602407);\\r\\nradius_table[15] = 2.235126908586768;\\r\\ncoord_table[16] = vec2(-0.7816926803031228, 2.1684739451017006);\\r\\nradius_table[16] = 2.305064575456491;\\r\\ncoord_table[17] = vec2(-1.6561934054656875, 1.6993885972149645);\\r\\nradius_table[17] = 2.372951369213511;\\r\\ncoord_table[18] = vec2(-2.2617559378648138, 0.9126740686002686);\\r\\nradius_table[18] = 2.438957539188026;\\r\\ncoord_table[19] = vec2(-2.502715207148924, -0.05081492560584867);\\r\\nradius_table[19] = 2.503231025047191;\\r\\ncoord_table[20] = vec2(-2.3490589351765934, -1.032362257746545);\\r\\nradius_table[20] = 2.565901344976563;\\r\\ncoord_table[21] = vec2(-1.833161245102428, -1.8817765862364415);\\r\\nradius_table[21] = 2.6270826540200747;\\r\\ncoord_table[22] = vec2(-1.037944848016028, -2.4783006466178104);\\r\\nradius_table[22] = 2.686876179236638;\\r\\ncoord_table[23] = vec2(-0.07981717288135476, -2.744211658459212);\\r\\nradius_table[23] = 2.7453721801442934;\\r\\ncoord_table[24] = vec2(0.9103519689043139, -2.650681980807845);\\r\\nradius_table[24] = 2.802651542854973;\\r\\ncoord_table[25] = vec2(1.8054197976390747, -2.2165565569222814);\\r\\nradius_table[25] = 2.858787088214559;\\r\\ncoord_table[26] = vec2(2.497235152905942, -1.5014350669256586);\\r\\nradius_table[26] = 2.913844654250329;\\r\\ncoord_table[27] = vec2(2.907663353243581, -0.5948354850546118);\\r\\nradius_table[27] = 2.9678839987566663;\\r\\ncoord_table[28] = vec2(2.9948011614702232, 0.3966896138732615);\\r\\nradius_table[28] = 3.0209595572430814;\\r\\ncoord_table[29] = vec2(2.75445050765089, 1.3627456091833692);\\r\\nradius_table[29] = 3.0731210835967393;\\r\\ncoord_table[30] = vec2(2.2174112793646374, 2.2011477186805886);\\r\\nradius_table[30] = 3.1244141949021866;\\r\\ncoord_table[31] = vec2(1.4434833448917717, 2.827759566258289);\\r\\nradius_table[31] = 3.17488083737724;\\r\\nradius_table[32] = 3.2245596869482696;\\r\\n\\r\\n vec2 x = vec2(1.0 / screen_resolution.x * spread, 0.0); // / radius_table[32], 0.0);\\r\\n vec2 y = vec2(0.0, 1.0 / screen_resolution.y * spread);// / radius_table[32]);\\r\\n \\r\\n float raw_depth = texture2D(depth_map, screen_coordinate).r;\\r\\n\\r\\n float ref_depth = depth_linear(raw_depth, near_ratio);\\r\\n float coverage = 0.0;\\r\\n for(int i = 0; i < 32; i++){\\r\\n vec2 offset_coord = coord_table[i];\\r\\n float radius = radius_table[i] * spread;\\r\\n float d = depth_linear(texture2D(depth_map, screen_coordinate + x * offset_coord.x + y * offset_coord.y).r, near_ratio);\\r\\n float c = max(0.0, ref_depth - d);\\r\\n coverage += (1.0 - (1.0 / pow(c + 1.0, depth_falloff * 10.0)));\\r\\n\\r\\n }\\r\\n coverage = max(0.0, 1.0 - coverage / 32.0);\\r\\n float shading = 1.0 + (pow(coverage, pow(10.0, shading_falloff)) - 1.0) * shading_intensity;\\r\\n\\r\\n vec4 value = texture2D(value_map, screen_coordinate);\\r\\n gl_FragColor = vec4(value.rgb * shading * brightness, value.a);\\r\\n gl_FragDepthEXT = raw_depth;\\r\\n}\"\n },\n \"hill_shading\": {\n \"vertex\": \"//@import ../shared/plain.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n screen_coordinate = (position + 1.0) / 2.0;\\r\\n gl_Position = vec4(position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import hill_shading.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_frag_depth : require\\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform vec3 light_direction;\\r\\n\\r\\nuniform float shading_intensity;\\r\\nuniform float shading_falloff;\\r\\nuniform float brightness;\\r\\n\\r\\nuniform sampler2D value_map;\\r\\nuniform sampler2D depth_map;\\r\\nuniform sampler2D normal_map;\\r\\nuniform sampler2D worldPosition_map;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nfloat lambert_shading(vec3 normal, vec3 light) {\\r\\n return clamp(dot(normal, light), 0.0, 1.0);\\r\\n}\\n\\r\\n\\r\\nvoid main() {\\r\\n vec4 value = texture2D(value_map, screen_coordinate);\\r\\n\\r\\n if(isnan(value.r) || isnan(value.g) || isnan(value.b) || isnan(value.a) || value.a == 0.0)\\r\\n discard;\\r\\n else{\\r\\n vec3 normal = texture2D(normal_map, screen_coordinate).xyz;\\r\\n float lambert = lambert_shading(normal, normalize(light_direction));\\r\\n float shading = 1.0 + (pow(lambert, pow(10.0, shading_falloff)) - 1.0) * shading_intensity;\\r\\n gl_FragColor = vec4(value.rgb * shading * brightness, value.a);\\r\\n gl_FragDepthEXT = texture2D(depth_map, screen_coordinate).r;\\r\\n }\\r\\n}\"\n }\n },\n \"include\": {},\n \"particles\": {\n \"particles\": {\n \"vertex\": \"//@import particles.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\nuniform float source_offset;\\r\\nuniform float target_offset;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n vec2 position_ = position;\\r\\n position_ = (position + 1.0) / 2.0;\\r\\n screen_coordinate = vec2((position_.x + source_offset) / 8.0, position_.y);\\r\\n position_.x = (position_.x + target_offset) / 8.0;\\r\\n gl_Position = vec4(position_ * 2.0 - 1.0, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import particles.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform sampler2D particles;\\r\\nuniform sampler2D vector_field;\\r\\n\\r\\nuniform vec2 vector_field_coord_offset;\\r\\nuniform vec2 vector_field_coord_scale;\\r\\n\\r\\nuniform float particle_speed;\\r\\nuniform float particle_lifetime;\\r\\n\\r\\nuniform vec2 frame_random;\\r\\nuniform sampler2D global_random;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main() {\\r\\n\\r\\n vec3 particle_data = texture2D(particles, screen_coordinate).rgb;\\r\\n vec2 particle_pos = particle_data.rg;\\r\\n float particle_age = particle_data.b;\\r\\n\\r\\n vec2 vector_field_coord = (particle_pos - vector_field_coord_offset) / vector_field_coord_scale;\\r\\n vec2 direction = texture2D(vector_field, vector_field_coord).rg;\\r\\n\\r\\n if( isnan(direction.x) ||\\r\\n isnan(direction.y) ||\\r\\n length(direction) == 0.0 ||\\r\\n particle_pos.x < vector_field_coord_offset.x ||\\r\\n particle_pos.y < vector_field_coord_offset.y ||\\r\\n particle_pos.x > vector_field_coord_offset.x + vector_field_coord_scale.x ||\\r\\n particle_pos.y > vector_field_coord_offset.y + vector_field_coord_scale.y ||\\r\\n particle_age < 0.0 ||\\r\\n isnan(particle_pos.x) ||\\r\\n isnan(particle_pos.y) ||\\r\\n isnan(particle_age))\\r\\n {\\r\\n vec4 random = texture2D(global_random, screen_coordinate + frame_random);\\r\\n vec2 new_pos = vector_field_coord + random.xy * 1.241352;\\r\\n new_pos = mod(new_pos, 1.0);\\r\\n float npx = new_pos.x * vector_field_coord_scale.x + vector_field_coord_offset.x;\\r\\n \\r\\n //Correct density for smaller differential area near the poles\\r\\n float ymin_tr = 0.5 - cos(radians(180.0) * vector_field_coord_offset.y) / 2.0;\\r\\n float ymax_tr = 0.5 - cos(radians(180.0) * (vector_field_coord_offset.y + vector_field_coord_scale.y)) / 2.0;\\r\\n float npy = new_pos.y * (ymax_tr - ymin_tr) + ymin_tr;\\r\\n npy = 1.0 - acos(2.0 * npy - 1.0) / radians(180.0);\\r\\n\\r\\n gl_FragColor = vec4(npx, npy, particle_lifetime * (random.z + 0.5), 1.0);\\r\\n } else {\\r\\n //vec2 new_pos = particle_pos + direction * (particle_speed / EARTH_RADIUS);\\r\\n \\r\\n vec2 speed = direction * particle_speed / EARTH_RADIUS;\\r\\n\\r\\n vec3 world_pos = world_normal(particle_pos);\\r\\n\\r\\n vec3 world_u = world_cotangent(particle_pos);\\r\\n vec3 world_v = world_tangent(particle_pos);\\r\\n\\r\\n /*\\r\\n float cos_a = cos(speed);\\r\\n float sin_a = sin(speed);\\r\\n float cos_1 = 1.0 - cos(speed);\\r\\n\\r\\n vec2 norm_dir = normalize(direction);\\r\\n vec3 rot_axis = norm_dir.x * world_u + norm_dir.y * world_v;\\r\\n\\r\\n mat3 rot_mat = mat3(\\r\\n rot_axis.x * rot_axis.x * cos_1 + cos_a,\\r\\n rot_axis.y * rot_axis.x * cos_1 + rot_axis.z * sin_a,\\r\\n rot_axis.z * rot_axis.x * cos_1 - rot_axis.y * sin_a,\\r\\n rot_axis.x * rot_axis.y * cos_1 - rot_axis.z * sin_a,\\r\\n rot_axis.y * rot_axis.y * cos_1 + cos_a,\\r\\n rot_axis.z * rot_axis.y * cos_1 + rot_axis.x * sin_a,\\r\\n rot_axis.x * rot_axis.z * cos_1 + rot_axis.y * sin_a,\\r\\n rot_axis.y * rot_axis.z * cos_1 - rot_axis.x * sin_a,\\r\\n rot_axis.z * rot_axis.z * cos_1 + cos_a\\r\\n );\\r\\n */\\r\\n vec3 new_world_pos = normalize(world_pos + world_u * speed.x + world_v * speed.y);\\r\\n\\r\\n float npx = atan(new_world_pos.y, new_world_pos.x) / radians(360.0) + 0.5;\\r\\n float npy = 0.5 - asin(new_world_pos.z) / radians(180.0);\\r\\n\\r\\n gl_FragColor = vec4(npx, npy, particle_age - 1.0, 1.0);\\r\\n }\\r\\n}\"\n }\n },\n \"shared\": {},\n \"sources\": {\n \"arrowSource\": {\n \"vertex\": \"//@import arrow.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec3 geometry_position;\\r\\n\\r\\nattribute float time;\\r\\nattribute vec3 position;\\r\\nattribute vec2 value;\\r\\n\\r\\nuniform mat4 projectionMatrix;\\r\\nuniform mat4 viewMatrix;\\r\\n\\r\\nuniform float displacement_scale;\\r\\nuniform float displacement_offset;\\r\\n\\r\\nuniform float time_min;\\r\\nuniform float time_max;\\r\\n\\r\\nuniform bool value_sizing_enabled;\\r\\nuniform float value_sizing_zero;\\r\\nuniform float value_sizing_one;\\r\\nuniform float value_sizing_power;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying float var_value;\\r\\nvarying vec3 var_normal;\\r\\n\\r\\nuniform float point_size;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main(){\\r\\n var_position = position;\\r\\n float value_abs = length(value);\\r\\n var_value = value_abs;\\r\\n vec2 value_dir = normalize(value);\\r\\n if(isnan(value.x) || isnan(value.y) || time < time_min || time > time_max){\\r\\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\\r\\n }else{\\r\\n displaced_point_height = (isnan(position.z) ? displacement_offset : ((position.z + displacement_offset) * displacement_scale)) / EARTH_RADIUS;\\r\\n vec3 normal = world_normal(position.xy);\\r\\n vec3 euclidian_position = (displaced_point_height + 1.0) * normal;\\r\\n float arrowscale;\\r\\n if(value_sizing_enabled){\\r\\n arrowscale = min(point_size, point_size * pow(\\r\\n (value_abs - value_sizing_zero) / (value_sizing_one - value_sizing_zero),\\r\\n value_sizing_power\\r\\n ));\\r\\n }else{ \\r\\n arrowscale = max(1.0, point_size);\\r\\n }\\r\\n vec3 tangent = world_tangent(position.xy);\\r\\n vec3 cotangent = world_cotangent(position.xy);\\r\\n vec3 fz = tangent * value_dir.y + cotangent * value_dir.x;\\r\\n vec3 fx = tangent * value_dir.x - cotangent * value_dir.y;\\r\\n vec3 fy = normal;\\r\\n vec3 transformed_geometry_position = geometry_position.x * fx + geometry_position.y * fy + geometry_position.z * fz;\\r\\n transformed_geometry_position /= EARTH_RADIUS / arrowscale;\\r\\n gl_Position = projectionMatrix * viewMatrix * vec4(transformed_geometry_position + euclidian_position, 1.0);// + euclidian_position * arrowscale, 1.0);\\r\\n }\\r\\n}\",\n \"fragment\": \"//@import arrow.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying float var_value;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main() {\\r\\n\\r\\n gl_FragData[0] = vec4(var_value, 0.0, 0.0, 0.0);\\r\\n gl_FragData[1] = vec4(normalize(vec3(1.0)), 1.0);\\r\\n gl_FragData[2] = vec4(var_position, displaced_point_height);\\r\\n}\"\n },\n \"colorPointSource\": {\n \"vertex\": \"//@import colorPoints.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec3 position;\\r\\nattribute vec4 color;\\r\\nattribute float time;\\r\\n\\r\\nuniform vec2 reference_relative_position;\\r\\nuniform vec2 reference_position;\\r\\n\\r\\n\\r\\nuniform mat4 projectionMatrix;\\r\\nuniform mat4 viewMatrix;\\r\\n\\r\\nuniform float displacement_scale;\\r\\nuniform float displacement_offset;\\r\\n\\r\\nuniform float time_min;\\r\\nuniform float time_max;\\r\\n\\r\\nuniform vec2 clip_min;\\r\\nuniform vec2 clip_max;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying vec4 var_color;\\r\\nvarying float var_time;\\r\\n\\r\\nuniform float point_size;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main(){\\r\\n vec2 position_;\\r\\n #if defined SPHERE\\r\\n position_ = position.xy + reference_position;\\r\\n var_position.xy = position.xy + reference_relative_position;\\r\\n var_position.z = position.z;\\r\\n #elif defined EQUIRECT\\r\\n position_ = position.xy;\\r\\n var_position.xy = position.xy + reference_relative_position;\\r\\n var_position.z = position.z;\\r\\n #elif defined POLAR\\r\\n position_ = position.xy;\\r\\n var_position.xy = position.xy + reference_relative_position;\\r\\n var_position.z = position.z;\\r\\n #endif\\r\\n var_color = color;\\r\\n var_time = time;\\r\\n if( \\r\\n time < time_min || \\r\\n time > time_max || \\r\\n position.x < clip_min.x ||\\r\\n position.x > clip_max.x ||\\r\\n position.y < clip_min.y ||\\r\\n position.y > clip_max.y\\r\\n ){\\r\\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\\r\\n gl_PointSize = 0.0;\\r\\n }else{\\r\\n displaced_point_height = (isnan(position.z) ? displacement_offset : ((position.z + displacement_offset) * displacement_scale)) / EARTH_RADIUS;\\r\\n gl_Position = world_projection(vec3(position_, displaced_point_height), viewMatrix, projectionMatrix);\\r\\n gl_PointSize = max(1.0, point_size);\\r\\n }\\r\\n}\",\n \"fragment\": \"//@import colorPoints.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying vec4 var_color;\\r\\nvarying float var_time;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main() {\\r\\n vec2 coord = gl_PointCoord * 2.0 - 1.0;\\r\\n float r = length(coord);\\r\\n if(r > 1.0)discard;\\r\\n vec3 normal = vec3(coord, sqrt(1.0 - r * r));\\r\\n\\r\\n gl_FragData[0] = var_color;\\r\\n gl_FragData[1] = vec4(normal, 1.0);\\r\\n gl_FragData[2] = vec4(var_position, displaced_point_height);\\r\\n}\"\n },\n \"lines\": {\n \"vertex\": \"//@import lines.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec3 geometry_position;\\r\\n\\r\\nattribute vec3 position;\\r\\nattribute float value;\\r\\nattribute float time;\\r\\n\\r\\nattribute vec3 position2;\\r\\nattribute float value2;\\r\\nattribute float time2;\\r\\n\\r\\nuniform vec2 reference_relative_position;\\r\\nuniform vec2 reference_position;\\r\\n\\r\\nuniform mat4 projectionMatrix;\\r\\nuniform mat4 viewMatrix;\\r\\n\\r\\nuniform float displacement_scale;\\r\\nuniform float displacement_offset;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying float var_value;\\r\\nvarying float var_time;\\r\\n\\r\\nuniform vec2 point_size;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main(){\\r\\n vec2 rel_position = geometry_position.xy;\\r\\n vec3 interpolated_position = geometry_position.z * position + (1.0 - geometry_position.z) * position2;\\r\\n float interpolated_value = geometry_position.z * value + (1.0 - geometry_position.z) * value2;\\r\\n float interpolated_time = geometry_position.z * time + (1.0 - geometry_position.z) * time2;\\r\\n\\r\\n vec2 position_;\\r\\n #if defined SPHERE\\r\\n position_ = interpolated_position.xy + reference_position;\\r\\n var_position.xy = interpolated_position.xy + reference_relative_position;\\r\\n var_position.z = interpolated_position.z;\\r\\n #elif defined EQUIRECT\\r\\n position_ = interpolated_position.xy;\\r\\n var_position.xy = interpolated_position.xy + reference_relative_position;\\r\\n var_position.z = interpolated_position.z;\\r\\n #elif defined POLAR\\r\\n position_ = interpolated_position.xy;\\r\\n var_position.xy = interpolated_position.xy + reference_relative_position;\\r\\n var_position.z = interpolated_position.z;\\r\\n #endif\\r\\n var_value = interpolated_value;\\r\\n var_time = interpolated_time;\\r\\n displaced_point_height = (isnan(interpolated_position.z) ? displacement_offset : ((interpolated_position.z + displacement_offset) * displacement_scale)) / EARTH_RADIUS;\\r\\n vec4 out_pos = world_projection(vec3(position_, displaced_point_height), viewMatrix, projectionMatrix);\\r\\n gl_Position = out_pos + vec4(rel_position * point_size * out_pos.w, 0.0, 0.0);\\r\\n}\",\n \"fragment\": \"//@import lines.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying float var_value;\\r\\nvarying float var_time;\\r\\n\\r\\nuniform float time_min;\\r\\nuniform float time_max;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main() {\\r\\n if(isnan(var_value) || var_time < time_min || var_time > time_max){\\r\\n discard;\\r\\n }\\r\\n \\r\\n gl_FragData[0] = vec4(var_value, 0.0, 0.0, 0.0);\\r\\n gl_FragData[1] = vec4(0.0,0.0,0.0, 1.0);\\r\\n gl_FragData[2] = vec4(var_position, displaced_point_height);\\r\\n}\"\n },\n \"model\": {\n \"vertex\": \"//@import model.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec3 position;\\r\\nattribute vec3 normal;\\r\\nattribute vec2 uv;\\r\\n\\r\\nuniform vec3 reference_position;\\r\\nuniform vec3 scale;\\r\\n\\r\\n\\r\\nuniform mat4 projectionMatrix;\\r\\nuniform mat4 viewMatrix;\\r\\n\\r\\nvarying vec2 var_uv_color;\\r\\nvarying vec3 var_normal;\\r\\nvarying vec3 var_position;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main(){\\r\\n vec3 m_position = position * scale / EARTH_RADIUS;\\r\\n vec2 position_;\\r\\n #if defined SPHERE\\r\\n position_ = m_position.xy + reference_position.xy;\\r\\n var_position.xy = position_;\\r\\n var_position.z = m_position.z;\\r\\n #elif defined EQUIRECT\\r\\n position_ = m_position.xy;\\r\\n var_position.xy = m_position.xy + reference_position.xy;\\r\\n var_position.z = m_position.z;\\r\\n #elif defined POLAR\\r\\n position_ = m_position.xy;\\r\\n var_position.xy = m_position.xy + reference_position.xy;\\r\\n var_position.z = m_position.z;\\r\\n #endif\\r\\n gl_Position = projectionMatrix * viewMatrix * vec4(position * scale / EARTH_RADIUS, 1.0);\\r\\n var_uv_color = uv;\\r\\n var_normal = normal;\\r\\n}\",\n \"fragment\": \"//@import model.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 var_uv_color;\\r\\nvarying vec3 var_normal;\\r\\n\\r\\nuniform sampler2D color_map;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main() {\\r\\n gl_FragData[0] = texture2D(color_map, var_uv_color);\\r\\n gl_FragData[1] = vec4(var_normal, 1.0);\\r\\n gl_FragData[2] = vec4(0.0);//vec4(var_position, displaced_point_height);\\r\\n}\"\n },\n \"particleArrows\": {\n \"vertex\": \"//@import arrowParticles.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec3 geometry_position;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nuniform mat4 projectionMatrix;\\r\\nuniform mat4 viewMatrix;\\r\\n\\r\\nuniform float displacement_scale;\\r\\nuniform float displacement_offset;\\r\\n\\r\\nuniform bool value_sizing_enabled;\\r\\nuniform float value_sizing_zero;\\r\\nuniform float value_sizing_one;\\r\\nuniform float value_sizing_power;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying float var_value;\\r\\nvarying vec3 var_normal;\\r\\n\\r\\nuniform float point_size;\\r\\n\\r\\nuniform sampler2D stitched_displacement_map;\\r\\nuniform vec2 stitched_displacement_coord_scale;\\r\\nuniform vec2 stitched_displacement_coord_offset;\\r\\n\\r\\nuniform sampler2D stitched_vector_map;\\r\\nuniform vec2 stitched_vector_coord_scale;\\r\\nuniform vec2 stitched_vector_coord_offset;\\r\\n\\r\\nuniform sampler2D particle_pos;\\r\\n\\r\\nuniform float source_offset;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main(){\\r\\n vec2 position_ = position / 2.0 + 0.5;\\r\\n\\r\\n position_ = texture2D(particle_pos, vec2((position_.x + source_offset) / 8.0, position_.y)).xy;\\r\\n\\r\\n var_position = vec3(position, 0.0);\\r\\n\\r\\n vec2 stitched_displacement_coord = (position_ - stitched_displacement_coord_offset) / stitched_displacement_coord_scale;\\r\\n vec2 stitched_vector_coord = (position_ - stitched_vector_coord_offset) / stitched_vector_coord_scale;\\r\\n\\r\\n displaced_point_height = texture2D(stitched_displacement_map, stitched_displacement_coord).r;\\r\\n\\r\\n vec2 value = texture2D(stitched_vector_map, stitched_vector_coord).rg;\\r\\n\\r\\n float value_abs = length(value);\\r\\n var_value = value_abs;\\r\\n vec2 value_dir = normalize(value);\\r\\n if(isnan(value.x) || isnan(value.y)){\\r\\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\\r\\n }else{\\r\\n displaced_point_height = (isnan(displaced_point_height) ? displacement_offset : ((displaced_point_height + displacement_offset) * displacement_scale)) / EARTH_RADIUS;\\r\\n vec3 normal = world_normal(position_);\\r\\n vec3 euclidian_position = (displaced_point_height + 1.0) * normal;\\r\\n float arrowscale;\\r\\n if(value_sizing_enabled){\\r\\n arrowscale = min(point_size, point_size * pow(\\r\\n (value_abs - value_sizing_zero) / (value_sizing_one - value_sizing_zero),\\r\\n value_sizing_power\\r\\n ));\\r\\n }else{ \\r\\n arrowscale = max(1.0, point_size);\\r\\n }\\r\\n vec3 tangent = world_tangent(position_.xy);\\r\\n vec3 cotangent = world_cotangent(position_.xy);\\r\\n vec3 fz = tangent * value_dir.y + cotangent * value_dir.x;\\r\\n vec3 fx = tangent * value_dir.x - cotangent * value_dir.y;\\r\\n vec3 fy = normal;\\r\\n vec3 transformed_geometry_position = geometry_position.x * fx + geometry_position.y * fy + geometry_position.z * fz;\\r\\n transformed_geometry_position /= EARTH_RADIUS / arrowscale;\\r\\n gl_Position = projectionMatrix * viewMatrix * vec4(transformed_geometry_position + euclidian_position, 1.0);// + euclidian_position * arrowscale, 1.0);\\r\\n }\\r\\n}\",\n \"fragment\": \"//@import arrow.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying float var_value;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main() {\\r\\n\\r\\n gl_FragData[0] = vec4(var_value, 0.0, 0.0, 0.0);\\r\\n gl_FragData[1] = vec4(normalize(vec3(1.0)), 1.0);\\r\\n gl_FragData[2] = vec4(var_position, displaced_point_height);\\r\\n}\"\n },\n \"particles\": {\n \"vertex\": \"//@import particles.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\nuniform float source_offset;\\r\\n\\r\\nuniform mat4 projectionMatrix;\\r\\nuniform mat4 viewMatrix;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform sampler2D stitched_displacement_map;\\r\\nuniform vec2 stitched_displacement_coord_scale;\\r\\nuniform vec2 stitched_displacement_coord_offset;\\r\\n\\r\\nuniform sampler2D stitched_vector_map;\\r\\nuniform vec2 stitched_vector_coord_scale;\\r\\nuniform vec2 stitched_vector_coord_offset;\\r\\n\\r\\nuniform sampler2D particle_pos;\\r\\n\\r\\nvarying float velocity;\\r\\n\\r\\nvarying float displaced_geometry_height;\\r\\nuniform float displacement_scale;\\r\\nuniform float displacement_offset;\\r\\nuniform bool displacement_active;\\r\\n\\r\\nuniform float point_size;\\r\\n\\r\\nvarying vec3 var_position;\\r\\n\\r\\nvarying float var_value;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main() {\\r\\n vec2 position_ = position / 2.0 + 0.5;\\r\\n\\r\\n position_ = texture2D(particle_pos, vec2((position_.x + source_offset) / 8.0, position_.y)).xy;\\r\\n\\r\\n screen_coordinate = position_;\\r\\n\\r\\n var_position = vec3(position, 0.0);\\r\\n\\r\\n vec2 stitched_displacement_coord = (position_ - stitched_displacement_coord_offset) / stitched_displacement_coord_scale;\\r\\n vec2 stitched_vector_coord = (position_ - stitched_vector_coord_offset) / stitched_vector_coord_scale;\\r\\n\\r\\n vec3 euclidian_position = world_normal(position_);\\r\\n\\r\\n displaced_geometry_height = texture2D(stitched_displacement_map, stitched_displacement_coord).r;\\r\\n velocity = length(texture2D(stitched_vector_map, stitched_vector_coord).rg);\\r\\n\\r\\n var_value = velocity;\\r\\n\\r\\n float displacement_height = (displaced_geometry_height + displacement_offset) * displacement_scale / EARTH_RADIUS;\\r\\n //gl_Position = vec4(position, 0.0, 1.0);\\r\\n gl_Position = world_projection(vec3(position_.xy, displacement_height), viewMatrix, projectionMatrix);\\r\\n gl_PointSize = max(1.0, point_size);\\r\\n\\r\\n}\",\n \"fragment\": \"//@import particles.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_geometry_height;\\r\\nvarying float var_value;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main() {\\r\\n vec2 coord = gl_PointCoord * 2.0 - 1.0;\\r\\n float r = length(coord);\\r\\n if(r > 1.0)discard;\\r\\n vec3 normal = vec3(coord, sqrt(1.0 - r * r));\\r\\n\\r\\n gl_FragData[0] = vec4(var_value, 1.0, 0.0, 0.0);\\r\\n gl_FragData[1] = vec4(normal, 1.0);\\r\\n gl_FragData[2] = vec4(var_position, displaced_geometry_height);\\r\\n}\"\n },\n \"quadSource\": {\n \"vertex\": \"//@import ../shared/plain.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n screen_coordinate = (position + 1.0) / 2.0;\\r\\n gl_Position = vec4(position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import ../shared/plain.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n gl_FragData[0] = vec4(screen_coordinate.x, screen_coordinate.y, 0.0, 0.0);\\r\\n gl_FragData[1] = vec4(0.0);\\r\\n gl_FragData[2] = vec4(0.0);\\r\\n}\"\n },\n \"scalarPieChartPointSource\": {\n \"vertex\": \"//@import piechartpoints.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec3 position;\\r\\nattribute float time;\\r\\n\\r\\nattribute float value1;\\r\\nattribute float value2;\\r\\nattribute float value3;\\r\\nattribute float value4;\\r\\nattribute float value5;\\r\\nattribute float value6;\\r\\nattribute float value7;\\r\\nattribute float value8;\\r\\n\\r\\nuniform float value_count;\\r\\n\\r\\nuniform vec2 reference_position;\\r\\n\\r\\n\\r\\nuniform mat4 projectionMatrix;\\r\\nuniform mat4 viewMatrix;\\r\\n\\r\\nuniform float displacement_scale;\\r\\nuniform float displacement_offset;\\r\\n\\r\\nuniform float time_min;\\r\\nuniform float time_max;\\r\\n\\r\\nuniform bool value_sizing_enabled;\\r\\nuniform float value_sizing_zero;\\r\\nuniform float value_sizing_one;\\r\\nuniform float value_sizing_power;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\n\\r\\nvarying float var_value1;\\r\\nvarying float var_value2;\\r\\nvarying float var_value3;\\r\\nvarying float var_value4;\\r\\nvarying float var_value5;\\r\\nvarying float var_value6;\\r\\nvarying float var_value7;\\r\\nvarying float var_value8;\\r\\nvarying float var_value_count;\\r\\nvarying float var_value_sum;\\r\\n\\r\\nvarying float var_time;\\r\\n\\r\\nuniform float point_size;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main(){\\r\\n vec2 position_;\\r\\n #if defined SPHERE\\r\\n position_ = position.xy + reference_position;\\r\\n var_position.xy = position_;\\r\\n var_position.z = position.z;\\r\\n #elif defined EQUIRECT\\r\\n position_ = position.xy;\\r\\n var_position.xy = position.xy + reference_position;\\r\\n var_position.z = position.z;\\r\\n #elif defined POLAR\\r\\n position_ = position.xy;\\r\\n var_position.xy = position.xy + reference_position;\\r\\n var_position.z = position.z;\\r\\n #endif\\r\\n\\r\\n //Calculate value sum\\r\\n float value_sum = 0.0;\\r\\n if(value_count >= 1.0){\\r\\n value_sum += value1;\\r\\n }\\r\\n if(value_count >= 2.0){\\r\\n value_sum += value2;\\r\\n }\\r\\n if(value_count >= 3.0){\\r\\n value_sum += value3;\\r\\n }\\r\\n if(value_count >= 4.0){\\r\\n value_sum += value4;\\r\\n }\\r\\n if(value_count >= 5.0){\\r\\n value_sum += value5;\\r\\n }\\r\\n if(value_count >= 6.0){\\r\\n value_sum += value6;\\r\\n }\\r\\n if(value_count >= 7.0){\\r\\n value_sum += value7;\\r\\n }\\r\\n if(value_count >= 8.0){\\r\\n value_sum += value8;\\r\\n }\\r\\n\\r\\n var_value1 = value1;\\r\\n var_value2 = value2;\\r\\n var_value3 = value3;\\r\\n var_value4 = value4;\\r\\n var_value5 = value5;\\r\\n var_value6 = value6;\\r\\n var_value7 = value7;\\r\\n var_value8 = value8;\\r\\n var_value_sum = value_sum;\\r\\n var_value_count = value_count;\\r\\n\\r\\n var_time = time;\\r\\n if(isnan(value_sum) || time < time_min || time > time_max){\\r\\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\\r\\n gl_PointSize = 0.0;\\r\\n }else{\\r\\n displaced_point_height = (isnan(position.z) ? displacement_offset : ((position.z + displacement_offset) * displacement_scale)) / EARTH_RADIUS;\\r\\n gl_Position = world_projection(vec3(position_, displaced_point_height), viewMatrix, projectionMatrix);\\r\\n if(value_sizing_enabled){\\r\\n gl_PointSize = point_size * pow(\\r\\n (value_sum - value_sizing_zero) / (value_sizing_one - value_sizing_zero),\\r\\n value_sizing_power\\r\\n );\\r\\n }else{ \\r\\n gl_PointSize = max(1.0, point_size);\\r\\n }\\r\\n }\\r\\n}\",\n \"fragment\": \"//@import piechartpoints.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying float var_value1;\\r\\nvarying float var_value2;\\r\\nvarying float var_value3;\\r\\nvarying float var_value4;\\r\\nvarying float var_value5;\\r\\nvarying float var_value6;\\r\\nvarying float var_value7;\\r\\nvarying float var_value8;\\r\\nvarying float var_value_sum;\\r\\nvarying float var_value_count;\\r\\nvarying float var_time;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\n#define M_PI 3.1415926535\\r\\n\\r\\nvoid main() {\\r\\n vec2 coord = gl_PointCoord * 2.0 - 1.0;\\r\\n float r = length(coord);\\r\\n if(r > 1.0)discard;\\r\\n vec3 normal = vec3(coord, sqrt(1.0 - r * r));\\r\\n\\r\\n float angle = atan(coord.y, coord.x) / (2.0 * M_PI);\\r\\n float color_id = 0.0;\\r\\n float value = 0.0;\\r\\n if(var_value_count >= 1.0){\\r\\n color_id = 0.0;\\r\\n value += var_value1;\\r\\n }\\r\\n if(var_value_count >= 2.0){\\r\\n if(angle > (value / var_value_sum)){\\r\\n color_id = 1.0;\\r\\n value += var_value2;\\r\\n }\\r\\n }\\r\\n if(var_value_count >= 3.0){\\r\\n if(angle > (value / var_value_sum)){\\r\\n color_id = 2.0;\\r\\n value += var_value3;\\r\\n }\\r\\n }\\r\\n if(var_value_count >= 4.0){\\r\\n if(angle > (value / var_value_sum)){\\r\\n color_id = 3.0;\\r\\n value += var_value4;\\r\\n }\\r\\n }\\r\\n if(var_value_count >= 5.0){\\r\\n if(angle > (value / var_value_sum)){\\r\\n color_id = 4.0;\\r\\n value += var_value5;\\r\\n }\\r\\n }\\r\\n if(var_value_count >= 6.0){\\r\\n if(angle > (value / var_value_sum)){\\r\\n color_id = 5.0;\\r\\n value += var_value6;\\r\\n }\\r\\n }\\r\\n if(var_value_count >= 7.0){\\r\\n if(angle > (value / var_value_sum)){\\r\\n color_id = 6.0;\\r\\n value += var_value7;\\r\\n }\\r\\n }\\r\\n if(var_value_count >= 8.0){\\r\\n if(angle > (value / var_value_sum)){\\r\\n color_id = 7.0;\\r\\n value += var_value8;\\r\\n }\\r\\n }\\r\\n\\r\\n gl_FragData[0] = vec4(color_id, 0.0, 0.0, 0.0);\\r\\n gl_FragData[1] = vec4(normal, 1.0);\\r\\n gl_FragData[2] = vec4(var_position, displaced_point_height);\\r\\n}\"\n },\n \"scalarPointSource\": {\n \"vertex\": \"//@import points.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec3 position;\\r\\nattribute float value;\\r\\nattribute float time;\\r\\n\\r\\nuniform vec2 reference_position;\\r\\nuniform vec2 reference_relative_position;\\r\\n\\r\\nuniform mat4 projectionMatrix;\\r\\nuniform mat4 viewMatrix;\\r\\n\\r\\nuniform float displacement_scale;\\r\\nuniform float displacement_offset;\\r\\n\\r\\nuniform float time_min;\\r\\nuniform float time_max;\\r\\n\\r\\nuniform bool value_sizing_enabled;\\r\\nuniform float value_sizing_zero;\\r\\nuniform float value_sizing_one;\\r\\nuniform float value_sizing_power;\\r\\n\\r\\nuniform vec2 clip_min;\\r\\nuniform vec2 clip_max;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying float var_value;\\r\\nvarying float var_time;\\r\\n\\r\\nuniform float point_size;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main(){\\r\\n vec2 position_;\\r\\n #if defined SPHERE\\r\\n position_ = position.xy + reference_position;\\r\\n var_position.xy = position.xy + reference_relative_position;\\r\\n var_position.z = position.z;\\r\\n #elif defined EQUIRECT\\r\\n position_ = position.xy;\\r\\n var_position.xy = position.xy + reference_relative_position;\\r\\n var_position.z = position.z;\\r\\n #elif defined POLAR\\r\\n position_ = position.xy;\\r\\n var_position.xy = position.xy + reference_relative_position;\\r\\n var_position.z = position.z;\\r\\n #endif\\r\\n var_value = value;\\r\\n var_time = time;\\r\\n if(isnan(value) || \\r\\n time < time_min || \\r\\n time > time_max || \\r\\n position.x < clip_min.x ||\\r\\n position.x > clip_max.x ||\\r\\n position.y < clip_min.y ||\\r\\n position.y > clip_max.y\\r\\n ){\\r\\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\\r\\n gl_PointSize = 0.0;\\r\\n }else{\\r\\n displaced_point_height = (isnan(position.z) ? displacement_offset : ((position.z + displacement_offset) * displacement_scale)) / EARTH_RADIUS;\\r\\n gl_Position = world_projection(vec3(position_, displaced_point_height), viewMatrix, projectionMatrix);\\r\\n if(value_sizing_enabled){\\r\\n gl_PointSize = point_size * pow(\\r\\n (value - value_sizing_zero) / (value_sizing_one - value_sizing_zero),\\r\\n value_sizing_power\\r\\n );\\r\\n }else{ \\r\\n gl_PointSize = max(1.0, point_size);\\r\\n }\\r\\n }\\r\\n}\",\n \"fragment\": \"//@import points.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying float var_value;\\r\\nvarying float var_time;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main() {\\r\\n vec2 coord = gl_PointCoord * 2.0 - 1.0;\\r\\n float r = length(coord);\\r\\n if(r > 1.0)discard;\\r\\n vec3 normal = vec3(coord, sqrt(1.0 - r * r));\\r\\n\\r\\n gl_FragData[0] = vec4(var_value, 0.0, 0.0, 0.0);\\r\\n gl_FragData[1] = vec4(normal, 1.0);\\r\\n gl_FragData[2] = vec4(var_position, displaced_point_height);\\r\\n}\"\n },\n \"selection\": {\n \"vertex\": \"//@import selection.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nuniform mat4 projectionMatrix;\\r\\nuniform mat4 viewMatrix;\\r\\n\\r\\nuniform vec2 selection_coord;\\r\\nuniform vec2 selection_size;\\r\\n\\r\\nuniform float selection_zmin;\\r\\nuniform float selection_height;\\r\\n\\r\\nattribute vec3 position;\\r\\n//varying vec2 world_position;\\r\\n\\r\\n//varying vec3 undisplaced_geo_normal;\\r\\n//\\\"sine\\\" direction, V\\r\\n//varying vec3 undisplaced_geo_tangent;\\r\\n//\\\"cosine\\\" direction, U\\r\\n//varying vec3 undisplaced_geo_cotangent;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main(){\\r\\n vec2 position_ = position.xy / 2.0 + 0.5;\\r\\n vec2 world_position;\\r\\n#if defined SPHERE\\r\\n position_ = position_ * selection_size + selection_coord;\\r\\n world_position = position_;\\r\\n#elif defined EQUIRECT\\r\\n world_position = position_ * selection_size + selection_coord;\\r\\n#elif defined POLAR\\r\\n position_ = position_ * selection_size + selection_coord;\\r\\n world_position = position_;\\r\\n#endif\\r\\n\\r\\n vec3 euclidian_position = world_normal(world_position);\\r\\n\\r\\n gl_Position = world_projection(vec3(position_.xy, selection_zmin + position.z * selection_height - 1.0), viewMatrix, projectionMatrix);\\r\\n}\",\n \"fragment\": \"//@import selection.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nuniform vec4 selection_color;\\r\\n\\r\\nvoid main() {\\r\\n gl_FragData[0] = selection_color;;\\r\\n gl_FragData[1] = vec4(0.0);\\r\\n gl_FragData[2] = vec4(0.0);\\r\\n}\"\n },\n \"sphereSource\": {\n \"vertex\": \"//@import sphere.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nuniform mat4 projectionMatrix;\\r\\nuniform mat4 viewMatrix;\\r\\n\\r\\nuniform vec2 tile_coord;\\r\\nuniform vec2 tile_size;\\r\\n\\r\\nuniform float displacement_scale;\\r\\nuniform float displacement_unit;\\r\\nuniform float displacement_offset;\\r\\nuniform bool displacement_active;\\r\\n\\r\\nattribute vec2 position;\\r\\nvarying vec2 world_position;\\r\\n\\r\\nvarying vec3 undisplaced_geo_normal;\\r\\n//\\\"sine\\\" direction, V\\r\\nvarying vec3 undisplaced_geo_tangent;\\r\\n//\\\"cosine\\\" direction, U\\r\\nvarying vec3 undisplaced_geo_cotangent;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main(){\\r\\n vec2 position_ = position / 2.0 + 0.5;\\r\\n#if defined SPHERE\\r\\n position_ = position_ * tile_size + tile_coord;\\r\\n world_position = position_;\\r\\n#elif defined EQUIRECT\\r\\n world_position = position_ * tile_size + tile_coord;\\r\\n#elif defined POLAR\\r\\n position_ = position_ * tile_size + tile_coord;\\r\\n world_position = position_;\\r\\n#endif\\r\\n float displacement_height = displacement_offset * displacement_scale * displacement_unit / EARTH_RADIUS;\\r\\n vec3 euclidian_position = world_normal(world_position);\\r\\n undisplaced_geo_normal = euclidian_position;\\r\\n undisplaced_geo_tangent = world_tangent(world_position);\\r\\n undisplaced_geo_cotangent = world_cotangent(world_position);\\r\\n gl_Position = world_projection(vec3(position_.xy, displacement_height), viewMatrix, projectionMatrix);\\r\\n}\",\n \"fragment\": \"//@import sphere.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nuniform float displacement_scale;\\r\\nuniform float displacement_offset;\\r\\nuniform bool displacement_active;\\r\\n\\r\\nuniform float out0_bias;\\r\\nuniform float out1_bias;\\r\\nuniform float out2_bias;\\r\\nuniform float out3_bias;\\r\\n\\r\\nuniform vec2 tile_size;\\r\\nuniform vec2 displacement_coord_scale;\\r\\n\\r\\nvarying vec2 world_position;\\r\\nvarying vec3 undisplaced_geo_normal;\\r\\nvarying vec3 undisplaced_geo_tangent;\\r\\nvarying vec3 undisplaced_geo_cotangent;\\r\\n\\r\\n//TODO FIXME magic number\\r\\nconst float BUMPMAPPING_DELTA = 1.0 / 512.0;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main() {\\r\\n \\r\\n vec3 normal = undisplaced_geo_normal;\\r\\n float heightmap_height = displacement_offset;\\r\\n gl_FragData[0] = vec4(1.0,0.0,0.0,1.0);\\r\\n gl_FragData[1] = vec4(normalize(normal), 1.0);\\r\\n gl_FragData[2] = vec4(world_position, heightmap_height, 0.0);\\r\\n}\"\n },\n \"tileSource\": {\n \"vertex\": \"//@import tile.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nuniform mat4 projectionMatrix;\\r\\nuniform mat4 viewMatrix;\\r\\n\\r\\nuniform vec2 tile_relative_coord;\\r\\nuniform vec2 tile_coord;\\r\\nuniform vec2 tile_size;\\r\\n\\r\\nvarying vec2 data0_coord;\\r\\nuniform vec2 data0_coord_offset;\\r\\nuniform vec2 data0_coord_scale;\\r\\n\\r\\nvarying vec2 data1_coord;\\r\\nuniform vec2 data1_coord_offset;\\r\\nuniform vec2 data1_coord_scale;\\r\\n\\r\\nvarying vec2 data2_coord;\\r\\nuniform vec2 data2_coord_offset;\\r\\nuniform vec2 data2_coord_scale;\\r\\n\\r\\nvarying vec2 data3_coord;\\r\\nuniform vec2 data3_coord_offset;\\r\\nuniform vec2 data3_coord_scale;\\r\\n\\r\\nvarying vec2 stitched_displacement_coord;\\r\\nuniform sampler2D stitched_displacement_map;\\r\\nuniform vec2 stitched_displacement_coord_scale;\\r\\nuniform vec2 stitched_displacement_coord_offset;\\r\\n\\r\\nvarying vec2 displacement_coord;\\r\\nuniform vec2 displacement_coord_offset;\\r\\nuniform vec2 displacement_coord_scale;\\r\\n\\r\\nvarying float displaced_geometry_height;\\r\\nuniform float displacement_scale;\\r\\nuniform float displacement_unit;\\r\\nuniform float displacement_offset;\\r\\nuniform bool displacement_active;\\r\\n\\r\\nattribute vec2 position;\\r\\nvarying vec2 world_position;\\r\\n\\r\\nvarying vec2 world_relative_pos;\\r\\n\\r\\nvarying vec3 undisplaced_geo_normal;\\r\\n//\\\"sine\\\" direction, V\\r\\nvarying vec3 undisplaced_geo_tangent;\\r\\n//\\\"cosine\\\" direction, U\\r\\nvarying vec3 undisplaced_geo_cotangent;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main(){\\r\\n vec2 position_ = position / 2.0 + 0.5;\\r\\n\\r\\n world_relative_pos = position_ * tile_size + tile_relative_coord;\\r\\n \\r\\n data0_coord = position_ * data0_coord_scale + data0_coord_offset;\\r\\n data1_coord = position_ * data1_coord_scale + data1_coord_offset; \\r\\n data2_coord = position_ * data2_coord_scale + data2_coord_offset; \\r\\n data3_coord = position_ * data3_coord_scale + data3_coord_offset; \\r\\n displacement_coord = position_ * displacement_coord_scale + displacement_coord_offset; \\r\\n stitched_displacement_coord = position_ * stitched_displacement_coord_scale + stitched_displacement_coord_offset;\\r\\n#if defined SPHERE\\r\\n position_ = position_ * tile_size + tile_coord;\\r\\n world_position = position_;\\r\\n#elif defined EQUIRECT\\r\\n world_position = position_ * tile_size + tile_coord;\\r\\n#elif defined POLAR\\r\\n position_ = position_ * tile_size + tile_coord;\\r\\n world_position = position_;\\r\\n#endif\\r\\n\\r\\n if(displacement_active)\\r\\n displaced_geometry_height = texture2D(stitched_displacement_map, stitched_displacement_coord).r;\\r\\n else\\r\\n displaced_geometry_height = 0.0;\\r\\n float displacement_height = (displaced_geometry_height + displacement_offset) * displacement_scale * displacement_unit / EARTH_RADIUS;\\r\\n\\r\\n vec3 euclidian_position = world_normal(world_position);\\r\\n undisplaced_geo_normal = euclidian_position;\\r\\n undisplaced_geo_tangent = world_tangent(world_position);\\r\\n undisplaced_geo_cotangent = world_cotangent(world_position);\\r\\n gl_Position = world_projection(vec3(position_.xy, displacement_height), viewMatrix, projectionMatrix);\\r\\n}\",\n \"fragment\": \"//@import tile.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 data0_coord;\\r\\nuniform sampler2D data0_map;\\r\\nuniform bool data0_active;\\r\\nuniform mat4 data0_mixing;\\r\\n\\r\\nvarying vec2 data1_coord;\\r\\nuniform sampler2D data1_map;\\r\\nuniform bool data1_active;\\r\\nuniform mat4 data1_mixing;\\r\\n\\r\\nvarying vec2 data2_coord;\\r\\nuniform sampler2D data2_map;\\r\\nuniform bool data2_active;\\r\\nuniform mat4 data2_mixing;\\r\\n\\r\\nvarying vec2 data3_coord;\\r\\nuniform sampler2D data3_map;\\r\\nuniform bool data3_active;\\r\\nuniform mat4 data3_mixing;\\r\\n\\r\\nvarying vec2 displacement_coord;\\r\\nuniform sampler2D displacement_map;\\r\\nuniform float displacement_scale;\\r\\nuniform float displacement_offset;\\r\\nuniform bool displacement_active;\\r\\n\\r\\nvarying vec2 stitched_displacement_coord;\\r\\n\\r\\nvarying float displaced_geometry_height;\\r\\n\\r\\nuniform float out0_bias;\\r\\nuniform float out1_bias;\\r\\nuniform float out2_bias;\\r\\nuniform float out3_bias;\\r\\n\\r\\nuniform vec2 tile_size;\\r\\nuniform vec2 displacement_coord_scale;\\r\\n\\r\\nvarying vec2 world_relative_pos;\\r\\n\\r\\nvarying vec2 world_position;\\r\\nvarying vec3 undisplaced_geo_normal;\\r\\nvarying vec3 undisplaced_geo_tangent;\\r\\nvarying vec3 undisplaced_geo_cotangent;\\r\\n\\r\\n//TODO FIXME magic number\\r\\nconst float BUMPMAPPING_DELTA = 1.0 / 512.0;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main() {\\r\\n vec4 value = vec4(out0_bias, out1_bias, out2_bias, out3_bias);\\r\\n if(data0_active)\\r\\n value += data0_mixing * texture2D(data0_map, data0_coord);\\r\\n if(data1_active)\\r\\n value += data1_mixing * texture2D(data1_map, data1_coord);\\r\\n if(data2_active)\\r\\n value += data2_mixing * texture2D(data2_map, data2_coord);\\r\\n if(data3_active)\\r\\n value += data3_mixing * texture2D(data3_map, data3_coord);\\r\\n if(displacement_active && (stitched_displacement_coord.x > 1.0 || stitched_displacement_coord.x < 0.0 || stitched_displacement_coord.y < 0.0 || stitched_displacement_coord.y > 1.0))\\r\\n discard;\\r\\n if(isnan(value.r) || isnan(value.g) || isnan(value.b) || isnan(value.a))\\r\\n discard;\\r\\n \\r\\n vec3 normal = undisplaced_geo_normal;\\r\\n float heightmap_height = 0.0;\\r\\n if(displacement_active){\\r\\n vec2 displacement_coord_2 = displacement_coord * (1.0 - 2.0 * BUMPMAPPING_DELTA);\\r\\n float x0y0 = texture2D(displacement_map, displacement_coord_2 + BUMPMAPPING_DELTA * vec2(0.5, 0.5)).r;\\r\\n float x1y0 = texture2D(displacement_map, displacement_coord_2 + BUMPMAPPING_DELTA * vec2(1.5, 0.5)).r;\\r\\n float x0y1 = texture2D(displacement_map, displacement_coord_2 + BUMPMAPPING_DELTA * vec2(0.5, 1.5)).r;\\r\\n float x1y1 = texture2D(displacement_map, displacement_coord_2 + BUMPMAPPING_DELTA * vec2(1.5, 1.5)).r;\\r\\n\\r\\n float dz_dx = ((x1y0 + x1y1) - (x0y0 + x0y1)) / 2.0\\r\\n / (BUMPMAPPING_DELTA * radians(360.0) * sin(radians(180.0) * world_position.y))\\r\\n / tile_size.x * displacement_coord_scale.x;\\r\\n float dz_dy = ((x0y0 + x1y0) - (x0y1 + x1y1)) / 2.0 \\r\\n / (BUMPMAPPING_DELTA * radians(180.0))\\r\\n / tile_size.y * displacement_coord_scale.y;\\r\\n\\r\\n vec2 dz = vec2(dz_dx, dz_dy) * displacement_scale / EARTH_RADIUS;\\r\\n\\r\\n normal -= dz.x * undisplaced_geo_cotangent;\\r\\n normal -= dz.y * undisplaced_geo_tangent;\\r\\n heightmap_height = (x0y0 + x1y0 + x0y1 + x1y1) / 4.0;\\r\\n }\\r\\n\\r\\n gl_FragData[0] = value;\\r\\n gl_FragData[1] = vec4(normalize(normal), 1.0);\\r\\n gl_FragData[2] = vec4(world_relative_pos, heightmap_height, displaced_geometry_height);\\r\\n}\"\n },\n \"vectorPointSource\": {\n \"vertex\": \"//@import vectorPoints.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec3 position;\\r\\nattribute vec2 value;\\r\\nattribute float time;\\r\\n\\r\\nuniform mat4 projectionMatrix;\\r\\nuniform mat4 viewMatrix;\\r\\n\\r\\nuniform float displacement_scale;\\r\\nuniform float displacement_offset;\\r\\n\\r\\nuniform float time_min;\\r\\nuniform float time_max;\\r\\n\\r\\nuniform bool value_sizing_enabled;\\r\\nuniform float value_sizing_zero;\\r\\nuniform float value_sizing_one;\\r\\nuniform float value_sizing_power;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying vec2 var_value;\\r\\nvarying float var_time;\\r\\n\\r\\nuniform float point_size;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nvec3 world_normal(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float cy = cos(p2.y);\\r\\n return vec3(\\r\\n cos(p2.x) * cy,\\r\\n sin(p2.x) * cy,\\r\\n sin(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\n#if defined SPHERE\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n vec3 rpos = (1.0 + pos.z) * world_normal(pos.xy);\\r\\n return proj_mat * world_mat * vec4(rpos, 1.0);\\r\\n}\\r\\n#elif defined EQUIRECT\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return proj_mat * world_mat * vec4(pos, 1.0);\\r\\n}\\r\\n#elif defined POLAR\\r\\n//TODO\\r\\nvec4 world_projection(vec3 pos, mat4 world_mat, mat4 proj_mat){\\r\\n return vec4(0.0, 0.0, 0.0, 1.0);\\r\\n}\\r\\n#endif\\r\\n\\r\\nvec3 world_tangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n float sy = sin(p2.y);\\r\\n return vec3(\\r\\n -cos(p2.x) * sy,\\r\\n -sin(p2.x) * sy,\\r\\n cos(p2.y)\\r\\n );\\r\\n}\\r\\n\\r\\nvec3 world_cotangent(vec2 xy){\\r\\n vec2 p2 = vec2(\\r\\n (xy.x + 0.5) * radians(360.0),\\r\\n -(xy.y - 0.5) * radians(180.0)\\r\\n );\\r\\n return vec3(\\r\\n -sin(p2.x),\\r\\n cos(p2.x),\\r\\n 0.0\\r\\n );\\r\\n}\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nconst float EARTH_RADIUS = 6378000.0;\\n\\r\\n\\r\\nvoid main(){\\r\\n vec2 internal_position = vec2(\\r\\n (position.x + 0.5) * radians(360.0),\\r\\n -(position.y - 0.5) * radians(180.0)\\r\\n );\\r\\n var_position = position;\\r\\n var_value = value;\\r\\n var_time = time;\\r\\n float norm_value = length(value);\\r\\n if(isnan(value.x) || isnan(value.y) || time < time_min || time > time_max){\\r\\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\\r\\n gl_PointSize = 0.0;\\r\\n }else{\\r\\n displaced_point_height = (isnan(position.z) ? displacement_offset : ((position.z + displacement_offset) * displacement_scale)) / EARTH_RADIUS;\\r\\n gl_Position = world_projection(vec3(position.xy, displaced_point_height), viewMatrix, projectionMatrix);\\r\\n if(value_sizing_enabled){\\r\\n gl_PointSize = max(1.0, min(point_size, point_size * pow(\\r\\n (norm_value - value_sizing_zero) / (value_sizing_one - value_sizing_zero),\\r\\n value_sizing_power\\r\\n )));\\r\\n }else{ \\r\\n gl_PointSize = max(1.0, point_size);\\r\\n }\\r\\n }\\r\\n}\",\n \"fragment\": \"//@import vectorPoints.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\n#extension GL_EXT_draw_buffers : require \\r\\nprecision highp float;\\r\\n\\r\\nvarying vec3 var_position;\\r\\nvarying float displaced_point_height;\\r\\nvarying vec2 var_value;\\r\\nvarying float var_time;\\r\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main() {\\r\\n vec2 coord = gl_PointCoord * 2.0 - 1.0;\\r\\n float r = length(coord);\\r\\n if(r > 1.0)discard;\\r\\n vec3 normal = vec3(coord, sqrt(1.0 - r * r));\\r\\n\\r\\n gl_FragData[0] = vec4(var_value, 0.0, 0.0);\\r\\n gl_FragData[1] = vec4(normal, 1.0);\\r\\n gl_FragData[2] = vec4(var_position, displaced_point_height);\\r\\n}\"\n }\n },\n \"stitching\": {\n \"stitching\": {\n \"vertex\": \"//@import stitching.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec3 position;\\r\\n\\r\\nuniform vec2 tile_coord;\\r\\nuniform vec2 tile_size;\\r\\n\\r\\nuniform vec2 texture0_coord_offset;\\r\\nuniform vec2 texture0_coord_scale;\\r\\nuniform vec2 texture1_coord_offset;\\r\\nuniform vec2 texture1_coord_scale;\\r\\nuniform vec2 texture2_coord_offset;\\r\\nuniform vec2 texture2_coord_scale;\\r\\nuniform vec2 texture3_coord_offset;\\r\\nuniform vec2 texture3_coord_scale;\\r\\n\\r\\nvarying vec2 texture0_coord;\\r\\nvarying vec2 texture1_coord;\\r\\nvarying vec2 texture2_coord;\\r\\nvarying vec2 texture3_coord;\\r\\n\\r\\nvoid main() {\\r\\n vec2 norm_position = (position.xy + 1.0) / 2.0;\\r\\n texture0_coord = norm_position * texture0_coord_scale + texture0_coord_offset;\\r\\n texture1_coord = norm_position * texture1_coord_scale + texture1_coord_offset;\\r\\n texture2_coord = norm_position * texture2_coord_scale + texture2_coord_offset;\\r\\n texture3_coord = norm_position * texture3_coord_scale + texture3_coord_offset;\\r\\n gl_Position = vec4((norm_position * tile_size + tile_coord) * 2.0 - 1.0, position.z, 1.0);\\r\\n}\",\n \"fragment\": \"//@import stitching.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nuniform bool use_color;\\r\\n\\r\\nuniform sampler2D texture0;\\r\\nuniform sampler2D texture1;\\r\\nuniform sampler2D texture2;\\r\\nuniform sampler2D texture3;\\r\\n\\r\\nuniform bool texture0_active;\\r\\nuniform bool texture1_active;\\r\\nuniform bool texture2_active;\\r\\nuniform bool texture3_active;\\r\\n\\r\\nvarying vec2 texture0_coord;\\r\\nvarying vec2 texture1_coord;\\r\\nvarying vec2 texture2_coord;\\r\\nvarying vec2 texture3_coord;\\r\\n\\r\\nuniform mat4 texture0_mixing;\\r\\nuniform mat4 texture1_mixing;\\r\\nuniform mat4 texture2_mixing;\\r\\nuniform mat4 texture3_mixing;\\r\\n\\r\\n\\r\\nvoid main() {\\r\\n vec4 value = vec4(0.0);\\r\\n if(texture0_active)\\r\\n value += texture0_mixing * texture2D(texture0, texture0_coord);\\r\\n if(texture1_active)\\r\\n value += texture1_mixing * texture2D(texture1, texture1_coord);\\r\\n if(texture2_active)\\r\\n value += texture2_mixing * texture2D(texture2, texture2_coord);\\r\\n if(texture3_active)\\r\\n value += texture3_mixing * texture2D(texture3, texture3_coord);\\r\\n gl_FragColor = value;\\r\\n}\"\n }\n },\n \"viewport\": {\n \"copy\": {\n \"vertex\": \"//@import ../shared/plain.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n screen_coordinate = (position + 1.0) / 2.0;\\r\\n gl_Position = vec4(position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import copy.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform sampler2D color_map;\\r\\nuniform sampler2D depth_map;\\r\\n\\r\\nvoid main(){\\r\\n gl_FragColor = texture2D(color_map, screen_coordinate);\\r\\n}\"\n },\n \"dome_side\": {\n \"vertex\": \"//@import dome.vs.glsl\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nuniform vec2 section_size;\\r\\nuniform vec2 section_position;\\r\\nuniform vec2 section_scale;\\r\\nuniform float central_scale;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n vec2 position_corrected = position * section_size;\\r\\n\\r\\n screen_coordinate = (position_corrected + section_position) * section_scale * central_scale;\\r\\n gl_Position = vec4(position_corrected * section_scale + section_position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import dome_side.fs.glsl\\nprecision highp float;\\r\\n\\r\\nuniform float near_ratio;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform sampler2D color_map;\\r\\nuniform sampler2D depth_map;\\r\\n\\r\\nuniform vec2 azimuth_direction;\\r\\n\\r\\nuniform bool overflow_texture;\\r\\n\\r\\nfloat depth_linear(float depth_raw, float near_ratio){\\r\\n float a = near_ratio / (near_ratio - 1.0);\\r\\n float b = 1.0 - a;\\r\\n return a / (depth_raw - b);\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main(){\\r\\n mat2 azimuth_rot = mat2(\\r\\n azimuth_direction.x, azimuth_direction.y,\\r\\n -azimuth_direction.y, azimuth_direction.x\\r\\n );\\r\\n\\r\\n vec2 uv = screen_coordinate * azimuth_rot;\\r\\n\\r\\n vec3 xyz = vec3(\\r\\n normalize(uv) * tan(length(uv)),\\r\\n 1.0\\r\\n );\\r\\n vec2 xy = xyz.yz / xyz.x;\\r\\n \\r\\n if((/*overflow_texture ||*/ (xy.x <= 1.0 && xy.y <= 1.0 && xy.x >= -1.0)) && xy.y >= 0.0){\\r\\n vec2 tc = vec2(\\r\\n xy.x / 2.0 + 0.5,\\r\\n xy.y);\\r\\n float raw_depth = texture2D(depth_map, tc).r;\\r\\n float depth = depth_linear(raw_depth, near_ratio);\\r\\n float hypothenuse = length(vec3(xy, 1.0));\\r\\n if(depth * hypothenuse > 1.0){\\r\\n discard;\\r\\n } else {\\r\\n gl_FragColor = texture2D(color_map, tc);\\r\\n }\\r\\n } else {\\r\\n //gl_FragColor = vec4(0.0, 0.2, 0.0, 1.0);\\r\\n discard;\\r\\n }\\r\\n \\r\\n}\"\n },\n \"dome_top\": {\n \"vertex\": \"//@import dome.vs.glsl\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nuniform vec2 section_size;\\r\\nuniform vec2 section_position;\\r\\nuniform vec2 section_scale;\\r\\nuniform float central_scale;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n vec2 position_corrected = position * section_size;\\r\\n\\r\\n screen_coordinate = (position_corrected + section_position) * section_scale * central_scale;\\r\\n gl_Position = vec4(position_corrected * section_scale + section_position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import dome_top.fs.glsl\\nprecision highp float;\\r\\n\\r\\nuniform float near_ratio;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform sampler2D color_map;\\r\\nuniform sampler2D depth_map;\\r\\n\\r\\nfloat depth_linear(float depth_raw, float near_ratio){\\r\\n float a = near_ratio / (near_ratio - 1.0);\\r\\n float b = 1.0 - a;\\r\\n return a / (depth_raw - b);\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main(){\\r\\n vec2 uv = screen_coordinate;\\r\\n vec2 xy = normalize(uv) * tan(length(uv));\\r\\n if(xy.x <= 1.0 && xy.y <= 1.0 && xy.x >= -1.0 && xy.y >= -1.0){\\r\\n float raw_depth = texture2D(depth_map, xy / 2.0 + 0.5).r;\\r\\n float depth = depth_linear(raw_depth, near_ratio);\\r\\n float hypothenuse = length(vec3(xy, 1.0));\\r\\n if(depth * hypothenuse > 1.0){\\r\\n discard;\\r\\n } else {\\r\\n gl_FragColor = texture2D(color_map, xy / 2.0 + 0.5);\\r\\n }\\r\\n } else {\\r\\n //gl_FragColor = vec4(0.2, 0.0, 0.0, 1.0);\\r\\n discard;\\r\\n }\\r\\n \\r\\n}\"\n },\n \"dyed\": {\n \"vertex\": \"//@import ../shared/plain.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n screen_coordinate = (position + 1.0) / 2.0;\\r\\n gl_Position = vec4(position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import dyed.fs.glsl\\nprecision highp float;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform sampler2D color_map;\\r\\nuniform sampler2D depth_map;\\r\\n\\r\\nuniform vec3 dye_color;\\r\\n\\r\\nvoid main(){\\r\\n vec4 color = texture2D(color_map, screen_coordinate);\\r\\n float luma = (color.r * 0.2126) + (color.g * 0.7152) + (color.b * 0.0722);\\r\\n gl_FragColor = vec4(dye_color * luma * 0.2 + dye_color * color.rgb * 0.8, color.a);\\r\\n}\"\n },\n \"mist\": {\n \"vertex\": \"//@import ../shared/plain.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n screen_coordinate = (position + 1.0) / 2.0;\\r\\n gl_Position = vec4(position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import mist.fs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform sampler2D color_map;\\r\\nuniform sampler2D depth_map;\\r\\n\\r\\nuniform float power;\\r\\n\\r\\nvoid main(){\\r\\n vec4 scolor = texture2D(color_map, screen_coordinate);\\r\\n float d = pow(texture2D(depth_map, screen_coordinate).r, 0.5);\\r\\n gl_FragColor = vec4(d, d, d, 1.0);\\r\\n}\"\n },\n \"single_projector\": {\n \"vertex\": \"//@import ../shared/plain.vs.glsl\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nprecision highp float;\\r\\n\\r\\nattribute vec2 position;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nvoid main() {\\r\\n screen_coordinate = (position + 1.0) / 2.0;\\r\\n gl_Position = vec4(position, 0.0, 1.0);\\r\\n}\",\n \"fragment\": \"//@import single_projector.fs.glsl\\nprecision highp float;\\r\\n\\r\\n//tan of frustum side angles\\r\\nuniform vec2 frustum_up_left;\\r\\nuniform vec2 frustum_down_right;\\r\\n//near/far\\r\\nuniform float near_ratio;\\r\\n\\r\\n//uniform vec4 clear_color;\\r\\n\\r\\nvarying vec2 screen_coordinate;\\r\\n\\r\\nuniform sampler2D color_map;\\r\\nuniform sampler2D depth_map;\\r\\n\\r\\nuniform sampler2D blending_map;\\r\\nuniform sampler2D warping_map;\\r\\n\\r\\nuniform vec3 clear_color;\\r\\nuniform float gamma_sep;\\r\\n\\r\\nfloat depth_linear(float depth_raw, float near_ratio){\\r\\n float a = near_ratio / (near_ratio - 1.0);\\r\\n float b = 1.0 - a;\\r\\n return a / (depth_raw - b);\\r\\n}\\r\\n\\n\\r\\n//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\\r\\n\\r\\nbool isnan(float val)\\r\\n{\\r\\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\r\\n}\\r\\n\\n\\r\\n\\r\\nvoid main(){\\r\\n vec2 warped_screen_coordinate = texture2D(warping_map, vec2(screen_coordinate.x, 1.0 - screen_coordinate.y)).rg;\\r\\n if(isnan(warped_screen_coordinate.x) || isnan(warped_screen_coordinate.y)){\\r\\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\\r\\n return;\\r\\n }\\r\\n vec2 far_plane_coord = frustum_up_left + warped_screen_coordinate * (frustum_down_right - frustum_up_left);\\r\\n float raw_depth = texture2D(depth_map, warped_screen_coordinate).r;\\r\\n float depth = depth_linear(raw_depth, near_ratio);\\r\\n float hypothenuse = length(vec3(far_plane_coord, 1.0));\\r\\n vec4 blending = texture2D(blending_map, vec2(screen_coordinate.x, 1.0 - screen_coordinate.y));\\r\\n if(depth * hypothenuse > 1.0){\\r\\n gl_FragColor = blending.a * vec4(pow(clear_color, vec3(gamma_sep)), 1.0) * vec4(blending.rgb, 1.0);\\r\\n } else {\\r\\n gl_FragColor = blending.a * vec4(pow(texture2D(color_map, warped_screen_coordinate).rgb, vec3(gamma_sep)), 1.0) * vec4(blending.rgb, 1.0);\\r\\n }\\r\\n}\"\n }\n }\n};","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\n/*\r\nThe GLService initializes and provides a GL context which is initialized from a canvas (usually threedee.vue)\r\nIt loads extensions, creates meshes and does some other initialization\r\n*/\r\n\r\nimport {Services} from './Services';\r\nimport { Shaders } from '../shaders/Shaders';\r\n\r\nexport type Shader = {\r\n name: string,\r\n program: WebGLProgram,\r\n uniforms: {[name: string]: WebGLUniformLocation},\r\n attributes: {[name: string]: number}\r\n}\r\n\r\nconst STITCHING_PYRAMID_SLOPE_WIDTH = 1.0;\r\nconst STITCHING_PYRAMIT_SLOPE_HEIGHT = 1.0;\r\n\r\nexport class GLService extends EventTarget{\r\n //the rendering context of the canvas\r\n public GL: WebGLRenderingContext;\r\n //which gl extensions to load\r\n public REQUIRED_EXTENSIONS = [\r\n \"WEBGL_draw_buffers\",\r\n \"OES_texture_float\",\r\n \"OES_texture_float_linear\",\r\n \"EXT_frag_depth\",\r\n \"WEBGL_depth_texture\",\r\n \"WEBGL_color_buffer_float\",\r\n \"ANGLE_instanced_arrays\"\r\n ];\r\n //The gl context as property \"gl\" and all loaded extensions under their respective names\r\n public Extensions: {[name: string]: WebGLRenderingContext | any}\r\n //The programs, organized as modules from the \"shaders\" directory (built by createShaders.js)\r\n public Modules: {[module: string]: {[program: string]: Shader}} = {};\r\n //The geometries\r\n public Geometries: {[name: string]: {buffer: WebGLBuffer, length: number, start: number, mode: number}};\r\n \r\n constructor(gl: WebGLRenderingContext){\r\n super();\r\n this.GL = gl;\r\n this.init_extensions();\r\n this.loadShaders();\r\n this.create_geometry();\r\n }\r\n\r\n //Raises the FrameDone event which triggers a few actions\r\n public raiseFrameDoneEvent(){\r\n this.dispatchEvent(new Event(\"FrameDone\"));\r\n }\r\n\r\n //Returns the GL context with it's extensions\r\n public getContext(){\r\n return this.Extensions;\r\n }\r\n\r\n private createVertexShader(source): WebGLShader {\r\n var vs = this.GL.createShader(this.GL.VERTEX_SHADER);\r\n this.GL.shaderSource(vs, source);\r\n this.GL.compileShader(vs);\r\n if(!this.GL.getShaderParameter(vs, this.GL.COMPILE_STATUS)){\r\n throw(this.GL.getShaderInfoLog(vs) + \"\\n\" + source.split(\"\\n\").map((x, i) => (i + 1) + \":\\t\" + x).join(\"\\n\"));\r\n }\r\n return vs;\r\n }\r\n\r\n private createFragmentShader(source): WebGLShader {\r\n var fs = this.GL.createShader(this.GL.FRAGMENT_SHADER);\r\n this.GL.shaderSource(fs, source);\r\n this.GL.compileShader(fs);\r\n if(!this.GL.getShaderParameter(fs, this.GL.COMPILE_STATUS)){\r\n throw(this.GL.getShaderInfoLog(fs) + \"\\n\" + source.split(\"\\n\").map((x, i) => (i + 1) + \":\\t\" + x).join(\"\\n\"));\r\n }\r\n return fs;\r\n }\r\n\r\n private createProgram(vshader, fshader) {\r\n var program = this.GL.createProgram();\r\n this.GL.attachShader(program, vshader);\r\n this.GL.attachShader(program, fshader);\r\n this.GL.linkProgram(program);\r\n if(!this.GL.getProgramParameter(program, this.GL.LINK_STATUS)){\r\n throw(this.GL.getProgramInfoLog(program));\r\n }\r\n this.GL.detachShader(program, vshader);\r\n this.GL.detachShader(program, fshader);\r\n //Clean up\r\n this.GL.deleteShader(vshader);\r\n this.GL.deleteShader(fshader);\r\n //Get locations\r\n var uniforms = {}\r\n for(var i = 0; i < this.GL.getProgramParameter(program, this.GL.ACTIVE_UNIFORMS); i++){\r\n var o = this.GL.getActiveUniform(program, i);\r\n uniforms[o.name] = this.GL.getUniformLocation(program, o.name);\r\n }\r\n var attributes = {}\r\n for(var i = 0; i < this.GL.getProgramParameter(program, this.GL.ACTIVE_ATTRIBUTES); i++){\r\n var o = this.GL.getActiveAttrib(program, i);\r\n attributes[o.name] = this.GL.getAttribLocation(program, o.name);\r\n }\r\n //Return program\r\n return {\r\n program: program,\r\n name: \"\",\r\n uniforms: uniforms,\r\n attributes: attributes\r\n };\r\n }\r\n \r\n ///Loads the shaders\r\n private loadShaders(){\r\n this.Modules = {};\r\n for(var module_name in Shaders){\r\n this.Modules[module_name] = {};\r\n let module = Shaders[module_name];\r\n for(var program_name in module){\r\n let program_source = module[program_name];\r\n try{\r\n if(module_name == \"sources\"){\r\n //For shader polymorphism related to projection styles.\r\n //@ts-ignore\r\n this.Modules[module_name][program_name] = {};\r\n [\"SPHERE\", \"EQUIRECT\", \"POLAR\"].forEach((p) => {\r\n var vs = this.createVertexShader(\"#define \" + p + \"\\n\" + program_source.vertex);\r\n var fs = this.createFragmentShader(\"#define \" + p + \"\\n\" + program_source.fragment);\r\n var prog = this.createProgram(vs, fs);\r\n prog.name = program_name + \"_\" + p;\r\n this.Modules[module_name][program_name][p] = prog;\r\n })\r\n } else {\r\n var vs = this.createVertexShader(program_source.vertex);\r\n var fs = this.createFragmentShader(program_source.fragment);\r\n var prog = this.createProgram(vs, fs);\r\n prog.name = module_name\r\n this.Modules[module_name][program_name] = prog;\r\n }\r\n } catch (e) {\r\n console.error(\"Shader error:\", module_name + \":\" + program_name + \":\", e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //Initializes the required extensions and adds the gl context\r\n private init_extensions(){\r\n this.Extensions = {};\r\n for(var extension of this.REQUIRED_EXTENSIONS){\r\n this.Extensions[extension] = this.GL.getExtension(extension);\r\n }\r\n this.Extensions[\"gl\"] = this.GL;\r\n this.Extensions[\"Gl\"] = this.GL;\r\n this.Extensions[\"GL\"] = this.GL;\r\n }\r\n\r\n //Creates all geometries\r\n private create_geometry(){\r\n this.Geometries = {\r\n tile: this.create_tile_geometry(),\r\n quad: this.create_quad_geometry(),\r\n arrow: this.create_arrow_geometry(),\r\n arrow_normals: this.create_arrow_normals(),\r\n tracers: this.create_tracer_geometry(),\r\n lines: this.create_line_segment_geometry(),\r\n selection_box: this.create_selection_box_geometry(),\r\n stitching: this.create_stitching_pyramid_geometry()\r\n };\r\n }\r\n\r\n //Creates a subdivided rectangle as a WebGLBuffer, with enough divisions to support displacement with mesh resolution\r\n //Range is from [-1, -1] to [1, 1], to be rendered as GL.TRIANGLES\r\n private create_tile_geometry(){\r\n var geometry = {buffer: this.GL.createBuffer(), length: 0, start: 0, mode: this.GL.TRIANGLES};\r\n this.GL.bindBuffer(this.GL.ARRAY_BUFFER, geometry.buffer);\r\n const divs = Services.InitializationService.getTileWidth() / 4;\r\n let gb = new Float32Array(divs * divs * 2 * 2 * 3);\r\n const stepsize = 2 / divs;\r\n geometry.length = 0;\r\n for(var i = 0; i < divs * divs; i++){\r\n var x = (i % divs) / divs * 2 - 1;\r\n var y = Math.floor(i / divs) / divs * 2 - 1;\r\n var i2 = i * 12;\r\n //upper left triangle\r\n gb[i2] = x;\r\n gb[i2 + 1] = y;\r\n\r\n gb[i2 + 2] = x;\r\n gb[i2 + 3] = y + stepsize\r\n\r\n gb[i2 + 4] = x + stepsize;\r\n gb[i2 + 5] = y;\r\n //lower right triangle\r\n gb[i2 + 6] = x + stepsize;\r\n gb[i2 + 7] = y;\r\n\r\n gb[i2 + 8] = x;\r\n gb[i2 + 9] = y + stepsize;\r\n\r\n gb[i2 + 10] = x + stepsize;\r\n gb[i2 + 11] = y + stepsize;\r\n //\r\n geometry.length += 6;\r\n }\r\n this.GL.bufferData(this.GL.ARRAY_BUFFER, gb, this.GL.STATIC_DRAW);\r\n return geometry;\r\n }\r\n\r\n private create_selection_box_geometry(){\r\n var geometry = {buffer: this.GL.createBuffer(), length: 0, start: 0, mode: this.GL.TRIANGLES};\r\n this.GL.bindBuffer(this.GL.ARRAY_BUFFER, geometry.buffer);\r\n const divs = Services.InitializationService.getTileWidth() / 4;\r\n let gb = new Float32Array((divs * 2 + 4) * divs * 2 * 3 * 3);\r\n const stepsize = 2 / divs;\r\n geometry.length = 0;\r\n let gi = 0;\r\n for(var i = 0; i < divs; i++){\r\n let ifrac = i / divs * 2 - 1;\r\n for(var k = 0; k < 2; k++){\r\n //top and bottom\r\n for(var j = 0; j < divs; j++){\r\n let jfrac = j / divs * 2 - 1;\r\n gb[gi++] = ifrac;\r\n gb[gi++] = jfrac;\r\n gb[gi++] = k;\r\n \r\n gb[gi++] = ifrac;\r\n gb[gi++] = jfrac + stepsize\r\n gb[gi++] = k;\r\n \r\n gb[gi++] = ifrac + stepsize;\r\n gb[gi++] = jfrac;\r\n gb[gi++] = k;\r\n //lower right triangle\r\n gb[gi++] = ifrac + stepsize;\r\n gb[gi++] = jfrac;\r\n gb[gi++] = k;\r\n \r\n gb[gi++] = ifrac;\r\n gb[gi++] = jfrac + stepsize;\r\n gb[gi++] = k;\r\n \r\n gb[gi++] = ifrac + stepsize;\r\n gb[gi++] = jfrac + stepsize;\r\n gb[gi++] = k;\r\n\r\n geometry.length += 6;\r\n }\r\n\r\n //front and back (x)\r\n gb[gi++] = 2 * k - 1;\r\n gb[gi++] = ifrac;\r\n gb[gi++] = 1;\r\n \r\n gb[gi++] = 2 * k - 1;\r\n gb[gi++] = ifrac;\r\n gb[gi++] = 0;\r\n\r\n gb[gi++] = 2 * k - 1;\r\n gb[gi++] = ifrac + stepsize\r\n gb[gi++] = 1;\r\n //lower right triangle\r\n gb[gi++] = 2 * k - 1;\r\n gb[gi++] = ifrac;\r\n gb[gi++] = 0;\r\n \r\n gb[gi++] = 2 * k - 1;\r\n gb[gi++] = ifrac + stepsize;\r\n gb[gi++] = 0;\r\n \r\n gb[gi++] = 2 * k - 1;\r\n gb[gi++] = ifrac + stepsize;\r\n gb[gi++] = 1;\r\n\r\n geometry.length += 6;\r\n\r\n //left and right (y)\r\n\r\n gb[gi++] = ifrac;\r\n gb[gi++] = 2 * k - 1;\r\n gb[gi++] = 1;\r\n \r\n gb[gi++] = ifrac;\r\n gb[gi++] = 2 * k - 1;\r\n gb[gi++] = 0;\r\n \r\n gb[gi++] = ifrac + stepsize;\r\n gb[gi++] = 2 * k - 1;\r\n gb[gi++] = 1;\r\n //lower right triangle\r\n gb[gi++] = ifrac + stepsize;\r\n gb[gi++] = 2 * k - 1;\r\n gb[gi++] = 0;\r\n \r\n gb[gi++] = ifrac;\r\n gb[gi++] = 2 * k - 1;\r\n gb[gi++] = 0;\r\n \r\n gb[gi++] = ifrac + stepsize;\r\n gb[gi++] = 2 * k - 1;\r\n gb[gi++] = 1;\r\n\r\n geometry.length += 6;\r\n\r\n }\r\n }\r\n this.GL.bufferData(this.GL.ARRAY_BUFFER, gb, this.GL.STATIC_DRAW);\r\n return geometry;\r\n }\r\n\r\n //Creates a new quad geometry as a WebGLBuffer, usually used for copying over one image to another\r\n //Range is from [-1, -1] to [1, 1], to be rendered with GL.TRIANGLE_STRIP\r\n private create_quad_geometry(){\r\n var geometry = {buffer: this.GL.createBuffer(), length: 4, start: 0, mode: this.GL.TRIANGLE_STRIP};\r\n this.GL.bindBuffer(this.GL.ARRAY_BUFFER, geometry.buffer);\r\n let gb = new Float32Array([\r\n -1, 1,\r\n 1, 1,\r\n -1, -1,\r\n 1, -1\r\n ]);\r\n this.GL.bufferData(this.GL.ARRAY_BUFFER, gb, this.GL.STATIC_DRAW);\r\n return geometry;\r\n }\r\n\r\n private create_arrow_geometry(){\r\n var geometry = {buffer: this.GL.createBuffer(), length: 0, start: 0, mode: this.GL.TRIANGLES};\r\n this.GL.bindBuffer(this.GL.ARRAY_BUFFER, geometry.buffer);\r\n let gb = new Float32Array(require(\"../static/arrow.stl.json\").vertices);\r\n geometry.length = gb.length / 3;\r\n this.GL.bufferData(this.GL.ARRAY_BUFFER, gb, this.GL.STATIC_DRAW);\r\n return geometry;\r\n }\r\n\r\n private create_arrow_normals(){\r\n var geometry = {buffer: this.GL.createBuffer(), length: 0, start: 0, mode: this.GL.TRIANGLES};\r\n this.GL.bindBuffer(this.GL.ARRAY_BUFFER, geometry.buffer);\r\n let gb = new Float32Array(require(\"../static/arrow.stl.json\").normals);\r\n geometry.length = gb.length / 3;\r\n this.GL.bufferData(this.GL.ARRAY_BUFFER, gb, this.GL.STATIC_DRAW);\r\n return geometry;\r\n }\r\n\r\n private create_tracer_geometry(){\r\n var geometry = {buffer: this.GL.createBuffer(), length: 0, start: 0, mode: this.GL.POINTS};\r\n this.GL.bindBuffer(this.GL.ARRAY_BUFFER, geometry.buffer);\r\n let gb = new Float32Array(256 * 256 * 2);\r\n geometry.length = gb.length / 2;\r\n for(var i = 0; i < 256; i++){\r\n for(var j = 0; j < 256; j++){\r\n let index = (i * 256 + j) * 2;\r\n gb[index] = (1 + 2 * i) / 256 - 1;\r\n gb[index + 1] = (1 + 2 * j) / 256 - 1;\r\n }\r\n }\r\n this.GL.bufferData(this.GL.ARRAY_BUFFER, gb, this.GL.STATIC_DRAW);\r\n return geometry;\r\n }\r\n\r\n private create_line_segment_geometry(){\r\n var geometry = {buffer: this.GL.createBuffer(), length: 0, start: 0, mode: this.GL.TRIANGLE_STRIP};\r\n this.GL.bindBuffer(this.GL.ARRAY_BUFFER, geometry.buffer);\r\n const GEO_COUNT = 6;\r\n let gb = new Float32Array(3 * (GEO_COUNT + 1) * 2);\r\n for(var i = 0; i < GEO_COUNT + 1; i++){\r\n gb[(i * 6)] = Math.cos(2 * Math.PI *i / GEO_COUNT);\r\n gb[(i * 6) + 1] = Math.sin(2 * Math.PI * i / GEO_COUNT);\r\n gb[(i * 6) + 2] = 0.0;\r\n gb[(i * 6) + 3] = Math.cos(2 * Math.PI * i / GEO_COUNT);\r\n gb[(i * 6) + 4] = Math.sin(2 * Math.PI * i / GEO_COUNT);\r\n gb[(i * 6) + 5] = 1.0;\r\n geometry.length += 2;\r\n }\r\n this.GL.bufferData(this.GL.ARRAY_BUFFER, gb, this.GL.STATIC_DRAW);\r\n return geometry;\r\n }\r\n\r\n private create_tracer_line_geometry(){\r\n var geometry = {buffer: this.GL.createBuffer(), length: 0, start: 0, mode: this.GL.TRIANGLE_STRIP};\r\n const GEO_COUNT = 6;\r\n let gb = new Float32Array(3 * 2 * 17 * (GEO_COUNT + 1));\r\n for(var j = 0; j < 17; j++){\r\n for(var i = 0; i < GEO_COUNT + 1; i++){\r\n let a_index = j * GEO_COUNT + i * 6;\r\n gb[a_index] = Math.cos(2 * Math.PI * i / GEO_COUNT);\r\n gb[a_index + 1] = Math.sin(2 * Math.PI * i / GEO_COUNT);\r\n gb[a_index + 2] = j;\r\n gb[a_index + 3] = Math.cos(2 * Math.PI * i / GEO_COUNT);\r\n gb[a_index + 4] = Math.sin(2 * Math.PI * i / GEO_COUNT);\r\n gb[a_index + 5] = j + 1;\r\n geometry.length += 2;\r\n }\r\n }\r\n this.GL.bindBuffer(this.GL.ARRAY_BUFFER, geometry.buffer);\r\n this.GL.bufferData(this.GL.ARRAY_BUFFER, gb, this.GL.STATIC_DRAW);\r\n return geometry;\r\n }\r\n\r\n private create_stitching_pyramid_geometry(){\r\n var geometry = {buffer: this.GL.createBuffer(), length: 0, start: 0, mode: this.GL.TRIANGLES}\r\n let gb = new Float32Array([\r\n //TOP SLOPE\r\n -1 - STITCHING_PYRAMID_SLOPE_WIDTH, 1 + STITCHING_PYRAMID_SLOPE_WIDTH, 1,\r\n -1, 1, 0,\r\n 1 + STITCHING_PYRAMID_SLOPE_WIDTH, 1 + STITCHING_PYRAMID_SLOPE_WIDTH, 1,\r\n\r\n -1, 1, 0,\r\n 1, 1, 0,\r\n 1 + STITCHING_PYRAMID_SLOPE_WIDTH, 1 + STITCHING_PYRAMID_SLOPE_WIDTH, 1,\r\n //LEFT SLOPE\r\n -1 - STITCHING_PYRAMID_SLOPE_WIDTH, -1 - STITCHING_PYRAMID_SLOPE_WIDTH, 1,\r\n -1, -1, 0,\r\n -1 - STITCHING_PYRAMID_SLOPE_WIDTH, 1 + STITCHING_PYRAMID_SLOPE_WIDTH, 1,\r\n\r\n -1, -1, 0,\r\n -1, 1, 0,\r\n -1 - STITCHING_PYRAMID_SLOPE_WIDTH, 1 + STITCHING_PYRAMID_SLOPE_WIDTH, 1,\r\n //ACTUAL TILE\r\n -1, 1, 0,\r\n -1, -1, 0,\r\n 1, 1, 0,\r\n\r\n 1, 1, 0,\r\n -1, -1, 0,\r\n 1, -1, 0,\r\n //RIGHT SLOPE\r\n 1, 1, 0,\r\n 1, -1, 0,\r\n 1 + STITCHING_PYRAMID_SLOPE_WIDTH, -1 - STITCHING_PYRAMID_SLOPE_WIDTH, 1,\r\n\r\n 1 + STITCHING_PYRAMID_SLOPE_WIDTH, -1 - STITCHING_PYRAMID_SLOPE_WIDTH, 1,\r\n 1 + STITCHING_PYRAMID_SLOPE_WIDTH, 1+ STITCHING_PYRAMID_SLOPE_WIDTH, 1,\r\n 1, 1, 0,\r\n //BOTTOM SLOPE\r\n -1, 1, 0,\r\n -1 - STITCHING_PYRAMID_SLOPE_WIDTH, -1 -STITCHING_PYRAMID_SLOPE_WIDTH, 1,\r\n 1, -1, 0,\r\n\r\n 1, -1, 0,\r\n -1 - STITCHING_PYRAMID_SLOPE_WIDTH, -1 - STITCHING_PYRAMID_SLOPE_WIDTH, 1,\r\n 1 + STITCHING_PYRAMID_SLOPE_WIDTH, -1 - STITCHING_PYRAMID_SLOPE_WIDTH, 1\r\n\r\n ]);\r\n geometry.length = gb.length / 3;\r\n this.GL.bindBuffer(this.GL.ARRAY_BUFFER, geometry.buffer);\r\n this.GL.bufferData(this.GL.ARRAY_BUFFER, gb, this.GL.STATIC_DRAW);\r\n return geometry;\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\n\nexport const colormaps = [\n{\n name: \"Accent\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 8],\n symmetric: false,\n c3g_string: \"rgb(127,201,127) 0%,rgb(127,201,127) 12.5%,rgb(190,174,212) 12.5%,rgb(190,174,212) 25%,rgb(253,192,134) 25%,rgb(253,192,134) 37.5%,rgb(255,255,153) 37.5%,rgb(255,255,153) 50%,rgb(56,108,176) 50%,rgb(56,108,176) 62.5%,rgb(240,2,127) 62.5%,rgb(240,2,127) 75%,rgb(191,91,22) 75%,rgb(191,91,22) 87.5%,rgb(102,102,102) 87.5%,rgb(102,102,102) 100%\",\n tex_buffer: new Uint8Array([127,201,127,190,174,212,253,192,134,255,255,153,56,108,176,240,2,127,191,91,22,102,102,102]),\n linear_interpolation: false\n},\n{\n name: \"BlueDarkRed18\",\n author: {\n name: \"UCAR\",\n url: \"http://www.ncl.ucar.edu\"\n },\n license: {\n name: \"Apache License, Version 2.0\",\n url: \"http://www.apache.org/licenses/LICENSE-2.0\"\n },\n range: [0, 18],\n symmetric: true,\n c3g_string: \"rgb(36,0,216) 0%,rgb(36,0,216) 5.555%,rgb(24,28,247) 5.555%,rgb(24,28,247) 11.11%,rgb(40,87,255) 11.11%,rgb(40,87,255) 16.66%,rgb(61,135,255) 16.66%,rgb(61,135,255) 22.22%,rgb(86,176,255) 22.22%,rgb(86,176,255) 27.77%,rgb(117,211,255) 27.77%,rgb(117,211,255) 33.33%,rgb(153,234,255) 33.33%,rgb(153,234,255) 38.88%,rgb(188,249,255) 38.88%,rgb(188,249,255) 44.44%,rgb(234,255,255) 44.44%,rgb(234,255,255) 50%,rgb(255,255,234) 50%,rgb(255,255,234) 55.55%,rgb(255,241,188) 55.55%,rgb(255,241,188) 61.11%,rgb(255,214,153) 61.11%,rgb(255,214,153) 66.66%,rgb(255,172,117) 66.66%,rgb(255,172,117) 72.22%,rgb(255,120,86) 72.22%,rgb(255,120,86) 77.77%,rgb(255,61,61) 77.77%,rgb(255,61,61) 83.33%,rgb(247,39,53) 83.33%,rgb(247,39,53) 88.88%,rgb(216,21,47) 88.88%,rgb(216,21,47) 94.44%,rgb(165,0,33) 94.44%,rgb(165,0,33) 100%\",\n tex_buffer: new Uint8Array([36,0,216,24,28,247,40,87,255,61,135,255,86,176,255,117,211,255,153,234,255,188,249,255,234,255,255,255,255,234,255,241,188,255,214,153,255,172,117,255,120,86,255,61,61,247,39,53,216,21,47,165,0,33]),\n linear_interpolation: false\n},\n{\n name: \"Blues\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(247,251,255) 0%,rgb(246,250,254) 0.781%,rgb(244,249,254) 1.562%,rgb(243,248,253) 2.343%,rgb(241,247,253) 3.125%,rgb(239,246,252) 3.906%,rgb(238,245,252) 4.687%,rgb(236,244,251) 5.468%,rgb(235,243,251) 6.25%,rgb(233,242,250) 7.031%,rgb(232,241,250) 7.812%,rgb(230,240,249) 8.593%,rgb(228,239,249) 9.375%,rgb(227,238,248) 10.15%,rgb(225,237,248) 10.93%,rgb(224,236,247) 11.71%,rgb(222,235,247) 12.5%,rgb(221,234,246) 13.28%,rgb(219,233,246) 14.06%,rgb(218,232,245) 14.84%,rgb(216,231,245) 15.62%,rgb(215,230,244) 16.40%,rgb(213,229,244) 17.18%,rgb(211,228,243) 17.96%,rgb(210,227,243) 18.75%,rgb(208,226,242) 19.53%,rgb(207,225,242) 20.31%,rgb(205,224,241) 21.09%,rgb(204,223,241) 21.87%,rgb(202,222,240) 22.65%,rgb(201,221,240) 23.43%,rgb(199,220,239) 24.21%,rgb(198,219,239) 25%,rgb(196,218,238) 25.78%,rgb(193,217,237) 26.56%,rgb(191,216,236) 27.34%,rgb(188,214,235) 28.12%,rgb(186,213,234) 28.90%,rgb(183,212,233) 29.68%,rgb(180,211,233) 30.46%,rgb(178,210,232) 31.25%,rgb(175,209,231) 32.03%,rgb(173,208,230) 32.81%,rgb(170,207,229) 33.59%,rgb(168,206,228) 34.37%,rgb(165,205,227) 35.15%,rgb(163,204,226) 35.93%,rgb(160,203,225) 36.71%,rgb(158,202,225) 37.5%,rgb(155,200,224) 38.28%,rgb(151,198,223) 39.06%,rgb(148,196,223) 39.84%,rgb(145,195,222) 40.62%,rgb(142,193,221) 41.40%,rgb(139,191,220) 42.18%,rgb(135,189,220) 42.96%,rgb(132,188,219) 43.75%,rgb(129,186,218) 44.53%,rgb(126,184,218) 45.31%,rgb(123,182,217) 46.09%,rgb(119,181,216) 46.87%,rgb(116,179,216) 47.65%,rgb(113,177,215) 48.43%,rgb(110,175,214) 49.21%,rgb(107,174,214) 50%,rgb(104,172,212) 50.78%,rgb(101,170,211) 51.56%,rgb(99,168,210) 52.34%,rgb(96,166,209) 53.12%,rgb(94,165,208) 53.90%,rgb(91,163,207) 54.68%,rgb(88,161,206) 55.46%,rgb(86,159,205) 56.25%,rgb(83,158,204) 57.03%,rgb(81,156,203) 57.81%,rgb(78,154,202) 58.59%,rgb(76,152,201) 59.37%,rgb(73,151,200) 60.15%,rgb(70,149,199) 60.93%,rgb(68,147,198) 61.71%,rgb(65,145,197) 62.5%,rgb(63,143,196) 63.28%,rgb(61,141,195) 64.06%,rgb(59,139,194) 64.84%,rgb(57,137,193) 65.62%,rgb(55,135,192) 66.40%,rgb(53,133,191) 67.18%,rgb(51,131,190) 67.96%,rgb(49,129,189) 68.75%,rgb(47,127,188) 69.53%,rgb(44,124,187) 70.31%,rgb(42,122,186) 71.09%,rgb(40,120,185) 71.87%,rgb(38,118,183) 72.65%,rgb(36,116,182) 73.43%,rgb(34,114,181) 74.21%,rgb(32,112,180) 75%,rgb(31,110,179) 75.78%,rgb(29,108,177) 76.56%,rgb(27,106,175) 77.34%,rgb(26,104,174) 78.12%,rgb(24,102,172) 78.90%,rgb(23,100,171) 79.68%,rgb(21,98,169) 80.46%,rgb(20,96,168) 81.25%,rgb(18,94,166) 82.03%,rgb(16,92,164) 82.81%,rgb(15,90,163) 83.59%,rgb(13,88,161) 84.37%,rgb(12,86,160) 85.15%,rgb(10,84,158) 85.93%,rgb(8,82,156) 86.71%,rgb(8,80,154) 87.5%,rgb(8,78,151) 88.28%,rgb(8,76,148) 89.06%,rgb(8,73,145) 89.84%,rgb(8,71,142) 90.62%,rgb(8,69,139) 91.40%,rgb(8,67,136) 92.18%,rgb(8,65,133) 92.96%,rgb(8,63,130) 93.75%,rgb(8,61,127) 94.53%,rgb(8,59,123) 95.31%,rgb(8,57,120) 96.09%,rgb(8,55,117) 96.87%,rgb(8,53,114) 97.65%,rgb(8,51,111) 98.43%,rgb(8,49,108) 99.21%,rgb(8,48,107) 100%\",\n tex_buffer: new Uint8Array([247,251,255,246,250,254,244,249,254,243,248,253,241,247,253,239,246,252,238,245,252,236,244,251,235,243,251,233,242,250,232,241,250,230,240,249,228,239,249,227,238,248,225,237,248,224,236,247,222,235,247,221,234,246,219,233,246,218,232,245,216,231,245,215,230,244,213,229,244,211,228,243,210,227,243,208,226,242,207,225,242,205,224,241,204,223,241,202,222,240,201,221,240,199,220,239,198,219,239,196,218,238,193,217,237,191,216,236,188,214,235,186,213,234,183,212,233,180,211,233,178,210,232,175,209,231,173,208,230,170,207,229,168,206,228,165,205,227,163,204,226,160,203,225,158,202,225,155,200,224,151,198,223,148,196,223,145,195,222,142,193,221,139,191,220,135,189,220,132,188,219,129,186,218,126,184,218,123,182,217,119,181,216,116,179,216,113,177,215,110,175,214,107,174,214,104,172,212,101,170,211,99,168,210,96,166,209,94,165,208,91,163,207,88,161,206,86,159,205,83,158,204,81,156,203,78,154,202,76,152,201,73,151,200,70,149,199,68,147,198,65,145,197,63,143,196,61,141,195,59,139,194,57,137,193,55,135,192,53,133,191,51,131,190,49,129,189,47,127,188,44,124,187,42,122,186,40,120,185,38,118,183,36,116,182,34,114,181,32,112,180,31,110,179,29,108,177,27,106,175,26,104,174,24,102,172,23,100,171,21,98,169,20,96,168,18,94,166,16,92,164,15,90,163,13,88,161,12,86,160,10,84,158,8,82,156,8,80,154,8,78,151,8,76,148,8,73,145,8,71,142,8,69,139,8,67,136,8,65,133,8,63,130,8,61,127,8,59,123,8,57,120,8,55,117,8,53,114,8,51,111,8,49,108,8,48,107]),\n linear_interpolation: true\n},\n{\n name: \"BrBG\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: true,\n c3g_string: \"rgb(84,48,5) 0%,rgb(86,49,5) 0.781%,rgb(90,51,5) 1.562%,rgb(95,54,5) 2.343%,rgb(99,57,6) 3.125%,rgb(103,59,6) 3.906%,rgb(108,62,7) 4.687%,rgb(112,64,7) 5.468%,rgb(117,67,7) 6.25%,rgb(121,70,8) 7.031%,rgb(125,72,8) 7.812%,rgb(130,75,9) 8.593%,rgb(134,77,9) 9.375%,rgb(139,80,9) 10.15%,rgb(143,84,12) 10.93%,rgb(147,87,14) 11.71%,rgb(151,91,17) 12.5%,rgb(155,95,20) 13.28%,rgb(159,99,23) 14.06%,rgb(163,102,25) 14.84%,rgb(167,106,28) 15.62%,rgb(171,110,31) 16.40%,rgb(175,114,34) 17.18%,rgb(179,118,37) 17.96%,rgb(183,121,39) 18.75%,rgb(187,125,42) 19.53%,rgb(191,129,45) 20.31%,rgb(193,134,51) 21.09%,rgb(196,139,58) 21.87%,rgb(198,144,64) 22.65%,rgb(201,149,70) 23.43%,rgb(203,155,77) 24.21%,rgb(206,160,83) 25%,rgb(208,165,89) 25.78%,rgb(211,170,96) 26.56%,rgb(213,175,102) 27.34%,rgb(216,180,108) 28.12%,rgb(218,185,114) 28.90%,rgb(221,190,121) 29.68%,rgb(223,195,127) 30.46%,rgb(225,198,132) 31.25%,rgb(227,201,138) 32.03%,rgb(229,204,143) 32.81%,rgb(230,207,149) 33.59%,rgb(232,210,154) 34.37%,rgb(234,213,160) 35.15%,rgb(236,216,165) 35.93%,rgb(238,219,171) 36.71%,rgb(240,222,176) 37.5%,rgb(241,225,182) 38.28%,rgb(243,228,187) 39.06%,rgb(245,231,193) 39.84%,rgb(245,232,197) 40.62%,rgb(245,233,201) 41.40%,rgb(245,234,205) 42.18%,rgb(245,235,209) 42.96%,rgb(245,236,213) 43.75%,rgb(245,237,217) 44.53%,rgb(245,238,221) 45.31%,rgb(245,239,225) 46.09%,rgb(245,240,229) 46.87%,rgb(245,241,233) 47.65%,rgb(245,242,237) 48.43%,rgb(245,243,241) 49.21%,rgb(245,245,245) 50%,rgb(241,244,243) 50.78%,rgb(237,243,242) 51.56%,rgb(234,242,241) 52.34%,rgb(230,241,239) 53.12%,rgb(226,240,238) 53.90%,rgb(223,239,237) 54.68%,rgb(219,238,236) 55.46%,rgb(216,238,234) 56.25%,rgb(212,237,233) 57.03%,rgb(208,236,232) 57.81%,rgb(205,235,231) 58.59%,rgb(201,234,229) 59.37%,rgb(197,233,228) 60.15%,rgb(191,231,225) 60.93%,rgb(186,228,222) 61.71%,rgb(180,226,219) 62.5%,rgb(174,224,216) 63.28%,rgb(169,221,213) 64.06%,rgb(163,219,211) 64.84%,rgb(158,217,208) 65.62%,rgb(152,215,205) 66.40%,rgb(147,212,202) 67.18%,rgb(141,210,199) 67.96%,rgb(135,208,196) 68.75%,rgb(130,205,194) 69.53%,rgb(124,202,190) 70.31%,rgb(118,198,186) 71.09%,rgb(112,193,182) 71.87%,rgb(106,189,178) 72.65%,rgb(100,185,174) 73.43%,rgb(94,181,170) 74.21%,rgb(89,176,167) 75%,rgb(83,172,163) 75.78%,rgb(77,168,159) 76.56%,rgb(71,164,155) 77.34%,rgb(65,159,151) 78.12%,rgb(59,155,147) 78.90%,rgb(53,151,143) 79.68%,rgb(49,147,139) 80.46%,rgb(45,143,135) 81.25%,rgb(41,139,131) 82.03%,rgb(37,135,127) 82.81%,rgb(32,132,124) 83.59%,rgb(28,128,120) 84.37%,rgb(24,124,116) 85.15%,rgb(20,120,112) 85.93%,rgb(16,116,108) 86.71%,rgb(12,112,104) 87.5%,rgb(8,108,100) 88.28%,rgb(4,105,97) 89.06%,rgb(0,101,93) 89.84%,rgb(0,98,89) 90.62%,rgb(0,94,86) 91.40%,rgb(0,91,82) 92.18%,rgb(0,88,78) 92.96%,rgb(0,84,75) 93.75%,rgb(0,81,71) 94.53%,rgb(0,78,67) 95.31%,rgb(0,74,64) 96.09%,rgb(0,71,60) 96.87%,rgb(0,68,57) 97.65%,rgb(0,64,53) 98.43%,rgb(0,61,49) 99.21%,rgb(0,60,48) 100%\",\n tex_buffer: new Uint8Array([84,48,5,86,49,5,90,51,5,95,54,5,99,57,6,103,59,6,108,62,7,112,64,7,117,67,7,121,70,8,125,72,8,130,75,9,134,77,9,139,80,9,143,84,12,147,87,14,151,91,17,155,95,20,159,99,23,163,102,25,167,106,28,171,110,31,175,114,34,179,118,37,183,121,39,187,125,42,191,129,45,193,134,51,196,139,58,198,144,64,201,149,70,203,155,77,206,160,83,208,165,89,211,170,96,213,175,102,216,180,108,218,185,114,221,190,121,223,195,127,225,198,132,227,201,138,229,204,143,230,207,149,232,210,154,234,213,160,236,216,165,238,219,171,240,222,176,241,225,182,243,228,187,245,231,193,245,232,197,245,233,201,245,234,205,245,235,209,245,236,213,245,237,217,245,238,221,245,239,225,245,240,229,245,241,233,245,242,237,245,243,241,245,245,245,241,244,243,237,243,242,234,242,241,230,241,239,226,240,238,223,239,237,219,238,236,216,238,234,212,237,233,208,236,232,205,235,231,201,234,229,197,233,228,191,231,225,186,228,222,180,226,219,174,224,216,169,221,213,163,219,211,158,217,208,152,215,205,147,212,202,141,210,199,135,208,196,130,205,194,124,202,190,118,198,186,112,193,182,106,189,178,100,185,174,94,181,170,89,176,167,83,172,163,77,168,159,71,164,155,65,159,151,59,155,147,53,151,143,49,147,139,45,143,135,41,139,131,37,135,127,32,132,124,28,128,120,24,124,116,20,120,112,16,116,108,12,112,104,8,108,100,4,105,97,0,101,93,0,98,89,0,94,86,0,91,82,0,88,78,0,84,75,0,81,71,0,78,67,0,74,64,0,71,60,0,68,57,0,64,53,0,61,49,0,60,48]),\n linear_interpolation: true\n},\n{\n name: \"BuGn\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(247,252,253) 0%,rgb(246,251,252) 0.781%,rgb(245,251,252) 1.562%,rgb(244,250,252) 2.343%,rgb(243,250,252) 3.125%,rgb(241,250,251) 3.906%,rgb(240,249,251) 4.687%,rgb(239,249,251) 5.468%,rgb(238,248,251) 6.25%,rgb(237,248,250) 7.031%,rgb(236,247,250) 7.812%,rgb(235,247,250) 8.593%,rgb(233,246,250) 9.375%,rgb(232,246,249) 10.15%,rgb(231,246,249) 10.93%,rgb(230,245,249) 11.71%,rgb(229,245,249) 12.5%,rgb(228,244,248) 13.28%,rgb(226,244,247) 14.06%,rgb(224,243,245) 14.84%,rgb(223,242,244) 15.62%,rgb(221,242,243) 16.40%,rgb(220,241,242) 17.18%,rgb(218,241,241) 17.96%,rgb(216,240,239) 18.75%,rgb(215,240,238) 19.53%,rgb(213,239,237) 20.31%,rgb(212,238,236) 21.09%,rgb(210,238,235) 21.87%,rgb(209,237,233) 22.65%,rgb(207,237,232) 23.43%,rgb(205,236,231) 24.21%,rgb(204,236,230) 25%,rgb(201,235,228) 25.78%,rgb(198,233,226) 26.56%,rgb(195,232,224) 27.34%,rgb(191,231,223) 28.12%,rgb(188,230,221) 28.90%,rgb(185,228,219) 29.68%,rgb(182,227,217) 30.46%,rgb(179,226,215) 31.25%,rgb(175,224,214) 32.03%,rgb(172,223,212) 32.81%,rgb(169,222,210) 33.59%,rgb(166,221,208) 34.37%,rgb(163,219,206) 35.15%,rgb(159,218,204) 35.93%,rgb(156,217,203) 36.71%,rgb(153,216,201) 37.5%,rgb(150,214,198) 38.28%,rgb(146,213,196) 39.06%,rgb(143,212,194) 39.84%,rgb(140,210,191) 40.62%,rgb(137,209,189) 41.40%,rgb(134,207,187) 42.18%,rgb(130,206,184) 42.96%,rgb(127,205,182) 43.75%,rgb(124,203,180) 44.53%,rgb(121,202,177) 45.31%,rgb(118,200,175) 46.09%,rgb(114,199,173) 46.87%,rgb(111,198,170) 47.65%,rgb(108,196,168) 48.43%,rgb(105,195,166) 49.21%,rgb(102,194,164) 50%,rgb(99,192,161) 50.78%,rgb(97,191,158) 51.56%,rgb(95,190,155) 52.34%,rgb(92,188,152) 53.12%,rgb(90,187,149) 53.90%,rgb(88,186,146) 54.68%,rgb(85,185,143) 55.46%,rgb(83,183,140) 56.25%,rgb(81,182,137) 57.03%,rgb(78,181,135) 57.81%,rgb(76,180,132) 58.59%,rgb(74,178,129) 59.37%,rgb(71,177,126) 60.15%,rgb(69,176,123) 60.93%,rgb(67,175,120) 61.71%,rgb(64,173,117) 62.5%,rgb(62,171,114) 63.28%,rgb(60,169,111) 64.06%,rgb(59,167,108) 64.84%,rgb(57,164,105) 65.62%,rgb(55,162,102) 66.40%,rgb(53,160,99) 67.18%,rgb(51,158,96) 67.96%,rgb(49,156,92) 68.75%,rgb(47,153,89) 69.53%,rgb(45,151,86) 70.31%,rgb(43,149,83) 71.09%,rgb(42,147,80) 71.87%,rgb(40,145,77) 72.65%,rgb(38,142,74) 73.43%,rgb(36,140,71) 74.21%,rgb(34,138,68) 75%,rgb(32,136,67) 75.78%,rgb(30,134,65) 76.56%,rgb(27,132,63) 77.34%,rgb(25,130,62) 78.12%,rgb(23,129,60) 78.90%,rgb(21,127,59) 79.68%,rgb(19,125,57) 80.46%,rgb(16,123,56) 81.25%,rgb(14,121,54) 82.03%,rgb(12,119,52) 82.81%,rgb(10,117,51) 83.59%,rgb(7,115,49) 84.37%,rgb(5,113,48) 85.15%,rgb(3,112,46) 85.93%,rgb(1,110,44) 86.71%,rgb(0,108,43) 87.5%,rgb(0,105,42) 88.28%,rgb(0,102,41) 89.06%,rgb(0,100,40) 89.84%,rgb(0,97,39) 90.62%,rgb(0,95,38) 91.40%,rgb(0,92,37) 92.18%,rgb(0,89,36) 92.96%,rgb(0,87,35) 93.75%,rgb(0,84,33) 94.53%,rgb(0,82,32) 95.31%,rgb(0,79,31) 96.09%,rgb(0,77,30) 96.87%,rgb(0,74,29) 97.65%,rgb(0,71,28) 98.43%,rgb(0,69,27) 99.21%,rgb(0,68,27) 100%\",\n tex_buffer: new Uint8Array([247,252,253,246,251,252,245,251,252,244,250,252,243,250,252,241,250,251,240,249,251,239,249,251,238,248,251,237,248,250,236,247,250,235,247,250,233,246,250,232,246,249,231,246,249,230,245,249,229,245,249,228,244,248,226,244,247,224,243,245,223,242,244,221,242,243,220,241,242,218,241,241,216,240,239,215,240,238,213,239,237,212,238,236,210,238,235,209,237,233,207,237,232,205,236,231,204,236,230,201,235,228,198,233,226,195,232,224,191,231,223,188,230,221,185,228,219,182,227,217,179,226,215,175,224,214,172,223,212,169,222,210,166,221,208,163,219,206,159,218,204,156,217,203,153,216,201,150,214,198,146,213,196,143,212,194,140,210,191,137,209,189,134,207,187,130,206,184,127,205,182,124,203,180,121,202,177,118,200,175,114,199,173,111,198,170,108,196,168,105,195,166,102,194,164,99,192,161,97,191,158,95,190,155,92,188,152,90,187,149,88,186,146,85,185,143,83,183,140,81,182,137,78,181,135,76,180,132,74,178,129,71,177,126,69,176,123,67,175,120,64,173,117,62,171,114,60,169,111,59,167,108,57,164,105,55,162,102,53,160,99,51,158,96,49,156,92,47,153,89,45,151,86,43,149,83,42,147,80,40,145,77,38,142,74,36,140,71,34,138,68,32,136,67,30,134,65,27,132,63,25,130,62,23,129,60,21,127,59,19,125,57,16,123,56,14,121,54,12,119,52,10,117,51,7,115,49,5,113,48,3,112,46,1,110,44,0,108,43,0,105,42,0,102,41,0,100,40,0,97,39,0,95,38,0,92,37,0,89,36,0,87,35,0,84,33,0,82,32,0,79,31,0,77,30,0,74,29,0,71,28,0,69,27,0,68,27]),\n linear_interpolation: true\n},\n{\n name: \"BuPu\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(247,252,253) 0%,rgb(246,251,252) 0.781%,rgb(244,250,252) 1.562%,rgb(243,249,251) 2.343%,rgb(241,248,251) 3.125%,rgb(240,247,250) 3.906%,rgb(239,246,249) 4.687%,rgb(237,245,249) 5.468%,rgb(236,244,248) 6.25%,rgb(234,243,248) 7.031%,rgb(233,242,247) 7.812%,rgb(231,241,247) 8.593%,rgb(230,240,246) 9.375%,rgb(228,239,245) 10.15%,rgb(227,238,245) 10.93%,rgb(225,237,244) 11.71%,rgb(224,236,244) 12.5%,rgb(222,235,243) 13.28%,rgb(220,233,242) 14.06%,rgb(218,231,241) 14.84%,rgb(216,230,240) 15.62%,rgb(214,228,239) 16.40%,rgb(212,227,239) 17.18%,rgb(210,225,238) 17.96%,rgb(208,223,237) 18.75%,rgb(206,222,236) 19.53%,rgb(203,220,235) 20.31%,rgb(201,219,234) 21.09%,rgb(199,217,233) 21.87%,rgb(197,216,232) 22.65%,rgb(195,214,231) 23.43%,rgb(193,212,231) 24.21%,rgb(191,211,230) 25%,rgb(189,209,229) 25.78%,rgb(187,208,228) 26.56%,rgb(185,207,227) 27.34%,rgb(183,205,227) 28.12%,rgb(181,204,226) 28.90%,rgb(179,202,225) 29.68%,rgb(176,201,224) 30.46%,rgb(174,199,224) 31.25%,rgb(172,198,223) 32.03%,rgb(170,196,222) 32.81%,rgb(168,195,221) 33.59%,rgb(166,193,221) 34.37%,rgb(164,192,220) 35.15%,rgb(162,191,219) 35.93%,rgb(160,189,218) 36.71%,rgb(158,188,218) 37.5%,rgb(157,185,216) 38.28%,rgb(155,183,215) 39.06%,rgb(154,181,214) 39.84%,rgb(153,178,213) 40.62%,rgb(152,176,211) 41.40%,rgb(151,173,210) 42.18%,rgb(150,171,209) 42.96%,rgb(149,169,208) 43.75%,rgb(147,166,206) 44.53%,rgb(146,164,205) 45.31%,rgb(145,161,204) 46.09%,rgb(144,159,203) 46.87%,rgb(143,157,201) 47.65%,rgb(142,154,200) 48.43%,rgb(141,152,199) 49.21%,rgb(140,150,198) 50%,rgb(140,147,196) 50.78%,rgb(140,144,195) 51.56%,rgb(140,141,194) 52.34%,rgb(140,139,192) 53.12%,rgb(140,136,191) 53.90%,rgb(140,133,190) 54.68%,rgb(140,131,188) 55.46%,rgb(140,128,187) 56.25%,rgb(140,125,186) 57.03%,rgb(140,122,184) 57.81%,rgb(140,120,183) 58.59%,rgb(140,117,182) 59.37%,rgb(140,114,180) 60.15%,rgb(140,112,179) 60.93%,rgb(140,109,178) 61.71%,rgb(139,106,176) 62.5%,rgb(139,104,175) 63.28%,rgb(139,101,174) 64.06%,rgb(139,98,173) 64.84%,rgb(138,96,171) 65.62%,rgb(138,93,170) 66.40%,rgb(138,90,169) 67.18%,rgb(138,88,168) 67.96%,rgb(137,85,166) 68.75%,rgb(137,82,165) 69.53%,rgb(137,80,164) 70.31%,rgb(137,77,162) 71.09%,rgb(136,74,161) 71.87%,rgb(136,72,160) 72.65%,rgb(136,69,159) 73.43%,rgb(136,66,157) 74.21%,rgb(135,64,156) 75%,rgb(135,61,154) 75.78%,rgb(135,57,152) 76.56%,rgb(134,54,150) 77.34%,rgb(134,51,148) 78.12%,rgb(133,48,146) 78.90%,rgb(133,45,144) 79.68%,rgb(132,42,141) 80.46%,rgb(132,39,139) 81.25%,rgb(131,35,137) 82.03%,rgb(131,32,135) 82.81%,rgb(131,29,133) 83.59%,rgb(130,26,131) 84.37%,rgb(130,23,129) 85.15%,rgb(129,20,127) 85.93%,rgb(129,16,125) 86.71%,rgb(127,14,122) 87.5%,rgb(124,13,119) 88.28%,rgb(121,12,116) 89.06%,rgb(117,11,113) 89.84%,rgb(114,10,110) 90.62%,rgb(111,9,107) 91.40%,rgb(108,8,104) 92.18%,rgb(104,8,101) 92.96%,rgb(101,7,98) 93.75%,rgb(98,6,95) 94.53%,rgb(95,5,91) 95.31%,rgb(91,4,88) 96.09%,rgb(88,3,85) 96.87%,rgb(85,2,82) 97.65%,rgb(81,1,79) 98.43%,rgb(78,0,76) 99.21%,rgb(77,0,75) 100%\",\n tex_buffer: new Uint8Array([247,252,253,246,251,252,244,250,252,243,249,251,241,248,251,240,247,250,239,246,249,237,245,249,236,244,248,234,243,248,233,242,247,231,241,247,230,240,246,228,239,245,227,238,245,225,237,244,224,236,244,222,235,243,220,233,242,218,231,241,216,230,240,214,228,239,212,227,239,210,225,238,208,223,237,206,222,236,203,220,235,201,219,234,199,217,233,197,216,232,195,214,231,193,212,231,191,211,230,189,209,229,187,208,228,185,207,227,183,205,227,181,204,226,179,202,225,176,201,224,174,199,224,172,198,223,170,196,222,168,195,221,166,193,221,164,192,220,162,191,219,160,189,218,158,188,218,157,185,216,155,183,215,154,181,214,153,178,213,152,176,211,151,173,210,150,171,209,149,169,208,147,166,206,146,164,205,145,161,204,144,159,203,143,157,201,142,154,200,141,152,199,140,150,198,140,147,196,140,144,195,140,141,194,140,139,192,140,136,191,140,133,190,140,131,188,140,128,187,140,125,186,140,122,184,140,120,183,140,117,182,140,114,180,140,112,179,140,109,178,139,106,176,139,104,175,139,101,174,139,98,173,138,96,171,138,93,170,138,90,169,138,88,168,137,85,166,137,82,165,137,80,164,137,77,162,136,74,161,136,72,160,136,69,159,136,66,157,135,64,156,135,61,154,135,57,152,134,54,150,134,51,148,133,48,146,133,45,144,132,42,141,132,39,139,131,35,137,131,32,135,131,29,133,130,26,131,130,23,129,129,20,127,129,16,125,127,14,122,124,13,119,121,12,116,117,11,113,114,10,110,111,9,107,108,8,104,104,8,101,101,7,98,98,6,95,95,5,91,91,4,88,88,3,85,85,2,82,81,1,79,78,0,76,77,0,75]),\n linear_interpolation: true\n},\n{\n name: \"CMRmap\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(1,1,4) 0.781%,rgb(3,3,12) 1.562%,rgb(6,6,20) 2.343%,rgb(8,8,28) 3.125%,rgb(10,10,36) 3.906%,rgb(13,13,44) 4.687%,rgb(15,15,52) 5.468%,rgb(18,18,60) 6.25%,rgb(20,20,68) 7.031%,rgb(22,22,76) 7.812%,rgb(25,25,84) 8.593%,rgb(27,27,92) 9.375%,rgb(30,30,100) 10.15%,rgb(32,32,108) 10.93%,rgb(34,34,116) 11.71%,rgb(37,37,124) 12.5%,rgb(39,38,130) 13.28%,rgb(42,38,134) 14.06%,rgb(44,38,138) 14.84%,rgb(46,38,142) 15.62%,rgb(49,38,146) 16.40%,rgb(51,38,150) 17.18%,rgb(54,38,154) 17.96%,rgb(56,38,158) 18.75%,rgb(59,38,162) 19.53%,rgb(61,38,166) 20.31%,rgb(63,38,170) 21.09%,rgb(66,38,174) 21.87%,rgb(68,38,178) 22.65%,rgb(71,38,182) 23.43%,rgb(73,38,186) 24.21%,rgb(75,38,190) 25%,rgb(80,38,188) 25.78%,rgb(84,39,184) 26.56%,rgb(89,40,180) 27.34%,rgb(94,41,176) 28.12%,rgb(99,42,172) 28.90%,rgb(104,42,168) 29.68%,rgb(109,43,164) 30.46%,rgb(113,44,160) 31.25%,rgb(118,45,156) 32.03%,rgb(123,46,152) 32.81%,rgb(128,46,148) 33.59%,rgb(133,47,144) 34.37%,rgb(137,48,140) 35.15%,rgb(142,49,136) 35.93%,rgb(147,50,132) 36.71%,rgb(152,50,128) 37.5%,rgb(158,51,122) 38.28%,rgb(165,52,116) 39.06%,rgb(171,53,111) 39.84%,rgb(177,54,105) 40.62%,rgb(184,54,100) 41.40%,rgb(190,55,94) 42.18%,rgb(197,56,88) 42.96%,rgb(203,57,83) 43.75%,rgb(210,58,77) 44.53%,rgb(216,58,71) 45.31%,rgb(222,59,66) 46.09%,rgb(229,60,60) 46.87%,rgb(235,61,55) 47.65%,rgb(242,62,49) 48.43%,rgb(248,62,43) 49.21%,rgb(255,63,38) 50%,rgb(253,67,35) 50.78%,rgb(251,71,33) 51.56%,rgb(250,75,31) 52.34%,rgb(248,79,28) 53.12%,rgb(246,83,26) 53.90%,rgb(245,87,23) 54.68%,rgb(243,91,21) 55.46%,rgb(242,95,18) 56.25%,rgb(240,99,16) 57.03%,rgb(238,103,14) 57.81%,rgb(237,107,11) 58.59%,rgb(235,111,9) 59.37%,rgb(234,115,6) 60.15%,rgb(232,119,4) 60.93%,rgb(230,123,2) 61.71%,rgb(229,128,0) 62.5%,rgb(229,132,1) 63.28%,rgb(229,136,3) 64.06%,rgb(229,140,5) 64.84%,rgb(229,144,6) 65.62%,rgb(229,148,8) 66.40%,rgb(229,152,9) 67.18%,rgb(229,156,11) 67.96%,rgb(229,160,13) 68.75%,rgb(229,164,14) 69.53%,rgb(229,168,16) 70.31%,rgb(229,172,17) 71.09%,rgb(229,176,19) 71.87%,rgb(229,180,21) 72.65%,rgb(229,184,22) 73.43%,rgb(229,188,24) 74.21%,rgb(229,191,27) 75%,rgb(229,194,33) 75.78%,rgb(229,196,39) 76.56%,rgb(229,199,46) 77.34%,rgb(229,201,52) 78.12%,rgb(229,203,59) 78.90%,rgb(229,206,65) 79.68%,rgb(229,208,72) 80.46%,rgb(229,211,78) 81.25%,rgb(229,213,84) 82.03%,rgb(229,215,91) 82.81%,rgb(229,218,97) 83.59%,rgb(229,220,104) 84.37%,rgb(229,223,110) 85.15%,rgb(229,225,117) 85.93%,rgb(229,227,123) 86.71%,rgb(230,230,130) 87.5%,rgb(231,231,138) 88.28%,rgb(233,233,146) 89.06%,rgb(234,234,154) 89.84%,rgb(236,236,162) 90.62%,rgb(238,238,170) 91.40%,rgb(239,239,178) 92.18%,rgb(241,241,186) 92.96%,rgb(242,242,194) 93.75%,rgb(244,244,202) 94.53%,rgb(246,246,210) 95.31%,rgb(247,247,218) 96.09%,rgb(249,249,226) 96.87%,rgb(250,250,234) 97.65%,rgb(252,252,242) 98.43%,rgb(254,254,250) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([0,0,0,1,1,4,3,3,12,6,6,20,8,8,28,10,10,36,13,13,44,15,15,52,18,18,60,20,20,68,22,22,76,25,25,84,27,27,92,30,30,100,32,32,108,34,34,116,37,37,124,39,38,130,42,38,134,44,38,138,46,38,142,49,38,146,51,38,150,54,38,154,56,38,158,59,38,162,61,38,166,63,38,170,66,38,174,68,38,178,71,38,182,73,38,186,75,38,190,80,38,188,84,39,184,89,40,180,94,41,176,99,42,172,104,42,168,109,43,164,113,44,160,118,45,156,123,46,152,128,46,148,133,47,144,137,48,140,142,49,136,147,50,132,152,50,128,158,51,122,165,52,116,171,53,111,177,54,105,184,54,100,190,55,94,197,56,88,203,57,83,210,58,77,216,58,71,222,59,66,229,60,60,235,61,55,242,62,49,248,62,43,255,63,38,253,67,35,251,71,33,250,75,31,248,79,28,246,83,26,245,87,23,243,91,21,242,95,18,240,99,16,238,103,14,237,107,11,235,111,9,234,115,6,232,119,4,230,123,2,229,128,0,229,132,1,229,136,3,229,140,5,229,144,6,229,148,8,229,152,9,229,156,11,229,160,13,229,164,14,229,168,16,229,172,17,229,176,19,229,180,21,229,184,22,229,188,24,229,191,27,229,194,33,229,196,39,229,199,46,229,201,52,229,203,59,229,206,65,229,208,72,229,211,78,229,213,84,229,215,91,229,218,97,229,220,104,229,223,110,229,225,117,229,227,123,230,230,130,231,231,138,233,233,146,234,234,154,236,236,162,238,238,170,239,239,178,241,241,186,242,242,194,244,244,202,246,246,210,247,247,218,249,249,226,250,250,234,252,252,242,254,254,250,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"Dark2\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 8],\n symmetric: false,\n c3g_string: \"rgb(27,158,119) 0%,rgb(27,158,119) 12.5%,rgb(217,95,2) 12.5%,rgb(217,95,2) 25%,rgb(117,112,179) 25%,rgb(117,112,179) 37.5%,rgb(231,41,138) 37.5%,rgb(231,41,138) 50%,rgb(102,166,30) 50%,rgb(102,166,30) 62.5%,rgb(230,171,2) 62.5%,rgb(230,171,2) 75%,rgb(166,118,29) 75%,rgb(166,118,29) 87.5%,rgb(102,102,102) 87.5%,rgb(102,102,102) 100%\",\n tex_buffer: new Uint8Array([27,158,119,217,95,2,117,112,179,231,41,138,102,166,30,230,171,2,166,118,29,102,102,102]),\n linear_interpolation: false\n},\n{\n name: \"GnBu\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(247,252,240) 0%,rgb(246,251,239) 0.781%,rgb(244,251,238) 1.562%,rgb(243,250,236) 2.343%,rgb(241,250,235) 3.125%,rgb(240,249,234) 3.906%,rgb(239,248,232) 4.687%,rgb(237,248,231) 5.468%,rgb(236,247,230) 6.25%,rgb(234,247,228) 7.031%,rgb(233,246,227) 7.812%,rgb(231,246,226) 8.593%,rgb(230,245,224) 9.375%,rgb(228,244,223) 10.15%,rgb(227,244,222) 10.93%,rgb(225,243,220) 11.71%,rgb(224,243,219) 12.5%,rgb(223,242,218) 13.28%,rgb(221,242,216) 14.06%,rgb(220,241,215) 14.84%,rgb(219,241,213) 15.62%,rgb(218,240,212) 16.40%,rgb(216,240,211) 17.18%,rgb(215,239,209) 17.96%,rgb(214,239,208) 18.75%,rgb(213,238,207) 19.53%,rgb(211,238,205) 20.31%,rgb(210,237,204) 21.09%,rgb(209,237,202) 21.87%,rgb(208,236,201) 22.65%,rgb(206,236,200) 23.43%,rgb(205,235,198) 24.21%,rgb(204,235,197) 25%,rgb(202,234,196) 25.78%,rgb(200,233,195) 26.56%,rgb(197,232,194) 27.34%,rgb(195,231,193) 28.12%,rgb(193,230,192) 28.90%,rgb(190,229,191) 29.68%,rgb(188,229,190) 30.46%,rgb(186,228,189) 31.25%,rgb(184,227,188) 32.03%,rgb(181,226,187) 32.81%,rgb(179,225,186) 33.59%,rgb(177,224,185) 34.37%,rgb(175,223,184) 35.15%,rgb(172,222,183) 35.93%,rgb(170,221,182) 36.71%,rgb(168,221,181) 37.5%,rgb(165,220,181) 38.28%,rgb(162,218,182) 39.06%,rgb(159,217,183) 39.84%,rgb(157,216,184) 40.62%,rgb(154,215,185) 41.40%,rgb(151,214,186) 42.18%,rgb(148,213,187) 42.96%,rgb(145,212,188) 43.75%,rgb(142,211,189) 44.53%,rgb(140,210,190) 45.31%,rgb(137,209,191) 46.09%,rgb(134,208,192) 46.87%,rgb(131,207,193) 47.65%,rgb(128,206,194) 48.43%,rgb(125,205,195) 49.21%,rgb(123,204,196) 50%,rgb(120,202,196) 50.78%,rgb(117,200,197) 51.56%,rgb(114,199,198) 52.34%,rgb(111,197,199) 53.12%,rgb(108,196,200) 53.90%,rgb(105,194,201) 54.68%,rgb(103,192,202) 55.46%,rgb(100,191,203) 56.25%,rgb(97,189,204) 57.03%,rgb(94,188,205) 57.81%,rgb(91,186,206) 58.59%,rgb(88,185,207) 59.37%,rgb(86,183,208) 60.15%,rgb(83,181,209) 60.93%,rgb(80,180,210) 61.71%,rgb(77,178,210) 62.5%,rgb(75,176,209) 63.28%,rgb(73,173,208) 64.06%,rgb(71,171,206) 64.84%,rgb(68,168,205) 65.62%,rgb(66,166,204) 66.40%,rgb(64,163,202) 67.18%,rgb(62,161,201) 67.96%,rgb(60,159,200) 68.75%,rgb(57,156,198) 69.53%,rgb(55,154,197) 70.31%,rgb(53,151,196) 71.09%,rgb(51,149,194) 71.87%,rgb(49,146,193) 72.65%,rgb(46,144,192) 73.43%,rgb(44,141,190) 74.21%,rgb(42,139,189) 75%,rgb(40,137,188) 75.78%,rgb(38,134,187) 76.56%,rgb(35,132,186) 77.34%,rgb(33,130,185) 78.12%,rgb(31,128,184) 78.90%,rgb(29,125,182) 79.68%,rgb(27,123,181) 80.46%,rgb(24,121,180) 81.25%,rgb(22,119,179) 82.03%,rgb(20,116,178) 82.81%,rgb(18,114,177) 83.59%,rgb(15,112,176) 84.37%,rgb(13,109,174) 85.15%,rgb(11,107,173) 85.93%,rgb(9,105,172) 86.71%,rgb(8,103,170) 87.5%,rgb(8,100,168) 88.28%,rgb(8,98,165) 89.06%,rgb(8,95,162) 89.84%,rgb(8,92,160) 90.62%,rgb(8,90,157) 91.40%,rgb(8,87,154) 92.18%,rgb(8,85,152) 92.96%,rgb(8,82,149) 93.75%,rgb(8,80,146) 94.53%,rgb(8,77,143) 95.31%,rgb(8,75,141) 96.09%,rgb(8,72,138) 96.87%,rgb(8,70,135) 97.65%,rgb(8,67,133) 98.43%,rgb(8,65,130) 99.21%,rgb(8,64,129) 100%\",\n tex_buffer: new Uint8Array([247,252,240,246,251,239,244,251,238,243,250,236,241,250,235,240,249,234,239,248,232,237,248,231,236,247,230,234,247,228,233,246,227,231,246,226,230,245,224,228,244,223,227,244,222,225,243,220,224,243,219,223,242,218,221,242,216,220,241,215,219,241,213,218,240,212,216,240,211,215,239,209,214,239,208,213,238,207,211,238,205,210,237,204,209,237,202,208,236,201,206,236,200,205,235,198,204,235,197,202,234,196,200,233,195,197,232,194,195,231,193,193,230,192,190,229,191,188,229,190,186,228,189,184,227,188,181,226,187,179,225,186,177,224,185,175,223,184,172,222,183,170,221,182,168,221,181,165,220,181,162,218,182,159,217,183,157,216,184,154,215,185,151,214,186,148,213,187,145,212,188,142,211,189,140,210,190,137,209,191,134,208,192,131,207,193,128,206,194,125,205,195,123,204,196,120,202,196,117,200,197,114,199,198,111,197,199,108,196,200,105,194,201,103,192,202,100,191,203,97,189,204,94,188,205,91,186,206,88,185,207,86,183,208,83,181,209,80,180,210,77,178,210,75,176,209,73,173,208,71,171,206,68,168,205,66,166,204,64,163,202,62,161,201,60,159,200,57,156,198,55,154,197,53,151,196,51,149,194,49,146,193,46,144,192,44,141,190,42,139,189,40,137,188,38,134,187,35,132,186,33,130,185,31,128,184,29,125,182,27,123,181,24,121,180,22,119,179,20,116,178,18,114,177,15,112,176,13,109,174,11,107,173,9,105,172,8,103,170,8,100,168,8,98,165,8,95,162,8,92,160,8,90,157,8,87,154,8,85,152,8,82,149,8,80,146,8,77,143,8,75,141,8,72,138,8,70,135,8,67,133,8,65,130,8,64,129]),\n linear_interpolation: true\n},\n{\n name: \"Greens\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(247,252,245) 0%,rgb(246,251,244) 0.781%,rgb(245,251,243) 1.562%,rgb(244,250,241) 2.343%,rgb(243,250,240) 3.125%,rgb(241,250,239) 3.906%,rgb(240,249,237) 4.687%,rgb(239,249,236) 5.468%,rgb(238,248,235) 6.25%,rgb(237,248,233) 7.031%,rgb(236,247,232) 7.812%,rgb(235,247,231) 8.593%,rgb(233,246,229) 9.375%,rgb(232,246,228) 10.15%,rgb(231,246,227) 10.93%,rgb(230,245,225) 11.71%,rgb(229,245,224) 12.5%,rgb(227,244,222) 13.28%,rgb(225,243,220) 14.06%,rgb(224,243,218) 14.84%,rgb(222,242,216) 15.62%,rgb(220,241,214) 16.40%,rgb(218,240,212) 17.18%,rgb(216,239,210) 17.96%,rgb(214,239,208) 18.75%,rgb(212,238,206) 19.53%,rgb(210,237,204) 20.31%,rgb(208,236,202) 21.09%,rgb(207,236,200) 21.87%,rgb(205,235,198) 22.65%,rgb(203,234,196) 23.43%,rgb(201,233,194) 24.21%,rgb(199,233,192) 25%,rgb(197,232,190) 25.78%,rgb(194,231,187) 26.56%,rgb(192,230,185) 27.34%,rgb(190,229,183) 28.12%,rgb(187,228,180) 28.90%,rgb(185,227,178) 29.68%,rgb(182,226,176) 30.46%,rgb(180,225,173) 31.25%,rgb(178,224,171) 32.03%,rgb(175,223,169) 32.81%,rgb(173,222,166) 33.59%,rgb(170,221,164) 34.37%,rgb(168,220,162) 35.15%,rgb(166,219,159) 35.93%,rgb(163,218,157) 36.71%,rgb(161,217,155) 37.5%,rgb(158,215,152) 38.28%,rgb(155,214,150) 39.06%,rgb(152,213,148) 39.84%,rgb(150,211,145) 40.62%,rgb(147,210,143) 41.40%,rgb(144,209,141) 42.18%,rgb(141,207,138) 42.96%,rgb(138,206,136) 43.75%,rgb(135,205,134) 44.53%,rgb(133,203,131) 45.31%,rgb(130,202,129) 46.09%,rgb(127,201,127) 46.87%,rgb(124,199,124) 47.65%,rgb(121,198,122) 48.43%,rgb(118,197,120) 49.21%,rgb(116,196,118) 50%,rgb(112,194,116) 50.78%,rgb(109,192,114) 51.56%,rgb(106,191,113) 52.34%,rgb(103,189,111) 53.12%,rgb(99,188,110) 53.90%,rgb(96,186,108) 54.68%,rgb(93,184,106) 55.46%,rgb(90,183,105) 56.25%,rgb(87,181,103) 57.03%,rgb(83,180,102) 57.81%,rgb(80,178,100) 58.59%,rgb(77,177,99) 59.37%,rgb(74,175,97) 60.15%,rgb(71,173,95) 60.93%,rgb(67,172,94) 61.71%,rgb(64,170,92) 62.5%,rgb(62,168,91) 63.28%,rgb(60,166,89) 64.06%,rgb(59,164,88) 64.84%,rgb(57,162,86) 65.62%,rgb(55,160,85) 66.40%,rgb(53,158,83) 67.18%,rgb(51,156,82) 67.96%,rgb(49,154,80) 68.75%,rgb(47,152,79) 69.53%,rgb(45,150,77) 70.31%,rgb(43,148,76) 71.09%,rgb(42,146,74) 71.87%,rgb(40,144,73) 72.65%,rgb(38,142,71) 73.43%,rgb(36,140,70) 74.21%,rgb(34,138,68) 75%,rgb(32,136,67) 75.78%,rgb(30,134,65) 76.56%,rgb(27,132,63) 77.34%,rgb(25,130,62) 78.12%,rgb(23,129,60) 78.90%,rgb(21,127,59) 79.68%,rgb(19,125,57) 80.46%,rgb(16,123,56) 81.25%,rgb(14,121,54) 82.03%,rgb(12,119,52) 82.81%,rgb(10,117,51) 83.59%,rgb(7,115,49) 84.37%,rgb(5,113,48) 85.15%,rgb(3,112,46) 85.93%,rgb(1,110,44) 86.71%,rgb(0,108,43) 87.5%,rgb(0,105,42) 88.28%,rgb(0,102,41) 89.06%,rgb(0,100,40) 89.84%,rgb(0,97,39) 90.62%,rgb(0,95,38) 91.40%,rgb(0,92,37) 92.18%,rgb(0,89,36) 92.96%,rgb(0,87,35) 93.75%,rgb(0,84,33) 94.53%,rgb(0,82,32) 95.31%,rgb(0,79,31) 96.09%,rgb(0,77,30) 96.87%,rgb(0,74,29) 97.65%,rgb(0,71,28) 98.43%,rgb(0,69,27) 99.21%,rgb(0,68,27) 100%\",\n tex_buffer: new Uint8Array([247,252,245,246,251,244,245,251,243,244,250,241,243,250,240,241,250,239,240,249,237,239,249,236,238,248,235,237,248,233,236,247,232,235,247,231,233,246,229,232,246,228,231,246,227,230,245,225,229,245,224,227,244,222,225,243,220,224,243,218,222,242,216,220,241,214,218,240,212,216,239,210,214,239,208,212,238,206,210,237,204,208,236,202,207,236,200,205,235,198,203,234,196,201,233,194,199,233,192,197,232,190,194,231,187,192,230,185,190,229,183,187,228,180,185,227,178,182,226,176,180,225,173,178,224,171,175,223,169,173,222,166,170,221,164,168,220,162,166,219,159,163,218,157,161,217,155,158,215,152,155,214,150,152,213,148,150,211,145,147,210,143,144,209,141,141,207,138,138,206,136,135,205,134,133,203,131,130,202,129,127,201,127,124,199,124,121,198,122,118,197,120,116,196,118,112,194,116,109,192,114,106,191,113,103,189,111,99,188,110,96,186,108,93,184,106,90,183,105,87,181,103,83,180,102,80,178,100,77,177,99,74,175,97,71,173,95,67,172,94,64,170,92,62,168,91,60,166,89,59,164,88,57,162,86,55,160,85,53,158,83,51,156,82,49,154,80,47,152,79,45,150,77,43,148,76,42,146,74,40,144,73,38,142,71,36,140,70,34,138,68,32,136,67,30,134,65,27,132,63,25,130,62,23,129,60,21,127,59,19,125,57,16,123,56,14,121,54,12,119,52,10,117,51,7,115,49,5,113,48,3,112,46,1,110,44,0,108,43,0,105,42,0,102,41,0,100,40,0,97,39,0,95,38,0,92,37,0,89,36,0,87,35,0,84,33,0,82,32,0,79,31,0,77,30,0,74,29,0,71,28,0,69,27,0,68,27]),\n linear_interpolation: true\n},\n{\n name: \"Greys\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,255,255) 0%,rgb(254,254,254) 0.781%,rgb(253,253,253) 1.562%,rgb(252,252,252) 2.343%,rgb(251,251,251) 3.125%,rgb(250,250,250) 3.906%,rgb(249,249,249) 4.687%,rgb(248,248,248) 5.468%,rgb(247,247,247) 6.25%,rgb(246,246,246) 7.031%,rgb(246,246,246) 7.812%,rgb(246,246,246) 7.812%,rgb(245,245,245) 8.593%,rgb(244,244,244) 9.375%,rgb(243,243,243) 10.15%,rgb(242,242,242) 10.93%,rgb(241,241,241) 11.71%,rgb(240,240,240) 12.5%,rgb(239,239,239) 13.28%,rgb(237,237,237) 14.06%,rgb(236,236,236) 14.84%,rgb(234,234,234) 15.62%,rgb(233,233,233) 16.40%,rgb(231,231,231) 17.18%,rgb(230,230,230) 17.96%,rgb(228,228,228) 18.75%,rgb(227,227,227) 19.53%,rgb(226,226,226) 20.31%,rgb(224,224,224) 21.09%,rgb(223,223,223) 21.87%,rgb(221,221,221) 22.65%,rgb(220,220,220) 23.43%,rgb(218,218,218) 24.21%,rgb(217,217,217) 25%,rgb(215,215,215) 25.78%,rgb(213,213,213) 26.56%,rgb(212,212,212) 27.34%,rgb(210,210,210) 28.12%,rgb(208,208,208) 28.90%,rgb(206,206,206) 29.68%,rgb(205,205,205) 30.46%,rgb(203,203,203) 31.25%,rgb(201,201,201) 32.03%,rgb(199,199,199) 32.81%,rgb(198,198,198) 33.59%,rgb(196,196,196) 34.37%,rgb(194,194,194) 35.15%,rgb(192,192,192) 35.93%,rgb(190,190,190) 36.71%,rgb(189,189,189) 37.5%,rgb(186,186,186) 38.28%,rgb(184,184,184) 39.06%,rgb(181,181,181) 39.84%,rgb(179,179,179) 40.62%,rgb(177,177,177) 41.40%,rgb(174,174,174) 42.18%,rgb(172,172,172) 42.96%,rgb(169,169,169) 43.75%,rgb(167,167,167) 44.53%,rgb(164,164,164) 45.31%,rgb(162,162,162) 46.09%,rgb(159,159,159) 46.87%,rgb(157,157,157) 47.65%,rgb(154,154,154) 48.43%,rgb(152,152,152) 49.21%,rgb(150,150,150) 50%,rgb(147,147,147) 50.78%,rgb(145,145,145) 51.56%,rgb(143,143,143) 52.34%,rgb(141,141,141) 53.12%,rgb(138,138,138) 53.90%,rgb(136,136,136) 54.68%,rgb(134,134,134) 55.46%,rgb(132,132,132) 56.25%,rgb(130,130,130) 57.03%,rgb(127,127,127) 57.81%,rgb(125,125,125) 58.59%,rgb(123,123,123) 59.37%,rgb(121,121,121) 60.15%,rgb(119,119,119) 60.93%,rgb(116,116,116) 61.71%,rgb(114,114,114) 62.5%,rgb(112,112,112) 63.28%,rgb(110,110,110) 64.06%,rgb(108,108,108) 64.84%,rgb(106,106,106) 65.62%,rgb(104,104,104) 66.40%,rgb(102,102,102) 67.18%,rgb(100,100,100) 67.96%,rgb(98,98,98) 68.75%,rgb(96,96,96) 69.53%,rgb(93,93,93) 70.31%,rgb(91,91,91) 71.09%,rgb(89,89,89) 71.87%,rgb(87,87,87) 72.65%,rgb(85,85,85) 73.43%,rgb(83,83,83) 74.21%,rgb(81,81,81) 75%,rgb(78,78,78) 75.78%,rgb(75,75,75) 76.56%,rgb(72,72,72) 77.34%,rgb(69,69,69) 78.12%,rgb(67,67,67) 78.90%,rgb(64,64,64) 79.68%,rgb(61,61,61) 80.46%,rgb(58,58,58) 81.25%,rgb(55,55,55) 82.03%,rgb(52,52,52) 82.81%,rgb(50,50,50) 83.59%,rgb(47,47,47) 84.37%,rgb(44,44,44) 85.15%,rgb(41,41,41) 85.93%,rgb(38,38,38) 86.71%,rgb(36,36,36) 87.5%,rgb(33,33,33) 88.28%,rgb(31,31,31) 89.06%,rgb(29,29,29) 89.84%,rgb(26,26,26) 90.62%,rgb(24,24,24) 91.40%,rgb(22,22,22) 92.18%,rgb(19,19,19) 92.96%,rgb(17,17,17) 93.75%,rgb(15,15,15) 94.53%,rgb(12,12,12) 95.31%,rgb(10,10,10) 96.09%,rgb(8,8,8) 96.87%,rgb(5,5,5) 97.65%,rgb(3,3,3) 98.43%,rgb(1,1,1) 99.21%,rgb(0,0,0) 100%\",\n tex_buffer: new Uint8Array([255,255,255,254,254,254,253,253,253,252,252,252,251,251,251,250,250,250,249,249,249,248,248,248,247,247,247,246,246,246,246,246,246,245,245,245,244,244,244,243,243,243,242,242,242,241,241,241,240,240,240,239,239,239,237,237,237,236,236,236,234,234,234,233,233,233,231,231,231,230,230,230,228,228,228,227,227,227,226,226,226,224,224,224,223,223,223,221,221,221,220,220,220,218,218,218,217,217,217,215,215,215,213,213,213,212,212,212,210,210,210,208,208,208,206,206,206,205,205,205,203,203,203,201,201,201,199,199,199,198,198,198,196,196,196,194,194,194,192,192,192,190,190,190,189,189,189,186,186,186,184,184,184,181,181,181,179,179,179,177,177,177,174,174,174,172,172,172,169,169,169,167,167,167,164,164,164,162,162,162,159,159,159,157,157,157,154,154,154,152,152,152,150,150,150,147,147,147,145,145,145,143,143,143,141,141,141,138,138,138,136,136,136,134,134,134,132,132,132,130,130,130,127,127,127,125,125,125,123,123,123,121,121,121,119,119,119,116,116,116,114,114,114,112,112,112,110,110,110,108,108,108,106,106,106,104,104,104,102,102,102,100,100,100,98,98,98,96,96,96,93,93,93,91,91,91,89,89,89,87,87,87,85,85,85,83,83,83,81,81,81,78,78,78,75,75,75,72,72,72,69,69,69,67,67,67,64,64,64,61,61,61,58,58,58,55,55,55,52,52,52,50,50,50,47,47,47,44,44,44,41,41,41,38,38,38,36,36,36,33,33,33,31,31,31,29,29,29,26,26,26,24,24,24,22,22,22,19,19,19,17,17,17,15,15,15,12,12,12,10,10,10,8,8,8,5,5,5,3,3,3,1,1,1,0,0,0]),\n linear_interpolation: true\n},\n{\n name: \"Need I Say More\",\n author: {\n name: \"sugar!\",\n url: \"http://www.colourlovers.com/lover/sugar!/\"\n },\n license: {\n name: \"Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported\",\n url: \"http://creativecommons.org/licenses/by-nc-sa/3.0/\"\n },\n range: [0, 5],\n symmetric: true,\n c3g_string: \"rgb(243,121,79) 0%,rgb(243,121,79) 16.49%,rgb(243,121,79) 16.49%,rgb(246,145,97) 32.99%,rgb(249,169,115) 39%,rgb(247,192,133) 45%,rgb(245,216,151) 49.5%,rgb(205,206,157) 54%,rgb(165,196,163) 60%,rgb(135,186,165) 65.99%,rgb(105,175,168) 83%,rgb(105,175,168) 100%\",\n tex_buffer: new Uint8Array([243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,120,78,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,121,79,243,122,80,243,123,80,243,123,81,243,124,81,243,125,82,243,126,82,243,126,83,243,127,83,243,128,84,244,129,85,244,129,85,244,130,86,244,131,86,244,131,87,244,132,87,244,133,88,244,134,88,244,134,89,244,135,89,244,136,90,245,137,91,245,137,91,245,138,92,245,139,92,245,139,93,245,140,93,245,141,94,245,142,94,245,142,95,245,143,95,245,144,96,246,145,97,246,147,98,246,149,100,246,151,101,247,153,103,247,155,104,247,157,106,247,159,107,248,161,109,248,163,110,248,165,112,248,167,113,249,169,115,248,170,116,248,172,118,248,174,119,248,176,121,248,178,122,248,180,124,247,182,125,247,184,127,247,186,128,247,188,130,247,190,131,247,192,133,246,194,135,246,197,137,246,200,139,246,202,141,245,205,143,245,208,145,245,210,147,245,213,149,245,216,151,240,214,151,236,213,152,231,212,153,227,211,153,222,210,154,218,209,155,213,208,155,209,207,156,205,206,157,201,205,157,198,204,158,195,203,158,191,202,159,188,201,159,185,201,160,181,200,160,178,199,161,175,198,161,171,197,162,168,196,162,165,196,163,162,195,163,160,194,163,157,193,163,155,192,163,152,191,163,150,191,164,147,190,164,145,189,164,142,188,164,140,187,164,137,186,164,135,186,165,134,185,165,133,185,165,132,185,165,131,184,165,130,184,165,129,184,165,128,183,165,127,183,165,127,183,165,126,182,165,125,182,165,124,182,166,123,181,166,122,181,166,121,181,166,120,180,166,120,180,166,119,180,166,118,179,166,117,179,166,116,179,166,115,178,166,114,178,167,113,178,167,112,177,167,112,177,167,111,177,167,110,176,167,109,176,167,108,176,167,107,175,167,106,175,167,105,175,167,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,104,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168,105,175,168]),\n linear_interpolation: true\n},\n{\n name: \"OrRd\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,247,236) 0%,rgb(254,246,234) 0.781%,rgb(254,245,232) 1.562%,rgb(254,244,230) 2.343%,rgb(254,243,228) 3.125%,rgb(254,242,225) 3.906%,rgb(254,241,223) 4.687%,rgb(254,240,221) 5.468%,rgb(254,239,218) 6.25%,rgb(254,238,216) 7.031%,rgb(254,238,214) 7.812%,rgb(254,237,212) 8.593%,rgb(254,236,209) 9.375%,rgb(254,235,207) 10.15%,rgb(254,234,205) 10.93%,rgb(254,233,203) 11.71%,rgb(254,232,200) 12.5%,rgb(253,231,198) 13.28%,rgb(253,229,195) 14.06%,rgb(253,228,193) 14.84%,rgb(253,227,190) 15.62%,rgb(253,226,187) 16.40%,rgb(253,224,185) 17.18%,rgb(253,223,182) 17.96%,rgb(253,222,179) 18.75%,rgb(253,221,177) 19.53%,rgb(253,219,174) 20.31%,rgb(253,218,171) 21.09%,rgb(253,217,169) 21.87%,rgb(253,216,166) 22.65%,rgb(253,214,163) 23.43%,rgb(253,213,161) 24.21%,rgb(253,212,158) 25%,rgb(253,210,156) 25.78%,rgb(253,209,155) 26.56%,rgb(253,207,153) 27.34%,rgb(253,206,151) 28.12%,rgb(253,204,150) 28.90%,rgb(253,202,148) 29.68%,rgb(253,201,146) 30.46%,rgb(253,199,145) 31.25%,rgb(253,198,143) 32.03%,rgb(253,196,142) 32.81%,rgb(253,195,140) 33.59%,rgb(253,193,138) 34.37%,rgb(253,191,137) 35.15%,rgb(253,190,135) 35.93%,rgb(253,188,133) 36.71%,rgb(253,187,132) 37.5%,rgb(252,184,129) 38.28%,rgb(252,181,126) 39.06%,rgb(252,178,124) 39.84%,rgb(252,175,121) 40.62%,rgb(252,172,118) 41.40%,rgb(252,169,116) 42.18%,rgb(252,167,113) 42.96%,rgb(252,164,110) 43.75%,rgb(252,161,107) 44.53%,rgb(252,158,105) 45.31%,rgb(252,155,102) 46.09%,rgb(252,152,99) 46.87%,rgb(252,149,97) 47.65%,rgb(252,146,94) 48.43%,rgb(252,143,91) 49.21%,rgb(252,141,89) 50%,rgb(251,138,87) 50.78%,rgb(250,135,86) 51.56%,rgb(249,133,85) 52.34%,rgb(248,130,84) 53.12%,rgb(247,128,83) 53.90%,rgb(247,125,82) 54.68%,rgb(246,123,81) 55.46%,rgb(245,120,80) 56.25%,rgb(244,118,79) 57.03%,rgb(243,115,78) 57.81%,rgb(242,113,77) 58.59%,rgb(242,110,76) 59.37%,rgb(241,108,75) 60.15%,rgb(240,105,74) 60.93%,rgb(239,103,72) 61.71%,rgb(238,100,71) 62.5%,rgb(237,97,69) 63.28%,rgb(235,93,66) 64.06%,rgb(234,90,63) 64.84%,rgb(232,87,61) 65.62%,rgb(231,83,58) 66.40%,rgb(229,80,56) 67.18%,rgb(228,77,53) 67.96%,rgb(226,73,51) 68.75%,rgb(225,70,48) 69.53%,rgb(223,67,45) 70.31%,rgb(222,63,43) 71.09%,rgb(220,60,40) 71.87%,rgb(219,57,38) 72.65%,rgb(217,53,35) 73.43%,rgb(216,50,32) 74.21%,rgb(214,47,30) 75%,rgb(212,44,28) 75.78%,rgb(209,41,26) 76.56%,rgb(207,38,24) 77.34%,rgb(205,35,22) 78.12%,rgb(203,32,20) 78.90%,rgb(200,29,18) 79.68%,rgb(198,26,16) 80.46%,rgb(196,23,14) 81.25%,rgb(194,20,12) 82.03%,rgb(191,17,10) 82.81%,rgb(189,13,9) 83.59%,rgb(187,10,7) 84.37%,rgb(184,7,5) 85.15%,rgb(182,4,3) 85.93%,rgb(180,1,1) 86.71%,rgb(177,0,0) 87.5%,rgb(174,0,0) 88.28%,rgb(171,0,0) 89.06%,rgb(167,0,0) 89.84%,rgb(164,0,0) 90.62%,rgb(161,0,0) 91.40%,rgb(158,0,0) 92.18%,rgb(154,0,0) 92.96%,rgb(151,0,0) 93.75%,rgb(148,0,0) 94.53%,rgb(145,0,0) 95.31%,rgb(141,0,0) 96.09%,rgb(138,0,0) 96.87%,rgb(135,0,0) 97.65%,rgb(131,0,0) 98.43%,rgb(128,0,0) 99.21%,rgb(127,0,0) 100%\",\n tex_buffer: new Uint8Array([255,247,236,254,246,234,254,245,232,254,244,230,254,243,228,254,242,225,254,241,223,254,240,221,254,239,218,254,238,216,254,238,214,254,237,212,254,236,209,254,235,207,254,234,205,254,233,203,254,232,200,253,231,198,253,229,195,253,228,193,253,227,190,253,226,187,253,224,185,253,223,182,253,222,179,253,221,177,253,219,174,253,218,171,253,217,169,253,216,166,253,214,163,253,213,161,253,212,158,253,210,156,253,209,155,253,207,153,253,206,151,253,204,150,253,202,148,253,201,146,253,199,145,253,198,143,253,196,142,253,195,140,253,193,138,253,191,137,253,190,135,253,188,133,253,187,132,252,184,129,252,181,126,252,178,124,252,175,121,252,172,118,252,169,116,252,167,113,252,164,110,252,161,107,252,158,105,252,155,102,252,152,99,252,149,97,252,146,94,252,143,91,252,141,89,251,138,87,250,135,86,249,133,85,248,130,84,247,128,83,247,125,82,246,123,81,245,120,80,244,118,79,243,115,78,242,113,77,242,110,76,241,108,75,240,105,74,239,103,72,238,100,71,237,97,69,235,93,66,234,90,63,232,87,61,231,83,58,229,80,56,228,77,53,226,73,51,225,70,48,223,67,45,222,63,43,220,60,40,219,57,38,217,53,35,216,50,32,214,47,30,212,44,28,209,41,26,207,38,24,205,35,22,203,32,20,200,29,18,198,26,16,196,23,14,194,20,12,191,17,10,189,13,9,187,10,7,184,7,5,182,4,3,180,1,1,177,0,0,174,0,0,171,0,0,167,0,0,164,0,0,161,0,0,158,0,0,154,0,0,151,0,0,148,0,0,145,0,0,141,0,0,138,0,0,135,0,0,131,0,0,128,0,0,127,0,0]),\n linear_interpolation: true\n},\n{\n name: \"Oranges\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,245,235) 0%,rgb(254,244,234) 0.781%,rgb(254,243,232) 1.562%,rgb(254,242,230) 2.343%,rgb(254,241,228) 3.125%,rgb(254,240,226) 3.906%,rgb(254,239,224) 4.687%,rgb(254,238,223) 5.468%,rgb(254,237,221) 6.25%,rgb(254,236,219) 7.031%,rgb(254,236,217) 7.812%,rgb(254,235,215) 8.593%,rgb(254,234,213) 9.375%,rgb(254,233,212) 10.15%,rgb(254,232,210) 10.93%,rgb(254,231,208) 11.71%,rgb(254,230,206) 12.5%,rgb(253,229,204) 13.28%,rgb(253,227,201) 14.06%,rgb(253,226,198) 14.84%,rgb(253,224,195) 15.62%,rgb(253,223,193) 16.40%,rgb(253,222,190) 17.18%,rgb(253,220,187) 17.96%,rgb(253,219,184) 18.75%,rgb(253,218,182) 19.53%,rgb(253,216,179) 20.31%,rgb(253,215,176) 21.09%,rgb(253,213,173) 21.87%,rgb(253,212,171) 22.65%,rgb(253,211,168) 23.43%,rgb(253,209,165) 24.21%,rgb(253,208,162) 25%,rgb(253,206,159) 25.78%,rgb(253,204,155) 26.56%,rgb(253,202,152) 27.34%,rgb(253,199,149) 28.12%,rgb(253,197,145) 28.90%,rgb(253,195,142) 29.68%,rgb(253,193,138) 30.46%,rgb(253,191,135) 31.25%,rgb(253,189,131) 32.03%,rgb(253,187,128) 32.81%,rgb(253,184,124) 33.59%,rgb(253,182,121) 34.37%,rgb(253,180,117) 35.15%,rgb(253,178,114) 35.93%,rgb(253,176,110) 36.71%,rgb(253,174,107) 37.5%,rgb(253,172,104) 38.28%,rgb(253,170,101) 39.06%,rgb(253,168,98) 39.84%,rgb(253,165,95) 40.62%,rgb(253,163,92) 41.40%,rgb(253,161,89) 42.18%,rgb(253,159,86) 42.96%,rgb(253,157,83) 43.75%,rgb(253,155,80) 44.53%,rgb(253,153,77) 45.31%,rgb(253,151,74) 46.09%,rgb(253,149,71) 46.87%,rgb(253,147,68) 47.65%,rgb(253,145,65) 48.43%,rgb(253,143,62) 49.21%,rgb(253,141,60) 50%,rgb(252,138,57) 50.78%,rgb(251,136,54) 51.56%,rgb(250,134,52) 52.34%,rgb(249,131,49) 53.12%,rgb(249,129,47) 53.90%,rgb(248,127,44) 54.68%,rgb(247,125,41) 55.46%,rgb(246,122,39) 56.25%,rgb(246,120,36) 57.03%,rgb(245,118,34) 57.81%,rgb(244,116,31) 58.59%,rgb(243,113,29) 59.37%,rgb(243,111,26) 60.15%,rgb(242,109,23) 60.93%,rgb(241,106,21) 61.71%,rgb(240,104,18) 62.5%,rgb(239,102,17) 63.28%,rgb(237,100,16) 64.06%,rgb(236,98,15) 64.84%,rgb(234,96,14) 65.62%,rgb(233,94,13) 66.40%,rgb(231,92,12) 67.18%,rgb(230,90,10) 67.96%,rgb(228,88,9) 68.75%,rgb(227,86,8) 69.53%,rgb(225,83,7) 70.31%,rgb(224,81,6) 71.09%,rgb(222,79,5) 71.87%,rgb(221,77,4) 72.65%,rgb(219,75,2) 73.43%,rgb(218,73,1) 74.21%,rgb(216,71,1) 75%,rgb(212,70,1) 75.78%,rgb(209,69,1) 76.56%,rgb(206,68,1) 77.34%,rgb(203,67,1) 78.12%,rgb(200,66,1) 78.90%,rgb(196,64,1) 79.68%,rgb(193,63,1) 80.46%,rgb(190,62,2) 81.25%,rgb(187,61,2) 82.03%,rgb(184,60,2) 82.81%,rgb(180,59,2) 83.59%,rgb(177,58,2) 84.37%,rgb(174,56,2) 85.15%,rgb(171,55,2) 85.93%,rgb(168,54,2) 86.71%,rgb(165,53,3) 87.5%,rgb(162,52,3) 88.28%,rgb(160,51,3) 89.06%,rgb(157,50,3) 89.84%,rgb(155,49,3) 90.62%,rgb(152,48,3) 91.40%,rgb(150,47,3) 92.18%,rgb(147,47,3) 92.96%,rgb(145,46,3) 93.75%,rgb(142,45,3) 94.53%,rgb(140,44,3) 95.31%,rgb(138,43,3) 96.09%,rgb(135,42,3) 96.87%,rgb(133,41,3) 97.65%,rgb(130,40,3) 98.43%,rgb(128,39,3) 99.21%,rgb(127,39,4) 100%\",\n tex_buffer: new Uint8Array([255,245,235,254,244,234,254,243,232,254,242,230,254,241,228,254,240,226,254,239,224,254,238,223,254,237,221,254,236,219,254,236,217,254,235,215,254,234,213,254,233,212,254,232,210,254,231,208,254,230,206,253,229,204,253,227,201,253,226,198,253,224,195,253,223,193,253,222,190,253,220,187,253,219,184,253,218,182,253,216,179,253,215,176,253,213,173,253,212,171,253,211,168,253,209,165,253,208,162,253,206,159,253,204,155,253,202,152,253,199,149,253,197,145,253,195,142,253,193,138,253,191,135,253,189,131,253,187,128,253,184,124,253,182,121,253,180,117,253,178,114,253,176,110,253,174,107,253,172,104,253,170,101,253,168,98,253,165,95,253,163,92,253,161,89,253,159,86,253,157,83,253,155,80,253,153,77,253,151,74,253,149,71,253,147,68,253,145,65,253,143,62,253,141,60,252,138,57,251,136,54,250,134,52,249,131,49,249,129,47,248,127,44,247,125,41,246,122,39,246,120,36,245,118,34,244,116,31,243,113,29,243,111,26,242,109,23,241,106,21,240,104,18,239,102,17,237,100,16,236,98,15,234,96,14,233,94,13,231,92,12,230,90,10,228,88,9,227,86,8,225,83,7,224,81,6,222,79,5,221,77,4,219,75,2,218,73,1,216,71,1,212,70,1,209,69,1,206,68,1,203,67,1,200,66,1,196,64,1,193,63,1,190,62,2,187,61,2,184,60,2,180,59,2,177,58,2,174,56,2,171,55,2,168,54,2,165,53,3,162,52,3,160,51,3,157,50,3,155,49,3,152,48,3,150,47,3,147,47,3,145,46,3,142,45,3,140,44,3,138,43,3,135,42,3,133,41,3,130,40,3,128,39,3,127,39,4]),\n linear_interpolation: true\n},\n{\n name: \"PRGn\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: true,\n c3g_string: \"rgb(64,0,75) 0%,rgb(66,1,77) 0.781%,rgb(70,4,81) 1.562%,rgb(74,8,86) 2.343%,rgb(78,11,90) 3.125%,rgb(83,14,94) 3.906%,rgb(87,18,99) 4.687%,rgb(91,21,103) 5.468%,rgb(95,24,108) 6.25%,rgb(100,28,112) 7.031%,rgb(104,31,116) 7.812%,rgb(108,34,121) 8.593%,rgb(112,38,125) 9.375%,rgb(117,41,130) 10.15%,rgb(120,46,133) 10.93%,rgb(122,51,136) 11.71%,rgb(125,57,139) 12.5%,rgb(128,62,142) 13.28%,rgb(131,68,146) 14.06%,rgb(133,73,149) 14.84%,rgb(136,79,152) 15.62%,rgb(139,84,155) 16.40%,rgb(142,90,158) 17.18%,rgb(145,96,161) 17.96%,rgb(147,101,165) 18.75%,rgb(150,107,168) 19.53%,rgb(153,112,171) 20.31%,rgb(156,116,174) 21.09%,rgb(159,120,176) 21.87%,rgb(163,124,179) 22.65%,rgb(166,129,182) 23.43%,rgb(169,133,185) 24.21%,rgb(172,137,188) 25%,rgb(175,141,191) 25.78%,rgb(179,145,193) 26.56%,rgb(182,149,196) 27.34%,rgb(185,154,199) 28.12%,rgb(188,158,202) 28.90%,rgb(192,162,205) 29.68%,rgb(195,166,207) 30.46%,rgb(198,170,209) 31.25%,rgb(200,173,211) 32.03%,rgb(203,177,213) 32.81%,rgb(206,181,215) 33.59%,rgb(209,184,217) 34.37%,rgb(212,188,219) 35.15%,rgb(215,192,221) 35.93%,rgb(218,196,223) 36.71%,rgb(221,199,225) 37.5%,rgb(224,203,227) 38.28%,rgb(227,207,229) 39.06%,rgb(230,210,231) 39.84%,rgb(231,213,232) 40.62%,rgb(233,216,234) 41.40%,rgb(234,219,235) 42.18%,rgb(235,222,236) 42.96%,rgb(236,224,237) 43.75%,rgb(238,227,238) 44.53%,rgb(239,230,239) 45.31%,rgb(240,233,241) 46.09%,rgb(241,235,242) 46.87%,rgb(243,238,243) 47.65%,rgb(244,241,244) 48.43%,rgb(245,244,245) 49.21%,rgb(247,247,247) 50%,rgb(244,246,244) 50.78%,rgb(242,245,241) 51.56%,rgb(239,245,238) 52.34%,rgb(237,244,235) 53.12%,rgb(235,244,232) 53.90%,rgb(232,243,229) 54.68%,rgb(230,243,227) 55.46%,rgb(228,242,224) 56.25%,rgb(225,242,221) 57.03%,rgb(223,241,218) 57.81%,rgb(221,240,215) 58.59%,rgb(218,240,212) 59.37%,rgb(215,239,209) 60.15%,rgb(211,237,205) 60.93%,rgb(207,236,201) 61.71%,rgb(203,234,197) 62.5%,rgb(199,232,193) 63.28%,rgb(195,231,189) 64.06%,rgb(191,229,185) 64.84%,rgb(187,227,181) 65.62%,rgb(183,226,177) 66.40%,rgb(179,224,173) 67.18%,rgb(175,222,169) 67.96%,rgb(171,221,165) 68.75%,rgb(167,219,161) 69.53%,rgb(162,216,157) 70.31%,rgb(156,213,152) 71.09%,rgb(150,209,147) 71.87%,rgb(144,206,142) 72.65%,rgb(138,202,137) 73.43%,rgb(132,199,132) 74.21%,rgb(126,195,127) 75%,rgb(120,192,122) 75.78%,rgb(114,188,117) 76.56%,rgb(108,184,112) 77.34%,rgb(102,181,107) 78.12%,rgb(96,177,102) 78.90%,rgb(90,174,97) 79.68%,rgb(85,170,94) 80.46%,rgb(80,165,90) 81.25%,rgb(75,161,87) 82.03%,rgb(70,157,84) 82.81%,rgb(65,153,80) 83.59%,rgb(60,148,77) 84.37%,rgb(55,144,74) 85.15%,rgb(50,140,70) 85.93%,rgb(45,136,67) 86.71%,rgb(40,131,64) 87.5%,rgb(35,127,60) 88.28%,rgb(30,123,57) 89.06%,rgb(26,119,54) 89.84%,rgb(24,115,52) 90.62%,rgb(22,110,50) 91.40%,rgb(20,106,47) 92.18%,rgb(18,102,45) 92.96%,rgb(15,98,43) 93.75%,rgb(13,94,41) 94.53%,rgb(11,90,39) 95.31%,rgb(9,86,36) 96.09%,rgb(7,82,34) 96.87%,rgb(5,78,32) 97.65%,rgb(3,74,30) 98.43%,rgb(1,70,28) 99.21%,rgb(0,68,27) 100%\",\n tex_buffer: new Uint8Array([64,0,75,66,1,77,70,4,81,74,8,86,78,11,90,83,14,94,87,18,99,91,21,103,95,24,108,100,28,112,104,31,116,108,34,121,112,38,125,117,41,130,120,46,133,122,51,136,125,57,139,128,62,142,131,68,146,133,73,149,136,79,152,139,84,155,142,90,158,145,96,161,147,101,165,150,107,168,153,112,171,156,116,174,159,120,176,163,124,179,166,129,182,169,133,185,172,137,188,175,141,191,179,145,193,182,149,196,185,154,199,188,158,202,192,162,205,195,166,207,198,170,209,200,173,211,203,177,213,206,181,215,209,184,217,212,188,219,215,192,221,218,196,223,221,199,225,224,203,227,227,207,229,230,210,231,231,213,232,233,216,234,234,219,235,235,222,236,236,224,237,238,227,238,239,230,239,240,233,241,241,235,242,243,238,243,244,241,244,245,244,245,247,247,247,244,246,244,242,245,241,239,245,238,237,244,235,235,244,232,232,243,229,230,243,227,228,242,224,225,242,221,223,241,218,221,240,215,218,240,212,215,239,209,211,237,205,207,236,201,203,234,197,199,232,193,195,231,189,191,229,185,187,227,181,183,226,177,179,224,173,175,222,169,171,221,165,167,219,161,162,216,157,156,213,152,150,209,147,144,206,142,138,202,137,132,199,132,126,195,127,120,192,122,114,188,117,108,184,112,102,181,107,96,177,102,90,174,97,85,170,94,80,165,90,75,161,87,70,157,84,65,153,80,60,148,77,55,144,74,50,140,70,45,136,67,40,131,64,35,127,60,30,123,57,26,119,54,24,115,52,22,110,50,20,106,47,18,102,45,15,98,43,13,94,41,11,90,39,9,86,36,7,82,34,5,78,32,3,74,30,1,70,28,0,68,27]),\n linear_interpolation: true\n},\n{\n name: \"Paired\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 12],\n symmetric: false,\n c3g_string: \"rgb(166,206,227) 0%,rgb(166,206,227) 8.333%,rgb(31,120,180) 8.333%,rgb(31,120,180) 16.66%,rgb(178,223,138) 16.66%,rgb(178,223,138) 25%,rgb(51,160,44) 25%,rgb(51,160,44) 33.33%,rgb(251,154,153) 33.33%,rgb(251,154,153) 41.66%,rgb(227,26,28) 41.66%,rgb(227,26,28) 50%,rgb(253,191,111) 50%,rgb(253,191,111) 58.33%,rgb(255,127,0) 58.33%,rgb(255,127,0) 66.66%,rgb(202,178,214) 66.66%,rgb(202,178,214) 75%,rgb(106,61,154) 75%,rgb(106,61,154) 83.33%,rgb(255,255,153) 83.33%,rgb(255,255,153) 91.66%,rgb(177,89,40) 91.66%,rgb(177,89,40) 100%\",\n tex_buffer: new Uint8Array([166,206,227,31,120,180,178,223,138,51,160,44,251,154,153,227,26,28,253,191,111,255,127,0,202,178,214,106,61,154,255,255,153,177,89,40]),\n linear_interpolation: false\n},\n{\n name: \"Pastel1\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 9],\n symmetric: false,\n c3g_string: \"rgb(251,180,174) 0%,rgb(251,180,174) 11.11%,rgb(179,205,227) 11.11%,rgb(179,205,227) 22.22%,rgb(204,235,197) 22.22%,rgb(204,235,197) 33.33%,rgb(222,203,228) 33.33%,rgb(222,203,228) 44.44%,rgb(254,217,166) 44.44%,rgb(254,217,166) 55.55%,rgb(255,255,204) 55.55%,rgb(255,255,204) 66.66%,rgb(229,216,189) 66.66%,rgb(229,216,189) 77.77%,rgb(253,218,236) 77.77%,rgb(253,218,236) 88.88%,rgb(242,242,242) 88.88%,rgb(242,242,242) 100%\",\n tex_buffer: new Uint8Array([251,180,174,179,205,227,204,235,197,222,203,228,254,217,166,255,255,204,229,216,189,253,218,236,242,242,242]),\n linear_interpolation: false\n},\n{\n name: \"Pastel2\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 8],\n symmetric: false,\n c3g_string: \"rgb(179,226,205) 0%,rgb(179,226,205) 12.5%,rgb(253,205,172) 12.5%,rgb(253,205,172) 25%,rgb(203,213,232) 25%,rgb(203,213,232) 37.5%,rgb(244,202,228) 37.5%,rgb(244,202,228) 50%,rgb(230,245,201) 50%,rgb(230,245,201) 62.5%,rgb(255,242,174) 62.5%,rgb(255,242,174) 75%,rgb(241,226,204) 75%,rgb(241,226,204) 87.5%,rgb(204,204,204) 87.5%,rgb(204,204,204) 100%\",\n tex_buffer: new Uint8Array([179,226,205,253,205,172,203,213,232,244,202,228,230,245,201,255,242,174,241,226,204,204,204,204]),\n linear_interpolation: false\n},\n{\n name: \"PiYG\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: true,\n c3g_string: \"rgb(142,1,82) 0%,rgb(144,2,83) 0.781%,rgb(148,4,87) 1.562%,rgb(152,6,90) 2.343%,rgb(157,8,93) 3.125%,rgb(161,10,97) 3.906%,rgb(165,12,100) 4.687%,rgb(170,14,104) 5.468%,rgb(174,16,107) 6.25%,rgb(178,18,110) 7.031%,rgb(183,20,114) 7.812%,rgb(187,22,117) 8.593%,rgb(191,24,120) 9.375%,rgb(196,26,124) 10.15%,rgb(198,32,128) 10.93%,rgb(200,40,131) 11.71%,rgb(202,47,135) 12.5%,rgb(204,54,139) 13.28%,rgb(206,61,143) 14.06%,rgb(208,69,147) 14.84%,rgb(210,76,151) 15.62%,rgb(212,83,155) 16.40%,rgb(214,90,158) 17.18%,rgb(216,97,162) 17.96%,rgb(218,105,166) 18.75%,rgb(220,112,170) 19.53%,rgb(222,119,174) 20.31%,rgb(223,124,177) 21.09%,rgb(225,129,181) 21.87%,rgb(226,134,184) 22.65%,rgb(228,139,188) 23.43%,rgb(229,144,191) 24.21%,rgb(231,149,195) 25%,rgb(232,154,198) 25.78%,rgb(234,159,202) 26.56%,rgb(235,164,205) 27.34%,rgb(237,169,208) 28.12%,rgb(238,174,212) 28.90%,rgb(240,179,215) 29.68%,rgb(241,183,218) 30.46%,rgb(242,186,220) 31.25%,rgb(243,189,221) 32.03%,rgb(244,193,223) 32.81%,rgb(245,196,225) 33.59%,rgb(246,199,226) 34.37%,rgb(247,203,228) 35.15%,rgb(247,206,230) 35.93%,rgb(248,209,231) 36.71%,rgb(249,213,233) 37.5%,rgb(250,216,235) 38.28%,rgb(251,219,236) 39.06%,rgb(252,223,238) 39.84%,rgb(252,225,239) 40.62%,rgb(252,227,240) 41.40%,rgb(251,228,240) 42.18%,rgb(251,230,241) 42.96%,rgb(250,232,241) 43.75%,rgb(250,234,242) 44.53%,rgb(249,236,243) 45.31%,rgb(249,237,243) 46.09%,rgb(248,239,244) 46.87%,rgb(248,241,245) 47.65%,rgb(247,243,245) 48.43%,rgb(247,245,246) 49.21%,rgb(247,247,247) 50%,rgb(245,246,243) 50.78%,rgb(244,246,240) 51.56%,rgb(242,246,237) 52.34%,rgb(241,246,234) 53.12%,rgb(240,246,231) 53.90%,rgb(238,246,228) 54.68%,rgb(237,245,225) 55.46%,rgb(236,245,222) 56.25%,rgb(234,245,219) 57.03%,rgb(233,245,216) 57.81%,rgb(232,245,213) 58.59%,rgb(230,245,210) 59.37%,rgb(228,244,206) 60.15%,rgb(225,242,200) 60.93%,rgb(221,241,194) 61.71%,rgb(218,239,188) 62.5%,rgb(214,238,182) 63.28%,rgb(210,236,177) 64.06%,rgb(207,235,171) 64.84%,rgb(203,233,165) 65.62%,rgb(199,231,159) 66.40%,rgb(196,230,153) 67.18%,rgb(192,228,147) 67.96%,rgb(189,227,142) 68.75%,rgb(185,225,136) 69.53%,rgb(181,223,130) 70.31%,rgb(176,220,125) 71.09%,rgb(172,217,119) 71.87%,rgb(167,214,114) 72.65%,rgb(163,211,109) 73.43%,rgb(158,208,103) 74.21%,rgb(154,205,98) 75%,rgb(149,202,92) 75.78%,rgb(145,199,87) 76.56%,rgb(140,197,81) 77.34%,rgb(136,194,76) 78.12%,rgb(131,191,70) 78.90%,rgb(127,188,65) 79.68%,rgb(123,185,62) 80.46%,rgb(119,181,60) 81.25%,rgb(115,178,57) 82.03%,rgb(111,175,55) 82.81%,rgb(107,171,52) 83.59%,rgb(103,168,50) 84.37%,rgb(99,165,47) 85.15%,rgb(95,161,45) 85.93%,rgb(91,158,42) 86.71%,rgb(88,155,40) 87.5%,rgb(84,151,37) 88.28%,rgb(80,148,35) 89.06%,rgb(76,145,32) 89.84%,rgb(73,141,32) 90.62%,rgb(70,138,31) 91.40%,rgb(67,134,30) 92.18%,rgb(64,130,30) 92.96%,rgb(61,127,29) 93.75%,rgb(58,123,29) 94.53%,rgb(55,119,28) 95.31%,rgb(52,116,27) 96.09%,rgb(49,112,27) 96.87%,rgb(46,109,26) 97.65%,rgb(43,105,25) 98.43%,rgb(40,101,25) 99.21%,rgb(39,100,25) 100%\",\n tex_buffer: new Uint8Array([142,1,82,144,2,83,148,4,87,152,6,90,157,8,93,161,10,97,165,12,100,170,14,104,174,16,107,178,18,110,183,20,114,187,22,117,191,24,120,196,26,124,198,32,128,200,40,131,202,47,135,204,54,139,206,61,143,208,69,147,210,76,151,212,83,155,214,90,158,216,97,162,218,105,166,220,112,170,222,119,174,223,124,177,225,129,181,226,134,184,228,139,188,229,144,191,231,149,195,232,154,198,234,159,202,235,164,205,237,169,208,238,174,212,240,179,215,241,183,218,242,186,220,243,189,221,244,193,223,245,196,225,246,199,226,247,203,228,247,206,230,248,209,231,249,213,233,250,216,235,251,219,236,252,223,238,252,225,239,252,227,240,251,228,240,251,230,241,250,232,241,250,234,242,249,236,243,249,237,243,248,239,244,248,241,245,247,243,245,247,245,246,247,247,247,245,246,243,244,246,240,242,246,237,241,246,234,240,246,231,238,246,228,237,245,225,236,245,222,234,245,219,233,245,216,232,245,213,230,245,210,228,244,206,225,242,200,221,241,194,218,239,188,214,238,182,210,236,177,207,235,171,203,233,165,199,231,159,196,230,153,192,228,147,189,227,142,185,225,136,181,223,130,176,220,125,172,217,119,167,214,114,163,211,109,158,208,103,154,205,98,149,202,92,145,199,87,140,197,81,136,194,76,131,191,70,127,188,65,123,185,62,119,181,60,115,178,57,111,175,55,107,171,52,103,168,50,99,165,47,95,161,45,91,158,42,88,155,40,84,151,37,80,148,35,76,145,32,73,141,32,70,138,31,67,134,30,64,130,30,61,127,29,58,123,29,55,119,28,52,116,27,49,112,27,46,109,26,43,105,25,40,101,25,39,100,25]),\n linear_interpolation: true\n},\n{\n name: \"PuBu\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,247,251) 0%,rgb(254,246,250) 0.781%,rgb(253,245,250) 1.562%,rgb(252,244,249) 2.343%,rgb(250,243,249) 3.125%,rgb(249,242,248) 3.906%,rgb(248,241,247) 4.687%,rgb(247,240,247) 5.468%,rgb(246,239,246) 6.25%,rgb(244,238,246) 7.031%,rgb(243,237,245) 7.812%,rgb(242,236,245) 8.593%,rgb(241,235,244) 9.375%,rgb(240,234,243) 10.15%,rgb(238,233,243) 10.93%,rgb(237,232,242) 11.71%,rgb(236,231,242) 12.5%,rgb(234,230,241) 13.28%,rgb(233,228,240) 14.06%,rgb(231,227,240) 14.84%,rgb(229,225,239) 15.62%,rgb(227,224,238) 16.40%,rgb(226,223,237) 17.18%,rgb(224,221,236) 17.96%,rgb(222,220,236) 18.75%,rgb(220,219,235) 19.53%,rgb(219,217,234) 20.31%,rgb(217,216,233) 21.09%,rgb(215,214,233) 21.87%,rgb(213,213,232) 22.65%,rgb(211,212,231) 23.43%,rgb(210,210,230) 24.21%,rgb(208,209,230) 25%,rgb(206,208,229) 25.78%,rgb(203,206,228) 26.56%,rgb(200,205,228) 27.34%,rgb(198,204,227) 28.12%,rgb(195,203,226) 28.90%,rgb(192,201,226) 29.68%,rgb(190,200,225) 30.46%,rgb(187,199,224) 31.25%,rgb(184,197,223) 32.03%,rgb(182,196,223) 32.81%,rgb(179,195,222) 33.59%,rgb(176,194,221) 34.37%,rgb(174,192,221) 35.15%,rgb(171,191,220) 35.93%,rgb(168,190,219) 36.71%,rgb(166,189,219) 37.5%,rgb(163,187,218) 38.28%,rgb(160,186,217) 39.06%,rgb(156,185,216) 39.84%,rgb(153,184,216) 40.62%,rgb(150,182,215) 41.40%,rgb(147,181,214) 42.18%,rgb(144,180,213) 42.96%,rgb(141,179,213) 43.75%,rgb(138,177,212) 44.53%,rgb(134,176,211) 45.31%,rgb(131,175,210) 46.09%,rgb(128,174,210) 46.87%,rgb(125,172,209) 47.65%,rgb(122,171,208) 48.43%,rgb(119,170,207) 49.21%,rgb(116,169,207) 50%,rgb(112,167,206) 50.78%,rgb(108,165,205) 51.56%,rgb(104,164,204) 52.34%,rgb(100,162,203) 53.12%,rgb(96,161,202) 53.90%,rgb(92,159,201) 54.68%,rgb(88,157,200) 55.46%,rgb(84,156,199) 56.25%,rgb(80,154,198) 57.03%,rgb(76,153,197) 57.81%,rgb(73,151,196) 58.59%,rgb(69,150,195) 59.37%,rgb(65,148,194) 60.15%,rgb(61,146,193) 60.93%,rgb(57,145,192) 61.71%,rgb(53,143,191) 62.5%,rgb(50,141,190) 63.28%,rgb(47,139,189) 64.06%,rgb(44,137,188) 64.84%,rgb(41,135,187) 65.62%,rgb(38,133,186) 66.40%,rgb(35,131,185) 67.18%,rgb(32,129,184) 67.96%,rgb(28,127,183) 68.75%,rgb(25,125,182) 69.53%,rgb(22,123,181) 70.31%,rgb(19,121,180) 71.09%,rgb(16,119,179) 71.87%,rgb(13,117,178) 72.65%,rgb(10,115,177) 73.43%,rgb(7,113,176) 74.21%,rgb(4,111,175) 75%,rgb(4,110,173) 75.78%,rgb(4,108,171) 76.56%,rgb(4,107,168) 77.34%,rgb(4,106,166) 78.12%,rgb(4,104,164) 78.90%,rgb(4,103,162) 79.68%,rgb(4,101,160) 80.46%,rgb(4,100,157) 81.25%,rgb(4,99,155) 82.03%,rgb(4,97,153) 82.81%,rgb(4,96,151) 83.59%,rgb(4,95,148) 84.37%,rgb(4,93,146) 85.15%,rgb(4,92,144) 85.93%,rgb(4,90,142) 86.71%,rgb(3,89,139) 87.5%,rgb(3,87,136) 88.28%,rgb(3,84,133) 89.06%,rgb(3,82,129) 89.84%,rgb(3,80,126) 90.62%,rgb(3,78,123) 91.40%,rgb(3,76,119) 92.18%,rgb(3,74,116) 92.96%,rgb(2,72,113) 93.75%,rgb(2,69,109) 94.53%,rgb(2,67,106) 95.31%,rgb(2,65,103) 96.09%,rgb(2,63,99) 96.87%,rgb(2,61,96) 97.65%,rgb(2,59,93) 98.43%,rgb(2,57,89) 99.21%,rgb(2,56,88) 100%\",\n tex_buffer: new Uint8Array([255,247,251,254,246,250,253,245,250,252,244,249,250,243,249,249,242,248,248,241,247,247,240,247,246,239,246,244,238,246,243,237,245,242,236,245,241,235,244,240,234,243,238,233,243,237,232,242,236,231,242,234,230,241,233,228,240,231,227,240,229,225,239,227,224,238,226,223,237,224,221,236,222,220,236,220,219,235,219,217,234,217,216,233,215,214,233,213,213,232,211,212,231,210,210,230,208,209,230,206,208,229,203,206,228,200,205,228,198,204,227,195,203,226,192,201,226,190,200,225,187,199,224,184,197,223,182,196,223,179,195,222,176,194,221,174,192,221,171,191,220,168,190,219,166,189,219,163,187,218,160,186,217,156,185,216,153,184,216,150,182,215,147,181,214,144,180,213,141,179,213,138,177,212,134,176,211,131,175,210,128,174,210,125,172,209,122,171,208,119,170,207,116,169,207,112,167,206,108,165,205,104,164,204,100,162,203,96,161,202,92,159,201,88,157,200,84,156,199,80,154,198,76,153,197,73,151,196,69,150,195,65,148,194,61,146,193,57,145,192,53,143,191,50,141,190,47,139,189,44,137,188,41,135,187,38,133,186,35,131,185,32,129,184,28,127,183,25,125,182,22,123,181,19,121,180,16,119,179,13,117,178,10,115,177,7,113,176,4,111,175,4,110,173,4,108,171,4,107,168,4,106,166,4,104,164,4,103,162,4,101,160,4,100,157,4,99,155,4,97,153,4,96,151,4,95,148,4,93,146,4,92,144,4,90,142,3,89,139,3,87,136,3,84,133,3,82,129,3,80,126,3,78,123,3,76,119,3,74,116,2,72,113,2,69,109,2,67,106,2,65,103,2,63,99,2,61,96,2,59,93,2,57,89,2,56,88]),\n linear_interpolation: true\n},\n{\n name: \"PuBuGn\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,247,251) 0%,rgb(254,246,250) 0.781%,rgb(253,245,249) 1.562%,rgb(252,243,249) 2.343%,rgb(250,242,248) 3.125%,rgb(249,241,247) 3.906%,rgb(248,239,247) 4.687%,rgb(247,238,246) 5.468%,rgb(246,237,245) 6.25%,rgb(244,235,245) 7.031%,rgb(243,234,244) 7.812%,rgb(242,233,243) 8.593%,rgb(241,231,243) 9.375%,rgb(240,230,242) 10.15%,rgb(238,229,241) 10.93%,rgb(237,227,240) 11.71%,rgb(236,226,240) 12.5%,rgb(234,225,239) 13.28%,rgb(233,224,238) 14.06%,rgb(231,223,238) 14.84%,rgb(229,222,237) 15.62%,rgb(227,221,237) 16.40%,rgb(226,219,236) 17.18%,rgb(224,218,235) 17.96%,rgb(222,217,235) 18.75%,rgb(220,216,234) 19.53%,rgb(219,215,233) 20.31%,rgb(217,214,233) 21.09%,rgb(215,213,232) 21.87%,rgb(213,212,232) 22.65%,rgb(211,211,231) 23.43%,rgb(210,210,230) 24.21%,rgb(208,209,230) 25%,rgb(206,208,229) 25.78%,rgb(203,206,228) 26.56%,rgb(200,205,228) 27.34%,rgb(198,204,227) 28.12%,rgb(195,203,226) 28.90%,rgb(192,201,226) 29.68%,rgb(190,200,225) 30.46%,rgb(187,199,224) 31.25%,rgb(184,197,223) 32.03%,rgb(182,196,223) 32.81%,rgb(179,195,222) 33.59%,rgb(176,194,221) 34.37%,rgb(174,192,221) 35.15%,rgb(171,191,220) 35.93%,rgb(168,190,219) 36.71%,rgb(166,189,219) 37.5%,rgb(162,187,218) 38.28%,rgb(158,186,217) 39.06%,rgb(154,185,216) 39.84%,rgb(150,184,216) 40.62%,rgb(146,182,215) 41.40%,rgb(142,181,214) 42.18%,rgb(138,180,213) 42.96%,rgb(134,179,213) 43.75%,rgb(130,177,212) 44.53%,rgb(126,176,211) 45.31%,rgb(122,175,210) 46.09%,rgb(118,174,210) 46.87%,rgb(114,172,209) 47.65%,rgb(110,171,208) 48.43%,rgb(106,170,207) 49.21%,rgb(103,169,207) 50%,rgb(99,167,206) 50.78%,rgb(96,165,205) 51.56%,rgb(93,164,204) 52.34%,rgb(90,162,203) 53.12%,rgb(87,161,202) 53.90%,rgb(84,159,201) 54.68%,rgb(81,157,200) 55.46%,rgb(78,156,199) 56.25%,rgb(75,154,198) 57.03%,rgb(72,153,197) 57.81%,rgb(69,151,196) 58.59%,rgb(65,150,195) 59.37%,rgb(62,148,194) 60.15%,rgb(59,146,193) 60.93%,rgb(56,145,192) 61.71%,rgb(53,143,191) 62.5%,rgb(50,142,188) 63.28%,rgb(47,141,184) 64.06%,rgb(43,141,181) 64.84%,rgb(40,140,177) 65.62%,rgb(37,139,174) 66.40%,rgb(33,138,171) 67.18%,rgb(30,137,167) 67.96%,rgb(27,136,164) 68.75%,rgb(24,135,160) 69.53%,rgb(20,134,157) 70.31%,rgb(17,133,154) 71.09%,rgb(14,132,150) 71.87%,rgb(11,131,147) 72.65%,rgb(7,130,143) 73.43%,rgb(4,129,140) 74.21%,rgb(1,128,137) 75%,rgb(1,127,134) 75.78%,rgb(1,126,131) 76.56%,rgb(1,124,127) 77.34%,rgb(1,123,124) 78.12%,rgb(1,122,121) 78.90%,rgb(1,120,118) 79.68%,rgb(1,119,115) 80.46%,rgb(1,118,112) 81.25%,rgb(1,116,109) 82.03%,rgb(1,115,106) 82.81%,rgb(1,114,103) 83.59%,rgb(1,112,100) 84.37%,rgb(1,111,97) 85.15%,rgb(1,110,94) 85.93%,rgb(1,108,90) 86.71%,rgb(1,107,88) 87.5%,rgb(1,104,85) 88.28%,rgb(1,102,83) 89.06%,rgb(1,99,81) 89.84%,rgb(1,97,79) 90.62%,rgb(1,95,77) 91.40%,rgb(1,92,74) 92.18%,rgb(1,90,72) 92.96%,rgb(1,87,70) 93.75%,rgb(1,85,68) 94.53%,rgb(1,83,66) 95.31%,rgb(1,80,63) 96.09%,rgb(1,78,61) 96.87%,rgb(1,75,59) 97.65%,rgb(1,73,57) 98.43%,rgb(1,71,55) 99.21%,rgb(1,70,54) 100%\",\n tex_buffer: new Uint8Array([255,247,251,254,246,250,253,245,249,252,243,249,250,242,248,249,241,247,248,239,247,247,238,246,246,237,245,244,235,245,243,234,244,242,233,243,241,231,243,240,230,242,238,229,241,237,227,240,236,226,240,234,225,239,233,224,238,231,223,238,229,222,237,227,221,237,226,219,236,224,218,235,222,217,235,220,216,234,219,215,233,217,214,233,215,213,232,213,212,232,211,211,231,210,210,230,208,209,230,206,208,229,203,206,228,200,205,228,198,204,227,195,203,226,192,201,226,190,200,225,187,199,224,184,197,223,182,196,223,179,195,222,176,194,221,174,192,221,171,191,220,168,190,219,166,189,219,162,187,218,158,186,217,154,185,216,150,184,216,146,182,215,142,181,214,138,180,213,134,179,213,130,177,212,126,176,211,122,175,210,118,174,210,114,172,209,110,171,208,106,170,207,103,169,207,99,167,206,96,165,205,93,164,204,90,162,203,87,161,202,84,159,201,81,157,200,78,156,199,75,154,198,72,153,197,69,151,196,65,150,195,62,148,194,59,146,193,56,145,192,53,143,191,50,142,188,47,141,184,43,141,181,40,140,177,37,139,174,33,138,171,30,137,167,27,136,164,24,135,160,20,134,157,17,133,154,14,132,150,11,131,147,7,130,143,4,129,140,1,128,137,1,127,134,1,126,131,1,124,127,1,123,124,1,122,121,1,120,118,1,119,115,1,118,112,1,116,109,1,115,106,1,114,103,1,112,100,1,111,97,1,110,94,1,108,90,1,107,88,1,104,85,1,102,83,1,99,81,1,97,79,1,95,77,1,92,74,1,90,72,1,87,70,1,85,68,1,83,66,1,80,63,1,78,61,1,75,59,1,73,57,1,71,55,1,70,54]),\n linear_interpolation: true\n},\n{\n name: \"PuOr\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: true,\n c3g_string: \"rgb(127,59,8) 0%,rgb(129,60,7) 0.781%,rgb(133,62,7) 1.562%,rgb(137,64,7) 2.343%,rgb(141,66,7) 3.125%,rgb(145,69,7) 3.906%,rgb(149,71,7) 4.687%,rgb(153,73,6) 5.468%,rgb(157,76,6) 6.25%,rgb(161,78,6) 7.031%,rgb(165,80,6) 7.812%,rgb(169,82,6) 8.593%,rgb(174,85,6) 9.375%,rgb(178,87,6) 10.15%,rgb(181,90,6) 10.93%,rgb(185,93,7) 11.71%,rgb(188,97,9) 12.5%,rgb(192,100,10) 13.28%,rgb(196,103,11) 14.06%,rgb(199,107,12) 14.84%,rgb(203,110,13) 15.62%,rgb(206,113,14) 16.40%,rgb(210,117,15) 17.18%,rgb(213,120,16) 17.96%,rgb(217,123,17) 18.75%,rgb(220,127,19) 19.53%,rgb(224,130,20) 20.31%,rgb(226,134,26) 21.09%,rgb(228,138,33) 21.87%,rgb(231,143,39) 22.65%,rgb(233,147,45) 23.43%,rgb(235,151,51) 24.21%,rgb(237,155,57) 25%,rgb(240,160,64) 25.78%,rgb(242,164,70) 26.56%,rgb(244,168,76) 27.34%,rgb(247,172,82) 28.12%,rgb(249,177,89) 28.90%,rgb(251,181,95) 29.68%,rgb(253,185,101) 30.46%,rgb(253,188,108) 31.25%,rgb(253,191,114) 32.03%,rgb(253,194,121) 32.81%,rgb(253,197,127) 33.59%,rgb(253,201,134) 34.37%,rgb(253,204,140) 35.15%,rgb(253,207,147) 35.93%,rgb(253,210,153) 36.71%,rgb(253,213,160) 37.5%,rgb(253,216,166) 38.28%,rgb(253,219,173) 39.06%,rgb(253,223,180) 39.84%,rgb(253,225,185) 40.62%,rgb(253,227,190) 41.40%,rgb(252,228,195) 42.18%,rgb(251,230,200) 42.96%,rgb(251,232,206) 43.75%,rgb(250,234,211) 44.53%,rgb(250,236,216) 45.31%,rgb(249,237,221) 46.09%,rgb(249,239,226) 46.87%,rgb(248,241,231) 47.65%,rgb(248,243,236) 48.43%,rgb(247,245,241) 49.21%,rgb(247,247,247) 50%,rgb(244,244,246) 50.78%,rgb(242,242,245) 51.56%,rgb(239,240,244) 52.34%,rgb(237,237,243) 53.12%,rgb(234,235,242) 53.90%,rgb(232,233,241) 54.68%,rgb(229,231,240) 55.46%,rgb(227,228,239) 56.25%,rgb(225,226,238) 57.03%,rgb(222,224,237) 57.81%,rgb(220,221,236) 58.59%,rgb(217,219,235) 59.37%,rgb(215,216,234) 60.15%,rgb(212,213,232) 60.93%,rgb(209,209,230) 61.71%,rgb(206,205,228) 62.5%,rgb(203,202,226) 63.28%,rgb(200,198,224) 64.06%,rgb(197,194,222) 64.84%,rgb(194,190,220) 65.62%,rgb(191,187,218) 66.40%,rgb(188,183,216) 67.18%,rgb(185,179,214) 67.96%,rgb(182,176,212) 68.75%,rgb(179,172,210) 69.53%,rgb(175,168,208) 70.31%,rgb(171,163,205) 71.09%,rgb(167,159,202) 71.87%,rgb(163,155,199) 72.65%,rgb(159,150,196) 73.43%,rgb(155,146,193) 74.21%,rgb(152,141,190) 75%,rgb(148,137,187) 75.78%,rgb(144,133,184) 76.56%,rgb(140,128,181) 77.34%,rgb(136,124,178) 78.12%,rgb(132,119,175) 78.90%,rgb(128,115,172) 79.68%,rgb(124,109,169) 80.46%,rgb(121,103,166) 81.25%,rgb(117,97,163) 82.03%,rgb(114,91,160) 82.81%,rgb(111,85,158) 83.59%,rgb(107,79,155) 84.37%,rgb(104,73,152) 85.15%,rgb(100,67,149) 85.93%,rgb(97,61,146) 86.71%,rgb(93,55,143) 87.5%,rgb(90,49,141) 88.28%,rgb(86,43,138) 89.06%,rgb(83,38,135) 89.84%,rgb(80,35,130) 90.62%,rgb(77,32,125) 91.40%,rgb(74,29,120) 92.18%,rgb(71,26,115) 92.96%,rgb(68,23,111) 93.75%,rgb(64,19,106) 94.53%,rgb(61,16,101) 95.31%,rgb(58,13,96) 96.09%,rgb(55,10,91) 96.87%,rgb(52,7,87) 97.65%,rgb(49,4,82) 98.43%,rgb(46,1,77) 99.21%,rgb(45,0,75) 100%\",\n tex_buffer: new Uint8Array([127,59,8,129,60,7,133,62,7,137,64,7,141,66,7,145,69,7,149,71,7,153,73,6,157,76,6,161,78,6,165,80,6,169,82,6,174,85,6,178,87,6,181,90,6,185,93,7,188,97,9,192,100,10,196,103,11,199,107,12,203,110,13,206,113,14,210,117,15,213,120,16,217,123,17,220,127,19,224,130,20,226,134,26,228,138,33,231,143,39,233,147,45,235,151,51,237,155,57,240,160,64,242,164,70,244,168,76,247,172,82,249,177,89,251,181,95,253,185,101,253,188,108,253,191,114,253,194,121,253,197,127,253,201,134,253,204,140,253,207,147,253,210,153,253,213,160,253,216,166,253,219,173,253,223,180,253,225,185,253,227,190,252,228,195,251,230,200,251,232,206,250,234,211,250,236,216,249,237,221,249,239,226,248,241,231,248,243,236,247,245,241,247,247,247,244,244,246,242,242,245,239,240,244,237,237,243,234,235,242,232,233,241,229,231,240,227,228,239,225,226,238,222,224,237,220,221,236,217,219,235,215,216,234,212,213,232,209,209,230,206,205,228,203,202,226,200,198,224,197,194,222,194,190,220,191,187,218,188,183,216,185,179,214,182,176,212,179,172,210,175,168,208,171,163,205,167,159,202,163,155,199,159,150,196,155,146,193,152,141,190,148,137,187,144,133,184,140,128,181,136,124,178,132,119,175,128,115,172,124,109,169,121,103,166,117,97,163,114,91,160,111,85,158,107,79,155,104,73,152,100,67,149,97,61,146,93,55,143,90,49,141,86,43,138,83,38,135,80,35,130,77,32,125,74,29,120,71,26,115,68,23,111,64,19,106,61,16,101,58,13,96,55,10,91,52,7,87,49,4,82,46,1,77,45,0,75]),\n linear_interpolation: true\n},\n{\n name: \"PuRd\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(247,244,249) 0%,rgb(246,243,248) 0.781%,rgb(245,242,248) 1.562%,rgb(244,241,247) 2.343%,rgb(243,239,246) 3.125%,rgb(242,238,246) 3.906%,rgb(241,237,245) 4.687%,rgb(240,236,244) 5.468%,rgb(239,235,244) 6.25%,rgb(238,233,243) 7.031%,rgb(237,232,243) 7.812%,rgb(236,231,242) 8.593%,rgb(235,230,241) 9.375%,rgb(234,229,241) 10.15%,rgb(233,227,240) 10.93%,rgb(232,226,239) 11.71%,rgb(231,225,239) 12.5%,rgb(230,223,238) 13.28%,rgb(229,220,236) 14.06%,rgb(227,218,235) 14.84%,rgb(226,215,234) 15.62%,rgb(225,213,232) 16.40%,rgb(224,210,231) 17.18%,rgb(223,208,230) 17.96%,rgb(221,205,228) 18.75%,rgb(220,203,227) 19.53%,rgb(219,200,226) 20.31%,rgb(218,198,224) 21.09%,rgb(217,195,223) 21.87%,rgb(215,193,222) 22.65%,rgb(214,190,220) 23.43%,rgb(213,188,219) 24.21%,rgb(212,185,218) 25%,rgb(211,183,217) 25.78%,rgb(210,180,215) 26.56%,rgb(210,178,214) 27.34%,rgb(209,176,213) 28.12%,rgb(208,173,212) 28.90%,rgb(208,171,211) 29.68%,rgb(207,169,209) 30.46%,rgb(206,166,208) 31.25%,rgb(205,164,207) 32.03%,rgb(205,162,206) 32.81%,rgb(204,159,205) 33.59%,rgb(203,157,203) 34.37%,rgb(203,155,202) 35.15%,rgb(202,152,201) 35.93%,rgb(201,150,200) 36.71%,rgb(201,148,199) 37.5%,rgb(202,145,197) 38.28%,rgb(203,142,196) 39.06%,rgb(204,139,194) 39.84%,rgb(206,136,193) 40.62%,rgb(207,133,191) 41.40%,rgb(209,130,190) 42.18%,rgb(210,127,189) 42.96%,rgb(211,124,187) 43.75%,rgb(213,121,186) 44.53%,rgb(214,118,184) 45.31%,rgb(216,115,183) 46.09%,rgb(217,112,181) 46.87%,rgb(218,109,180) 47.65%,rgb(220,106,178) 48.43%,rgb(221,103,177) 49.21%,rgb(223,101,176) 50%,rgb(223,97,173) 50.78%,rgb(224,93,171) 51.56%,rgb(224,89,168) 52.34%,rgb(225,85,166) 53.12%,rgb(225,82,164) 53.90%,rgb(226,78,161) 54.68%,rgb(226,74,159) 55.46%,rgb(227,70,156) 56.25%,rgb(227,66,154) 57.03%,rgb(228,63,152) 57.81%,rgb(228,59,149) 58.59%,rgb(229,55,147) 59.37%,rgb(229,51,144) 60.15%,rgb(230,48,142) 60.93%,rgb(230,44,140) 61.71%,rgb(230,40,137) 62.5%,rgb(229,39,134) 63.28%,rgb(227,37,131) 64.06%,rgb(226,36,127) 64.84%,rgb(224,35,124) 65.62%,rgb(222,33,121) 66.40%,rgb(221,32,117) 67.18%,rgb(219,30,114) 67.96%,rgb(218,29,111) 68.75%,rgb(216,27,108) 69.53%,rgb(215,26,104) 70.31%,rgb(213,24,101) 71.09%,rgb(211,23,98) 71.87%,rgb(210,21,95) 72.65%,rgb(208,20,91) 73.43%,rgb(207,19,88) 74.21%,rgb(205,17,85) 75%,rgb(201,16,84) 75.78%,rgb(198,15,83) 76.56%,rgb(194,14,82) 77.34%,rgb(191,13,80) 78.12%,rgb(188,12,79) 78.90%,rgb(184,10,78) 79.68%,rgb(181,9,77) 80.46%,rgb(177,8,76) 81.25%,rgb(174,7,74) 82.03%,rgb(171,6,73) 82.81%,rgb(167,5,72) 83.59%,rgb(164,4,71) 84.37%,rgb(160,2,70) 85.15%,rgb(157,1,68) 85.93%,rgb(154,0,67) 86.71%,rgb(150,0,66) 87.5%,rgb(147,0,63) 88.28%,rgb(144,0,61) 89.06%,rgb(141,0,59) 89.84%,rgb(138,0,57) 90.62%,rgb(135,0,54) 91.40%,rgb(132,0,52) 92.18%,rgb(129,0,50) 92.96%,rgb(126,0,48) 93.75%,rgb(123,0,45) 94.53%,rgb(119,0,43) 95.31%,rgb(116,0,41) 96.09%,rgb(113,0,38) 96.87%,rgb(110,0,36) 97.65%,rgb(107,0,34) 98.43%,rgb(104,0,32) 99.21%,rgb(103,0,31) 100%\",\n tex_buffer: new Uint8Array([247,244,249,246,243,248,245,242,248,244,241,247,243,239,246,242,238,246,241,237,245,240,236,244,239,235,244,238,233,243,237,232,243,236,231,242,235,230,241,234,229,241,233,227,240,232,226,239,231,225,239,230,223,238,229,220,236,227,218,235,226,215,234,225,213,232,224,210,231,223,208,230,221,205,228,220,203,227,219,200,226,218,198,224,217,195,223,215,193,222,214,190,220,213,188,219,212,185,218,211,183,217,210,180,215,210,178,214,209,176,213,208,173,212,208,171,211,207,169,209,206,166,208,205,164,207,205,162,206,204,159,205,203,157,203,203,155,202,202,152,201,201,150,200,201,148,199,202,145,197,203,142,196,204,139,194,206,136,193,207,133,191,209,130,190,210,127,189,211,124,187,213,121,186,214,118,184,216,115,183,217,112,181,218,109,180,220,106,178,221,103,177,223,101,176,223,97,173,224,93,171,224,89,168,225,85,166,225,82,164,226,78,161,226,74,159,227,70,156,227,66,154,228,63,152,228,59,149,229,55,147,229,51,144,230,48,142,230,44,140,230,40,137,229,39,134,227,37,131,226,36,127,224,35,124,222,33,121,221,32,117,219,30,114,218,29,111,216,27,108,215,26,104,213,24,101,211,23,98,210,21,95,208,20,91,207,19,88,205,17,85,201,16,84,198,15,83,194,14,82,191,13,80,188,12,79,184,10,78,181,9,77,177,8,76,174,7,74,171,6,73,167,5,72,164,4,71,160,2,70,157,1,68,154,0,67,150,0,66,147,0,63,144,0,61,141,0,59,138,0,57,135,0,54,132,0,52,129,0,50,126,0,48,123,0,45,119,0,43,116,0,41,113,0,38,110,0,36,107,0,34,104,0,32,103,0,31]),\n linear_interpolation: true\n},\n{\n name: \"Purples\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(252,251,253) 0%,rgb(251,250,252) 0.781%,rgb(250,249,252) 1.562%,rgb(249,248,251) 2.343%,rgb(249,247,251) 3.125%,rgb(248,247,250) 3.906%,rgb(247,246,250) 4.687%,rgb(246,245,249) 5.468%,rgb(245,244,249) 6.25%,rgb(245,243,248) 7.031%,rgb(244,242,248) 7.812%,rgb(243,241,247) 8.593%,rgb(242,240,247) 9.375%,rgb(241,239,246) 10.15%,rgb(240,239,246) 10.93%,rgb(240,238,245) 11.71%,rgb(239,237,245) 12.5%,rgb(238,236,244) 13.28%,rgb(236,235,243) 14.06%,rgb(235,233,243) 14.84%,rgb(234,232,242) 15.62%,rgb(232,231,242) 16.40%,rgb(231,230,241) 17.18%,rgb(230,229,240) 17.96%,rgb(228,227,240) 18.75%,rgb(227,226,239) 19.53%,rgb(226,225,238) 20.31%,rgb(224,224,238) 21.09%,rgb(223,223,237) 21.87%,rgb(222,221,237) 22.65%,rgb(220,220,236) 23.43%,rgb(219,219,235) 24.21%,rgb(218,218,235) 25%,rgb(216,216,234) 25.78%,rgb(214,214,233) 26.56%,rgb(212,212,232) 27.34%,rgb(210,211,231) 28.12%,rgb(209,209,230) 28.90%,rgb(207,207,229) 29.68%,rgb(205,205,228) 30.46%,rgb(203,203,227) 31.25%,rgb(201,202,226) 32.03%,rgb(199,200,225) 32.81%,rgb(197,198,224) 33.59%,rgb(195,196,223) 34.37%,rgb(193,194,222) 35.15%,rgb(192,192,222) 35.93%,rgb(190,191,221) 36.71%,rgb(188,189,220) 37.5%,rgb(186,187,218) 38.28%,rgb(184,184,217) 39.06%,rgb(182,182,216) 39.84%,rgb(180,180,215) 40.62%,rgb(178,178,213) 41.40%,rgb(176,176,212) 42.18%,rgb(175,173,211) 42.96%,rgb(173,171,210) 43.75%,rgb(171,169,208) 44.53%,rgb(169,167,207) 45.31%,rgb(167,165,206) 46.09%,rgb(165,162,205) 46.87%,rgb(163,160,203) 47.65%,rgb(161,158,202) 48.43%,rgb(159,156,201) 49.21%,rgb(158,154,200) 50%,rgb(156,152,199) 50.78%,rgb(154,150,198) 51.56%,rgb(152,148,197) 52.34%,rgb(150,146,196) 53.12%,rgb(148,144,195) 53.90%,rgb(146,143,194) 54.68%,rgb(144,141,193) 55.46%,rgb(142,139,192) 56.25%,rgb(140,137,192) 57.03%,rgb(139,135,191) 57.81%,rgb(137,133,190) 58.59%,rgb(135,132,189) 59.37%,rgb(133,130,188) 60.15%,rgb(131,128,187) 60.93%,rgb(129,126,186) 61.71%,rgb(127,124,185) 62.5%,rgb(126,121,184) 63.28%,rgb(125,119,182) 64.06%,rgb(123,116,181) 64.84%,rgb(122,113,180) 65.62%,rgb(120,110,178) 66.40%,rgb(119,108,177) 67.18%,rgb(118,105,175) 67.96%,rgb(116,102,174) 68.75%,rgb(115,99,172) 69.53%,rgb(113,96,171) 70.31%,rgb(112,94,169) 71.09%,rgb(111,91,168) 71.87%,rgb(109,88,166) 72.65%,rgb(108,85,165) 73.43%,rgb(107,83,164) 74.21%,rgb(105,80,162) 75%,rgb(104,77,161) 75.78%,rgb(102,75,160) 76.56%,rgb(101,72,158) 77.34%,rgb(100,69,157) 78.12%,rgb(98,67,156) 78.90%,rgb(97,64,155) 79.68%,rgb(95,61,153) 80.46%,rgb(94,59,152) 81.25%,rgb(93,56,151) 82.03%,rgb(91,53,150) 82.81%,rgb(90,51,148) 83.59%,rgb(89,48,147) 84.37%,rgb(87,45,146) 85.15%,rgb(86,43,145) 85.93%,rgb(84,40,143) 86.71%,rgb(83,38,142) 87.5%,rgb(82,35,141) 88.28%,rgb(80,33,140) 89.06%,rgb(79,30,139) 89.84%,rgb(78,28,138) 90.62%,rgb(76,25,136) 91.40%,rgb(75,23,135) 92.18%,rgb(74,20,134) 92.96%,rgb(72,18,133) 93.75%,rgb(71,15,132) 94.53%,rgb(70,13,131) 95.31%,rgb(68,11,130) 96.09%,rgb(67,8,128) 96.87%,rgb(66,6,127) 97.65%,rgb(64,3,126) 98.43%,rgb(63,1,125) 99.21%,rgb(63,0,125) 100%\",\n tex_buffer: new Uint8Array([252,251,253,251,250,252,250,249,252,249,248,251,249,247,251,248,247,250,247,246,250,246,245,249,245,244,249,245,243,248,244,242,248,243,241,247,242,240,247,241,239,246,240,239,246,240,238,245,239,237,245,238,236,244,236,235,243,235,233,243,234,232,242,232,231,242,231,230,241,230,229,240,228,227,240,227,226,239,226,225,238,224,224,238,223,223,237,222,221,237,220,220,236,219,219,235,218,218,235,216,216,234,214,214,233,212,212,232,210,211,231,209,209,230,207,207,229,205,205,228,203,203,227,201,202,226,199,200,225,197,198,224,195,196,223,193,194,222,192,192,222,190,191,221,188,189,220,186,187,218,184,184,217,182,182,216,180,180,215,178,178,213,176,176,212,175,173,211,173,171,210,171,169,208,169,167,207,167,165,206,165,162,205,163,160,203,161,158,202,159,156,201,158,154,200,156,152,199,154,150,198,152,148,197,150,146,196,148,144,195,146,143,194,144,141,193,142,139,192,140,137,192,139,135,191,137,133,190,135,132,189,133,130,188,131,128,187,129,126,186,127,124,185,126,121,184,125,119,182,123,116,181,122,113,180,120,110,178,119,108,177,118,105,175,116,102,174,115,99,172,113,96,171,112,94,169,111,91,168,109,88,166,108,85,165,107,83,164,105,80,162,104,77,161,102,75,160,101,72,158,100,69,157,98,67,156,97,64,155,95,61,153,94,59,152,93,56,151,91,53,150,90,51,148,89,48,147,87,45,146,86,43,145,84,40,143,83,38,142,82,35,141,80,33,140,79,30,139,78,28,138,76,25,136,75,23,135,74,20,134,72,18,133,71,15,132,70,13,131,68,11,130,67,8,128,66,6,127,64,3,126,63,1,125,63,0,125]),\n linear_interpolation: true\n},\n{\n name: \"RdBu\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: true,\n c3g_string: \"rgb(103,0,31) 0%,rgb(105,0,31) 0.781%,rgb(111,2,32) 1.562%,rgb(117,4,33) 2.343%,rgb(123,6,34) 3.125%,rgb(129,8,35) 3.906%,rgb(135,10,36) 4.687%,rgb(141,12,37) 5.468%,rgb(147,14,38) 6.25%,rgb(153,16,39) 7.031%,rgb(159,17,39) 7.812%,rgb(165,19,40) 8.593%,rgb(170,21,41) 9.375%,rgb(176,23,42) 10.15%,rgb(180,28,45) 10.93%,rgb(183,34,47) 11.71%,rgb(185,39,50) 12.5%,rgb(188,45,53) 13.28%,rgb(191,51,55) 14.06%,rgb(194,56,58) 14.84%,rgb(197,62,61) 15.62%,rgb(200,68,63) 16.40%,rgb(202,73,66) 17.18%,rgb(205,79,69) 17.96%,rgb(208,85,71) 18.75%,rgb(211,90,74) 19.53%,rgb(214,96,77) 20.31%,rgb(216,101,81) 21.09%,rgb(218,107,85) 21.87%,rgb(221,112,89) 22.65%,rgb(223,118,94) 23.43%,rgb(226,123,98) 24.21%,rgb(228,129,102) 25%,rgb(230,134,106) 25.78%,rgb(233,140,110) 26.56%,rgb(235,145,114) 27.34%,rgb(237,150,119) 28.12%,rgb(240,156,123) 28.90%,rgb(242,161,127) 29.68%,rgb(244,166,132) 30.46%,rgb(244,170,137) 31.25%,rgb(245,175,143) 32.03%,rgb(246,179,148) 32.81%,rgb(247,183,153) 33.59%,rgb(247,187,159) 34.37%,rgb(248,192,164) 35.15%,rgb(249,196,170) 35.93%,rgb(249,200,175) 36.71%,rgb(250,204,181) 37.5%,rgb(251,209,186) 38.28%,rgb(252,213,191) 39.06%,rgb(252,217,197) 39.84%,rgb(252,220,201) 40.62%,rgb(252,222,205) 41.40%,rgb(251,224,209) 42.18%,rgb(251,227,212) 42.96%,rgb(250,229,216) 43.75%,rgb(250,231,220) 44.53%,rgb(249,233,224) 45.31%,rgb(249,235,228) 46.09%,rgb(248,238,231) 46.87%,rgb(248,240,235) 47.65%,rgb(247,242,239) 48.43%,rgb(247,244,243) 49.21%,rgb(247,247,247) 50%,rgb(244,245,246) 50.78%,rgb(241,244,245) 51.56%,rgb(238,242,245) 52.34%,rgb(235,241,244) 53.12%,rgb(232,239,244) 53.90%,rgb(229,238,243) 54.68%,rgb(226,237,243) 55.46%,rgb(223,235,242) 56.25%,rgb(220,234,242) 57.03%,rgb(217,232,241) 57.81%,rgb(214,231,240) 58.59%,rgb(211,229,240) 59.37%,rgb(207,228,239) 60.15%,rgb(202,225,238) 60.93%,rgb(197,223,236) 61.71%,rgb(192,220,235) 62.5%,rgb(187,218,233) 63.28%,rgb(182,215,232) 64.06%,rgb(177,213,231) 64.84%,rgb(172,210,229) 65.62%,rgb(167,208,228) 66.40%,rgb(162,205,226) 67.18%,rgb(157,203,225) 67.96%,rgb(152,200,223) 68.75%,rgb(147,198,222) 69.53%,rgb(142,194,220) 70.31%,rgb(136,190,218) 71.09%,rgb(129,186,216) 71.87%,rgb(123,182,214) 72.65%,rgb(117,178,212) 73.43%,rgb(111,174,210) 74.21%,rgb(104,171,207) 75%,rgb(98,167,205) 75.78%,rgb(92,163,203) 76.56%,rgb(86,159,201) 77.34%,rgb(80,155,199) 78.12%,rgb(73,151,197) 78.90%,rgb(67,147,195) 79.68%,rgb(64,143,193) 80.46%,rgb(61,140,191) 81.25%,rgb(59,136,189) 82.03%,rgb(56,133,187) 82.81%,rgb(53,129,186) 83.59%,rgb(51,126,184) 84.37%,rgb(48,122,182) 85.15%,rgb(45,119,180) 85.93%,rgb(43,115,178) 86.71%,rgb(40,111,177) 87.5%,rgb(37,108,175) 88.28%,rgb(35,104,173) 89.06%,rgb(32,101,170) 89.84%,rgb(30,96,164) 90.62%,rgb(28,92,159) 91.40%,rgb(25,88,153) 92.18%,rgb(23,84,147) 92.96%,rgb(21,79,141) 93.75%,rgb(19,75,135) 94.53%,rgb(17,71,129) 95.31%,rgb(14,67,123) 96.09%,rgb(12,62,117) 96.87%,rgb(10,58,111) 97.65%,rgb(8,54,105) 98.43%,rgb(6,50,99) 99.21%,rgb(5,48,97) 100%\",\n tex_buffer: new Uint8Array([103,0,31,105,0,31,111,2,32,117,4,33,123,6,34,129,8,35,135,10,36,141,12,37,147,14,38,153,16,39,159,17,39,165,19,40,170,21,41,176,23,42,180,28,45,183,34,47,185,39,50,188,45,53,191,51,55,194,56,58,197,62,61,200,68,63,202,73,66,205,79,69,208,85,71,211,90,74,214,96,77,216,101,81,218,107,85,221,112,89,223,118,94,226,123,98,228,129,102,230,134,106,233,140,110,235,145,114,237,150,119,240,156,123,242,161,127,244,166,132,244,170,137,245,175,143,246,179,148,247,183,153,247,187,159,248,192,164,249,196,170,249,200,175,250,204,181,251,209,186,252,213,191,252,217,197,252,220,201,252,222,205,251,224,209,251,227,212,250,229,216,250,231,220,249,233,224,249,235,228,248,238,231,248,240,235,247,242,239,247,244,243,247,247,247,244,245,246,241,244,245,238,242,245,235,241,244,232,239,244,229,238,243,226,237,243,223,235,242,220,234,242,217,232,241,214,231,240,211,229,240,207,228,239,202,225,238,197,223,236,192,220,235,187,218,233,182,215,232,177,213,231,172,210,229,167,208,228,162,205,226,157,203,225,152,200,223,147,198,222,142,194,220,136,190,218,129,186,216,123,182,214,117,178,212,111,174,210,104,171,207,98,167,205,92,163,203,86,159,201,80,155,199,73,151,197,67,147,195,64,143,193,61,140,191,59,136,189,56,133,187,53,129,186,51,126,184,48,122,182,45,119,180,43,115,178,40,111,177,37,108,175,35,104,173,32,101,170,30,96,164,28,92,159,25,88,153,23,84,147,21,79,141,19,75,135,17,71,129,14,67,123,12,62,117,10,58,111,8,54,105,6,50,99,5,48,97]),\n linear_interpolation: true\n},\n{\n name: \"RdGy\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: true,\n c3g_string: \"rgb(103,0,31) 0%,rgb(105,0,31) 0.781%,rgb(111,2,32) 1.562%,rgb(117,4,33) 2.343%,rgb(123,6,34) 3.125%,rgb(129,8,35) 3.906%,rgb(135,10,36) 4.687%,rgb(141,12,37) 5.468%,rgb(147,14,38) 6.25%,rgb(153,16,39) 7.031%,rgb(159,17,39) 7.812%,rgb(165,19,40) 8.593%,rgb(170,21,41) 9.375%,rgb(176,23,42) 10.15%,rgb(180,28,45) 10.93%,rgb(183,34,47) 11.71%,rgb(185,39,50) 12.5%,rgb(188,45,53) 13.28%,rgb(191,51,55) 14.06%,rgb(194,56,58) 14.84%,rgb(197,62,61) 15.62%,rgb(200,68,63) 16.40%,rgb(202,73,66) 17.18%,rgb(205,79,69) 17.96%,rgb(208,85,71) 18.75%,rgb(211,90,74) 19.53%,rgb(214,96,77) 20.31%,rgb(216,101,81) 21.09%,rgb(218,107,85) 21.87%,rgb(221,112,89) 22.65%,rgb(223,118,94) 23.43%,rgb(226,123,98) 24.21%,rgb(228,129,102) 25%,rgb(230,134,106) 25.78%,rgb(233,140,110) 26.56%,rgb(235,145,114) 27.34%,rgb(237,150,119) 28.12%,rgb(240,156,123) 28.90%,rgb(242,161,127) 29.68%,rgb(244,166,132) 30.46%,rgb(244,170,137) 31.25%,rgb(245,175,143) 32.03%,rgb(246,179,148) 32.81%,rgb(247,183,153) 33.59%,rgb(247,187,159) 34.37%,rgb(248,192,164) 35.15%,rgb(249,196,170) 35.93%,rgb(249,200,175) 36.71%,rgb(250,204,181) 37.5%,rgb(251,209,186) 38.28%,rgb(252,213,191) 39.06%,rgb(252,217,197) 39.84%,rgb(253,220,202) 40.62%,rgb(253,223,206) 41.40%,rgb(253,226,210) 42.18%,rgb(253,229,215) 42.96%,rgb(253,232,219) 43.75%,rgb(253,235,224) 44.53%,rgb(254,237,228) 45.31%,rgb(254,240,232) 46.09%,rgb(254,243,237) 46.87%,rgb(254,246,241) 47.65%,rgb(254,249,246) 48.43%,rgb(254,252,250) 49.21%,rgb(255,255,255) 50%,rgb(252,252,252) 50.78%,rgb(250,250,250) 51.56%,rgb(247,247,247) 52.34%,rgb(245,245,245) 53.12%,rgb(242,242,242) 53.90%,rgb(240,240,240) 54.68%,rgb(237,237,237) 55.46%,rgb(235,235,235) 56.25%,rgb(233,233,233) 57.03%,rgb(230,230,230) 57.81%,rgb(228,228,228) 58.59%,rgb(225,225,225) 59.37%,rgb(223,223,223) 60.15%,rgb(220,220,220) 60.93%,rgb(217,217,217) 61.71%,rgb(214,214,214) 62.5%,rgb(211,211,211) 63.28%,rgb(208,208,208) 64.06%,rgb(205,205,205) 64.84%,rgb(202,202,202) 65.62%,rgb(199,199,199) 66.40%,rgb(196,196,196) 67.18%,rgb(193,193,193) 67.96%,rgb(190,190,190) 68.75%,rgb(187,187,187) 69.53%,rgb(183,183,183) 70.31%,rgb(179,179,179) 71.09%,rgb(175,175,175) 71.87%,rgb(171,171,171) 72.65%,rgb(167,167,167) 73.43%,rgb(163,163,163) 74.21%,rgb(159,159,159) 75%,rgb(155,155,155) 75.78%,rgb(151,151,151) 76.56%,rgb(147,147,147) 77.34%,rgb(143,143,143) 78.12%,rgb(139,139,139) 78.90%,rgb(135,135,135) 79.68%,rgb(130,130,130) 80.46%,rgb(126,126,126) 81.25%,rgb(121,121,121) 82.03%,rgb(117,117,117) 82.81%,rgb(112,112,112) 83.59%,rgb(108,108,108) 84.37%,rgb(103,103,103) 85.15%,rgb(98,98,98) 85.93%,rgb(94,94,94) 86.71%,rgb(89,89,89) 87.5%,rgb(85,85,85) 88.28%,rgb(80,80,80) 89.06%,rgb(76,76,76) 89.84%,rgb(72,72,72) 90.62%,rgb(68,68,68) 91.40%,rgb(64,64,64) 92.18%,rgb(60,60,60) 92.96%,rgb(56,56,56) 93.75%,rgb(52,52,52) 94.53%,rgb(48,48,48) 95.31%,rgb(44,44,44) 96.09%,rgb(40,40,40) 96.87%,rgb(36,36,36) 97.65%,rgb(32,32,32) 98.43%,rgb(28,28,28) 99.21%,rgb(26,26,26) 100%\",\n tex_buffer: new Uint8Array([103,0,31,105,0,31,111,2,32,117,4,33,123,6,34,129,8,35,135,10,36,141,12,37,147,14,38,153,16,39,159,17,39,165,19,40,170,21,41,176,23,42,180,28,45,183,34,47,185,39,50,188,45,53,191,51,55,194,56,58,197,62,61,200,68,63,202,73,66,205,79,69,208,85,71,211,90,74,214,96,77,216,101,81,218,107,85,221,112,89,223,118,94,226,123,98,228,129,102,230,134,106,233,140,110,235,145,114,237,150,119,240,156,123,242,161,127,244,166,132,244,170,137,245,175,143,246,179,148,247,183,153,247,187,159,248,192,164,249,196,170,249,200,175,250,204,181,251,209,186,252,213,191,252,217,197,253,220,202,253,223,206,253,226,210,253,229,215,253,232,219,253,235,224,254,237,228,254,240,232,254,243,237,254,246,241,254,249,246,254,252,250,255,255,255,252,252,252,250,250,250,247,247,247,245,245,245,242,242,242,240,240,240,237,237,237,235,235,235,233,233,233,230,230,230,228,228,228,225,225,225,223,223,223,220,220,220,217,217,217,214,214,214,211,211,211,208,208,208,205,205,205,202,202,202,199,199,199,196,196,196,193,193,193,190,190,190,187,187,187,183,183,183,179,179,179,175,175,175,171,171,171,167,167,167,163,163,163,159,159,159,155,155,155,151,151,151,147,147,147,143,143,143,139,139,139,135,135,135,130,130,130,126,126,126,121,121,121,117,117,117,112,112,112,108,108,108,103,103,103,98,98,98,94,94,94,89,89,89,85,85,85,80,80,80,76,76,76,72,72,72,68,68,68,64,64,64,60,60,60,56,56,56,52,52,52,48,48,48,44,44,44,40,40,40,36,36,36,32,32,32,28,28,28,26,26,26]),\n linear_interpolation: true\n},\n{\n name: \"RdPu\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,247,243) 0%,rgb(254,246,242) 0.781%,rgb(254,244,240) 1.562%,rgb(254,243,239) 2.343%,rgb(254,241,238) 3.125%,rgb(254,240,236) 3.906%,rgb(254,239,235) 4.687%,rgb(254,237,233) 5.468%,rgb(254,236,232) 6.25%,rgb(253,234,231) 7.031%,rgb(253,233,229) 7.812%,rgb(253,231,228) 8.593%,rgb(253,230,227) 9.375%,rgb(253,228,225) 10.15%,rgb(253,227,224) 10.93%,rgb(253,225,222) 11.71%,rgb(253,224,221) 12.5%,rgb(252,222,219) 13.28%,rgb(252,221,218) 14.06%,rgb(252,219,216) 14.84%,rgb(252,217,214) 15.62%,rgb(252,216,212) 16.40%,rgb(252,214,210) 17.18%,rgb(252,212,208) 17.96%,rgb(252,211,207) 18.75%,rgb(252,209,205) 19.53%,rgb(252,207,203) 20.31%,rgb(252,205,201) 21.09%,rgb(252,204,199) 21.87%,rgb(252,202,197) 22.65%,rgb(252,200,196) 23.43%,rgb(252,199,194) 24.21%,rgb(252,197,192) 25%,rgb(251,195,191) 25.78%,rgb(251,192,190) 26.56%,rgb(251,190,190) 27.34%,rgb(251,188,189) 28.12%,rgb(251,185,188) 28.90%,rgb(251,183,188) 29.68%,rgb(251,180,187) 30.46%,rgb(251,178,186) 31.25%,rgb(250,176,185) 32.03%,rgb(250,173,185) 32.81%,rgb(250,171,184) 33.59%,rgb(250,168,183) 34.37%,rgb(250,166,183) 35.15%,rgb(250,164,182) 35.93%,rgb(250,161,181) 36.71%,rgb(250,159,181) 37.5%,rgb(249,155,179) 38.28%,rgb(249,152,178) 39.06%,rgb(249,149,177) 39.84%,rgb(249,145,176) 40.62%,rgb(249,142,174) 41.40%,rgb(248,138,173) 42.18%,rgb(248,135,172) 42.96%,rgb(248,131,171) 43.75%,rgb(248,128,169) 44.53%,rgb(248,124,168) 45.31%,rgb(247,121,167) 46.09%,rgb(247,117,166) 46.87%,rgb(247,114,164) 47.65%,rgb(247,110,163) 48.43%,rgb(247,107,162) 49.21%,rgb(247,104,161) 50%,rgb(245,100,160) 50.78%,rgb(243,97,159) 51.56%,rgb(242,94,159) 52.34%,rgb(240,90,158) 53.12%,rgb(238,87,157) 53.90%,rgb(237,84,157) 54.68%,rgb(235,81,156) 55.46%,rgb(233,77,155) 56.25%,rgb(232,74,155) 57.03%,rgb(230,71,154) 57.81%,rgb(228,67,154) 58.59%,rgb(227,64,153) 59.37%,rgb(225,61,152) 60.15%,rgb(224,58,152) 60.93%,rgb(222,54,151) 61.71%,rgb(220,51,150) 62.5%,rgb(217,48,149) 63.28%,rgb(214,45,147) 64.06%,rgb(211,41,146) 64.84%,rgb(208,38,144) 65.62%,rgb(205,35,142) 66.40%,rgb(202,32,141) 67.18%,rgb(199,29,139) 67.96%,rgb(196,25,138) 68.75%,rgb(193,22,136) 69.53%,rgb(191,19,135) 70.31%,rgb(188,16,133) 71.09%,rgb(185,13,131) 71.87%,rgb(182,9,130) 72.65%,rgb(179,6,128) 73.43%,rgb(176,3,127) 74.21%,rgb(173,1,125) 75%,rgb(169,1,125) 75.78%,rgb(166,1,125) 76.56%,rgb(163,1,124) 77.34%,rgb(160,1,124) 78.12%,rgb(156,1,123) 78.90%,rgb(153,1,123) 79.68%,rgb(150,1,122) 80.46%,rgb(146,1,122) 81.25%,rgb(143,1,121) 82.03%,rgb(140,1,121) 82.81%,rgb(137,1,121) 83.59%,rgb(133,1,120) 84.37%,rgb(130,1,120) 85.15%,rgb(127,1,119) 85.93%,rgb(124,1,119) 86.71%,rgb(120,0,118) 87.5%,rgb(117,0,117) 88.28%,rgb(114,0,117) 89.06%,rgb(111,0,116) 89.84%,rgb(108,0,115) 90.62%,rgb(105,0,114) 91.40%,rgb(102,0,113) 92.18%,rgb(99,0,112) 92.96%,rgb(96,0,112) 93.75%,rgb(93,0,111) 94.53%,rgb(89,0,110) 95.31%,rgb(86,0,109) 96.09%,rgb(83,0,108) 96.87%,rgb(80,0,108) 97.65%,rgb(77,0,107) 98.43%,rgb(74,0,106) 99.21%,rgb(73,0,106) 100%\",\n tex_buffer: new Uint8Array([255,247,243,254,246,242,254,244,240,254,243,239,254,241,238,254,240,236,254,239,235,254,237,233,254,236,232,253,234,231,253,233,229,253,231,228,253,230,227,253,228,225,253,227,224,253,225,222,253,224,221,252,222,219,252,221,218,252,219,216,252,217,214,252,216,212,252,214,210,252,212,208,252,211,207,252,209,205,252,207,203,252,205,201,252,204,199,252,202,197,252,200,196,252,199,194,252,197,192,251,195,191,251,192,190,251,190,190,251,188,189,251,185,188,251,183,188,251,180,187,251,178,186,250,176,185,250,173,185,250,171,184,250,168,183,250,166,183,250,164,182,250,161,181,250,159,181,249,155,179,249,152,178,249,149,177,249,145,176,249,142,174,248,138,173,248,135,172,248,131,171,248,128,169,248,124,168,247,121,167,247,117,166,247,114,164,247,110,163,247,107,162,247,104,161,245,100,160,243,97,159,242,94,159,240,90,158,238,87,157,237,84,157,235,81,156,233,77,155,232,74,155,230,71,154,228,67,154,227,64,153,225,61,152,224,58,152,222,54,151,220,51,150,217,48,149,214,45,147,211,41,146,208,38,144,205,35,142,202,32,141,199,29,139,196,25,138,193,22,136,191,19,135,188,16,133,185,13,131,182,9,130,179,6,128,176,3,127,173,1,125,169,1,125,166,1,125,163,1,124,160,1,124,156,1,123,153,1,123,150,1,122,146,1,122,143,1,121,140,1,121,137,1,121,133,1,120,130,1,120,127,1,119,124,1,119,120,0,118,117,0,117,114,0,117,111,0,116,108,0,115,105,0,114,102,0,113,99,0,112,96,0,112,93,0,111,89,0,110,86,0,109,83,0,108,80,0,108,77,0,107,74,0,106,73,0,106]),\n linear_interpolation: true\n},\n{\n name: \"RdYlBu\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: true,\n c3g_string: \"rgb(165,0,38) 0%,rgb(166,1,38) 0.781%,rgb(170,5,38) 1.562%,rgb(174,9,38) 2.343%,rgb(178,13,38) 3.125%,rgb(182,17,38) 3.906%,rgb(186,20,38) 4.687%,rgb(190,24,38) 5.468%,rgb(194,28,38) 6.25%,rgb(198,32,38) 7.031%,rgb(202,35,38) 7.812%,rgb(206,39,38) 8.593%,rgb(210,43,38) 9.375%,rgb(214,47,38) 10.15%,rgb(216,51,40) 10.93%,rgb(219,56,42) 11.71%,rgb(221,61,45) 12.5%,rgb(223,66,47) 13.28%,rgb(225,71,49) 14.06%,rgb(228,75,51) 14.84%,rgb(230,80,53) 15.62%,rgb(232,85,56) 16.40%,rgb(235,90,58) 17.18%,rgb(237,95,60) 17.96%,rgb(239,99,62) 18.75%,rgb(241,104,65) 19.53%,rgb(244,109,67) 20.31%,rgb(244,114,69) 21.09%,rgb(245,119,71) 21.87%,rgb(246,124,74) 22.65%,rgb(246,129,76) 23.43%,rgb(247,135,79) 24.21%,rgb(248,140,81) 25%,rgb(249,145,83) 25.78%,rgb(249,150,86) 26.56%,rgb(250,155,88) 27.34%,rgb(251,160,90) 28.12%,rgb(251,165,93) 28.90%,rgb(252,170,95) 29.68%,rgb(253,175,98) 30.46%,rgb(253,179,102) 31.25%,rgb(253,183,105) 32.03%,rgb(253,187,109) 32.81%,rgb(253,191,113) 33.59%,rgb(253,195,116) 34.37%,rgb(253,199,120) 35.15%,rgb(253,203,124) 35.93%,rgb(253,207,128) 36.71%,rgb(253,211,131) 37.5%,rgb(253,214,135) 38.28%,rgb(253,218,139) 39.06%,rgb(253,222,142) 39.84%,rgb(254,225,146) 40.62%,rgb(254,228,150) 41.40%,rgb(254,230,153) 42.18%,rgb(254,233,157) 42.96%,rgb(254,235,161) 43.75%,rgb(254,237,165) 44.53%,rgb(254,240,168) 45.31%,rgb(254,242,172) 46.09%,rgb(254,245,176) 46.87%,rgb(254,247,179) 47.65%,rgb(254,250,183) 48.43%,rgb(254,252,187) 49.21%,rgb(255,255,191) 50%,rgb(252,254,195) 50.78%,rgb(250,253,199) 51.56%,rgb(247,252,204) 52.34%,rgb(245,251,208) 53.12%,rgb(242,250,213) 53.90%,rgb(240,249,217) 54.68%,rgb(237,248,222) 55.46%,rgb(235,247,226) 56.25%,rgb(233,246,231) 57.03%,rgb(230,245,235) 57.81%,rgb(228,244,240) 58.59%,rgb(225,243,244) 59.37%,rgb(222,242,247) 60.15%,rgb(218,240,246) 60.93%,rgb(214,238,245) 61.71%,rgb(210,236,244) 62.5%,rgb(206,234,242) 63.28%,rgb(201,232,241) 64.06%,rgb(197,230,240) 64.84%,rgb(193,228,239) 65.62%,rgb(189,226,238) 66.40%,rgb(185,223,237) 67.18%,rgb(181,221,235) 67.96%,rgb(176,219,234) 68.75%,rgb(172,217,233) 69.53%,rgb(168,214,231) 70.31%,rgb(164,211,229) 71.09%,rgb(159,207,228) 71.87%,rgb(155,204,226) 72.65%,rgb(151,201,224) 73.43%,rgb(146,197,222) 74.21%,rgb(142,194,220) 75%,rgb(138,190,218) 75.78%,rgb(133,187,216) 76.56%,rgb(129,183,214) 77.34%,rgb(125,180,212) 78.12%,rgb(120,176,211) 78.90%,rgb(116,173,209) 79.68%,rgb(112,169,206) 80.46%,rgb(108,164,204) 81.25%,rgb(105,160,202) 82.03%,rgb(101,155,200) 82.81%,rgb(97,151,197) 83.59%,rgb(94,146,195) 84.37%,rgb(90,142,193) 85.15%,rgb(86,138,190) 85.93%,rgb(83,133,188) 86.71%,rgb(79,129,186) 87.5%,rgb(75,124,184) 88.28%,rgb(71,120,181) 89.06%,rgb(68,116,179) 89.84%,rgb(67,111,177) 90.62%,rgb(65,106,174) 91.40%,rgb(63,101,172) 92.18%,rgb(62,96,169) 92.96%,rgb(60,91,167) 93.75%,rgb(59,86,164) 94.53%,rgb(57,81,162) 95.31%,rgb(56,76,159) 96.09%,rgb(54,71,157) 96.87%,rgb(52,66,155) 97.65%,rgb(51,61,152) 98.43%,rgb(49,56,150) 99.21%,rgb(49,54,149) 100%\",\n tex_buffer: new Uint8Array([165,0,38,166,1,38,170,5,38,174,9,38,178,13,38,182,17,38,186,20,38,190,24,38,194,28,38,198,32,38,202,35,38,206,39,38,210,43,38,214,47,38,216,51,40,219,56,42,221,61,45,223,66,47,225,71,49,228,75,51,230,80,53,232,85,56,235,90,58,237,95,60,239,99,62,241,104,65,244,109,67,244,114,69,245,119,71,246,124,74,246,129,76,247,135,79,248,140,81,249,145,83,249,150,86,250,155,88,251,160,90,251,165,93,252,170,95,253,175,98,253,179,102,253,183,105,253,187,109,253,191,113,253,195,116,253,199,120,253,203,124,253,207,128,253,211,131,253,214,135,253,218,139,253,222,142,254,225,146,254,228,150,254,230,153,254,233,157,254,235,161,254,237,165,254,240,168,254,242,172,254,245,176,254,247,179,254,250,183,254,252,187,255,255,191,252,254,195,250,253,199,247,252,204,245,251,208,242,250,213,240,249,217,237,248,222,235,247,226,233,246,231,230,245,235,228,244,240,225,243,244,222,242,247,218,240,246,214,238,245,210,236,244,206,234,242,201,232,241,197,230,240,193,228,239,189,226,238,185,223,237,181,221,235,176,219,234,172,217,233,168,214,231,164,211,229,159,207,228,155,204,226,151,201,224,146,197,222,142,194,220,138,190,218,133,187,216,129,183,214,125,180,212,120,176,211,116,173,209,112,169,206,108,164,204,105,160,202,101,155,200,97,151,197,94,146,195,90,142,193,86,138,190,83,133,188,79,129,186,75,124,184,71,120,181,68,116,179,67,111,177,65,106,174,63,101,172,62,96,169,60,91,167,59,86,164,57,81,162,56,76,159,54,71,157,52,66,155,51,61,152,49,56,150,49,54,149]),\n linear_interpolation: true\n},\n{\n name: \"RdYlGn\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: true,\n c3g_string: \"rgb(165,0,38) 0%,rgb(166,1,38) 0.781%,rgb(170,5,38) 1.562%,rgb(174,9,38) 2.343%,rgb(178,13,38) 3.125%,rgb(182,17,38) 3.906%,rgb(186,20,38) 4.687%,rgb(190,24,38) 5.468%,rgb(194,28,38) 6.25%,rgb(198,32,38) 7.031%,rgb(202,35,38) 7.812%,rgb(206,39,38) 8.593%,rgb(210,43,38) 9.375%,rgb(214,47,38) 10.15%,rgb(216,51,40) 10.93%,rgb(219,56,42) 11.71%,rgb(221,61,45) 12.5%,rgb(223,66,47) 13.28%,rgb(225,71,49) 14.06%,rgb(228,75,51) 14.84%,rgb(230,80,53) 15.62%,rgb(232,85,56) 16.40%,rgb(235,90,58) 17.18%,rgb(237,95,60) 17.96%,rgb(239,99,62) 18.75%,rgb(241,104,65) 19.53%,rgb(244,109,67) 20.31%,rgb(244,114,69) 21.09%,rgb(245,119,71) 21.87%,rgb(246,124,74) 22.65%,rgb(246,129,76) 23.43%,rgb(247,135,79) 24.21%,rgb(248,140,81) 25%,rgb(249,145,83) 25.78%,rgb(249,150,86) 26.56%,rgb(250,155,88) 27.34%,rgb(251,160,90) 28.12%,rgb(251,165,93) 28.90%,rgb(252,170,95) 29.68%,rgb(253,175,98) 30.46%,rgb(253,179,101) 31.25%,rgb(253,183,104) 32.03%,rgb(253,187,108) 32.81%,rgb(253,191,111) 33.59%,rgb(253,195,114) 34.37%,rgb(253,199,118) 35.15%,rgb(253,203,121) 35.93%,rgb(253,207,124) 36.71%,rgb(253,211,128) 37.5%,rgb(253,214,131) 38.28%,rgb(253,218,134) 39.06%,rgb(253,222,138) 39.84%,rgb(254,225,141) 40.62%,rgb(254,228,145) 41.40%,rgb(254,230,150) 42.18%,rgb(254,233,154) 42.96%,rgb(254,235,158) 43.75%,rgb(254,237,162) 44.53%,rgb(254,240,166) 45.31%,rgb(254,242,170) 46.09%,rgb(254,245,174) 46.87%,rgb(254,247,178) 47.65%,rgb(254,250,182) 48.43%,rgb(254,252,186) 49.21%,rgb(255,255,191) 50%,rgb(252,253,186) 50.78%,rgb(249,252,182) 51.56%,rgb(246,251,178) 52.34%,rgb(243,249,174) 53.12%,rgb(240,248,170) 53.90%,rgb(237,247,166) 54.68%,rgb(234,246,162) 55.46%,rgb(231,244,158) 56.25%,rgb(228,243,154) 57.03%,rgb(225,242,150) 57.81%,rgb(222,241,145) 58.59%,rgb(219,239,141) 59.37%,rgb(215,238,138) 60.15%,rgb(211,236,135) 60.93%,rgb(207,235,133) 61.71%,rgb(203,233,130) 62.5%,rgb(199,231,127) 63.28%,rgb(195,229,125) 64.06%,rgb(191,228,122) 64.84%,rgb(187,226,120) 65.62%,rgb(183,224,117) 66.40%,rgb(179,222,114) 67.18%,rgb(175,221,112) 67.96%,rgb(171,219,109) 68.75%,rgb(167,217,107) 69.53%,rgb(162,215,105) 70.31%,rgb(157,213,105) 71.09%,rgb(152,211,104) 71.87%,rgb(147,209,104) 72.65%,rgb(142,206,103) 73.43%,rgb(137,204,102) 74.21%,rgb(132,202,102) 75%,rgb(127,200,101) 75.78%,rgb(122,198,101) 76.56%,rgb(117,195,100) 77.34%,rgb(112,193,100) 78.12%,rgb(107,191,99) 78.90%,rgb(102,189,99) 79.68%,rgb(96,186,97) 80.46%,rgb(90,183,96) 81.25%,rgb(84,180,94) 82.03%,rgb(78,177,93) 82.81%,rgb(72,174,91) 83.59%,rgb(66,171,90) 84.37%,rgb(60,168,88) 85.15%,rgb(54,165,87) 85.93%,rgb(48,163,85) 86.71%,rgb(42,160,84) 87.5%,rgb(36,157,82) 88.28%,rgb(30,154,81) 89.06%,rgb(25,151,79) 89.84%,rgb(23,147,77) 90.62%,rgb(21,143,75) 91.40%,rgb(19,139,73) 92.18%,rgb(17,136,71) 92.96%,rgb(15,132,69) 93.75%,rgb(13,128,67) 94.53%,rgb(11,124,65) 95.31%,rgb(9,121,63) 96.09%,rgb(7,117,61) 96.87%,rgb(5,113,59) 97.65%,rgb(3,109,57) 98.43%,rgb(1,105,55) 99.21%,rgb(0,104,55) 100%\",\n tex_buffer: new Uint8Array([165,0,38,166,1,38,170,5,38,174,9,38,178,13,38,182,17,38,186,20,38,190,24,38,194,28,38,198,32,38,202,35,38,206,39,38,210,43,38,214,47,38,216,51,40,219,56,42,221,61,45,223,66,47,225,71,49,228,75,51,230,80,53,232,85,56,235,90,58,237,95,60,239,99,62,241,104,65,244,109,67,244,114,69,245,119,71,246,124,74,246,129,76,247,135,79,248,140,81,249,145,83,249,150,86,250,155,88,251,160,90,251,165,93,252,170,95,253,175,98,253,179,101,253,183,104,253,187,108,253,191,111,253,195,114,253,199,118,253,203,121,253,207,124,253,211,128,253,214,131,253,218,134,253,222,138,254,225,141,254,228,145,254,230,150,254,233,154,254,235,158,254,237,162,254,240,166,254,242,170,254,245,174,254,247,178,254,250,182,254,252,186,255,255,191,252,253,186,249,252,182,246,251,178,243,249,174,240,248,170,237,247,166,234,246,162,231,244,158,228,243,154,225,242,150,222,241,145,219,239,141,215,238,138,211,236,135,207,235,133,203,233,130,199,231,127,195,229,125,191,228,122,187,226,120,183,224,117,179,222,114,175,221,112,171,219,109,167,217,107,162,215,105,157,213,105,152,211,104,147,209,104,142,206,103,137,204,102,132,202,102,127,200,101,122,198,101,117,195,100,112,193,100,107,191,99,102,189,99,96,186,97,90,183,96,84,180,94,78,177,93,72,174,91,66,171,90,60,168,88,54,165,87,48,163,85,42,160,84,36,157,82,30,154,81,25,151,79,23,147,77,21,143,75,19,139,73,17,136,71,15,132,69,13,128,67,11,124,65,9,121,63,7,117,61,5,113,59,3,109,57,1,105,55,0,104,55]),\n linear_interpolation: true\n},\n{\n name: \"Reds\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,245,240) 0%,rgb(254,244,239) 0.781%,rgb(254,243,237) 1.562%,rgb(254,241,235) 2.343%,rgb(254,240,233) 3.125%,rgb(254,239,231) 3.906%,rgb(254,237,229) 4.687%,rgb(254,236,227) 5.468%,rgb(254,235,225) 6.25%,rgb(254,233,223) 7.031%,rgb(254,232,222) 7.812%,rgb(254,231,220) 8.593%,rgb(254,229,218) 9.375%,rgb(254,228,216) 10.15%,rgb(254,227,214) 10.93%,rgb(254,225,212) 11.71%,rgb(254,224,210) 12.5%,rgb(253,222,208) 13.28%,rgb(253,220,204) 14.06%,rgb(253,217,201) 14.84%,rgb(253,215,198) 15.62%,rgb(253,213,195) 16.40%,rgb(253,210,192) 17.18%,rgb(253,208,189) 17.96%,rgb(253,206,186) 18.75%,rgb(252,203,183) 19.53%,rgb(252,201,180) 20.31%,rgb(252,199,177) 21.09%,rgb(252,196,174) 21.87%,rgb(252,194,171) 22.65%,rgb(252,192,167) 23.43%,rgb(252,189,164) 24.21%,rgb(252,187,161) 25%,rgb(252,185,158) 25.78%,rgb(252,182,155) 26.56%,rgb(252,179,152) 27.34%,rgb(252,177,149) 28.12%,rgb(252,174,146) 28.90%,rgb(252,172,143) 29.68%,rgb(252,169,141) 30.46%,rgb(252,166,138) 31.25%,rgb(252,164,135) 32.03%,rgb(252,161,132) 32.81%,rgb(252,159,129) 33.59%,rgb(252,156,126) 34.37%,rgb(252,154,123) 35.15%,rgb(252,151,120) 35.93%,rgb(252,148,117) 36.71%,rgb(252,146,114) 37.5%,rgb(251,143,111) 38.28%,rgb(251,141,109) 39.06%,rgb(251,138,106) 39.84%,rgb(251,136,104) 40.62%,rgb(251,133,101) 41.40%,rgb(251,131,99) 42.18%,rgb(251,128,96) 42.96%,rgb(251,126,94) 43.75%,rgb(251,123,91) 44.53%,rgb(251,121,89) 45.31%,rgb(251,118,86) 46.09%,rgb(251,116,84) 46.87%,rgb(251,113,81) 47.65%,rgb(251,111,79) 48.43%,rgb(251,108,76) 49.21%,rgb(251,106,74) 50%,rgb(250,103,72) 50.78%,rgb(249,100,70) 51.56%,rgb(248,97,68) 52.34%,rgb(247,94,66) 53.12%,rgb(247,91,64) 53.90%,rgb(246,88,62) 54.68%,rgb(245,85,60) 55.46%,rgb(244,82,58) 56.25%,rgb(244,79,56) 57.03%,rgb(243,76,55) 57.81%,rgb(242,73,53) 58.59%,rgb(241,70,51) 59.37%,rgb(241,67,49) 60.15%,rgb(240,64,47) 60.93%,rgb(239,61,45) 61.71%,rgb(238,58,43) 62.5%,rgb(236,56,42) 63.28%,rgb(234,54,41) 64.06%,rgb(231,52,41) 64.84%,rgb(229,49,40) 65.62%,rgb(227,47,39) 66.40%,rgb(225,45,38) 67.18%,rgb(222,43,37) 67.96%,rgb(220,41,36) 68.75%,rgb(218,38,35) 69.53%,rgb(216,36,34) 70.31%,rgb(213,34,33) 71.09%,rgb(211,32,32) 71.87%,rgb(209,30,31) 72.65%,rgb(206,27,30) 73.43%,rgb(204,25,29) 74.21%,rgb(202,23,28) 75%,rgb(200,23,28) 75.78%,rgb(197,22,27) 76.56%,rgb(195,22,27) 77.34%,rgb(192,21,26) 78.12%,rgb(190,21,26) 78.90%,rgb(188,20,25) 79.68%,rgb(185,19,25) 80.46%,rgb(183,19,24) 81.25%,rgb(180,18,24) 82.03%,rgb(178,18,23) 82.81%,rgb(176,17,23) 83.59%,rgb(173,17,22) 84.37%,rgb(171,16,22) 85.15%,rgb(168,15,21) 85.93%,rgb(166,15,21) 86.71%,rgb(163,14,20) 87.5%,rgb(159,13,20) 88.28%,rgb(155,12,19) 89.06%,rgb(151,11,19) 89.84%,rgb(147,10,18) 90.62%,rgb(144,9,18) 91.40%,rgb(140,8,17) 92.18%,rgb(136,8,17) 92.96%,rgb(132,7,16) 93.75%,rgb(128,6,16) 94.53%,rgb(124,5,15) 95.31%,rgb(120,4,15) 96.09%,rgb(116,3,14) 96.87%,rgb(112,2,14) 97.65%,rgb(108,1,13) 98.43%,rgb(104,0,13) 99.21%,rgb(103,0,12) 100%\",\n tex_buffer: new Uint8Array([255,245,240,254,244,239,254,243,237,254,241,235,254,240,233,254,239,231,254,237,229,254,236,227,254,235,225,254,233,223,254,232,222,254,231,220,254,229,218,254,228,216,254,227,214,254,225,212,254,224,210,253,222,208,253,220,204,253,217,201,253,215,198,253,213,195,253,210,192,253,208,189,253,206,186,252,203,183,252,201,180,252,199,177,252,196,174,252,194,171,252,192,167,252,189,164,252,187,161,252,185,158,252,182,155,252,179,152,252,177,149,252,174,146,252,172,143,252,169,141,252,166,138,252,164,135,252,161,132,252,159,129,252,156,126,252,154,123,252,151,120,252,148,117,252,146,114,251,143,111,251,141,109,251,138,106,251,136,104,251,133,101,251,131,99,251,128,96,251,126,94,251,123,91,251,121,89,251,118,86,251,116,84,251,113,81,251,111,79,251,108,76,251,106,74,250,103,72,249,100,70,248,97,68,247,94,66,247,91,64,246,88,62,245,85,60,244,82,58,244,79,56,243,76,55,242,73,53,241,70,51,241,67,49,240,64,47,239,61,45,238,58,43,236,56,42,234,54,41,231,52,41,229,49,40,227,47,39,225,45,38,222,43,37,220,41,36,218,38,35,216,36,34,213,34,33,211,32,32,209,30,31,206,27,30,204,25,29,202,23,28,200,23,28,197,22,27,195,22,27,192,21,26,190,21,26,188,20,25,185,19,25,183,19,24,180,18,24,178,18,23,176,17,23,173,17,22,171,16,22,168,15,21,166,15,21,163,14,20,159,13,20,155,12,19,151,11,19,147,10,18,144,9,18,140,8,17,136,8,17,132,7,16,128,6,16,124,5,15,120,4,15,116,3,14,112,2,14,108,1,13,104,0,13,103,0,12]),\n linear_interpolation: true\n},\n{\n name: \"Set1\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 9],\n symmetric: false,\n c3g_string: \"rgb(228,26,28) 0%,rgb(228,26,28) 11.11%,rgb(55,126,184) 11.11%,rgb(55,126,184) 22.22%,rgb(77,175,74) 22.22%,rgb(77,175,74) 33.33%,rgb(152,78,163) 33.33%,rgb(152,78,163) 44.44%,rgb(255,127,0) 44.44%,rgb(255,127,0) 55.55%,rgb(255,255,51) 55.55%,rgb(255,255,51) 66.66%,rgb(166,86,40) 66.66%,rgb(166,86,40) 77.77%,rgb(247,129,191) 77.77%,rgb(247,129,191) 88.88%,rgb(153,153,153) 88.88%,rgb(153,153,153) 100%\",\n tex_buffer: new Uint8Array([228,26,28,55,126,184,77,175,74,152,78,163,255,127,0,255,255,51,166,86,40,247,129,191,153,153,153]),\n linear_interpolation: false\n},\n{\n name: \"Set2\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 8],\n symmetric: false,\n c3g_string: \"rgb(102,194,165) 0%,rgb(102,194,165) 12.5%,rgb(252,141,98) 12.5%,rgb(252,141,98) 25%,rgb(141,160,203) 25%,rgb(141,160,203) 37.5%,rgb(231,138,195) 37.5%,rgb(231,138,195) 50%,rgb(166,216,84) 50%,rgb(166,216,84) 62.5%,rgb(255,217,47) 62.5%,rgb(255,217,47) 75%,rgb(229,196,148) 75%,rgb(229,196,148) 87.5%,rgb(179,179,179) 87.5%,rgb(179,179,179) 100%\",\n tex_buffer: new Uint8Array([102,194,165,252,141,98,141,160,203,231,138,195,166,216,84,255,217,47,229,196,148,179,179,179]),\n linear_interpolation: false\n},\n{\n name: \"Set3\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 12],\n symmetric: false,\n c3g_string: \"rgb(141,211,199) 0%,rgb(141,211,199) 8.333%,rgb(255,255,179) 8.333%,rgb(255,255,179) 16.66%,rgb(190,186,218) 16.66%,rgb(190,186,218) 25%,rgb(251,128,114) 25%,rgb(251,128,114) 33.33%,rgb(128,177,211) 33.33%,rgb(128,177,211) 41.66%,rgb(253,180,98) 41.66%,rgb(253,180,98) 50%,rgb(179,222,105) 50%,rgb(179,222,105) 58.33%,rgb(252,205,229) 58.33%,rgb(252,205,229) 66.66%,rgb(217,217,217) 66.66%,rgb(217,217,217) 75%,rgb(188,128,189) 75%,rgb(188,128,189) 83.33%,rgb(204,235,197) 83.33%,rgb(204,235,197) 91.66%,rgb(255,237,111) 91.66%,rgb(255,237,111) 100%\",\n tex_buffer: new Uint8Array([141,211,199,255,255,179,190,186,218,251,128,114,128,177,211,253,180,98,179,222,105,252,205,229,217,217,217,188,128,189,204,235,197,255,237,111]),\n linear_interpolation: false\n},\n{\n name: \"Spectral\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: true,\n c3g_string: \"rgb(158,1,66) 0%,rgb(160,3,66) 0.781%,rgb(164,8,67) 1.562%,rgb(168,13,68) 2.343%,rgb(173,17,69) 3.125%,rgb(177,22,70) 3.906%,rgb(181,27,71) 4.687%,rgb(186,32,72) 5.468%,rgb(190,37,73) 6.25%,rgb(194,41,74) 7.031%,rgb(199,46,75) 7.812%,rgb(203,51,76) 8.593%,rgb(207,56,77) 9.375%,rgb(212,61,78) 10.15%,rgb(214,64,78) 10.93%,rgb(217,68,77) 11.71%,rgb(219,72,76) 12.5%,rgb(222,76,75) 13.28%,rgb(224,79,74) 14.06%,rgb(227,83,73) 14.84%,rgb(229,87,72) 15.62%,rgb(232,90,71) 16.40%,rgb(234,94,70) 17.18%,rgb(236,98,69) 17.96%,rgb(239,101,68) 18.75%,rgb(241,105,67) 19.53%,rgb(244,109,67) 20.31%,rgb(244,114,69) 21.09%,rgb(245,119,71) 21.87%,rgb(246,124,74) 22.65%,rgb(246,129,76) 23.43%,rgb(247,135,79) 24.21%,rgb(248,140,81) 25%,rgb(249,145,83) 25.78%,rgb(249,150,86) 26.56%,rgb(250,155,88) 27.34%,rgb(251,160,90) 28.12%,rgb(251,165,93) 28.90%,rgb(252,170,95) 29.68%,rgb(253,175,98) 30.46%,rgb(253,179,101) 31.25%,rgb(253,183,104) 32.03%,rgb(253,187,108) 32.81%,rgb(253,191,111) 33.59%,rgb(253,195,114) 34.37%,rgb(253,199,118) 35.15%,rgb(253,203,121) 35.93%,rgb(253,207,124) 36.71%,rgb(253,211,128) 37.5%,rgb(253,214,131) 38.28%,rgb(253,218,134) 39.06%,rgb(253,222,138) 39.84%,rgb(254,225,141) 40.62%,rgb(254,228,145) 41.40%,rgb(254,230,150) 42.18%,rgb(254,233,154) 42.96%,rgb(254,235,158) 43.75%,rgb(254,237,162) 44.53%,rgb(254,240,166) 45.31%,rgb(254,242,170) 46.09%,rgb(254,245,174) 46.87%,rgb(254,247,178) 47.65%,rgb(254,250,182) 48.43%,rgb(254,252,186) 49.21%,rgb(255,255,191) 50%,rgb(253,254,187) 50.78%,rgb(251,253,184) 51.56%,rgb(249,252,181) 52.34%,rgb(247,251,178) 53.12%,rgb(245,251,175) 53.90%,rgb(243,250,172) 54.68%,rgb(241,249,169) 55.46%,rgb(239,248,166) 56.25%,rgb(237,247,163) 57.03%,rgb(235,247,160) 57.81%,rgb(233,246,157) 58.59%,rgb(231,245,154) 59.37%,rgb(228,244,152) 60.15%,rgb(223,242,153) 60.93%,rgb(219,240,154) 61.71%,rgb(214,238,155) 62.5%,rgb(210,236,156) 63.28%,rgb(205,234,157) 64.06%,rgb(200,233,157) 64.84%,rgb(196,231,158) 65.62%,rgb(191,229,159) 66.40%,rgb(186,227,160) 67.18%,rgb(182,225,161) 67.96%,rgb(177,223,162) 68.75%,rgb(172,221,163) 69.53%,rgb(167,219,164) 70.31%,rgb(162,217,164) 71.09%,rgb(156,215,164) 71.87%,rgb(151,213,164) 72.65%,rgb(146,211,164) 73.43%,rgb(140,209,164) 74.21%,rgb(135,206,164) 75%,rgb(129,204,164) 75.78%,rgb(124,202,164) 76.56%,rgb(118,200,164) 77.34%,rgb(113,198,164) 78.12%,rgb(107,196,164) 78.90%,rgb(102,194,164) 79.68%,rgb(98,189,166) 80.46%,rgb(94,185,168) 81.25%,rgb(90,180,170) 82.03%,rgb(86,176,172) 82.81%,rgb(81,171,174) 83.59%,rgb(77,167,176) 84.37%,rgb(73,162,178) 85.15%,rgb(69,157,179) 85.93%,rgb(65,153,181) 86.71%,rgb(61,148,183) 87.5%,rgb(57,144,185) 88.28%,rgb(53,139,187) 89.06%,rgb(50,135,188) 89.84%,rgb(54,130,186) 90.62%,rgb(57,126,184) 91.40%,rgb(61,121,182) 92.18%,rgb(64,117,180) 92.96%,rgb(68,112,177) 93.75%,rgb(71,108,175) 94.53%,rgb(74,103,173) 95.31%,rgb(78,99,171) 96.09%,rgb(81,94,169) 96.87%,rgb(85,90,167) 97.65%,rgb(88,85,165) 98.43%,rgb(92,81,163) 99.21%,rgb(94,79,162) 100%\",\n tex_buffer: new Uint8Array([158,1,66,160,3,66,164,8,67,168,13,68,173,17,69,177,22,70,181,27,71,186,32,72,190,37,73,194,41,74,199,46,75,203,51,76,207,56,77,212,61,78,214,64,78,217,68,77,219,72,76,222,76,75,224,79,74,227,83,73,229,87,72,232,90,71,234,94,70,236,98,69,239,101,68,241,105,67,244,109,67,244,114,69,245,119,71,246,124,74,246,129,76,247,135,79,248,140,81,249,145,83,249,150,86,250,155,88,251,160,90,251,165,93,252,170,95,253,175,98,253,179,101,253,183,104,253,187,108,253,191,111,253,195,114,253,199,118,253,203,121,253,207,124,253,211,128,253,214,131,253,218,134,253,222,138,254,225,141,254,228,145,254,230,150,254,233,154,254,235,158,254,237,162,254,240,166,254,242,170,254,245,174,254,247,178,254,250,182,254,252,186,255,255,191,253,254,187,251,253,184,249,252,181,247,251,178,245,251,175,243,250,172,241,249,169,239,248,166,237,247,163,235,247,160,233,246,157,231,245,154,228,244,152,223,242,153,219,240,154,214,238,155,210,236,156,205,234,157,200,233,157,196,231,158,191,229,159,186,227,160,182,225,161,177,223,162,172,221,163,167,219,164,162,217,164,156,215,164,151,213,164,146,211,164,140,209,164,135,206,164,129,204,164,124,202,164,118,200,164,113,198,164,107,196,164,102,194,164,98,189,166,94,185,168,90,180,170,86,176,172,81,171,174,77,167,176,73,162,178,69,157,179,65,153,181,61,148,183,57,144,185,53,139,187,50,135,188,54,130,186,57,126,184,61,121,182,64,117,180,68,112,177,71,108,175,74,103,173,78,99,171,81,94,169,85,90,167,88,85,165,92,81,163,94,79,162]),\n linear_interpolation: true\n},\n{\n name: \"Wistia\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(228,255,122) 0%,rgb(228,254,120) 0.781%,rgb(229,253,117) 1.562%,rgb(230,253,114) 2.343%,rgb(230,252,111) 3.125%,rgb(231,251,108) 3.906%,rgb(232,251,105) 4.687%,rgb(233,250,102) 5.468%,rgb(234,249,99) 6.25%,rgb(235,248,96) 7.031%,rgb(236,248,93) 7.812%,rgb(236,247,90) 8.593%,rgb(237,246,87) 9.375%,rgb(238,245,84) 10.15%,rgb(239,245,81) 10.93%,rgb(240,244,78) 11.71%,rgb(241,243,75) 12.5%,rgb(242,243,72) 13.28%,rgb(242,242,69) 14.06%,rgb(243,241,66) 14.84%,rgb(244,240,63) 15.62%,rgb(245,240,60) 16.40%,rgb(246,239,56) 17.18%,rgb(247,238,53) 17.96%,rgb(247,237,50) 18.75%,rgb(248,237,47) 19.53%,rgb(249,236,44) 20.31%,rgb(250,235,41) 21.09%,rgb(251,235,38) 21.87%,rgb(252,234,35) 22.65%,rgb(253,233,32) 23.43%,rgb(253,232,29) 24.21%,rgb(254,232,26) 25%,rgb(255,230,25) 25.78%,rgb(255,229,24) 26.56%,rgb(255,228,23) 27.34%,rgb(255,226,22) 28.12%,rgb(255,225,22) 28.90%,rgb(255,224,21) 29.68%,rgb(255,222,20) 30.46%,rgb(255,221,19) 31.25%,rgb(255,220,18) 32.03%,rgb(255,218,18) 32.81%,rgb(255,217,17) 33.59%,rgb(255,216,16) 34.37%,rgb(255,214,15) 35.15%,rgb(255,213,14) 35.93%,rgb(255,212,13) 36.71%,rgb(255,210,13) 37.5%,rgb(255,209,12) 38.28%,rgb(255,207,11) 39.06%,rgb(255,206,10) 39.84%,rgb(255,205,9) 40.62%,rgb(255,203,9) 41.40%,rgb(255,202,8) 42.18%,rgb(255,201,7) 42.96%,rgb(255,199,6) 43.75%,rgb(255,198,5) 44.53%,rgb(255,197,4) 45.31%,rgb(255,195,4) 46.09%,rgb(255,194,3) 46.87%,rgb(255,193,2) 47.65%,rgb(255,191,1) 48.43%,rgb(255,190,0) 49.21%,rgb(255,189,0) 50%,rgb(255,188,0) 50.78%,rgb(255,187,0) 51.56%,rgb(255,186,0) 52.34%,rgb(255,185,0) 53.12%,rgb(255,184,0) 53.90%,rgb(255,183,0) 54.68%,rgb(255,182,0) 55.46%,rgb(255,181,0) 56.25%,rgb(255,180,0) 57.03%,rgb(255,179,0) 57.81%,rgb(255,178,0) 58.59%,rgb(255,178,0) 59.37%,rgb(255,178,0) 59.37%,rgb(255,177,0) 60.15%,rgb(255,176,0) 60.93%,rgb(255,175,0) 61.71%,rgb(255,174,0) 62.5%,rgb(255,173,0) 63.28%,rgb(255,172,0) 64.06%,rgb(255,171,0) 64.84%,rgb(255,170,0) 65.62%,rgb(255,169,0) 66.40%,rgb(255,168,0) 67.18%,rgb(255,167,0) 67.96%,rgb(255,167,0) 68.75%,rgb(255,167,0) 68.75%,rgb(255,166,0) 69.53%,rgb(255,165,0) 70.31%,rgb(255,164,0) 71.09%,rgb(255,163,0) 71.87%,rgb(255,162,0) 72.65%,rgb(255,161,0) 73.43%,rgb(255,160,0) 74.21%,rgb(254,159,0) 75%,rgb(254,158,0) 75.78%,rgb(254,157,0) 76.56%,rgb(254,156,0) 77.34%,rgb(254,155,0) 78.12%,rgb(254,154,0) 78.90%,rgb(254,153,0) 79.68%,rgb(254,152,0) 80.46%,rgb(254,151,0) 81.25%,rgb(254,150,0) 82.03%,rgb(254,149,0) 82.81%,rgb(253,148,0) 83.59%,rgb(253,147,0) 84.37%,rgb(253,146,0) 85.15%,rgb(253,145,0) 85.93%,rgb(253,144,0) 86.71%,rgb(253,143,0) 87.5%,rgb(253,142,0) 88.28%,rgb(253,141,0) 89.06%,rgb(253,139,0) 89.84%,rgb(253,138,0) 90.62%,rgb(252,137,0) 91.40%,rgb(252,136,0) 92.18%,rgb(252,135,0) 92.96%,rgb(252,134,0) 93.75%,rgb(252,133,0) 94.53%,rgb(252,132,0) 95.31%,rgb(252,131,0) 96.09%,rgb(252,130,0) 96.87%,rgb(252,129,0) 97.65%,rgb(252,128,0) 98.43%,rgb(252,127,0) 99.21%,rgb(252,127,0) 100%\",\n tex_buffer: new Uint8Array([228,255,122,228,254,120,229,253,117,230,253,114,230,252,111,231,251,108,232,251,105,233,250,102,234,249,99,235,248,96,236,248,93,236,247,90,237,246,87,238,245,84,239,245,81,240,244,78,241,243,75,242,243,72,242,242,69,243,241,66,244,240,63,245,240,60,246,239,56,247,238,53,247,237,50,248,237,47,249,236,44,250,235,41,251,235,38,252,234,35,253,233,32,253,232,29,254,232,26,255,230,25,255,229,24,255,228,23,255,226,22,255,225,22,255,224,21,255,222,20,255,221,19,255,220,18,255,218,18,255,217,17,255,216,16,255,214,15,255,213,14,255,212,13,255,210,13,255,209,12,255,207,11,255,206,10,255,205,9,255,203,9,255,202,8,255,201,7,255,199,6,255,198,5,255,197,4,255,195,4,255,194,3,255,193,2,255,191,1,255,190,0,255,189,0,255,188,0,255,187,0,255,186,0,255,185,0,255,184,0,255,183,0,255,182,0,255,181,0,255,180,0,255,179,0,255,178,0,255,178,0,255,177,0,255,176,0,255,175,0,255,174,0,255,173,0,255,172,0,255,171,0,255,170,0,255,169,0,255,168,0,255,167,0,255,167,0,255,166,0,255,165,0,255,164,0,255,163,0,255,162,0,255,161,0,255,160,0,254,159,0,254,158,0,254,157,0,254,156,0,254,155,0,254,154,0,254,153,0,254,152,0,254,151,0,254,150,0,254,149,0,253,148,0,253,147,0,253,146,0,253,145,0,253,144,0,253,143,0,253,142,0,253,141,0,253,139,0,253,138,0,252,137,0,252,136,0,252,135,0,252,134,0,252,133,0,252,132,0,252,131,0,252,130,0,252,129,0,252,128,0,252,127,0,252,127,0]),\n linear_interpolation: true\n},\n{\n name: \"YlGn\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,255,229) 0%,rgb(254,254,227) 0.781%,rgb(254,254,224) 1.562%,rgb(253,254,222) 2.343%,rgb(253,254,219) 3.125%,rgb(252,254,216) 3.906%,rgb(252,253,213) 4.687%,rgb(251,253,210) 5.468%,rgb(251,253,208) 6.25%,rgb(250,253,205) 7.031%,rgb(250,253,202) 7.812%,rgb(249,253,199) 8.593%,rgb(249,252,197) 9.375%,rgb(248,252,194) 10.15%,rgb(248,252,191) 10.93%,rgb(247,252,188) 11.71%,rgb(247,252,186) 12.5%,rgb(245,251,184) 13.28%,rgb(243,250,182) 14.06%,rgb(242,250,181) 14.84%,rgb(240,249,179) 15.62%,rgb(238,248,178) 16.40%,rgb(236,247,177) 17.18%,rgb(234,246,175) 17.96%,rgb(232,246,174) 18.75%,rgb(230,245,173) 19.53%,rgb(228,244,171) 20.31%,rgb(226,243,170) 21.09%,rgb(225,243,168) 21.87%,rgb(223,242,167) 22.65%,rgb(221,241,166) 23.43%,rgb(219,240,164) 24.21%,rgb(217,240,163) 25%,rgb(214,239,162) 25.78%,rgb(212,237,160) 26.56%,rgb(209,236,159) 27.34%,rgb(206,235,158) 28.12%,rgb(203,234,156) 28.90%,rgb(201,233,155) 29.68%,rgb(198,231,154) 30.46%,rgb(195,230,152) 31.25%,rgb(192,229,151) 32.03%,rgb(189,228,150) 32.81%,rgb(187,227,148) 33.59%,rgb(184,225,147) 34.37%,rgb(181,224,146) 35.15%,rgb(178,223,144) 35.93%,rgb(176,222,143) 36.71%,rgb(173,221,142) 37.5%,rgb(170,219,140) 38.28%,rgb(166,218,139) 39.06%,rgb(163,216,138) 39.84%,rgb(160,215,136) 40.62%,rgb(156,213,135) 41.40%,rgb(153,212,134) 42.18%,rgb(150,211,132) 42.96%,rgb(146,209,131) 43.75%,rgb(143,208,130) 44.53%,rgb(140,206,128) 45.31%,rgb(136,205,127) 46.09%,rgb(133,203,126) 46.87%,rgb(130,202,124) 47.65%,rgb(126,200,123) 48.43%,rgb(123,199,122) 49.21%,rgb(120,198,121) 50%,rgb(116,196,119) 50.78%,rgb(113,194,117) 51.56%,rgb(109,192,115) 52.34%,rgb(106,191,113) 53.12%,rgb(102,189,112) 53.90%,rgb(99,187,110) 54.68%,rgb(95,186,108) 55.46%,rgb(92,184,106) 56.25%,rgb(88,182,105) 57.03%,rgb(85,180,103) 57.81%,rgb(81,179,101) 58.59%,rgb(78,177,99) 59.37%,rgb(74,175,98) 60.15%,rgb(71,174,96) 60.93%,rgb(68,172,94) 61.71%,rgb(64,170,92) 62.5%,rgb(62,168,91) 63.28%,rgb(60,165,89) 64.06%,rgb(59,163,87) 64.84%,rgb(57,160,86) 65.62%,rgb(55,158,84) 66.40%,rgb(53,155,82) 67.18%,rgb(51,153,81) 67.96%,rgb(49,151,79) 68.75%,rgb(47,148,78) 69.53%,rgb(45,146,76) 70.31%,rgb(43,143,74) 71.09%,rgb(42,141,73) 71.87%,rgb(40,138,71) 72.65%,rgb(38,136,69) 73.43%,rgb(36,133,68) 74.21%,rgb(34,131,66) 75%,rgb(32,129,66) 75.78%,rgb(30,128,65) 76.56%,rgb(27,126,64) 77.34%,rgb(25,124,63) 78.12%,rgb(23,122,63) 78.90%,rgb(21,120,62) 79.68%,rgb(19,119,61) 80.46%,rgb(16,117,60) 81.25%,rgb(14,115,60) 82.03%,rgb(12,113,59) 82.81%,rgb(10,112,58) 83.59%,rgb(7,110,57) 84.37%,rgb(5,108,56) 85.15%,rgb(3,106,56) 85.93%,rgb(1,105,55) 86.71%,rgb(0,103,54) 87.5%,rgb(0,100,53) 88.28%,rgb(0,98,52) 89.06%,rgb(0,96,52) 89.84%,rgb(0,94,51) 90.62%,rgb(0,92,50) 91.40%,rgb(0,89,49) 92.18%,rgb(0,87,48) 92.96%,rgb(0,85,47) 93.75%,rgb(0,83,46) 94.53%,rgb(0,81,45) 95.31%,rgb(0,78,44) 96.09%,rgb(0,76,44) 96.87%,rgb(0,74,43) 97.65%,rgb(0,72,42) 98.43%,rgb(0,70,41) 99.21%,rgb(0,69,41) 100%\",\n tex_buffer: new Uint8Array([255,255,229,254,254,227,254,254,224,253,254,222,253,254,219,252,254,216,252,253,213,251,253,210,251,253,208,250,253,205,250,253,202,249,253,199,249,252,197,248,252,194,248,252,191,247,252,188,247,252,186,245,251,184,243,250,182,242,250,181,240,249,179,238,248,178,236,247,177,234,246,175,232,246,174,230,245,173,228,244,171,226,243,170,225,243,168,223,242,167,221,241,166,219,240,164,217,240,163,214,239,162,212,237,160,209,236,159,206,235,158,203,234,156,201,233,155,198,231,154,195,230,152,192,229,151,189,228,150,187,227,148,184,225,147,181,224,146,178,223,144,176,222,143,173,221,142,170,219,140,166,218,139,163,216,138,160,215,136,156,213,135,153,212,134,150,211,132,146,209,131,143,208,130,140,206,128,136,205,127,133,203,126,130,202,124,126,200,123,123,199,122,120,198,121,116,196,119,113,194,117,109,192,115,106,191,113,102,189,112,99,187,110,95,186,108,92,184,106,88,182,105,85,180,103,81,179,101,78,177,99,74,175,98,71,174,96,68,172,94,64,170,92,62,168,91,60,165,89,59,163,87,57,160,86,55,158,84,53,155,82,51,153,81,49,151,79,47,148,78,45,146,76,43,143,74,42,141,73,40,138,71,38,136,69,36,133,68,34,131,66,32,129,66,30,128,65,27,126,64,25,124,63,23,122,63,21,120,62,19,119,61,16,117,60,14,115,60,12,113,59,10,112,58,7,110,57,5,108,56,3,106,56,1,105,55,0,103,54,0,100,53,0,98,52,0,96,52,0,94,51,0,92,50,0,89,49,0,87,48,0,85,47,0,83,46,0,81,45,0,78,44,0,76,44,0,74,43,0,72,42,0,70,41,0,69,41]),\n linear_interpolation: true\n},\n{\n name: \"YlGnBu\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,255,217) 0%,rgb(254,254,215) 0.781%,rgb(253,254,213) 1.562%,rgb(252,253,210) 2.343%,rgb(251,253,208) 3.125%,rgb(249,253,205) 3.906%,rgb(248,252,203) 4.687%,rgb(247,252,200) 5.468%,rgb(246,251,198) 6.25%,rgb(245,251,195) 7.031%,rgb(244,250,193) 7.812%,rgb(243,250,190) 8.593%,rgb(241,249,188) 9.375%,rgb(240,249,185) 10.15%,rgb(239,249,182) 10.93%,rgb(238,248,180) 11.71%,rgb(237,248,177) 12.5%,rgb(235,247,177) 13.28%,rgb(233,246,177) 14.06%,rgb(230,245,177) 14.84%,rgb(228,244,177) 15.62%,rgb(225,243,177) 16.40%,rgb(223,242,178) 17.18%,rgb(221,241,178) 17.96%,rgb(218,240,178) 18.75%,rgb(216,239,178) 19.53%,rgb(213,238,178) 20.31%,rgb(211,237,179) 21.09%,rgb(209,237,179) 21.87%,rgb(206,236,179) 22.65%,rgb(204,235,179) 23.43%,rgb(201,234,179) 24.21%,rgb(199,233,179) 25%,rgb(195,231,180) 25.78%,rgb(191,229,180) 26.56%,rgb(186,228,181) 27.34%,rgb(181,226,181) 28.12%,rgb(177,224,182) 28.90%,rgb(172,222,182) 29.68%,rgb(168,221,182) 30.46%,rgb(163,219,183) 31.25%,rgb(159,217,183) 32.03%,rgb(154,215,184) 32.81%,rgb(150,214,184) 33.59%,rgb(145,212,185) 34.37%,rgb(141,210,185) 35.15%,rgb(136,208,186) 35.93%,rgb(132,206,186) 36.71%,rgb(127,205,186) 37.5%,rgb(123,203,187) 38.28%,rgb(119,202,188) 39.06%,rgb(115,200,188) 39.84%,rgb(111,199,189) 40.62%,rgb(107,197,189) 41.40%,rgb(104,196,190) 42.18%,rgb(100,195,190) 42.96%,rgb(96,193,191) 43.75%,rgb(92,192,192) 44.53%,rgb(88,190,192) 45.31%,rgb(84,189,193) 46.09%,rgb(80,187,193) 46.87%,rgb(76,186,194) 47.65%,rgb(72,184,194) 48.43%,rgb(68,183,195) 49.21%,rgb(65,182,196) 50%,rgb(62,179,195) 50.78%,rgb(60,177,195) 51.56%,rgb(58,175,195) 52.34%,rgb(55,172,194) 53.12%,rgb(53,170,194) 53.90%,rgb(51,168,194) 54.68%,rgb(49,165,194) 55.46%,rgb(46,163,193) 56.25%,rgb(44,161,193) 57.03%,rgb(42,158,193) 57.81%,rgb(40,156,193) 58.59%,rgb(37,154,192) 59.37%,rgb(35,151,192) 60.15%,rgb(33,149,192) 60.93%,rgb(30,147,192) 61.71%,rgb(29,144,191) 62.5%,rgb(29,141,190) 63.28%,rgb(29,138,188) 64.06%,rgb(29,134,187) 64.84%,rgb(30,131,185) 65.62%,rgb(30,128,184) 66.40%,rgb(30,125,182) 67.18%,rgb(31,122,181) 67.96%,rgb(31,118,179) 68.75%,rgb(31,115,178) 69.53%,rgb(32,112,176) 70.31%,rgb(32,109,175) 71.09%,rgb(32,106,173) 71.87%,rgb(33,102,172) 72.65%,rgb(33,99,170) 73.43%,rgb(33,96,169) 74.21%,rgb(34,93,167) 75%,rgb(34,90,166) 75.78%,rgb(34,88,165) 76.56%,rgb(34,85,163) 77.34%,rgb(34,82,162) 78.12%,rgb(34,80,161) 78.90%,rgb(35,77,160) 79.68%,rgb(35,74,158) 80.46%,rgb(35,72,157) 81.25%,rgb(35,69,156) 82.03%,rgb(35,66,155) 82.81%,rgb(36,64,153) 83.59%,rgb(36,61,152) 84.37%,rgb(36,58,151) 85.15%,rgb(36,56,150) 85.93%,rgb(36,53,148) 86.71%,rgb(36,51,146) 87.5%,rgb(34,50,142) 88.28%,rgb(32,48,139) 89.06%,rgb(30,47,135) 89.84%,rgb(29,45,131) 90.62%,rgb(27,44,127) 91.40%,rgb(25,42,123) 92.18%,rgb(23,41,120) 92.96%,rgb(21,39,116) 93.75%,rgb(19,38,112) 94.53%,rgb(18,36,108) 95.31%,rgb(16,35,105) 96.09%,rgb(14,34,101) 96.87%,rgb(12,32,97) 97.65%,rgb(10,31,93) 98.43%,rgb(8,29,89) 99.21%,rgb(8,29,88) 100%\",\n tex_buffer: new Uint8Array([255,255,217,254,254,215,253,254,213,252,253,210,251,253,208,249,253,205,248,252,203,247,252,200,246,251,198,245,251,195,244,250,193,243,250,190,241,249,188,240,249,185,239,249,182,238,248,180,237,248,177,235,247,177,233,246,177,230,245,177,228,244,177,225,243,177,223,242,178,221,241,178,218,240,178,216,239,178,213,238,178,211,237,179,209,237,179,206,236,179,204,235,179,201,234,179,199,233,179,195,231,180,191,229,180,186,228,181,181,226,181,177,224,182,172,222,182,168,221,182,163,219,183,159,217,183,154,215,184,150,214,184,145,212,185,141,210,185,136,208,186,132,206,186,127,205,186,123,203,187,119,202,188,115,200,188,111,199,189,107,197,189,104,196,190,100,195,190,96,193,191,92,192,192,88,190,192,84,189,193,80,187,193,76,186,194,72,184,194,68,183,195,65,182,196,62,179,195,60,177,195,58,175,195,55,172,194,53,170,194,51,168,194,49,165,194,46,163,193,44,161,193,42,158,193,40,156,193,37,154,192,35,151,192,33,149,192,30,147,192,29,144,191,29,141,190,29,138,188,29,134,187,30,131,185,30,128,184,30,125,182,31,122,181,31,118,179,31,115,178,32,112,176,32,109,175,32,106,173,33,102,172,33,99,170,33,96,169,34,93,167,34,90,166,34,88,165,34,85,163,34,82,162,34,80,161,35,77,160,35,74,158,35,72,157,35,69,156,35,66,155,36,64,153,36,61,152,36,58,151,36,56,150,36,53,148,36,51,146,34,50,142,32,48,139,30,47,135,29,45,131,27,44,127,25,42,123,23,41,120,21,39,116,19,38,112,18,36,108,16,35,105,14,34,101,12,32,97,10,31,93,8,29,89,8,29,88]),\n linear_interpolation: true\n},\n{\n name: \"YlOrBr\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,255,229) 0%,rgb(255,254,227) 0.781%,rgb(255,254,225) 1.562%,rgb(255,253,222) 2.343%,rgb(255,253,219) 3.125%,rgb(255,252,217) 3.906%,rgb(255,252,214) 4.687%,rgb(255,251,212) 5.468%,rgb(255,251,209) 6.25%,rgb(255,250,207) 7.031%,rgb(255,250,204) 7.812%,rgb(255,249,201) 8.593%,rgb(255,249,199) 9.375%,rgb(255,248,196) 10.15%,rgb(255,248,194) 10.93%,rgb(255,247,191) 11.71%,rgb(255,247,188) 12.5%,rgb(254,246,186) 13.28%,rgb(254,244,183) 14.06%,rgb(254,243,180) 14.84%,rgb(254,242,178) 15.62%,rgb(254,241,175) 16.40%,rgb(254,239,172) 17.18%,rgb(254,238,170) 17.96%,rgb(254,237,167) 18.75%,rgb(254,236,164) 19.53%,rgb(254,234,161) 20.31%,rgb(254,233,159) 21.09%,rgb(254,232,156) 21.87%,rgb(254,231,153) 22.65%,rgb(254,229,151) 23.43%,rgb(254,228,148) 24.21%,rgb(254,227,145) 25%,rgb(254,225,141) 25.78%,rgb(254,223,137) 26.56%,rgb(254,221,133) 27.34%,rgb(254,219,129) 28.12%,rgb(254,217,125) 28.90%,rgb(254,215,121) 29.68%,rgb(254,213,116) 30.46%,rgb(254,211,112) 31.25%,rgb(254,209,108) 32.03%,rgb(254,207,104) 32.81%,rgb(254,206,100) 33.59%,rgb(254,204,96) 34.37%,rgb(254,202,91) 35.15%,rgb(254,200,87) 35.93%,rgb(254,198,83) 36.71%,rgb(254,196,79) 37.5%,rgb(254,193,76) 38.28%,rgb(254,190,74) 39.06%,rgb(254,188,72) 39.84%,rgb(254,185,69) 40.62%,rgb(254,182,67) 41.40%,rgb(254,180,64) 42.18%,rgb(254,177,62) 42.96%,rgb(254,174,60) 43.75%,rgb(254,171,57) 44.53%,rgb(254,169,55) 45.31%,rgb(254,166,52) 46.09%,rgb(254,163,50) 46.87%,rgb(254,161,48) 47.65%,rgb(254,158,45) 48.43%,rgb(254,155,43) 49.21%,rgb(254,153,41) 50%,rgb(252,150,39) 50.78%,rgb(251,147,38) 51.56%,rgb(250,145,37) 52.34%,rgb(249,142,35) 53.12%,rgb(248,140,34) 53.90%,rgb(247,137,33) 54.68%,rgb(246,134,31) 55.46%,rgb(244,132,30) 56.25%,rgb(243,129,29) 57.03%,rgb(242,127,27) 57.81%,rgb(241,124,26) 58.59%,rgb(240,122,25) 59.37%,rgb(239,119,23) 60.15%,rgb(238,116,22) 60.93%,rgb(236,114,21) 61.71%,rgb(235,111,19) 62.5%,rgb(233,109,18) 63.28%,rgb(231,107,17) 64.06%,rgb(229,104,16) 64.84%,rgb(227,102,15) 65.62%,rgb(225,100,14) 66.40%,rgb(223,98,13) 67.18%,rgb(221,95,11) 67.96%,rgb(219,93,10) 68.75%,rgb(217,91,9) 69.53%,rgb(215,89,8) 70.31%,rgb(213,86,7) 71.09%,rgb(211,84,6) 71.87%,rgb(209,82,5) 72.65%,rgb(207,79,3) 73.43%,rgb(205,77,2) 74.21%,rgb(203,75,2) 75%,rgb(199,74,2) 75.78%,rgb(196,72,2) 76.56%,rgb(193,71,2) 77.34%,rgb(190,69,2) 78.12%,rgb(187,68,2) 78.90%,rgb(183,66,2) 79.68%,rgb(180,65,2) 80.46%,rgb(177,63,3) 81.25%,rgb(174,62,3) 82.03%,rgb(171,60,3) 82.81%,rgb(167,58,3) 83.59%,rgb(164,57,3) 84.37%,rgb(161,55,3) 85.15%,rgb(158,54,3) 85.93%,rgb(155,52,3) 86.71%,rgb(151,51,4) 87.5%,rgb(148,50,4) 88.28%,rgb(145,49,4) 89.06%,rgb(142,48,4) 89.84%,rgb(138,47,4) 90.62%,rgb(135,46,4) 91.40%,rgb(132,45,4) 92.18%,rgb(129,45,4) 92.96%,rgb(126,44,5) 93.75%,rgb(122,43,5) 94.53%,rgb(119,42,5) 95.31%,rgb(116,41,5) 96.09%,rgb(113,40,5) 96.87%,rgb(110,39,5) 97.65%,rgb(106,38,5) 98.43%,rgb(103,37,5) 99.21%,rgb(102,37,5) 100%\",\n tex_buffer: new Uint8Array([255,255,229,255,254,227,255,254,225,255,253,222,255,253,219,255,252,217,255,252,214,255,251,212,255,251,209,255,250,207,255,250,204,255,249,201,255,249,199,255,248,196,255,248,194,255,247,191,255,247,188,254,246,186,254,244,183,254,243,180,254,242,178,254,241,175,254,239,172,254,238,170,254,237,167,254,236,164,254,234,161,254,233,159,254,232,156,254,231,153,254,229,151,254,228,148,254,227,145,254,225,141,254,223,137,254,221,133,254,219,129,254,217,125,254,215,121,254,213,116,254,211,112,254,209,108,254,207,104,254,206,100,254,204,96,254,202,91,254,200,87,254,198,83,254,196,79,254,193,76,254,190,74,254,188,72,254,185,69,254,182,67,254,180,64,254,177,62,254,174,60,254,171,57,254,169,55,254,166,52,254,163,50,254,161,48,254,158,45,254,155,43,254,153,41,252,150,39,251,147,38,250,145,37,249,142,35,248,140,34,247,137,33,246,134,31,244,132,30,243,129,29,242,127,27,241,124,26,240,122,25,239,119,23,238,116,22,236,114,21,235,111,19,233,109,18,231,107,17,229,104,16,227,102,15,225,100,14,223,98,13,221,95,11,219,93,10,217,91,9,215,89,8,213,86,7,211,84,6,209,82,5,207,79,3,205,77,2,203,75,2,199,74,2,196,72,2,193,71,2,190,69,2,187,68,2,183,66,2,180,65,2,177,63,3,174,62,3,171,60,3,167,58,3,164,57,3,161,55,3,158,54,3,155,52,3,151,51,4,148,50,4,145,49,4,142,48,4,138,47,4,135,46,4,132,45,4,129,45,4,126,44,5,122,43,5,119,42,5,116,41,5,113,40,5,110,39,5,106,38,5,103,37,5,102,37,5]),\n linear_interpolation: true\n},\n{\n name: \"YlOrRd\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,255,204) 0%,rgb(255,254,202) 0.781%,rgb(255,253,199) 1.562%,rgb(255,252,197) 2.343%,rgb(255,251,194) 3.125%,rgb(255,249,191) 3.906%,rgb(255,248,188) 4.687%,rgb(255,247,185) 5.468%,rgb(255,246,183) 6.25%,rgb(255,245,180) 7.031%,rgb(255,244,177) 7.812%,rgb(255,243,174) 8.593%,rgb(255,241,172) 9.375%,rgb(255,240,169) 10.15%,rgb(255,239,166) 10.93%,rgb(255,238,163) 11.71%,rgb(255,237,161) 12.5%,rgb(254,236,158) 13.28%,rgb(254,234,155) 14.06%,rgb(254,233,153) 14.84%,rgb(254,232,150) 15.62%,rgb(254,231,147) 16.40%,rgb(254,229,145) 17.18%,rgb(254,228,142) 17.96%,rgb(254,227,139) 18.75%,rgb(254,226,137) 19.53%,rgb(254,224,134) 20.31%,rgb(254,223,131) 21.09%,rgb(254,222,129) 21.87%,rgb(254,221,126) 22.65%,rgb(254,219,123) 23.43%,rgb(254,218,121) 24.21%,rgb(254,217,118) 25%,rgb(254,215,116) 25.78%,rgb(254,212,113) 26.56%,rgb(254,210,110) 27.34%,rgb(254,207,108) 28.12%,rgb(254,205,105) 28.90%,rgb(254,202,102) 29.68%,rgb(254,200,100) 30.46%,rgb(254,197,97) 31.25%,rgb(254,195,94) 32.03%,rgb(254,193,92) 32.81%,rgb(254,190,89) 33.59%,rgb(254,188,86) 34.37%,rgb(254,185,84) 35.15%,rgb(254,183,81) 35.93%,rgb(254,180,78) 36.71%,rgb(254,178,76) 37.5%,rgb(253,175,75) 38.28%,rgb(253,173,74) 39.06%,rgb(253,171,73) 39.84%,rgb(253,168,72) 40.62%,rgb(253,166,71) 41.40%,rgb(253,164,70) 42.18%,rgb(253,161,69) 42.96%,rgb(253,159,68) 43.75%,rgb(253,157,67) 44.53%,rgb(253,154,66) 45.31%,rgb(253,152,65) 46.09%,rgb(253,150,64) 46.87%,rgb(253,147,63) 47.65%,rgb(253,145,62) 48.43%,rgb(253,143,61) 49.21%,rgb(253,141,60) 50%,rgb(252,137,58) 50.78%,rgb(252,133,57) 51.56%,rgb(252,129,56) 52.34%,rgb(252,125,55) 53.12%,rgb(252,121,54) 53.90%,rgb(252,117,53) 54.68%,rgb(252,113,52) 55.46%,rgb(252,109,50) 56.25%,rgb(252,105,49) 57.03%,rgb(252,101,48) 57.81%,rgb(252,97,47) 58.59%,rgb(252,93,46) 59.37%,rgb(252,89,45) 60.15%,rgb(252,85,44) 60.93%,rgb(252,81,42) 61.71%,rgb(251,77,41) 62.5%,rgb(250,74,41) 63.28%,rgb(248,71,40) 64.06%,rgb(247,67,39) 64.84%,rgb(245,64,38) 65.62%,rgb(243,61,37) 66.40%,rgb(242,57,36) 67.18%,rgb(240,54,35) 67.96%,rgb(239,51,34) 68.75%,rgb(237,48,33) 69.53%,rgb(236,44,33) 70.31%,rgb(234,41,32) 71.09%,rgb(232,38,31) 71.87%,rgb(231,35,30) 72.65%,rgb(229,31,29) 73.43%,rgb(228,28,28) 74.21%,rgb(226,25,28) 75%,rgb(224,23,28) 75.78%,rgb(221,22,29) 76.56%,rgb(219,20,30) 77.34%,rgb(216,19,30) 78.12%,rgb(214,17,31) 78.90%,rgb(212,15,31) 79.68%,rgb(209,14,32) 80.46%,rgb(207,12,33) 81.25%,rgb(204,10,33) 82.03%,rgb(202,9,34) 82.81%,rgb(200,7,35) 83.59%,rgb(197,5,35) 84.37%,rgb(195,4,36) 85.15%,rgb(192,2,36) 85.93%,rgb(190,1,37) 86.71%,rgb(187,0,38) 87.5%,rgb(183,0,38) 88.28%,rgb(179,0,38) 89.06%,rgb(176,0,38) 89.84%,rgb(172,0,38) 90.62%,rgb(168,0,38) 91.40%,rgb(164,0,38) 92.18%,rgb(160,0,38) 92.96%,rgb(156,0,38) 93.75%,rgb(152,0,38) 94.53%,rgb(149,0,38) 95.31%,rgb(145,0,38) 96.09%,rgb(141,0,38) 96.87%,rgb(137,0,38) 97.65%,rgb(133,0,38) 98.43%,rgb(129,0,38) 99.21%,rgb(128,0,38) 100%\",\n tex_buffer: new Uint8Array([255,255,204,255,254,202,255,253,199,255,252,197,255,251,194,255,249,191,255,248,188,255,247,185,255,246,183,255,245,180,255,244,177,255,243,174,255,241,172,255,240,169,255,239,166,255,238,163,255,237,161,254,236,158,254,234,155,254,233,153,254,232,150,254,231,147,254,229,145,254,228,142,254,227,139,254,226,137,254,224,134,254,223,131,254,222,129,254,221,126,254,219,123,254,218,121,254,217,118,254,215,116,254,212,113,254,210,110,254,207,108,254,205,105,254,202,102,254,200,100,254,197,97,254,195,94,254,193,92,254,190,89,254,188,86,254,185,84,254,183,81,254,180,78,254,178,76,253,175,75,253,173,74,253,171,73,253,168,72,253,166,71,253,164,70,253,161,69,253,159,68,253,157,67,253,154,66,253,152,65,253,150,64,253,147,63,253,145,62,253,143,61,253,141,60,252,137,58,252,133,57,252,129,56,252,125,55,252,121,54,252,117,53,252,113,52,252,109,50,252,105,49,252,101,48,252,97,47,252,93,46,252,89,45,252,85,44,252,81,42,251,77,41,250,74,41,248,71,40,247,67,39,245,64,38,243,61,37,242,57,36,240,54,35,239,51,34,237,48,33,236,44,33,234,41,32,232,38,31,231,35,30,229,31,29,228,28,28,226,25,28,224,23,28,221,22,29,219,20,30,216,19,30,214,17,31,212,15,31,209,14,32,207,12,33,204,10,33,202,9,34,200,7,35,197,5,35,195,4,36,192,2,36,190,1,37,187,0,38,183,0,38,179,0,38,176,0,38,172,0,38,168,0,38,164,0,38,160,0,38,156,0,38,152,0,38,149,0,38,145,0,38,141,0,38,137,0,38,133,0,38,129,0,38,128,0,38]),\n linear_interpolation: true\n},\n{\n name: \"afmhot\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(2,0,0) 0.781%,rgb(6,0,0) 1.562%,rgb(10,0,0) 2.343%,rgb(14,0,0) 3.125%,rgb(18,0,0) 3.906%,rgb(22,0,0) 4.687%,rgb(26,0,0) 5.468%,rgb(30,0,0) 6.25%,rgb(34,0,0) 7.031%,rgb(38,0,0) 7.812%,rgb(42,0,0) 8.593%,rgb(46,0,0) 9.375%,rgb(50,0,0) 10.15%,rgb(54,0,0) 10.93%,rgb(58,0,0) 11.71%,rgb(62,0,0) 12.5%,rgb(66,0,0) 13.28%,rgb(70,0,0) 14.06%,rgb(74,0,0) 14.84%,rgb(78,0,0) 15.62%,rgb(82,0,0) 16.40%,rgb(86,0,0) 17.18%,rgb(90,0,0) 17.96%,rgb(94,0,0) 18.75%,rgb(98,0,0) 19.53%,rgb(102,0,0) 20.31%,rgb(106,0,0) 21.09%,rgb(110,0,0) 21.87%,rgb(114,0,0) 22.65%,rgb(118,0,0) 23.43%,rgb(122,0,0) 24.21%,rgb(126,0,0) 25%,rgb(130,3,0) 25.78%,rgb(134,7,0) 26.56%,rgb(138,11,0) 27.34%,rgb(142,15,0) 28.12%,rgb(146,19,0) 28.90%,rgb(150,23,0) 29.68%,rgb(154,27,0) 30.46%,rgb(158,31,0) 31.25%,rgb(162,35,0) 32.03%,rgb(166,39,0) 32.81%,rgb(170,43,0) 33.59%,rgb(174,47,0) 34.37%,rgb(178,51,0) 35.15%,rgb(182,55,0) 35.93%,rgb(186,59,0) 36.71%,rgb(190,63,0) 37.5%,rgb(194,67,0) 38.28%,rgb(198,71,0) 39.06%,rgb(202,75,0) 39.84%,rgb(206,79,0) 40.62%,rgb(210,83,0) 41.40%,rgb(214,87,0) 42.18%,rgb(218,91,0) 42.96%,rgb(222,95,0) 43.75%,rgb(226,99,0) 44.53%,rgb(230,103,0) 45.31%,rgb(234,107,0) 46.09%,rgb(238,111,0) 46.87%,rgb(242,115,0) 47.65%,rgb(246,119,0) 48.43%,rgb(250,123,0) 49.21%,rgb(255,127,0) 50%,rgb(255,131,4) 50.78%,rgb(255,135,8) 51.56%,rgb(255,139,12) 52.34%,rgb(255,143,16) 53.12%,rgb(255,147,20) 53.90%,rgb(255,151,24) 54.68%,rgb(255,155,28) 55.46%,rgb(255,159,32) 56.25%,rgb(255,163,36) 57.03%,rgb(255,167,40) 57.81%,rgb(255,171,44) 58.59%,rgb(255,175,48) 59.37%,rgb(255,179,52) 60.15%,rgb(255,183,56) 60.93%,rgb(255,187,60) 61.71%,rgb(255,191,64) 62.5%,rgb(255,195,68) 63.28%,rgb(255,199,72) 64.06%,rgb(255,203,76) 64.84%,rgb(255,207,80) 65.62%,rgb(255,211,84) 66.40%,rgb(255,215,88) 67.18%,rgb(255,219,92) 67.96%,rgb(255,223,96) 68.75%,rgb(255,227,100) 69.53%,rgb(255,231,104) 70.31%,rgb(255,235,108) 71.09%,rgb(255,239,112) 71.87%,rgb(255,243,116) 72.65%,rgb(255,247,120) 73.43%,rgb(255,251,124) 74.21%,rgb(255,255,128) 75%,rgb(255,255,132) 75.78%,rgb(255,255,136) 76.56%,rgb(255,255,140) 77.34%,rgb(255,255,144) 78.12%,rgb(255,255,148) 78.90%,rgb(255,255,152) 79.68%,rgb(255,255,156) 80.46%,rgb(255,255,160) 81.25%,rgb(255,255,164) 82.03%,rgb(255,255,168) 82.81%,rgb(255,255,172) 83.59%,rgb(255,255,176) 84.37%,rgb(255,255,180) 85.15%,rgb(255,255,184) 85.93%,rgb(255,255,188) 86.71%,rgb(255,255,192) 87.5%,rgb(255,255,196) 88.28%,rgb(255,255,200) 89.06%,rgb(255,255,204) 89.84%,rgb(255,255,208) 90.62%,rgb(255,255,212) 91.40%,rgb(255,255,216) 92.18%,rgb(255,255,220) 92.96%,rgb(255,255,224) 93.75%,rgb(255,255,228) 94.53%,rgb(255,255,232) 95.31%,rgb(255,255,236) 96.09%,rgb(255,255,240) 96.87%,rgb(255,255,244) 97.65%,rgb(255,255,248) 98.43%,rgb(255,255,252) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([0,0,0,2,0,0,6,0,0,10,0,0,14,0,0,18,0,0,22,0,0,26,0,0,30,0,0,34,0,0,38,0,0,42,0,0,46,0,0,50,0,0,54,0,0,58,0,0,62,0,0,66,0,0,70,0,0,74,0,0,78,0,0,82,0,0,86,0,0,90,0,0,94,0,0,98,0,0,102,0,0,106,0,0,110,0,0,114,0,0,118,0,0,122,0,0,126,0,0,130,3,0,134,7,0,138,11,0,142,15,0,146,19,0,150,23,0,154,27,0,158,31,0,162,35,0,166,39,0,170,43,0,174,47,0,178,51,0,182,55,0,186,59,0,190,63,0,194,67,0,198,71,0,202,75,0,206,79,0,210,83,0,214,87,0,218,91,0,222,95,0,226,99,0,230,103,0,234,107,0,238,111,0,242,115,0,246,119,0,250,123,0,255,127,0,255,131,4,255,135,8,255,139,12,255,143,16,255,147,20,255,151,24,255,155,28,255,159,32,255,163,36,255,167,40,255,171,44,255,175,48,255,179,52,255,183,56,255,187,60,255,191,64,255,195,68,255,199,72,255,203,76,255,207,80,255,211,84,255,215,88,255,219,92,255,223,96,255,227,100,255,231,104,255,235,108,255,239,112,255,243,116,255,247,120,255,251,124,255,255,128,255,255,132,255,255,136,255,255,140,255,255,144,255,255,148,255,255,152,255,255,156,255,255,160,255,255,164,255,255,168,255,255,172,255,255,176,255,255,180,255,255,184,255,255,188,255,255,192,255,255,196,255,255,200,255,255,204,255,255,208,255,255,212,255,255,216,255,255,220,255,255,224,255,255,228,255,255,232,255,255,236,255,255,240,255,255,244,255,255,248,255,255,252,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"algae\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(215,249,208) 0%,rgb(215,249,208) 0.390%,rgb(214,248,206) 0.390%,rgb(214,248,206) 0.781%,rgb(212,247,205) 0.781%,rgb(212,247,205) 1.171%,rgb(211,246,203) 1.171%,rgb(211,246,203) 1.562%,rgb(210,245,202) 1.562%,rgb(210,245,202) 1.953%,rgb(209,244,200) 1.953%,rgb(209,244,200) 2.343%,rgb(207,244,199) 2.343%,rgb(207,244,199) 2.734%,rgb(206,243,197) 2.734%,rgb(206,243,197) 3.125%,rgb(205,242,196) 3.125%,rgb(205,242,196) 3.515%,rgb(204,241,195) 3.515%,rgb(204,241,195) 3.906%,rgb(202,240,193) 3.906%,rgb(202,240,193) 4.296%,rgb(201,239,192) 4.296%,rgb(201,239,192) 4.687%,rgb(200,238,190) 4.687%,rgb(200,238,190) 5.078%,rgb(199,237,189) 5.078%,rgb(199,237,189) 5.468%,rgb(197,236,187) 5.468%,rgb(197,236,187) 5.859%,rgb(196,235,186) 5.859%,rgb(196,235,186) 6.25%,rgb(195,235,185) 6.25%,rgb(195,235,185) 6.640%,rgb(194,234,183) 6.640%,rgb(194,234,183) 7.031%,rgb(192,233,182) 7.031%,rgb(192,233,182) 7.421%,rgb(191,232,180) 7.421%,rgb(191,232,180) 7.812%,rgb(190,231,179) 7.812%,rgb(190,231,179) 8.203%,rgb(189,230,177) 8.203%,rgb(189,230,177) 8.593%,rgb(187,229,176) 8.593%,rgb(187,229,176) 8.984%,rgb(186,228,175) 8.984%,rgb(186,228,175) 9.375%,rgb(185,228,173) 9.375%,rgb(185,228,173) 9.765%,rgb(184,227,172) 9.765%,rgb(184,227,172) 10.15%,rgb(182,226,171) 10.15%,rgb(182,226,171) 10.54%,rgb(181,225,169) 10.54%,rgb(181,225,169) 10.93%,rgb(180,224,168) 10.93%,rgb(180,224,168) 11.32%,rgb(178,223,166) 11.32%,rgb(178,223,166) 11.71%,rgb(177,222,165) 11.71%,rgb(177,222,165) 12.10%,rgb(176,222,164) 12.10%,rgb(176,222,164) 12.5%,rgb(175,221,162) 12.5%,rgb(175,221,162) 12.89%,rgb(173,220,161) 12.89%,rgb(173,220,161) 13.28%,rgb(172,219,160) 13.28%,rgb(172,219,160) 13.67%,rgb(171,218,158) 13.67%,rgb(171,218,158) 14.06%,rgb(170,218,157) 14.06%,rgb(170,218,157) 14.45%,rgb(168,217,156) 14.45%,rgb(168,217,156) 14.84%,rgb(167,216,154) 14.84%,rgb(167,216,154) 15.23%,rgb(166,215,153) 15.23%,rgb(166,215,153) 15.62%,rgb(164,214,152) 15.62%,rgb(164,214,152) 16.01%,rgb(163,213,150) 16.01%,rgb(163,213,150) 16.40%,rgb(162,213,149) 16.40%,rgb(162,213,149) 16.79%,rgb(160,212,148) 16.79%,rgb(160,212,148) 17.18%,rgb(159,211,146) 17.18%,rgb(159,211,146) 17.57%,rgb(158,210,145) 17.57%,rgb(158,210,145) 17.96%,rgb(157,209,144) 17.96%,rgb(157,209,144) 18.35%,rgb(155,209,143) 18.35%,rgb(155,209,143) 18.75%,rgb(154,208,141) 18.75%,rgb(154,208,141) 19.14%,rgb(153,207,140) 19.14%,rgb(153,207,140) 19.53%,rgb(151,206,139) 19.53%,rgb(151,206,139) 19.92%,rgb(150,205,138) 19.92%,rgb(150,205,138) 20.31%,rgb(149,205,136) 20.31%,rgb(149,205,136) 20.70%,rgb(147,204,135) 20.70%,rgb(147,204,135) 21.09%,rgb(146,203,134) 21.09%,rgb(146,203,134) 21.48%,rgb(145,202,133) 21.48%,rgb(145,202,133) 21.87%,rgb(143,202,131) 21.87%,rgb(143,202,131) 22.26%,rgb(142,201,130) 22.26%,rgb(142,201,130) 22.65%,rgb(140,200,129) 22.65%,rgb(140,200,129) 23.04%,rgb(139,199,128) 23.04%,rgb(139,199,128) 23.43%,rgb(138,199,126) 23.43%,rgb(138,199,126) 23.82%,rgb(136,198,125) 23.82%,rgb(136,198,125) 24.21%,rgb(135,197,124) 24.21%,rgb(135,197,124) 24.60%,rgb(133,196,123) 24.60%,rgb(133,196,123) 25%,rgb(132,196,122) 25%,rgb(132,196,122) 25.39%,rgb(131,195,121) 25.39%,rgb(131,195,121) 25.78%,rgb(129,194,119) 25.78%,rgb(129,194,119) 26.17%,rgb(128,193,118) 26.17%,rgb(128,193,118) 26.56%,rgb(126,193,117) 26.56%,rgb(126,193,117) 26.95%,rgb(125,192,116) 26.95%,rgb(125,192,116) 27.34%,rgb(123,191,115) 27.34%,rgb(123,191,115) 27.73%,rgb(122,190,114) 27.73%,rgb(122,190,114) 28.12%,rgb(120,190,113) 28.12%,rgb(120,190,113) 28.51%,rgb(119,189,111) 28.51%,rgb(119,189,111) 28.90%,rgb(117,188,110) 28.90%,rgb(117,188,110) 29.29%,rgb(116,187,109) 29.29%,rgb(116,187,109) 29.68%,rgb(114,187,108) 29.68%,rgb(114,187,108) 30.07%,rgb(113,186,107) 30.07%,rgb(113,186,107) 30.46%,rgb(111,185,106) 30.46%,rgb(111,185,106) 30.85%,rgb(110,185,105) 30.85%,rgb(110,185,105) 31.25%,rgb(108,184,104) 31.25%,rgb(108,184,104) 31.64%,rgb(107,183,103) 31.64%,rgb(107,183,103) 32.03%,rgb(105,182,102) 32.03%,rgb(105,182,102) 32.42%,rgb(103,182,101) 32.42%,rgb(103,182,101) 32.81%,rgb(102,181,100) 32.81%,rgb(102,181,100) 33.20%,rgb(100,180,99) 33.20%,rgb(100,180,99) 33.59%,rgb(98,180,98) 33.59%,rgb(98,180,98) 33.98%,rgb(97,179,97) 33.98%,rgb(97,179,97) 34.37%,rgb(95,178,96) 34.37%,rgb(95,178,96) 34.76%,rgb(93,178,95) 34.76%,rgb(93,178,95) 35.15%,rgb(91,177,94) 35.15%,rgb(91,177,94) 35.54%,rgb(90,176,93) 35.54%,rgb(90,176,93) 35.93%,rgb(88,175,93) 35.93%,rgb(88,175,93) 36.32%,rgb(86,175,92) 36.32%,rgb(86,175,92) 36.71%,rgb(84,174,91) 36.71%,rgb(84,174,91) 37.10%,rgb(82,173,90) 37.10%,rgb(82,173,90) 37.5%,rgb(80,173,89) 37.5%,rgb(80,173,89) 37.89%,rgb(78,172,89) 37.89%,rgb(78,172,89) 38.28%,rgb(76,171,88) 38.28%,rgb(76,171,88) 38.67%,rgb(74,171,87) 38.67%,rgb(74,171,87) 39.06%,rgb(72,170,87) 39.06%,rgb(72,170,87) 39.45%,rgb(70,169,86) 39.45%,rgb(70,169,86) 39.84%,rgb(68,168,85) 39.84%,rgb(68,168,85) 40.23%,rgb(66,168,85) 40.23%,rgb(66,168,85) 40.62%,rgb(63,167,84) 40.62%,rgb(63,167,84) 41.01%,rgb(61,166,84) 41.01%,rgb(61,166,84) 41.40%,rgb(59,166,84) 41.40%,rgb(59,166,84) 41.79%,rgb(57,165,83) 41.79%,rgb(57,165,83) 42.18%,rgb(55,164,83) 42.18%,rgb(55,164,83) 42.57%,rgb(52,163,83) 42.57%,rgb(52,163,83) 42.96%,rgb(50,163,82) 42.96%,rgb(50,163,82) 43.35%,rgb(48,162,82) 43.35%,rgb(48,162,82) 43.75%,rgb(46,161,82) 43.75%,rgb(46,161,82) 44.14%,rgb(44,160,82) 44.14%,rgb(44,160,82) 44.53%,rgb(42,160,82) 44.53%,rgb(42,160,82) 44.92%,rgb(40,159,81) 44.92%,rgb(40,159,81) 45.31%,rgb(38,158,81) 45.31%,rgb(38,158,81) 45.70%,rgb(36,157,81) 45.70%,rgb(36,157,81) 46.09%,rgb(34,156,81) 46.09%,rgb(34,156,81) 46.48%,rgb(32,156,81) 46.48%,rgb(32,156,81) 46.87%,rgb(30,155,81) 46.87%,rgb(30,155,81) 47.26%,rgb(28,154,81) 47.26%,rgb(28,154,81) 47.65%,rgb(27,153,81) 47.65%,rgb(27,153,81) 48.04%,rgb(25,152,81) 48.04%,rgb(25,152,81) 48.43%,rgb(24,151,80) 48.43%,rgb(24,151,80) 48.82%,rgb(22,150,80) 48.82%,rgb(22,150,80) 49.21%,rgb(21,150,80) 49.21%,rgb(21,150,80) 49.60%,rgb(19,149,80) 49.60%,rgb(19,149,80) 50%,rgb(18,148,80) 50%,rgb(18,148,80) 50.39%,rgb(16,147,80) 50.39%,rgb(16,147,80) 50.78%,rgb(15,146,80) 50.78%,rgb(15,146,80) 51.17%,rgb(14,145,80) 51.17%,rgb(14,145,80) 51.56%,rgb(13,144,79) 51.56%,rgb(13,144,79) 51.95%,rgb(12,143,79) 51.95%,rgb(12,143,79) 52.34%,rgb(11,143,79) 52.34%,rgb(11,143,79) 52.73%,rgb(10,142,79) 52.73%,rgb(10,142,79) 53.12%,rgb(9,141,79) 53.12%,rgb(9,141,79) 53.51%,rgb(9,140,79) 53.51%,rgb(9,140,79) 53.90%,rgb(8,139,78) 53.90%,rgb(8,139,78) 54.29%,rgb(8,138,78) 54.29%,rgb(8,138,78) 54.68%,rgb(7,137,78) 54.68%,rgb(7,137,78) 55.07%,rgb(7,136,78) 55.07%,rgb(7,136,78) 55.46%,rgb(7,135,77) 55.46%,rgb(7,135,77) 55.85%,rgb(7,134,77) 55.85%,rgb(7,134,77) 56.25%,rgb(7,134,77) 56.25%,rgb(7,134,77) 56.64%,rgb(7,133,77) 56.64%,rgb(7,133,77) 57.03%,rgb(7,132,77) 57.03%,rgb(7,132,77) 57.42%,rgb(7,131,76) 57.42%,rgb(7,131,76) 57.81%,rgb(7,130,76) 57.81%,rgb(7,130,76) 58.20%,rgb(8,129,76) 58.20%,rgb(8,129,76) 58.59%,rgb(8,128,75) 58.59%,rgb(8,128,75) 58.98%,rgb(8,127,75) 58.98%,rgb(8,127,75) 59.37%,rgb(9,126,75) 59.37%,rgb(9,126,75) 59.76%,rgb(9,125,75) 59.76%,rgb(9,125,75) 60.15%,rgb(10,124,74) 60.15%,rgb(10,124,74) 60.54%,rgb(10,124,74) 60.54%,rgb(10,124,74) 60.93%,rgb(11,123,74) 60.93%,rgb(11,123,74) 61.32%,rgb(11,122,73) 61.32%,rgb(11,122,73) 61.71%,rgb(12,121,73) 61.71%,rgb(12,121,73) 62.10%,rgb(12,120,73) 62.10%,rgb(12,120,73) 62.5%,rgb(13,119,72) 62.5%,rgb(13,119,72) 62.89%,rgb(13,118,72) 62.89%,rgb(13,118,72) 63.28%,rgb(14,117,72) 63.28%,rgb(14,117,72) 63.67%,rgb(14,116,71) 63.67%,rgb(14,116,71) 64.06%,rgb(15,115,71) 64.06%,rgb(15,115,71) 64.45%,rgb(15,115,71) 64.45%,rgb(15,115,71) 64.84%,rgb(16,114,70) 64.84%,rgb(16,114,70) 65.23%,rgb(16,113,70) 65.23%,rgb(16,113,70) 65.62%,rgb(17,112,69) 65.62%,rgb(17,112,69) 66.01%,rgb(17,111,69) 66.01%,rgb(17,111,69) 66.40%,rgb(18,110,69) 66.40%,rgb(18,110,69) 66.79%,rgb(18,109,68) 66.79%,rgb(18,109,68) 67.18%,rgb(18,108,68) 67.18%,rgb(18,108,68) 67.57%,rgb(19,107,67) 67.57%,rgb(19,107,67) 67.96%,rgb(19,106,67) 67.96%,rgb(19,106,67) 68.35%,rgb(20,106,67) 68.35%,rgb(20,106,67) 68.75%,rgb(20,105,66) 68.75%,rgb(20,105,66) 69.14%,rgb(20,104,66) 69.14%,rgb(20,104,66) 69.53%,rgb(21,103,65) 69.53%,rgb(21,103,65) 69.92%,rgb(21,102,65) 69.92%,rgb(21,102,65) 70.31%,rgb(21,101,64) 70.31%,rgb(21,101,64) 70.70%,rgb(22,100,64) 70.70%,rgb(22,100,64) 71.09%,rgb(22,99,64) 71.09%,rgb(22,99,64) 71.48%,rgb(22,98,63) 71.48%,rgb(22,98,63) 71.87%,rgb(23,98,63) 71.87%,rgb(23,98,63) 72.26%,rgb(23,97,62) 72.26%,rgb(23,97,62) 72.65%,rgb(23,96,62) 72.65%,rgb(23,96,62) 73.04%,rgb(23,95,61) 73.04%,rgb(23,95,61) 73.43%,rgb(24,94,61) 73.43%,rgb(24,94,61) 73.82%,rgb(24,93,60) 73.82%,rgb(24,93,60) 74.21%,rgb(24,92,60) 74.21%,rgb(24,92,60) 74.60%,rgb(24,91,59) 74.60%,rgb(24,91,59) 75%,rgb(24,91,59) 75%,rgb(24,91,59) 75.39%,rgb(25,90,58) 75.39%,rgb(25,90,58) 75.78%,rgb(25,89,58) 75.78%,rgb(25,89,58) 76.17%,rgb(25,88,57) 76.17%,rgb(25,88,57) 76.56%,rgb(25,87,57) 76.56%,rgb(25,87,57) 76.95%,rgb(25,86,56) 76.95%,rgb(25,86,56) 77.34%,rgb(25,85,56) 77.34%,rgb(25,85,56) 77.73%,rgb(25,84,55) 77.73%,rgb(25,84,55) 78.12%,rgb(25,84,55) 78.12%,rgb(25,84,55) 78.51%,rgb(26,83,54) 78.51%,rgb(26,83,54) 78.90%,rgb(26,82,53) 78.90%,rgb(26,82,53) 79.29%,rgb(26,81,53) 79.29%,rgb(26,81,53) 79.68%,rgb(26,80,52) 79.68%,rgb(26,80,52) 80.07%,rgb(26,79,52) 80.07%,rgb(26,79,52) 80.46%,rgb(26,78,51) 80.46%,rgb(26,78,51) 80.85%,rgb(26,77,51) 80.85%,rgb(26,77,51) 81.25%,rgb(26,77,50) 81.25%,rgb(26,77,50) 81.64%,rgb(26,76,50) 81.64%,rgb(26,76,50) 82.03%,rgb(26,75,49) 82.03%,rgb(26,75,49) 82.42%,rgb(26,74,48) 82.42%,rgb(26,74,48) 82.81%,rgb(26,73,48) 82.81%,rgb(26,73,48) 83.20%,rgb(26,72,47) 83.20%,rgb(26,72,47) 83.59%,rgb(26,71,47) 83.59%,rgb(26,71,47) 83.98%,rgb(26,71,46) 83.98%,rgb(26,71,46) 84.37%,rgb(26,70,46) 84.37%,rgb(26,70,46) 84.76%,rgb(26,69,45) 84.76%,rgb(26,69,45) 85.15%,rgb(26,68,44) 85.15%,rgb(26,68,44) 85.54%,rgb(26,67,44) 85.54%,rgb(26,67,44) 85.93%,rgb(25,66,43) 85.93%,rgb(25,66,43) 86.32%,rgb(25,65,43) 86.32%,rgb(25,65,43) 86.71%,rgb(25,64,42) 86.71%,rgb(25,64,42) 87.10%,rgb(25,64,41) 87.10%,rgb(25,64,41) 87.5%,rgb(25,63,41) 87.5%,rgb(25,63,41) 87.89%,rgb(25,62,40) 87.89%,rgb(25,62,40) 88.28%,rgb(25,61,39) 88.28%,rgb(25,61,39) 88.67%,rgb(25,60,39) 88.67%,rgb(25,60,39) 89.06%,rgb(24,59,38) 89.06%,rgb(24,59,38) 89.45%,rgb(24,59,38) 89.45%,rgb(24,59,38) 89.84%,rgb(24,58,37) 89.84%,rgb(24,58,37) 90.23%,rgb(24,57,36) 90.23%,rgb(24,57,36) 90.62%,rgb(24,56,36) 90.62%,rgb(24,56,36) 91.01%,rgb(24,55,35) 91.01%,rgb(24,55,35) 91.40%,rgb(23,54,34) 91.40%,rgb(23,54,34) 91.79%,rgb(23,53,34) 91.79%,rgb(23,53,34) 92.18%,rgb(23,53,33) 92.18%,rgb(23,53,33) 92.57%,rgb(23,52,32) 92.57%,rgb(23,52,32) 92.96%,rgb(23,51,32) 92.96%,rgb(23,51,32) 93.35%,rgb(22,50,31) 93.35%,rgb(22,50,31) 93.75%,rgb(22,49,30) 93.75%,rgb(22,49,30) 94.14%,rgb(22,48,30) 94.14%,rgb(22,48,30) 94.53%,rgb(22,47,29) 94.53%,rgb(22,47,29) 94.92%,rgb(21,47,28) 94.92%,rgb(21,47,28) 95.31%,rgb(21,46,28) 95.31%,rgb(21,46,28) 95.70%,rgb(21,45,27) 95.70%,rgb(21,45,27) 96.09%,rgb(20,44,26) 96.09%,rgb(20,44,26) 96.48%,rgb(20,43,26) 96.48%,rgb(20,43,26) 96.87%,rgb(20,42,25) 96.87%,rgb(20,42,25) 97.26%,rgb(20,41,24) 97.26%,rgb(20,41,24) 97.65%,rgb(19,41,24) 97.65%,rgb(19,41,24) 98.04%,rgb(19,40,23) 98.04%,rgb(19,40,23) 98.43%,rgb(19,39,22) 98.43%,rgb(19,39,22) 98.82%,rgb(18,38,22) 98.82%,rgb(18,38,22) 99.21%,rgb(18,37,21) 99.21%,rgb(18,37,21) 99.60%,rgb(18,36,20) 99.60%,rgb(18,36,20) 100%\",\n tex_buffer: new Uint8Array([215,249,208,214,248,206,212,247,205,211,246,203,210,245,202,209,244,200,207,244,199,206,243,197,205,242,196,204,241,195,202,240,193,201,239,192,200,238,190,199,237,189,197,236,187,196,235,186,195,235,185,194,234,183,192,233,182,191,232,180,190,231,179,189,230,177,187,229,176,186,228,175,185,228,173,184,227,172,182,226,171,181,225,169,180,224,168,178,223,166,177,222,165,176,222,164,175,221,162,173,220,161,172,219,160,171,218,158,170,218,157,168,217,156,167,216,154,166,215,153,164,214,152,163,213,150,162,213,149,160,212,148,159,211,146,158,210,145,157,209,144,155,209,143,154,208,141,153,207,140,151,206,139,150,205,138,149,205,136,147,204,135,146,203,134,145,202,133,143,202,131,142,201,130,140,200,129,139,199,128,138,199,126,136,198,125,135,197,124,133,196,123,132,196,122,131,195,121,129,194,119,128,193,118,126,193,117,125,192,116,123,191,115,122,190,114,120,190,113,119,189,111,117,188,110,116,187,109,114,187,108,113,186,107,111,185,106,110,185,105,108,184,104,107,183,103,105,182,102,103,182,101,102,181,100,100,180,99,98,180,98,97,179,97,95,178,96,93,178,95,91,177,94,90,176,93,88,175,93,86,175,92,84,174,91,82,173,90,80,173,89,78,172,89,76,171,88,74,171,87,72,170,87,70,169,86,68,168,85,66,168,85,63,167,84,61,166,84,59,166,84,57,165,83,55,164,83,52,163,83,50,163,82,48,162,82,46,161,82,44,160,82,42,160,82,40,159,81,38,158,81,36,157,81,34,156,81,32,156,81,30,155,81,28,154,81,27,153,81,25,152,81,24,151,80,22,150,80,21,150,80,19,149,80,18,148,80,16,147,80,15,146,80,14,145,80,13,144,79,12,143,79,11,143,79,10,142,79,9,141,79,9,140,79,8,139,78,8,138,78,7,137,78,7,136,78,7,135,77,7,134,77,7,134,77,7,133,77,7,132,77,7,131,76,7,130,76,8,129,76,8,128,75,8,127,75,9,126,75,9,125,75,10,124,74,10,124,74,11,123,74,11,122,73,12,121,73,12,120,73,13,119,72,13,118,72,14,117,72,14,116,71,15,115,71,15,115,71,16,114,70,16,113,70,17,112,69,17,111,69,18,110,69,18,109,68,18,108,68,19,107,67,19,106,67,20,106,67,20,105,66,20,104,66,21,103,65,21,102,65,21,101,64,22,100,64,22,99,64,22,98,63,23,98,63,23,97,62,23,96,62,23,95,61,24,94,61,24,93,60,24,92,60,24,91,59,24,91,59,25,90,58,25,89,58,25,88,57,25,87,57,25,86,56,25,85,56,25,84,55,25,84,55,26,83,54,26,82,53,26,81,53,26,80,52,26,79,52,26,78,51,26,77,51,26,77,50,26,76,50,26,75,49,26,74,48,26,73,48,26,72,47,26,71,47,26,71,46,26,70,46,26,69,45,26,68,44,26,67,44,25,66,43,25,65,43,25,64,42,25,64,41,25,63,41,25,62,40,25,61,39,25,60,39,24,59,38,24,59,38,24,58,37,24,57,36,24,56,36,24,55,35,23,54,34,23,53,34,23,53,33,23,52,32,23,51,32,22,50,31,22,49,30,22,48,30,22,47,29,21,47,28,21,46,28,21,45,27,20,44,26,20,43,26,20,42,25,20,41,24,19,41,24,19,40,23,19,39,22,18,38,22,18,37,21,18,36,20]),\n linear_interpolation: false\n},\n{\n name: \"amp\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(241,237,236) 0%,rgb(241,237,236) 0.390%,rgb(241,236,235) 0.390%,rgb(241,236,235) 0.781%,rgb(240,235,233) 0.781%,rgb(240,235,233) 1.171%,rgb(239,233,232) 1.171%,rgb(239,233,232) 1.562%,rgb(239,232,231) 1.562%,rgb(239,232,231) 1.953%,rgb(238,231,229) 1.953%,rgb(238,231,229) 2.343%,rgb(238,230,228) 2.343%,rgb(238,230,228) 2.734%,rgb(237,229,227) 2.734%,rgb(237,229,227) 3.125%,rgb(237,227,225) 3.125%,rgb(237,227,225) 3.515%,rgb(236,226,224) 3.515%,rgb(236,226,224) 3.906%,rgb(236,225,222) 3.906%,rgb(236,225,222) 4.296%,rgb(235,224,221) 4.296%,rgb(235,224,221) 4.687%,rgb(235,223,220) 4.687%,rgb(235,223,220) 5.078%,rgb(234,221,218) 5.078%,rgb(234,221,218) 5.468%,rgb(234,220,217) 5.468%,rgb(234,220,217) 5.859%,rgb(233,219,215) 5.859%,rgb(233,219,215) 6.25%,rgb(233,218,214) 6.25%,rgb(233,218,214) 6.640%,rgb(233,217,212) 6.640%,rgb(233,217,212) 7.031%,rgb(232,216,211) 7.031%,rgb(232,216,211) 7.421%,rgb(232,214,210) 7.421%,rgb(232,214,210) 7.812%,rgb(231,213,208) 7.812%,rgb(231,213,208) 8.203%,rgb(231,212,207) 8.203%,rgb(231,212,207) 8.593%,rgb(230,211,205) 8.593%,rgb(230,211,205) 8.984%,rgb(230,210,204) 8.984%,rgb(230,210,204) 9.375%,rgb(230,209,202) 9.375%,rgb(230,209,202) 9.765%,rgb(229,207,201) 9.765%,rgb(229,207,201) 10.15%,rgb(229,206,200) 10.15%,rgb(229,206,200) 10.54%,rgb(228,205,198) 10.54%,rgb(228,205,198) 10.93%,rgb(228,204,197) 10.93%,rgb(228,204,197) 11.32%,rgb(228,203,195) 11.32%,rgb(228,203,195) 11.71%,rgb(227,201,194) 11.71%,rgb(227,201,194) 12.10%,rgb(227,200,192) 12.10%,rgb(227,200,192) 12.5%,rgb(226,199,191) 12.5%,rgb(226,199,191) 12.89%,rgb(226,198,189) 12.89%,rgb(226,198,189) 13.28%,rgb(226,197,188) 13.28%,rgb(226,197,188) 13.67%,rgb(225,196,187) 13.67%,rgb(225,196,187) 14.06%,rgb(225,195,185) 14.06%,rgb(225,195,185) 14.45%,rgb(225,193,184) 14.45%,rgb(225,193,184) 14.84%,rgb(224,192,182) 14.84%,rgb(224,192,182) 15.23%,rgb(224,191,181) 15.23%,rgb(224,191,181) 15.62%,rgb(223,190,179) 15.62%,rgb(223,190,179) 16.01%,rgb(223,189,178) 16.01%,rgb(223,189,178) 16.40%,rgb(223,188,176) 16.40%,rgb(223,188,176) 16.79%,rgb(222,186,175) 16.79%,rgb(222,186,175) 17.18%,rgb(222,185,174) 17.18%,rgb(222,185,174) 17.57%,rgb(222,184,172) 17.57%,rgb(222,184,172) 17.96%,rgb(221,183,171) 17.96%,rgb(221,183,171) 18.35%,rgb(221,182,169) 18.35%,rgb(221,182,169) 18.75%,rgb(221,181,168) 18.75%,rgb(221,181,168) 19.14%,rgb(220,180,166) 19.14%,rgb(220,180,166) 19.53%,rgb(220,178,165) 19.53%,rgb(220,178,165) 19.92%,rgb(220,177,163) 19.92%,rgb(220,177,163) 20.31%,rgb(219,176,162) 20.31%,rgb(219,176,162) 20.70%,rgb(219,175,161) 20.70%,rgb(219,175,161) 21.09%,rgb(219,174,159) 21.09%,rgb(219,174,159) 21.48%,rgb(218,173,158) 21.48%,rgb(218,173,158) 21.87%,rgb(218,172,156) 21.87%,rgb(218,172,156) 22.26%,rgb(217,170,155) 22.26%,rgb(217,170,155) 22.65%,rgb(217,169,153) 22.65%,rgb(217,169,153) 23.04%,rgb(217,168,152) 23.04%,rgb(217,168,152) 23.43%,rgb(216,167,150) 23.43%,rgb(216,167,150) 23.82%,rgb(216,166,149) 23.82%,rgb(216,166,149) 24.21%,rgb(216,165,148) 24.21%,rgb(216,165,148) 24.60%,rgb(215,164,146) 24.60%,rgb(215,164,146) 25%,rgb(215,162,145) 25%,rgb(215,162,145) 25.39%,rgb(215,161,143) 25.39%,rgb(215,161,143) 25.78%,rgb(214,160,142) 25.78%,rgb(214,160,142) 26.17%,rgb(214,159,140) 26.17%,rgb(214,159,140) 26.56%,rgb(214,158,139) 26.56%,rgb(214,158,139) 26.95%,rgb(213,157,137) 26.95%,rgb(213,157,137) 27.34%,rgb(213,156,136) 27.34%,rgb(213,156,136) 27.73%,rgb(213,154,135) 27.73%,rgb(213,154,135) 28.12%,rgb(212,153,133) 28.12%,rgb(212,153,133) 28.51%,rgb(212,152,132) 28.51%,rgb(212,152,132) 28.90%,rgb(212,151,130) 28.90%,rgb(212,151,130) 29.29%,rgb(211,150,129) 29.29%,rgb(211,150,129) 29.68%,rgb(211,149,127) 29.68%,rgb(211,149,127) 30.07%,rgb(211,148,126) 30.07%,rgb(211,148,126) 30.46%,rgb(210,146,125) 30.46%,rgb(210,146,125) 30.85%,rgb(210,145,123) 30.85%,rgb(210,145,123) 31.25%,rgb(210,144,122) 31.25%,rgb(210,144,122) 31.64%,rgb(209,143,120) 31.64%,rgb(209,143,120) 32.03%,rgb(209,142,119) 32.03%,rgb(209,142,119) 32.42%,rgb(209,141,118) 32.42%,rgb(209,141,118) 32.81%,rgb(208,140,116) 32.81%,rgb(208,140,116) 33.20%,rgb(208,139,115) 33.20%,rgb(208,139,115) 33.59%,rgb(208,137,113) 33.59%,rgb(208,137,113) 33.98%,rgb(207,136,112) 33.98%,rgb(207,136,112) 34.37%,rgb(207,135,111) 34.37%,rgb(207,135,111) 34.76%,rgb(207,134,109) 34.76%,rgb(207,134,109) 35.15%,rgb(206,133,108) 35.15%,rgb(206,133,108) 35.54%,rgb(206,132,106) 35.54%,rgb(206,132,106) 35.93%,rgb(205,131,105) 35.93%,rgb(205,131,105) 36.32%,rgb(205,129,104) 36.32%,rgb(205,129,104) 36.71%,rgb(205,128,102) 36.71%,rgb(205,128,102) 37.10%,rgb(204,127,101) 37.10%,rgb(204,127,101) 37.5%,rgb(204,126,100) 37.5%,rgb(204,126,100) 37.89%,rgb(204,125,98) 37.89%,rgb(204,125,98) 38.28%,rgb(203,124,97) 38.28%,rgb(203,124,97) 38.67%,rgb(203,122,96) 38.67%,rgb(203,122,96) 39.06%,rgb(203,121,94) 39.06%,rgb(203,121,94) 39.45%,rgb(202,120,93) 39.45%,rgb(202,120,93) 39.84%,rgb(202,119,91) 39.84%,rgb(202,119,91) 40.23%,rgb(201,118,90) 40.23%,rgb(201,118,90) 40.62%,rgb(201,117,89) 40.62%,rgb(201,117,89) 41.01%,rgb(201,116,87) 41.01%,rgb(201,116,87) 41.40%,rgb(200,114,86) 41.40%,rgb(200,114,86) 41.79%,rgb(200,113,85) 41.79%,rgb(200,113,85) 42.18%,rgb(200,112,84) 42.18%,rgb(200,112,84) 42.57%,rgb(199,111,82) 42.57%,rgb(199,111,82) 42.96%,rgb(199,110,81) 42.96%,rgb(199,110,81) 43.35%,rgb(198,109,80) 43.35%,rgb(198,109,80) 43.75%,rgb(198,107,78) 43.75%,rgb(198,107,78) 44.14%,rgb(198,106,77) 44.14%,rgb(198,106,77) 44.53%,rgb(197,105,76) 44.53%,rgb(197,105,76) 44.92%,rgb(197,104,74) 44.92%,rgb(197,104,74) 45.31%,rgb(197,103,73) 45.31%,rgb(197,103,73) 45.70%,rgb(196,101,72) 45.70%,rgb(196,101,72) 46.09%,rgb(196,100,71) 46.09%,rgb(196,100,71) 46.48%,rgb(195,99,70) 46.48%,rgb(195,99,70) 46.87%,rgb(195,98,68) 46.87%,rgb(195,98,68) 47.26%,rgb(195,97,67) 47.26%,rgb(195,97,67) 47.65%,rgb(194,95,66) 47.65%,rgb(194,95,66) 48.04%,rgb(194,94,65) 48.04%,rgb(194,94,65) 48.43%,rgb(193,93,63) 48.43%,rgb(193,93,63) 48.82%,rgb(193,92,62) 48.82%,rgb(193,92,62) 49.21%,rgb(192,91,61) 49.21%,rgb(192,91,61) 49.60%,rgb(192,89,60) 49.60%,rgb(192,89,60) 50%,rgb(192,88,59) 50%,rgb(192,88,59) 50.39%,rgb(191,87,58) 50.39%,rgb(191,87,58) 50.78%,rgb(191,86,57) 50.78%,rgb(191,86,57) 51.17%,rgb(190,84,56) 51.17%,rgb(190,84,56) 51.56%,rgb(190,83,54) 51.56%,rgb(190,83,54) 51.95%,rgb(189,82,53) 51.95%,rgb(189,82,53) 52.34%,rgb(189,81,52) 52.34%,rgb(189,81,52) 52.73%,rgb(189,79,51) 52.73%,rgb(189,79,51) 53.12%,rgb(188,78,50) 53.12%,rgb(188,78,50) 53.51%,rgb(188,77,49) 53.51%,rgb(188,77,49) 53.90%,rgb(187,76,48) 53.90%,rgb(187,76,48) 54.29%,rgb(187,74,48) 54.29%,rgb(187,74,48) 54.68%,rgb(186,73,47) 54.68%,rgb(186,73,47) 55.07%,rgb(186,72,46) 55.07%,rgb(186,72,46) 55.46%,rgb(185,70,45) 55.46%,rgb(185,70,45) 55.85%,rgb(185,69,44) 55.85%,rgb(185,69,44) 56.25%,rgb(184,68,43) 56.25%,rgb(184,68,43) 56.64%,rgb(184,66,43) 56.64%,rgb(184,66,43) 57.03%,rgb(183,65,42) 57.03%,rgb(183,65,42) 57.42%,rgb(183,64,41) 57.42%,rgb(183,64,41) 57.81%,rgb(182,63,41) 57.81%,rgb(182,63,41) 58.20%,rgb(181,61,40) 58.20%,rgb(181,61,40) 58.59%,rgb(181,60,39) 58.59%,rgb(181,60,39) 58.98%,rgb(180,59,39) 58.98%,rgb(180,59,39) 59.37%,rgb(180,57,38) 59.37%,rgb(180,57,38) 59.76%,rgb(179,56,38) 59.76%,rgb(179,56,38) 60.15%,rgb(178,55,38) 60.15%,rgb(178,55,38) 60.54%,rgb(178,53,37) 60.54%,rgb(178,53,37) 60.93%,rgb(177,52,37) 60.93%,rgb(177,52,37) 61.32%,rgb(176,51,37) 61.32%,rgb(176,51,37) 61.71%,rgb(176,49,37) 61.71%,rgb(176,49,37) 62.10%,rgb(175,48,36) 62.10%,rgb(175,48,36) 62.5%,rgb(174,47,36) 62.5%,rgb(174,47,36) 62.89%,rgb(174,45,36) 62.89%,rgb(174,45,36) 63.28%,rgb(173,44,36) 63.28%,rgb(173,44,36) 63.67%,rgb(172,43,36) 63.67%,rgb(172,43,36) 64.06%,rgb(171,42,36) 64.06%,rgb(171,42,36) 64.45%,rgb(170,40,36) 64.45%,rgb(170,40,36) 64.84%,rgb(170,39,36) 64.84%,rgb(170,39,36) 65.23%,rgb(169,38,36) 65.23%,rgb(169,38,36) 65.62%,rgb(168,37,36) 65.62%,rgb(168,37,36) 66.01%,rgb(167,36,36) 66.01%,rgb(167,36,36) 66.40%,rgb(166,34,37) 66.40%,rgb(166,34,37) 66.79%,rgb(165,33,37) 66.79%,rgb(165,33,37) 67.18%,rgb(164,32,37) 67.18%,rgb(164,32,37) 67.57%,rgb(163,31,37) 67.57%,rgb(163,31,37) 67.96%,rgb(162,30,37) 67.96%,rgb(162,30,37) 68.35%,rgb(161,29,37) 68.35%,rgb(161,29,37) 68.75%,rgb(160,28,38) 68.75%,rgb(160,28,38) 69.14%,rgb(159,27,38) 69.14%,rgb(159,27,38) 69.53%,rgb(158,26,38) 69.53%,rgb(158,26,38) 69.92%,rgb(157,25,38) 69.92%,rgb(157,25,38) 70.31%,rgb(156,24,39) 70.31%,rgb(156,24,39) 70.70%,rgb(155,23,39) 70.70%,rgb(155,23,39) 71.09%,rgb(154,22,39) 71.09%,rgb(154,22,39) 71.48%,rgb(153,21,39) 71.48%,rgb(153,21,39) 71.87%,rgb(152,21,39) 71.87%,rgb(152,21,39) 72.26%,rgb(151,20,40) 72.26%,rgb(151,20,40) 72.65%,rgb(149,19,40) 72.65%,rgb(149,19,40) 73.04%,rgb(148,19,40) 73.04%,rgb(148,19,40) 73.43%,rgb(147,18,40) 73.43%,rgb(147,18,40) 73.82%,rgb(146,17,40) 73.82%,rgb(146,17,40) 74.21%,rgb(145,17,41) 74.21%,rgb(145,17,41) 74.60%,rgb(144,16,41) 74.60%,rgb(144,16,41) 75%,rgb(142,16,41) 75%,rgb(142,16,41) 75.39%,rgb(141,16,41) 75.39%,rgb(141,16,41) 75.78%,rgb(140,15,41) 75.78%,rgb(140,15,41) 76.17%,rgb(139,15,41) 76.17%,rgb(139,15,41) 76.56%,rgb(137,15,41) 76.56%,rgb(137,15,41) 76.95%,rgb(136,15,41) 76.95%,rgb(136,15,41) 77.34%,rgb(135,14,41) 77.34%,rgb(135,14,41) 77.73%,rgb(133,14,41) 77.73%,rgb(133,14,41) 78.12%,rgb(132,14,41) 78.12%,rgb(132,14,41) 78.51%,rgb(131,14,41) 78.51%,rgb(131,14,41) 78.90%,rgb(129,14,41) 78.90%,rgb(129,14,41) 79.29%,rgb(128,14,41) 79.29%,rgb(128,14,41) 79.68%,rgb(127,14,41) 79.68%,rgb(127,14,41) 80.07%,rgb(125,14,41) 80.07%,rgb(125,14,41) 80.46%,rgb(124,14,41) 80.46%,rgb(124,14,41) 80.85%,rgb(123,14,41) 80.85%,rgb(123,14,41) 81.25%,rgb(121,14,41) 81.25%,rgb(121,14,41) 81.64%,rgb(120,14,40) 81.64%,rgb(120,14,40) 82.03%,rgb(119,14,40) 82.03%,rgb(119,14,40) 82.42%,rgb(117,14,40) 82.42%,rgb(117,14,40) 82.81%,rgb(116,14,40) 82.81%,rgb(116,14,40) 83.20%,rgb(115,14,39) 83.20%,rgb(115,14,39) 83.59%,rgb(113,14,39) 83.59%,rgb(113,14,39) 83.98%,rgb(112,14,39) 83.98%,rgb(112,14,39) 84.37%,rgb(111,14,38) 84.37%,rgb(111,14,38) 84.76%,rgb(109,14,38) 84.76%,rgb(109,14,38) 85.15%,rgb(108,15,38) 85.15%,rgb(108,15,38) 85.54%,rgb(107,15,37) 85.54%,rgb(107,15,37) 85.93%,rgb(105,15,37) 85.93%,rgb(105,15,37) 86.32%,rgb(104,15,37) 86.32%,rgb(104,15,37) 86.71%,rgb(103,15,36) 86.71%,rgb(103,15,36) 87.10%,rgb(101,15,36) 87.10%,rgb(101,15,36) 87.5%,rgb(100,14,35) 87.5%,rgb(100,14,35) 87.89%,rgb(99,14,35) 87.89%,rgb(99,14,35) 88.28%,rgb(97,14,34) 88.28%,rgb(97,14,34) 88.67%,rgb(96,14,34) 88.67%,rgb(96,14,34) 89.06%,rgb(95,14,33) 89.06%,rgb(95,14,33) 89.45%,rgb(93,14,33) 89.45%,rgb(93,14,33) 89.84%,rgb(92,14,33) 89.84%,rgb(92,14,33) 90.23%,rgb(91,14,32) 90.23%,rgb(91,14,32) 90.62%,rgb(90,14,31) 90.62%,rgb(90,14,31) 91.01%,rgb(88,14,31) 91.01%,rgb(88,14,31) 91.40%,rgb(87,14,30) 91.40%,rgb(87,14,30) 91.79%,rgb(86,14,30) 91.79%,rgb(86,14,30) 92.18%,rgb(84,13,29) 92.18%,rgb(84,13,29) 92.57%,rgb(83,13,29) 92.57%,rgb(83,13,29) 92.96%,rgb(82,13,28) 92.96%,rgb(82,13,28) 93.35%,rgb(81,13,28) 93.35%,rgb(81,13,28) 93.75%,rgb(79,13,27) 93.75%,rgb(79,13,27) 94.14%,rgb(78,13,26) 94.14%,rgb(78,13,26) 94.53%,rgb(77,12,26) 94.53%,rgb(77,12,26) 94.92%,rgb(75,12,25) 94.92%,rgb(75,12,25) 95.31%,rgb(74,12,25) 95.31%,rgb(74,12,25) 95.70%,rgb(73,12,24) 95.70%,rgb(73,12,24) 96.09%,rgb(72,11,23) 96.09%,rgb(72,11,23) 96.48%,rgb(70,11,23) 96.48%,rgb(70,11,23) 96.87%,rgb(69,11,22) 96.87%,rgb(69,11,22) 97.26%,rgb(68,11,22) 97.26%,rgb(68,11,22) 97.65%,rgb(67,10,21) 97.65%,rgb(67,10,21) 98.04%,rgb(65,10,20) 98.04%,rgb(65,10,20) 98.43%,rgb(64,10,20) 98.43%,rgb(64,10,20) 98.82%,rgb(63,10,19) 98.82%,rgb(63,10,19) 99.21%,rgb(61,9,18) 99.21%,rgb(61,9,18) 99.60%,rgb(60,9,18) 99.60%,rgb(60,9,18) 100%\",\n tex_buffer: new Uint8Array([241,237,236,241,236,235,240,235,233,239,233,232,239,232,231,238,231,229,238,230,228,237,229,227,237,227,225,236,226,224,236,225,222,235,224,221,235,223,220,234,221,218,234,220,217,233,219,215,233,218,214,233,217,212,232,216,211,232,214,210,231,213,208,231,212,207,230,211,205,230,210,204,230,209,202,229,207,201,229,206,200,228,205,198,228,204,197,228,203,195,227,201,194,227,200,192,226,199,191,226,198,189,226,197,188,225,196,187,225,195,185,225,193,184,224,192,182,224,191,181,223,190,179,223,189,178,223,188,176,222,186,175,222,185,174,222,184,172,221,183,171,221,182,169,221,181,168,220,180,166,220,178,165,220,177,163,219,176,162,219,175,161,219,174,159,218,173,158,218,172,156,217,170,155,217,169,153,217,168,152,216,167,150,216,166,149,216,165,148,215,164,146,215,162,145,215,161,143,214,160,142,214,159,140,214,158,139,213,157,137,213,156,136,213,154,135,212,153,133,212,152,132,212,151,130,211,150,129,211,149,127,211,148,126,210,146,125,210,145,123,210,144,122,209,143,120,209,142,119,209,141,118,208,140,116,208,139,115,208,137,113,207,136,112,207,135,111,207,134,109,206,133,108,206,132,106,205,131,105,205,129,104,205,128,102,204,127,101,204,126,100,204,125,98,203,124,97,203,122,96,203,121,94,202,120,93,202,119,91,201,118,90,201,117,89,201,116,87,200,114,86,200,113,85,200,112,84,199,111,82,199,110,81,198,109,80,198,107,78,198,106,77,197,105,76,197,104,74,197,103,73,196,101,72,196,100,71,195,99,70,195,98,68,195,97,67,194,95,66,194,94,65,193,93,63,193,92,62,192,91,61,192,89,60,192,88,59,191,87,58,191,86,57,190,84,56,190,83,54,189,82,53,189,81,52,189,79,51,188,78,50,188,77,49,187,76,48,187,74,48,186,73,47,186,72,46,185,70,45,185,69,44,184,68,43,184,66,43,183,65,42,183,64,41,182,63,41,181,61,40,181,60,39,180,59,39,180,57,38,179,56,38,178,55,38,178,53,37,177,52,37,176,51,37,176,49,37,175,48,36,174,47,36,174,45,36,173,44,36,172,43,36,171,42,36,170,40,36,170,39,36,169,38,36,168,37,36,167,36,36,166,34,37,165,33,37,164,32,37,163,31,37,162,30,37,161,29,37,160,28,38,159,27,38,158,26,38,157,25,38,156,24,39,155,23,39,154,22,39,153,21,39,152,21,39,151,20,40,149,19,40,148,19,40,147,18,40,146,17,40,145,17,41,144,16,41,142,16,41,141,16,41,140,15,41,139,15,41,137,15,41,136,15,41,135,14,41,133,14,41,132,14,41,131,14,41,129,14,41,128,14,41,127,14,41,125,14,41,124,14,41,123,14,41,121,14,41,120,14,40,119,14,40,117,14,40,116,14,40,115,14,39,113,14,39,112,14,39,111,14,38,109,14,38,108,15,38,107,15,37,105,15,37,104,15,37,103,15,36,101,15,36,100,14,35,99,14,35,97,14,34,96,14,34,95,14,33,93,14,33,92,14,33,91,14,32,90,14,31,88,14,31,87,14,30,86,14,30,84,13,29,83,13,29,82,13,28,81,13,28,79,13,27,78,13,26,77,12,26,75,12,25,74,12,25,73,12,24,72,11,23,70,11,23,69,11,22,68,11,22,67,10,21,65,10,20,64,10,20,63,10,19,61,9,18,60,9,18]),\n linear_interpolation: false\n},\n{\n name: \"autumn\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,0,0) 0%,rgb(255,1,0) 0.781%,rgb(255,3,0) 1.562%,rgb(255,5,0) 2.343%,rgb(255,7,0) 3.125%,rgb(255,9,0) 3.906%,rgb(255,11,0) 4.687%,rgb(255,13,0) 5.468%,rgb(255,15,0) 6.25%,rgb(255,17,0) 7.031%,rgb(255,19,0) 7.812%,rgb(255,21,0) 8.593%,rgb(255,23,0) 9.375%,rgb(255,25,0) 10.15%,rgb(255,27,0) 10.93%,rgb(255,29,0) 11.71%,rgb(255,31,0) 12.5%,rgb(255,33,0) 13.28%,rgb(255,35,0) 14.06%,rgb(255,37,0) 14.84%,rgb(255,39,0) 15.62%,rgb(255,41,0) 16.40%,rgb(255,43,0) 17.18%,rgb(255,45,0) 17.96%,rgb(255,47,0) 18.75%,rgb(255,49,0) 19.53%,rgb(255,51,0) 20.31%,rgb(255,53,0) 21.09%,rgb(255,55,0) 21.87%,rgb(255,57,0) 22.65%,rgb(255,59,0) 23.43%,rgb(255,61,0) 24.21%,rgb(255,63,0) 25%,rgb(255,65,0) 25.78%,rgb(255,67,0) 26.56%,rgb(255,69,0) 27.34%,rgb(255,71,0) 28.12%,rgb(255,73,0) 28.90%,rgb(255,75,0) 29.68%,rgb(255,77,0) 30.46%,rgb(255,79,0) 31.25%,rgb(255,81,0) 32.03%,rgb(255,83,0) 32.81%,rgb(255,85,0) 33.59%,rgb(255,87,0) 34.37%,rgb(255,89,0) 35.15%,rgb(255,91,0) 35.93%,rgb(255,93,0) 36.71%,rgb(255,95,0) 37.5%,rgb(255,97,0) 38.28%,rgb(255,99,0) 39.06%,rgb(255,101,0) 39.84%,rgb(255,103,0) 40.62%,rgb(255,105,0) 41.40%,rgb(255,107,0) 42.18%,rgb(255,109,0) 42.96%,rgb(255,111,0) 43.75%,rgb(255,113,0) 44.53%,rgb(255,115,0) 45.31%,rgb(255,117,0) 46.09%,rgb(255,119,0) 46.87%,rgb(255,121,0) 47.65%,rgb(255,123,0) 48.43%,rgb(255,125,0) 49.21%,rgb(255,127,0) 50%,rgb(255,129,0) 50.78%,rgb(255,131,0) 51.56%,rgb(255,133,0) 52.34%,rgb(255,135,0) 53.12%,rgb(255,137,0) 53.90%,rgb(255,139,0) 54.68%,rgb(255,141,0) 55.46%,rgb(255,143,0) 56.25%,rgb(255,145,0) 57.03%,rgb(255,147,0) 57.81%,rgb(255,149,0) 58.59%,rgb(255,151,0) 59.37%,rgb(255,153,0) 60.15%,rgb(255,155,0) 60.93%,rgb(255,157,0) 61.71%,rgb(255,159,0) 62.5%,rgb(255,161,0) 63.28%,rgb(255,163,0) 64.06%,rgb(255,165,0) 64.84%,rgb(255,167,0) 65.62%,rgb(255,169,0) 66.40%,rgb(255,171,0) 67.18%,rgb(255,173,0) 67.96%,rgb(255,175,0) 68.75%,rgb(255,177,0) 69.53%,rgb(255,179,0) 70.31%,rgb(255,181,0) 71.09%,rgb(255,183,0) 71.87%,rgb(255,185,0) 72.65%,rgb(255,187,0) 73.43%,rgb(255,189,0) 74.21%,rgb(255,191,0) 75%,rgb(255,193,0) 75.78%,rgb(255,195,0) 76.56%,rgb(255,197,0) 77.34%,rgb(255,199,0) 78.12%,rgb(255,201,0) 78.90%,rgb(255,203,0) 79.68%,rgb(255,205,0) 80.46%,rgb(255,207,0) 81.25%,rgb(255,209,0) 82.03%,rgb(255,211,0) 82.81%,rgb(255,213,0) 83.59%,rgb(255,215,0) 84.37%,rgb(255,217,0) 85.15%,rgb(255,219,0) 85.93%,rgb(255,221,0) 86.71%,rgb(255,223,0) 87.5%,rgb(255,225,0) 88.28%,rgb(255,227,0) 89.06%,rgb(255,229,0) 89.84%,rgb(255,231,0) 90.62%,rgb(255,233,0) 91.40%,rgb(255,235,0) 92.18%,rgb(255,237,0) 92.96%,rgb(255,239,0) 93.75%,rgb(255,241,0) 94.53%,rgb(255,243,0) 95.31%,rgb(255,245,0) 96.09%,rgb(255,247,0) 96.87%,rgb(255,249,0) 97.65%,rgb(255,251,0) 98.43%,rgb(255,253,0) 99.21%,rgb(255,255,0) 100%\",\n tex_buffer: new Uint8Array([255,0,0,255,1,0,255,3,0,255,5,0,255,7,0,255,9,0,255,11,0,255,13,0,255,15,0,255,17,0,255,19,0,255,21,0,255,23,0,255,25,0,255,27,0,255,29,0,255,31,0,255,33,0,255,35,0,255,37,0,255,39,0,255,41,0,255,43,0,255,45,0,255,47,0,255,49,0,255,51,0,255,53,0,255,55,0,255,57,0,255,59,0,255,61,0,255,63,0,255,65,0,255,67,0,255,69,0,255,71,0,255,73,0,255,75,0,255,77,0,255,79,0,255,81,0,255,83,0,255,85,0,255,87,0,255,89,0,255,91,0,255,93,0,255,95,0,255,97,0,255,99,0,255,101,0,255,103,0,255,105,0,255,107,0,255,109,0,255,111,0,255,113,0,255,115,0,255,117,0,255,119,0,255,121,0,255,123,0,255,125,0,255,127,0,255,129,0,255,131,0,255,133,0,255,135,0,255,137,0,255,139,0,255,141,0,255,143,0,255,145,0,255,147,0,255,149,0,255,151,0,255,153,0,255,155,0,255,157,0,255,159,0,255,161,0,255,163,0,255,165,0,255,167,0,255,169,0,255,171,0,255,173,0,255,175,0,255,177,0,255,179,0,255,181,0,255,183,0,255,185,0,255,187,0,255,189,0,255,191,0,255,193,0,255,195,0,255,197,0,255,199,0,255,201,0,255,203,0,255,205,0,255,207,0,255,209,0,255,211,0,255,213,0,255,215,0,255,217,0,255,219,0,255,221,0,255,223,0,255,225,0,255,227,0,255,229,0,255,231,0,255,233,0,255,235,0,255,237,0,255,239,0,255,241,0,255,243,0,255,245,0,255,247,0,255,249,0,255,251,0,255,253,0,255,255,0]),\n linear_interpolation: true\n},\n{\n name: \"balance\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: true,\n c3g_string: \"rgb(24,28,67) 0%,rgb(24,28,67) 0.390%,rgb(25,30,70) 0.390%,rgb(25,30,70) 0.781%,rgb(26,31,73) 0.781%,rgb(26,31,73) 1.171%,rgb(27,33,76) 1.171%,rgb(27,33,76) 1.562%,rgb(28,34,79) 1.562%,rgb(28,34,79) 1.953%,rgb(29,35,82) 1.953%,rgb(29,35,82) 2.343%,rgb(30,37,85) 2.343%,rgb(30,37,85) 2.734%,rgb(31,38,88) 2.734%,rgb(31,38,88) 3.125%,rgb(32,39,91) 3.125%,rgb(32,39,91) 3.515%,rgb(33,41,95) 3.515%,rgb(33,41,95) 3.906%,rgb(33,42,98) 3.906%,rgb(33,42,98) 4.296%,rgb(34,43,101) 4.296%,rgb(34,43,101) 4.687%,rgb(35,45,105) 4.687%,rgb(35,45,105) 5.078%,rgb(36,46,108) 5.078%,rgb(36,46,108) 5.468%,rgb(37,47,111) 5.468%,rgb(37,47,111) 5.859%,rgb(37,48,115) 5.859%,rgb(37,48,115) 6.25%,rgb(38,50,118) 6.25%,rgb(38,50,118) 6.640%,rgb(39,51,122) 6.640%,rgb(39,51,122) 7.031%,rgb(39,52,125) 7.031%,rgb(39,52,125) 7.421%,rgb(40,54,129) 7.421%,rgb(40,54,129) 7.812%,rgb(40,55,132) 7.812%,rgb(40,55,132) 8.203%,rgb(41,56,136) 8.203%,rgb(41,56,136) 8.593%,rgb(41,58,140) 8.593%,rgb(41,58,140) 8.984%,rgb(41,59,143) 8.984%,rgb(41,59,143) 9.375%,rgb(41,60,147) 9.375%,rgb(41,60,147) 9.765%,rgb(41,62,151) 9.765%,rgb(41,62,151) 10.15%,rgb(41,63,154) 10.15%,rgb(41,63,154) 10.54%,rgb(41,64,158) 10.54%,rgb(41,64,158) 10.93%,rgb(41,66,162) 10.93%,rgb(41,66,162) 11.32%,rgb(40,67,165) 11.32%,rgb(40,67,165) 11.71%,rgb(39,69,169) 11.71%,rgb(39,69,169) 12.10%,rgb(38,71,172) 12.10%,rgb(38,71,172) 12.5%,rgb(37,72,176) 12.5%,rgb(37,72,176) 12.89%,rgb(35,74,179) 12.89%,rgb(35,74,179) 13.28%,rgb(33,76,182) 13.28%,rgb(33,76,182) 13.67%,rgb(31,78,184) 13.67%,rgb(31,78,184) 14.06%,rgb(28,80,186) 14.06%,rgb(28,80,186) 14.45%,rgb(25,82,188) 14.45%,rgb(25,82,188) 14.84%,rgb(22,85,189) 14.84%,rgb(22,85,189) 15.23%,rgb(19,87,190) 15.23%,rgb(19,87,190) 15.62%,rgb(16,89,190) 15.62%,rgb(16,89,190) 16.01%,rgb(13,91,190) 16.01%,rgb(13,91,190) 16.40%,rgb(12,94,190) 16.40%,rgb(12,94,190) 16.79%,rgb(10,96,190) 16.79%,rgb(10,96,190) 17.18%,rgb(10,98,190) 17.18%,rgb(10,98,190) 17.57%,rgb(10,100,190) 17.57%,rgb(10,100,190) 17.96%,rgb(11,102,189) 17.96%,rgb(11,102,189) 18.35%,rgb(13,104,189) 18.35%,rgb(13,104,189) 18.75%,rgb(15,106,189) 18.75%,rgb(15,106,189) 19.14%,rgb(17,108,188) 19.14%,rgb(17,108,188) 19.53%,rgb(19,110,188) 19.53%,rgb(19,110,188) 19.92%,rgb(22,112,188) 19.92%,rgb(22,112,188) 20.31%,rgb(25,114,187) 20.31%,rgb(25,114,187) 20.70%,rgb(27,116,187) 20.70%,rgb(27,116,187) 21.09%,rgb(30,118,187) 21.09%,rgb(30,118,187) 21.48%,rgb(33,120,187) 21.48%,rgb(33,120,187) 21.87%,rgb(35,122,186) 21.87%,rgb(35,122,186) 22.26%,rgb(38,123,186) 22.26%,rgb(38,123,186) 22.65%,rgb(41,125,186) 22.65%,rgb(41,125,186) 23.04%,rgb(43,127,186) 23.04%,rgb(43,127,186) 23.43%,rgb(46,129,186) 23.43%,rgb(46,129,186) 23.82%,rgb(48,131,186) 23.82%,rgb(48,131,186) 24.21%,rgb(51,132,186) 24.21%,rgb(51,132,186) 24.60%,rgb(54,134,186) 24.60%,rgb(54,134,186) 25%,rgb(56,136,186) 25%,rgb(56,136,186) 25.39%,rgb(59,137,186) 25.39%,rgb(59,137,186) 25.78%,rgb(62,139,186) 25.78%,rgb(62,139,186) 26.17%,rgb(64,141,186) 26.17%,rgb(64,141,186) 26.56%,rgb(67,143,186) 26.56%,rgb(67,143,186) 26.95%,rgb(70,144,186) 26.95%,rgb(70,144,186) 27.34%,rgb(72,146,186) 27.34%,rgb(72,146,186) 27.73%,rgb(75,148,186) 27.73%,rgb(75,148,186) 28.12%,rgb(78,149,186) 28.12%,rgb(78,149,186) 28.51%,rgb(81,151,186) 28.51%,rgb(81,151,186) 28.90%,rgb(83,153,186) 28.90%,rgb(83,153,186) 29.29%,rgb(86,154,187) 29.29%,rgb(86,154,187) 29.68%,rgb(89,156,187) 29.68%,rgb(89,156,187) 30.07%,rgb(92,157,187) 30.07%,rgb(92,157,187) 30.46%,rgb(95,159,187) 30.46%,rgb(95,159,187) 30.85%,rgb(98,160,187) 30.85%,rgb(98,160,187) 31.25%,rgb(101,162,188) 31.25%,rgb(101,162,188) 31.64%,rgb(104,164,188) 31.64%,rgb(104,164,188) 32.03%,rgb(107,165,188) 32.03%,rgb(107,165,188) 32.42%,rgb(110,167,189) 32.42%,rgb(110,167,189) 32.81%,rgb(113,168,189) 32.81%,rgb(113,168,189) 33.20%,rgb(117,170,190) 33.20%,rgb(117,170,190) 33.59%,rgb(120,171,190) 33.59%,rgb(120,171,190) 33.98%,rgb(123,172,191) 33.98%,rgb(123,172,191) 34.37%,rgb(126,174,191) 34.37%,rgb(126,174,191) 34.76%,rgb(129,175,192) 34.76%,rgb(129,175,192) 35.15%,rgb(133,177,192) 35.15%,rgb(133,177,192) 35.54%,rgb(136,178,193) 35.54%,rgb(136,178,193) 35.93%,rgb(139,180,194) 35.93%,rgb(139,180,194) 36.32%,rgb(142,181,195) 36.32%,rgb(142,181,195) 36.71%,rgb(145,183,195) 36.71%,rgb(145,183,195) 37.10%,rgb(148,184,196) 37.10%,rgb(148,184,196) 37.5%,rgb(152,186,197) 37.5%,rgb(152,186,197) 37.89%,rgb(155,187,198) 37.89%,rgb(155,187,198) 38.28%,rgb(158,188,199) 38.28%,rgb(158,188,199) 38.67%,rgb(161,190,200) 38.67%,rgb(161,190,200) 39.06%,rgb(164,191,201) 39.06%,rgb(164,191,201) 39.45%,rgb(167,193,202) 39.45%,rgb(167,193,202) 39.84%,rgb(170,194,203) 39.84%,rgb(170,194,203) 40.23%,rgb(173,196,204) 40.23%,rgb(173,196,204) 40.62%,rgb(176,197,205) 40.62%,rgb(176,197,205) 41.01%,rgb(179,199,206) 41.01%,rgb(179,199,206) 41.40%,rgb(182,201,207) 41.40%,rgb(182,201,207) 41.79%,rgb(185,202,208) 41.79%,rgb(185,202,208) 42.18%,rgb(188,204,210) 42.18%,rgb(188,204,210) 42.57%,rgb(191,205,211) 42.57%,rgb(191,205,211) 42.96%,rgb(193,207,212) 42.96%,rgb(193,207,212) 43.35%,rgb(196,208,213) 43.35%,rgb(196,208,213) 43.75%,rgb(199,210,215) 43.75%,rgb(199,210,215) 44.14%,rgb(202,212,216) 44.14%,rgb(202,212,216) 44.53%,rgb(205,213,217) 44.53%,rgb(205,213,217) 44.92%,rgb(208,215,218) 44.92%,rgb(208,215,218) 45.31%,rgb(211,217,220) 45.31%,rgb(211,217,220) 45.70%,rgb(213,218,221) 45.70%,rgb(213,218,221) 46.09%,rgb(216,220,222) 46.09%,rgb(216,220,222) 46.48%,rgb(219,222,224) 46.48%,rgb(219,222,224) 46.87%,rgb(222,224,225) 46.87%,rgb(222,224,225) 47.26%,rgb(225,225,227) 47.26%,rgb(225,225,227) 47.65%,rgb(227,227,228) 47.65%,rgb(227,227,228) 48.04%,rgb(230,229,230) 48.04%,rgb(230,229,230) 48.43%,rgb(233,231,231) 48.43%,rgb(233,231,231) 48.82%,rgb(235,233,233) 48.82%,rgb(235,233,233) 49.21%,rgb(238,234,234) 49.21%,rgb(238,234,234) 49.60%,rgb(241,236,236) 49.60%,rgb(241,236,236) 50%,rgb(241,236,235) 50%,rgb(241,236,235) 50.39%,rgb(240,234,233) 50.39%,rgb(240,234,233) 50.78%,rgb(239,232,230) 50.78%,rgb(239,232,230) 51.17%,rgb(238,229,227) 51.17%,rgb(238,229,227) 51.56%,rgb(237,227,224) 51.56%,rgb(237,227,224) 51.95%,rgb(236,224,222) 51.95%,rgb(236,224,222) 52.34%,rgb(235,222,219) 52.34%,rgb(235,222,219) 52.73%,rgb(234,220,216) 52.73%,rgb(234,220,216) 53.12%,rgb(233,217,213) 53.12%,rgb(233,217,213) 53.51%,rgb(232,215,210) 53.51%,rgb(232,215,210) 53.90%,rgb(231,213,207) 53.90%,rgb(231,213,207) 54.29%,rgb(230,210,205) 54.29%,rgb(230,210,205) 54.68%,rgb(229,208,202) 54.68%,rgb(229,208,202) 55.07%,rgb(229,206,199) 55.07%,rgb(229,206,199) 55.46%,rgb(228,203,196) 55.46%,rgb(228,203,196) 55.85%,rgb(227,201,193) 55.85%,rgb(227,201,193) 56.25%,rgb(226,199,190) 56.25%,rgb(226,199,190) 56.64%,rgb(225,196,187) 56.64%,rgb(225,196,187) 57.03%,rgb(225,194,184) 57.03%,rgb(225,194,184) 57.42%,rgb(224,192,181) 57.42%,rgb(224,192,181) 57.81%,rgb(223,189,178) 57.81%,rgb(223,189,178) 58.20%,rgb(223,187,176) 58.20%,rgb(223,187,176) 58.59%,rgb(222,185,173) 58.59%,rgb(222,185,173) 58.98%,rgb(221,182,170) 58.98%,rgb(221,182,170) 59.37%,rgb(220,180,167) 59.37%,rgb(220,180,167) 59.76%,rgb(220,178,164) 59.76%,rgb(220,178,164) 60.15%,rgb(219,175,161) 60.15%,rgb(219,175,161) 60.54%,rgb(218,173,158) 60.54%,rgb(218,173,158) 60.93%,rgb(218,171,155) 60.93%,rgb(218,171,155) 61.32%,rgb(217,169,152) 61.32%,rgb(217,169,152) 61.71%,rgb(216,166,150) 61.71%,rgb(216,166,150) 62.10%,rgb(216,164,147) 62.10%,rgb(216,164,147) 62.5%,rgb(215,162,144) 62.5%,rgb(215,162,144) 62.89%,rgb(214,159,141) 62.89%,rgb(214,159,141) 63.28%,rgb(214,157,138) 63.28%,rgb(214,157,138) 63.67%,rgb(213,155,135) 63.67%,rgb(213,155,135) 64.06%,rgb(212,153,132) 64.06%,rgb(212,153,132) 64.45%,rgb(211,150,129) 64.45%,rgb(211,150,129) 64.84%,rgb(211,148,127) 64.84%,rgb(211,148,127) 65.23%,rgb(210,146,124) 65.23%,rgb(210,146,124) 65.62%,rgb(209,143,121) 65.62%,rgb(209,143,121) 66.01%,rgb(209,141,118) 66.01%,rgb(209,141,118) 66.40%,rgb(208,139,115) 66.40%,rgb(208,139,115) 66.79%,rgb(207,137,112) 66.79%,rgb(207,137,112) 67.18%,rgb(207,134,110) 67.18%,rgb(207,134,110) 67.57%,rgb(206,132,107) 67.57%,rgb(206,132,107) 67.96%,rgb(205,130,104) 67.96%,rgb(205,130,104) 68.35%,rgb(205,127,101) 68.35%,rgb(205,127,101) 68.75%,rgb(204,125,99) 68.75%,rgb(204,125,99) 69.14%,rgb(203,123,96) 69.14%,rgb(203,123,96) 69.53%,rgb(202,121,93) 69.53%,rgb(202,121,93) 69.92%,rgb(202,118,91) 69.92%,rgb(202,118,91) 70.31%,rgb(201,116,88) 70.31%,rgb(201,116,88) 70.70%,rgb(200,114,85) 70.70%,rgb(200,114,85) 71.09%,rgb(199,111,83) 71.09%,rgb(199,111,83) 71.48%,rgb(199,109,80) 71.48%,rgb(199,109,80) 71.87%,rgb(198,107,77) 71.87%,rgb(198,107,77) 72.26%,rgb(197,104,75) 72.26%,rgb(197,104,75) 72.65%,rgb(196,102,72) 72.65%,rgb(196,102,72) 73.04%,rgb(195,99,70) 73.04%,rgb(195,99,70) 73.43%,rgb(195,97,67) 73.43%,rgb(195,97,67) 73.82%,rgb(194,95,65) 73.82%,rgb(194,95,65) 74.21%,rgb(193,92,63) 74.21%,rgb(193,92,63) 74.60%,rgb(192,90,60) 74.60%,rgb(192,90,60) 75%,rgb(191,87,58) 75%,rgb(191,87,58) 75.39%,rgb(190,85,56) 75.39%,rgb(190,85,56) 75.78%,rgb(190,82,54) 75.78%,rgb(190,82,54) 76.17%,rgb(189,80,52) 76.17%,rgb(189,80,52) 76.56%,rgb(188,77,50) 76.56%,rgb(188,77,50) 76.95%,rgb(187,75,48) 76.95%,rgb(187,75,48) 77.34%,rgb(186,72,46) 77.34%,rgb(186,72,46) 77.73%,rgb(185,69,44) 77.73%,rgb(185,69,44) 78.12%,rgb(184,67,43) 78.12%,rgb(184,67,43) 78.51%,rgb(183,64,41) 78.51%,rgb(183,64,41) 78.90%,rgb(182,61,40) 78.90%,rgb(182,61,40) 79.29%,rgb(180,59,39) 79.29%,rgb(180,59,39) 79.68%,rgb(179,56,38) 79.68%,rgb(179,56,38) 80.07%,rgb(178,53,37) 80.07%,rgb(178,53,37) 80.46%,rgb(177,51,37) 80.46%,rgb(177,51,37) 80.85%,rgb(175,48,36) 80.85%,rgb(175,48,36) 81.25%,rgb(174,46,36) 81.25%,rgb(174,46,36) 81.64%,rgb(172,43,36) 81.64%,rgb(172,43,36) 82.03%,rgb(171,41,36) 82.03%,rgb(171,41,36) 82.42%,rgb(169,38,36) 82.42%,rgb(169,38,36) 82.81%,rgb(167,36,36) 82.81%,rgb(167,36,36) 83.20%,rgb(165,33,37) 83.20%,rgb(165,33,37) 83.59%,rgb(163,31,37) 83.59%,rgb(163,31,37) 83.98%,rgb(161,29,37) 83.98%,rgb(161,29,37) 84.37%,rgb(159,27,38) 84.37%,rgb(159,27,38) 84.76%,rgb(157,25,38) 84.76%,rgb(157,25,38) 85.15%,rgb(155,23,39) 85.15%,rgb(155,23,39) 85.54%,rgb(153,22,39) 85.54%,rgb(153,22,39) 85.93%,rgb(151,20,40) 85.93%,rgb(151,20,40) 86.32%,rgb(148,19,40) 86.32%,rgb(148,19,40) 86.71%,rgb(146,18,40) 86.71%,rgb(146,18,40) 87.10%,rgb(144,16,41) 87.10%,rgb(144,16,41) 87.5%,rgb(141,16,41) 87.5%,rgb(141,16,41) 87.89%,rgb(139,15,41) 87.89%,rgb(139,15,41) 88.28%,rgb(136,15,41) 88.28%,rgb(136,15,41) 88.67%,rgb(134,14,41) 88.67%,rgb(134,14,41) 89.06%,rgb(131,14,41) 89.06%,rgb(131,14,41) 89.45%,rgb(128,14,41) 89.45%,rgb(128,14,41) 89.84%,rgb(126,14,41) 89.84%,rgb(126,14,41) 90.23%,rgb(123,14,41) 90.23%,rgb(123,14,41) 90.62%,rgb(120,14,40) 90.62%,rgb(120,14,40) 91.01%,rgb(118,14,40) 91.01%,rgb(118,14,40) 91.40%,rgb(115,14,39) 91.40%,rgb(115,14,39) 91.79%,rgb(112,14,39) 91.79%,rgb(112,14,39) 92.18%,rgb(109,14,38) 92.18%,rgb(109,14,38) 92.57%,rgb(107,15,37) 92.57%,rgb(107,15,37) 92.96%,rgb(104,15,37) 92.96%,rgb(104,15,37) 93.35%,rgb(101,15,36) 93.35%,rgb(101,15,36) 93.75%,rgb(99,14,35) 93.75%,rgb(99,14,35) 94.14%,rgb(96,14,34) 94.14%,rgb(96,14,34) 94.53%,rgb(94,14,33) 94.53%,rgb(94,14,33) 94.92%,rgb(91,14,32) 94.92%,rgb(91,14,32) 95.31%,rgb(88,14,31) 95.31%,rgb(88,14,31) 95.70%,rgb(86,14,30) 95.70%,rgb(86,14,30) 96.09%,rgb(83,13,29) 96.09%,rgb(83,13,29) 96.48%,rgb(81,13,28) 96.48%,rgb(81,13,28) 96.87%,rgb(78,13,27) 96.87%,rgb(78,13,27) 97.26%,rgb(75,12,25) 97.26%,rgb(75,12,25) 97.65%,rgb(73,12,24) 97.65%,rgb(73,12,24) 98.04%,rgb(70,11,23) 98.04%,rgb(70,11,23) 98.43%,rgb(68,11,22) 98.43%,rgb(68,11,22) 98.82%,rgb(65,10,20) 98.82%,rgb(65,10,20) 99.21%,rgb(63,10,19) 99.21%,rgb(63,10,19) 99.60%,rgb(60,9,18) 99.60%,rgb(60,9,18) 100%\",\n tex_buffer: new Uint8Array([24,28,67,25,30,70,26,31,73,27,33,76,28,34,79,29,35,82,30,37,85,31,38,88,32,39,91,33,41,95,33,42,98,34,43,101,35,45,105,36,46,108,37,47,111,37,48,115,38,50,118,39,51,122,39,52,125,40,54,129,40,55,132,41,56,136,41,58,140,41,59,143,41,60,147,41,62,151,41,63,154,41,64,158,41,66,162,40,67,165,39,69,169,38,71,172,37,72,176,35,74,179,33,76,182,31,78,184,28,80,186,25,82,188,22,85,189,19,87,190,16,89,190,13,91,190,12,94,190,10,96,190,10,98,190,10,100,190,11,102,189,13,104,189,15,106,189,17,108,188,19,110,188,22,112,188,25,114,187,27,116,187,30,118,187,33,120,187,35,122,186,38,123,186,41,125,186,43,127,186,46,129,186,48,131,186,51,132,186,54,134,186,56,136,186,59,137,186,62,139,186,64,141,186,67,143,186,70,144,186,72,146,186,75,148,186,78,149,186,81,151,186,83,153,186,86,154,187,89,156,187,92,157,187,95,159,187,98,160,187,101,162,188,104,164,188,107,165,188,110,167,189,113,168,189,117,170,190,120,171,190,123,172,191,126,174,191,129,175,192,133,177,192,136,178,193,139,180,194,142,181,195,145,183,195,148,184,196,152,186,197,155,187,198,158,188,199,161,190,200,164,191,201,167,193,202,170,194,203,173,196,204,176,197,205,179,199,206,182,201,207,185,202,208,188,204,210,191,205,211,193,207,212,196,208,213,199,210,215,202,212,216,205,213,217,208,215,218,211,217,220,213,218,221,216,220,222,219,222,224,222,224,225,225,225,227,227,227,228,230,229,230,233,231,231,235,233,233,238,234,234,241,236,236,241,236,235,240,234,233,239,232,230,238,229,227,237,227,224,236,224,222,235,222,219,234,220,216,233,217,213,232,215,210,231,213,207,230,210,205,229,208,202,229,206,199,228,203,196,227,201,193,226,199,190,225,196,187,225,194,184,224,192,181,223,189,178,223,187,176,222,185,173,221,182,170,220,180,167,220,178,164,219,175,161,218,173,158,218,171,155,217,169,152,216,166,150,216,164,147,215,162,144,214,159,141,214,157,138,213,155,135,212,153,132,211,150,129,211,148,127,210,146,124,209,143,121,209,141,118,208,139,115,207,137,112,207,134,110,206,132,107,205,130,104,205,127,101,204,125,99,203,123,96,202,121,93,202,118,91,201,116,88,200,114,85,199,111,83,199,109,80,198,107,77,197,104,75,196,102,72,195,99,70,195,97,67,194,95,65,193,92,63,192,90,60,191,87,58,190,85,56,190,82,54,189,80,52,188,77,50,187,75,48,186,72,46,185,69,44,184,67,43,183,64,41,182,61,40,180,59,39,179,56,38,178,53,37,177,51,37,175,48,36,174,46,36,172,43,36,171,41,36,169,38,36,167,36,36,165,33,37,163,31,37,161,29,37,159,27,38,157,25,38,155,23,39,153,22,39,151,20,40,148,19,40,146,18,40,144,16,41,141,16,41,139,15,41,136,15,41,134,14,41,131,14,41,128,14,41,126,14,41,123,14,41,120,14,40,118,14,40,115,14,39,112,14,39,109,14,38,107,15,37,104,15,37,101,15,36,99,14,35,96,14,34,94,14,33,91,14,32,88,14,31,86,14,30,83,13,29,81,13,28,78,13,27,75,12,25,73,12,24,70,11,23,68,11,22,65,10,20,63,10,19,60,9,18]),\n linear_interpolation: false\n},\n{\n name: \"binary\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,255,255) 0%,rgb(253,253,253) 0.781%,rgb(251,251,251) 1.562%,rgb(249,249,249) 2.343%,rgb(247,247,247) 3.125%,rgb(245,245,245) 3.906%,rgb(243,243,243) 4.687%,rgb(241,241,241) 5.468%,rgb(239,239,239) 6.25%,rgb(237,237,237) 7.031%,rgb(235,235,235) 7.812%,rgb(233,233,233) 8.593%,rgb(231,231,231) 9.375%,rgb(229,229,229) 10.15%,rgb(227,227,227) 10.93%,rgb(225,225,225) 11.71%,rgb(223,223,223) 12.5%,rgb(221,221,221) 13.28%,rgb(219,219,219) 14.06%,rgb(217,217,217) 14.84%,rgb(215,215,215) 15.62%,rgb(213,213,213) 16.40%,rgb(211,211,211) 17.18%,rgb(209,209,209) 17.96%,rgb(207,207,207) 18.75%,rgb(205,205,205) 19.53%,rgb(203,203,203) 20.31%,rgb(201,201,201) 21.09%,rgb(199,199,199) 21.87%,rgb(197,197,197) 22.65%,rgb(195,195,195) 23.43%,rgb(193,193,193) 24.21%,rgb(191,191,191) 25%,rgb(189,189,189) 25.78%,rgb(187,187,187) 26.56%,rgb(185,185,185) 27.34%,rgb(183,183,183) 28.12%,rgb(181,181,181) 28.90%,rgb(179,179,179) 29.68%,rgb(177,177,177) 30.46%,rgb(175,175,175) 31.25%,rgb(173,173,173) 32.03%,rgb(171,171,171) 32.81%,rgb(169,169,169) 33.59%,rgb(167,167,167) 34.37%,rgb(165,165,165) 35.15%,rgb(163,163,163) 35.93%,rgb(161,161,161) 36.71%,rgb(159,159,159) 37.5%,rgb(157,157,157) 38.28%,rgb(155,155,155) 39.06%,rgb(153,153,153) 39.84%,rgb(151,151,151) 40.62%,rgb(149,149,149) 41.40%,rgb(147,147,147) 42.18%,rgb(145,145,145) 42.96%,rgb(143,143,143) 43.75%,rgb(141,141,141) 44.53%,rgb(139,139,139) 45.31%,rgb(137,137,137) 46.09%,rgb(135,135,135) 46.87%,rgb(133,133,133) 47.65%,rgb(131,131,131) 48.43%,rgb(129,129,129) 49.21%,rgb(127,127,127) 50%,rgb(125,125,125) 50.78%,rgb(123,123,123) 51.56%,rgb(121,121,121) 52.34%,rgb(119,119,119) 53.12%,rgb(117,117,117) 53.90%,rgb(115,115,115) 54.68%,rgb(113,113,113) 55.46%,rgb(111,111,111) 56.25%,rgb(109,109,109) 57.03%,rgb(107,107,107) 57.81%,rgb(105,105,105) 58.59%,rgb(103,103,103) 59.37%,rgb(101,101,101) 60.15%,rgb(99,99,99) 60.93%,rgb(97,97,97) 61.71%,rgb(95,95,95) 62.5%,rgb(93,93,93) 63.28%,rgb(91,91,91) 64.06%,rgb(89,89,89) 64.84%,rgb(87,87,87) 65.62%,rgb(85,85,85) 66.40%,rgb(83,83,83) 67.18%,rgb(81,81,81) 67.96%,rgb(79,79,79) 68.75%,rgb(77,77,77) 69.53%,rgb(75,75,75) 70.31%,rgb(73,73,73) 71.09%,rgb(71,71,71) 71.87%,rgb(69,69,69) 72.65%,rgb(67,67,67) 73.43%,rgb(65,65,65) 74.21%,rgb(63,63,63) 75%,rgb(61,61,61) 75.78%,rgb(59,59,59) 76.56%,rgb(57,57,57) 77.34%,rgb(55,55,55) 78.12%,rgb(53,53,53) 78.90%,rgb(51,51,51) 79.68%,rgb(49,49,49) 80.46%,rgb(47,47,47) 81.25%,rgb(45,45,45) 82.03%,rgb(43,43,43) 82.81%,rgb(41,41,41) 83.59%,rgb(39,39,39) 84.37%,rgb(37,37,37) 85.15%,rgb(35,35,35) 85.93%,rgb(33,33,33) 86.71%,rgb(31,31,31) 87.5%,rgb(29,29,29) 88.28%,rgb(27,27,27) 89.06%,rgb(25,25,25) 89.84%,rgb(23,23,23) 90.62%,rgb(21,21,21) 91.40%,rgb(19,19,19) 92.18%,rgb(17,17,17) 92.96%,rgb(15,15,15) 93.75%,rgb(13,13,13) 94.53%,rgb(11,11,11) 95.31%,rgb(9,9,9) 96.09%,rgb(7,7,7) 96.87%,rgb(5,5,5) 97.65%,rgb(3,3,3) 98.43%,rgb(1,1,1) 99.21%,rgb(0,0,0) 100%\",\n tex_buffer: new Uint8Array([255,255,255,253,253,253,251,251,251,249,249,249,247,247,247,245,245,245,243,243,243,241,241,241,239,239,239,237,237,237,235,235,235,233,233,233,231,231,231,229,229,229,227,227,227,225,225,225,223,223,223,221,221,221,219,219,219,217,217,217,215,215,215,213,213,213,211,211,211,209,209,209,207,207,207,205,205,205,203,203,203,201,201,201,199,199,199,197,197,197,195,195,195,193,193,193,191,191,191,189,189,189,187,187,187,185,185,185,183,183,183,181,181,181,179,179,179,177,177,177,175,175,175,173,173,173,171,171,171,169,169,169,167,167,167,165,165,165,163,163,163,161,161,161,159,159,159,157,157,157,155,155,155,153,153,153,151,151,151,149,149,149,147,147,147,145,145,145,143,143,143,141,141,141,139,139,139,137,137,137,135,135,135,133,133,133,131,131,131,129,129,129,127,127,127,125,125,125,123,123,123,121,121,121,119,119,119,117,117,117,115,115,115,113,113,113,111,111,111,109,109,109,107,107,107,105,105,105,103,103,103,101,101,101,99,99,99,97,97,97,95,95,95,93,93,93,91,91,91,89,89,89,87,87,87,85,85,85,83,83,83,81,81,81,79,79,79,77,77,77,75,75,75,73,73,73,71,71,71,69,69,69,67,67,67,65,65,65,63,63,63,61,61,61,59,59,59,57,57,57,55,55,55,53,53,53,51,51,51,49,49,49,47,47,47,45,45,45,43,43,43,41,41,41,39,39,39,37,37,37,35,35,35,33,33,33,31,31,31,29,29,29,27,27,27,25,25,25,23,23,23,21,21,21,19,19,19,17,17,17,15,15,15,13,13,13,11,11,11,9,9,9,7,7,7,5,5,5,3,3,3,1,1,1,0,0,0]),\n linear_interpolation: true\n},\n{\n name: \"blue-tan-d14\",\n author: {\n name: \"Kenneth Moreland\",\n url: null\n },\n license: {\n name: \"Public Domain\",\n url: null\n },\n range: [-7, 7],\n symmetric: true,\n c3g_string: \"rgb(62,142,234) 0%,rgb(62,142,234) 7.142%,rgb(77,159,238) 7.142%,rgb(77,159,238) 14.28%,rgb(95,174,239) 14.28%,rgb(95,174,239) 21.42%,rgb(117,189,237) 21.42%,rgb(117,189,237) 28.57%,rgb(143,202,234) 28.57%,rgb(143,202,234) 35.71%,rgb(173,212,231) 35.71%,rgb(173,212,231) 42.85%,rgb(206,220,226) 42.85%,rgb(206,220,226) 50%,rgb(225,223,206) 50%,rgb(225,223,206) 57.14%,rgb(227,217,171) 57.14%,rgb(227,217,171) 64.28%,rgb(225,208,137) 64.28%,rgb(225,208,137) 71.42%,rgb(219,194,105) 71.42%,rgb(219,194,105) 78.57%,rgb(210,177,77) 78.57%,rgb(210,177,77) 85.71%,rgb(197,157,52) 85.71%,rgb(197,157,52) 92.85%,rgb(181,136,32) 92.85%,rgb(181,136,32) 100%\",\n tex_buffer: new Uint8Array([62,142,234,77,159,238,95,174,239,117,189,237,143,202,234,173,212,231,206,220,226,225,223,206,227,217,171,225,208,137,219,194,105,210,177,77,197,157,52,181,136,32]),\n linear_interpolation: false\n},\n{\n name: \"bone\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(0,0,1) 0.781%,rgb(2,2,3) 1.562%,rgb(4,4,6) 2.343%,rgb(6,6,8) 3.125%,rgb(7,7,10) 3.906%,rgb(9,9,13) 4.687%,rgb(11,11,15) 5.468%,rgb(13,13,18) 6.25%,rgb(14,14,20) 7.031%,rgb(16,16,23) 7.812%,rgb(18,18,25) 8.593%,rgb(20,20,28) 9.375%,rgb(21,21,30) 10.15%,rgb(23,23,32) 10.93%,rgb(25,25,35) 11.71%,rgb(27,27,37) 12.5%,rgb(28,28,40) 13.28%,rgb(30,30,42) 14.06%,rgb(32,32,45) 14.84%,rgb(34,34,47) 15.62%,rgb(36,36,50) 16.40%,rgb(37,37,52) 17.18%,rgb(39,39,54) 17.96%,rgb(41,41,57) 18.75%,rgb(43,43,59) 19.53%,rgb(44,44,62) 20.31%,rgb(46,46,64) 21.09%,rgb(48,48,67) 21.87%,rgb(50,50,69) 22.65%,rgb(51,51,72) 23.43%,rgb(53,53,74) 24.21%,rgb(55,55,76) 25%,rgb(57,57,79) 25.78%,rgb(58,58,81) 26.56%,rgb(60,60,84) 27.34%,rgb(62,62,86) 28.12%,rgb(64,64,89) 28.90%,rgb(65,65,91) 29.68%,rgb(67,67,94) 30.46%,rgb(69,69,96) 31.25%,rgb(71,71,98) 32.03%,rgb(72,72,101) 32.81%,rgb(74,74,103) 33.59%,rgb(76,76,106) 34.37%,rgb(78,78,108) 35.15%,rgb(79,79,111) 35.93%,rgb(81,81,113) 36.71%,rgb(83,84,115) 37.5%,rgb(85,86,117) 38.28%,rgb(86,89,118) 39.06%,rgb(88,91,120) 39.84%,rgb(90,93,122) 40.62%,rgb(92,96,124) 41.40%,rgb(93,98,125) 42.18%,rgb(95,101,127) 42.96%,rgb(97,103,129) 43.75%,rgb(99,105,131) 44.53%,rgb(101,108,132) 45.31%,rgb(102,110,134) 46.09%,rgb(104,113,136) 46.87%,rgb(106,115,138) 47.65%,rgb(108,118,139) 48.43%,rgb(109,120,141) 49.21%,rgb(111,122,143) 50%,rgb(113,125,145) 50.78%,rgb(115,127,146) 51.56%,rgb(116,130,148) 52.34%,rgb(118,132,150) 53.12%,rgb(120,134,152) 53.90%,rgb(122,137,153) 54.68%,rgb(123,139,155) 55.46%,rgb(125,142,157) 56.25%,rgb(127,144,159) 57.03%,rgb(129,147,161) 57.81%,rgb(130,149,162) 58.59%,rgb(132,151,164) 59.37%,rgb(134,154,166) 60.15%,rgb(136,156,168) 60.93%,rgb(137,159,169) 61.71%,rgb(139,161,171) 62.5%,rgb(141,163,173) 63.28%,rgb(143,166,175) 64.06%,rgb(144,168,176) 64.84%,rgb(146,171,178) 65.62%,rgb(148,173,180) 66.40%,rgb(150,175,182) 67.18%,rgb(151,178,183) 67.96%,rgb(153,180,185) 68.75%,rgb(155,183,187) 69.53%,rgb(157,185,189) 70.31%,rgb(158,188,190) 71.09%,rgb(160,190,192) 71.87%,rgb(162,192,194) 72.65%,rgb(164,195,196) 73.43%,rgb(166,197,197) 74.21%,rgb(168,199,199) 75%,rgb(171,201,201) 75.78%,rgb(174,203,203) 76.56%,rgb(176,204,204) 77.34%,rgb(179,206,206) 78.12%,rgb(182,208,208) 78.90%,rgb(184,210,210) 79.68%,rgb(187,211,211) 80.46%,rgb(190,213,213) 81.25%,rgb(193,215,215) 82.03%,rgb(195,217,217) 82.81%,rgb(198,218,218) 83.59%,rgb(201,220,220) 84.37%,rgb(204,222,222) 85.15%,rgb(206,224,224) 85.93%,rgb(209,226,226) 86.71%,rgb(212,227,227) 87.5%,rgb(215,229,229) 88.28%,rgb(217,231,231) 89.06%,rgb(220,233,233) 89.84%,rgb(223,234,234) 90.62%,rgb(226,236,236) 91.40%,rgb(228,238,238) 92.18%,rgb(231,240,240) 92.96%,rgb(234,241,241) 93.75%,rgb(237,243,243) 94.53%,rgb(239,245,245) 95.31%,rgb(242,247,247) 96.09%,rgb(245,248,248) 96.87%,rgb(248,250,250) 97.65%,rgb(250,252,252) 98.43%,rgb(253,254,254) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([0,0,0,0,0,1,2,2,3,4,4,6,6,6,8,7,7,10,9,9,13,11,11,15,13,13,18,14,14,20,16,16,23,18,18,25,20,20,28,21,21,30,23,23,32,25,25,35,27,27,37,28,28,40,30,30,42,32,32,45,34,34,47,36,36,50,37,37,52,39,39,54,41,41,57,43,43,59,44,44,62,46,46,64,48,48,67,50,50,69,51,51,72,53,53,74,55,55,76,57,57,79,58,58,81,60,60,84,62,62,86,64,64,89,65,65,91,67,67,94,69,69,96,71,71,98,72,72,101,74,74,103,76,76,106,78,78,108,79,79,111,81,81,113,83,84,115,85,86,117,86,89,118,88,91,120,90,93,122,92,96,124,93,98,125,95,101,127,97,103,129,99,105,131,101,108,132,102,110,134,104,113,136,106,115,138,108,118,139,109,120,141,111,122,143,113,125,145,115,127,146,116,130,148,118,132,150,120,134,152,122,137,153,123,139,155,125,142,157,127,144,159,129,147,161,130,149,162,132,151,164,134,154,166,136,156,168,137,159,169,139,161,171,141,163,173,143,166,175,144,168,176,146,171,178,148,173,180,150,175,182,151,178,183,153,180,185,155,183,187,157,185,189,158,188,190,160,190,192,162,192,194,164,195,196,166,197,197,168,199,199,171,201,201,174,203,203,176,204,204,179,206,206,182,208,208,184,210,210,187,211,211,190,213,213,193,215,215,195,217,217,198,218,218,201,220,220,204,222,222,206,224,224,209,226,226,212,227,227,215,229,229,217,231,231,220,233,233,223,234,234,226,236,236,228,238,238,231,240,240,234,241,241,237,243,243,239,245,245,242,247,247,245,248,248,248,250,250,250,252,252,253,254,254,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"brg\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,255) 0%,rgb(2,0,252) 0.781%,rgb(6,0,248) 1.562%,rgb(10,0,244) 2.343%,rgb(14,0,240) 3.125%,rgb(18,0,236) 3.906%,rgb(22,0,232) 4.687%,rgb(26,0,228) 5.468%,rgb(30,0,224) 6.25%,rgb(34,0,220) 7.031%,rgb(38,0,216) 7.812%,rgb(42,0,212) 8.593%,rgb(46,0,208) 9.375%,rgb(50,0,204) 10.15%,rgb(54,0,200) 10.93%,rgb(58,0,196) 11.71%,rgb(62,0,192) 12.5%,rgb(66,0,188) 13.28%,rgb(70,0,184) 14.06%,rgb(74,0,180) 14.84%,rgb(78,0,176) 15.62%,rgb(82,0,172) 16.40%,rgb(86,0,168) 17.18%,rgb(90,0,164) 17.96%,rgb(94,0,160) 18.75%,rgb(98,0,156) 19.53%,rgb(102,0,152) 20.31%,rgb(106,0,148) 21.09%,rgb(110,0,144) 21.87%,rgb(114,0,140) 22.65%,rgb(118,0,136) 23.43%,rgb(122,0,132) 24.21%,rgb(126,0,128) 25%,rgb(130,0,124) 25.78%,rgb(134,0,120) 26.56%,rgb(138,0,116) 27.34%,rgb(142,0,112) 28.12%,rgb(146,0,108) 28.90%,rgb(150,0,104) 29.68%,rgb(154,0,100) 30.46%,rgb(158,0,96) 31.25%,rgb(162,0,92) 32.03%,rgb(166,0,88) 32.81%,rgb(170,0,84) 33.59%,rgb(174,0,80) 34.37%,rgb(178,0,76) 35.15%,rgb(182,0,72) 35.93%,rgb(186,0,68) 36.71%,rgb(190,0,64) 37.5%,rgb(194,0,60) 38.28%,rgb(198,0,56) 39.06%,rgb(202,0,52) 39.84%,rgb(206,0,48) 40.62%,rgb(210,0,44) 41.40%,rgb(214,0,40) 42.18%,rgb(218,0,36) 42.96%,rgb(222,0,32) 43.75%,rgb(226,0,28) 44.53%,rgb(230,0,24) 45.31%,rgb(234,0,20) 46.09%,rgb(238,0,16) 46.87%,rgb(242,0,12) 47.65%,rgb(246,0,8) 48.43%,rgb(250,0,4) 49.21%,rgb(255,0,0) 50%,rgb(250,4,0) 50.78%,rgb(246,8,0) 51.56%,rgb(242,12,0) 52.34%,rgb(238,16,0) 53.12%,rgb(234,20,0) 53.90%,rgb(230,24,0) 54.68%,rgb(226,28,0) 55.46%,rgb(222,32,0) 56.25%,rgb(218,36,0) 57.03%,rgb(214,40,0) 57.81%,rgb(210,44,0) 58.59%,rgb(206,48,0) 59.37%,rgb(202,52,0) 60.15%,rgb(198,56,0) 60.93%,rgb(194,60,0) 61.71%,rgb(190,64,0) 62.5%,rgb(186,68,0) 63.28%,rgb(182,72,0) 64.06%,rgb(178,76,0) 64.84%,rgb(174,80,0) 65.62%,rgb(170,84,0) 66.40%,rgb(166,88,0) 67.18%,rgb(162,92,0) 67.96%,rgb(158,96,0) 68.75%,rgb(154,100,0) 69.53%,rgb(150,104,0) 70.31%,rgb(146,108,0) 71.09%,rgb(142,112,0) 71.87%,rgb(138,116,0) 72.65%,rgb(134,120,0) 73.43%,rgb(130,124,0) 74.21%,rgb(126,128,0) 75%,rgb(122,132,0) 75.78%,rgb(118,136,0) 76.56%,rgb(114,140,0) 77.34%,rgb(110,144,0) 78.12%,rgb(106,148,0) 78.90%,rgb(102,152,0) 79.68%,rgb(98,156,0) 80.46%,rgb(94,160,0) 81.25%,rgb(90,164,0) 82.03%,rgb(86,168,0) 82.81%,rgb(82,172,0) 83.59%,rgb(78,176,0) 84.37%,rgb(74,180,0) 85.15%,rgb(70,184,0) 85.93%,rgb(66,188,0) 86.71%,rgb(62,192,0) 87.5%,rgb(58,196,0) 88.28%,rgb(54,200,0) 89.06%,rgb(50,204,0) 89.84%,rgb(46,208,0) 90.62%,rgb(42,212,0) 91.40%,rgb(38,216,0) 92.18%,rgb(34,220,0) 92.96%,rgb(30,224,0) 93.75%,rgb(26,228,0) 94.53%,rgb(22,232,0) 95.31%,rgb(18,236,0) 96.09%,rgb(14,240,0) 96.87%,rgb(10,244,0) 97.65%,rgb(6,248,0) 98.43%,rgb(2,252,0) 99.21%,rgb(0,255,0) 100%\",\n tex_buffer: new Uint8Array([0,0,255,2,0,252,6,0,248,10,0,244,14,0,240,18,0,236,22,0,232,26,0,228,30,0,224,34,0,220,38,0,216,42,0,212,46,0,208,50,0,204,54,0,200,58,0,196,62,0,192,66,0,188,70,0,184,74,0,180,78,0,176,82,0,172,86,0,168,90,0,164,94,0,160,98,0,156,102,0,152,106,0,148,110,0,144,114,0,140,118,0,136,122,0,132,126,0,128,130,0,124,134,0,120,138,0,116,142,0,112,146,0,108,150,0,104,154,0,100,158,0,96,162,0,92,166,0,88,170,0,84,174,0,80,178,0,76,182,0,72,186,0,68,190,0,64,194,0,60,198,0,56,202,0,52,206,0,48,210,0,44,214,0,40,218,0,36,222,0,32,226,0,28,230,0,24,234,0,20,238,0,16,242,0,12,246,0,8,250,0,4,255,0,0,250,4,0,246,8,0,242,12,0,238,16,0,234,20,0,230,24,0,226,28,0,222,32,0,218,36,0,214,40,0,210,44,0,206,48,0,202,52,0,198,56,0,194,60,0,190,64,0,186,68,0,182,72,0,178,76,0,174,80,0,170,84,0,166,88,0,162,92,0,158,96,0,154,100,0,150,104,0,146,108,0,142,112,0,138,116,0,134,120,0,130,124,0,126,128,0,122,132,0,118,136,0,114,140,0,110,144,0,106,148,0,102,152,0,98,156,0,94,160,0,90,164,0,86,168,0,82,172,0,78,176,0,74,180,0,70,184,0,66,188,0,62,192,0,58,196,0,54,200,0,50,204,0,46,208,0,42,212,0,38,216,0,34,220,0,30,224,0,26,228,0,22,232,0,18,236,0,14,240,0,10,244,0,6,248,0,2,252,0,0,255,0]),\n linear_interpolation: true\n},\n{\n name: \"bwr\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: true,\n c3g_string: \"rgb(0,0,255) 0%,rgb(2,2,255) 0.781%,rgb(6,6,255) 1.562%,rgb(10,10,255) 2.343%,rgb(14,14,255) 3.125%,rgb(18,18,255) 3.906%,rgb(22,22,255) 4.687%,rgb(26,26,255) 5.468%,rgb(30,30,255) 6.25%,rgb(34,34,255) 7.031%,rgb(38,38,255) 7.812%,rgb(42,42,255) 8.593%,rgb(46,46,255) 9.375%,rgb(50,50,255) 10.15%,rgb(54,54,255) 10.93%,rgb(58,58,255) 11.71%,rgb(62,62,255) 12.5%,rgb(66,66,255) 13.28%,rgb(70,70,255) 14.06%,rgb(74,74,255) 14.84%,rgb(78,78,255) 15.62%,rgb(82,82,255) 16.40%,rgb(86,86,255) 17.18%,rgb(90,90,255) 17.96%,rgb(94,94,255) 18.75%,rgb(98,98,255) 19.53%,rgb(102,102,255) 20.31%,rgb(106,106,255) 21.09%,rgb(110,110,255) 21.87%,rgb(114,114,255) 22.65%,rgb(118,118,255) 23.43%,rgb(122,122,255) 24.21%,rgb(126,126,255) 25%,rgb(130,130,255) 25.78%,rgb(134,134,255) 26.56%,rgb(138,138,255) 27.34%,rgb(142,142,255) 28.12%,rgb(146,146,255) 28.90%,rgb(150,150,255) 29.68%,rgb(154,154,255) 30.46%,rgb(158,158,255) 31.25%,rgb(162,162,255) 32.03%,rgb(166,166,255) 32.81%,rgb(170,170,255) 33.59%,rgb(174,174,255) 34.37%,rgb(178,178,255) 35.15%,rgb(182,182,255) 35.93%,rgb(186,186,255) 36.71%,rgb(190,190,255) 37.5%,rgb(194,194,255) 38.28%,rgb(198,198,255) 39.06%,rgb(202,202,255) 39.84%,rgb(206,206,255) 40.62%,rgb(210,210,255) 41.40%,rgb(214,214,255) 42.18%,rgb(218,218,255) 42.96%,rgb(222,222,255) 43.75%,rgb(226,226,255) 44.53%,rgb(230,230,255) 45.31%,rgb(234,234,255) 46.09%,rgb(238,238,255) 46.87%,rgb(242,242,255) 47.65%,rgb(246,246,255) 48.43%,rgb(250,250,255) 49.21%,rgb(255,255,255) 50%,rgb(255,250,250) 50.78%,rgb(255,246,246) 51.56%,rgb(255,242,242) 52.34%,rgb(255,238,238) 53.12%,rgb(255,234,234) 53.90%,rgb(255,230,230) 54.68%,rgb(255,226,226) 55.46%,rgb(255,222,222) 56.25%,rgb(255,218,218) 57.03%,rgb(255,214,214) 57.81%,rgb(255,210,210) 58.59%,rgb(255,206,206) 59.37%,rgb(255,202,202) 60.15%,rgb(255,198,198) 60.93%,rgb(255,194,194) 61.71%,rgb(255,190,190) 62.5%,rgb(255,186,186) 63.28%,rgb(255,182,182) 64.06%,rgb(255,178,178) 64.84%,rgb(255,174,174) 65.62%,rgb(255,170,170) 66.40%,rgb(255,166,166) 67.18%,rgb(255,162,162) 67.96%,rgb(255,158,158) 68.75%,rgb(255,154,154) 69.53%,rgb(255,150,150) 70.31%,rgb(255,146,146) 71.09%,rgb(255,142,142) 71.87%,rgb(255,138,138) 72.65%,rgb(255,134,134) 73.43%,rgb(255,130,130) 74.21%,rgb(255,126,126) 75%,rgb(255,122,122) 75.78%,rgb(255,118,118) 76.56%,rgb(255,114,114) 77.34%,rgb(255,110,110) 78.12%,rgb(255,106,106) 78.90%,rgb(255,102,102) 79.68%,rgb(255,98,98) 80.46%,rgb(255,94,94) 81.25%,rgb(255,90,90) 82.03%,rgb(255,86,86) 82.81%,rgb(255,82,82) 83.59%,rgb(255,78,78) 84.37%,rgb(255,74,74) 85.15%,rgb(255,70,70) 85.93%,rgb(255,66,66) 86.71%,rgb(255,62,62) 87.5%,rgb(255,58,58) 88.28%,rgb(255,54,54) 89.06%,rgb(255,50,50) 89.84%,rgb(255,46,46) 90.62%,rgb(255,42,42) 91.40%,rgb(255,38,38) 92.18%,rgb(255,34,34) 92.96%,rgb(255,30,30) 93.75%,rgb(255,26,26) 94.53%,rgb(255,22,22) 95.31%,rgb(255,18,18) 96.09%,rgb(255,14,14) 96.87%,rgb(255,10,10) 97.65%,rgb(255,6,6) 98.43%,rgb(255,2,2) 99.21%,rgb(255,0,0) 100%\",\n tex_buffer: new Uint8Array([0,0,255,2,2,255,6,6,255,10,10,255,14,14,255,18,18,255,22,22,255,26,26,255,30,30,255,34,34,255,38,38,255,42,42,255,46,46,255,50,50,255,54,54,255,58,58,255,62,62,255,66,66,255,70,70,255,74,74,255,78,78,255,82,82,255,86,86,255,90,90,255,94,94,255,98,98,255,102,102,255,106,106,255,110,110,255,114,114,255,118,118,255,122,122,255,126,126,255,130,130,255,134,134,255,138,138,255,142,142,255,146,146,255,150,150,255,154,154,255,158,158,255,162,162,255,166,166,255,170,170,255,174,174,255,178,178,255,182,182,255,186,186,255,190,190,255,194,194,255,198,198,255,202,202,255,206,206,255,210,210,255,214,214,255,218,218,255,222,222,255,226,226,255,230,230,255,234,234,255,238,238,255,242,242,255,246,246,255,250,250,255,255,255,255,255,250,250,255,246,246,255,242,242,255,238,238,255,234,234,255,230,230,255,226,226,255,222,222,255,218,218,255,214,214,255,210,210,255,206,206,255,202,202,255,198,198,255,194,194,255,190,190,255,186,186,255,182,182,255,178,178,255,174,174,255,170,170,255,166,166,255,162,162,255,158,158,255,154,154,255,150,150,255,146,146,255,142,142,255,138,138,255,134,134,255,130,130,255,126,126,255,122,122,255,118,118,255,114,114,255,110,110,255,106,106,255,102,102,255,98,98,255,94,94,255,90,90,255,86,86,255,82,82,255,78,78,255,74,74,255,70,70,255,66,66,255,62,62,255,58,58,255,54,54,255,50,50,255,46,46,255,42,42,255,38,38,255,34,34,255,30,30,255,26,26,255,22,22,255,18,18,255,14,14,255,10,10,255,6,6,255,2,2,255,0,0]),\n linear_interpolation: true\n},\n{\n name: \"cividis\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,34,77) 0%,rgb(0,35,79) 0.781%,rgb(0,36,82) 1.562%,rgb(0,38,85) 2.343%,rgb(0,39,89) 3.125%,rgb(0,40,92) 3.906%,rgb(0,42,96) 4.687%,rgb(0,43,100) 5.468%,rgb(0,44,103) 6.25%,rgb(0,46,107) 7.031%,rgb(0,47,111) 7.812%,rgb(0,48,112) 8.593%,rgb(0,49,112) 9.375%,rgb(8,51,112) 10.15%,rgb(14,52,112) 10.93%,rgb(20,54,111) 11.71%,rgb(24,55,111) 12.5%,rgb(28,56,110) 13.28%,rgb(31,58,110) 14.06%,rgb(34,59,110) 14.84%,rgb(37,61,109) 15.62%,rgb(40,62,109) 16.40%,rgb(43,63,109) 17.18%,rgb(46,65,108) 17.96%,rgb(48,66,108) 18.75%,rgb(50,68,108) 19.53%,rgb(53,69,108) 20.31%,rgb(55,70,108) 21.09%,rgb(57,72,108) 21.87%,rgb(59,73,107) 22.65%,rgb(62,75,107) 23.43%,rgb(64,76,107) 24.21%,rgb(66,77,107) 25%,rgb(68,79,107) 25.78%,rgb(70,80,107) 26.56%,rgb(72,81,107) 27.34%,rgb(74,83,107) 28.12%,rgb(76,84,108) 28.90%,rgb(78,86,108) 29.68%,rgb(79,87,108) 30.46%,rgb(81,88,108) 31.25%,rgb(83,90,108) 32.03%,rgb(85,91,109) 32.81%,rgb(87,93,109) 33.59%,rgb(89,94,109) 34.37%,rgb(90,95,109) 35.15%,rgb(92,97,110) 35.93%,rgb(94,98,110) 36.71%,rgb(96,100,110) 37.5%,rgb(97,101,111) 38.28%,rgb(99,102,111) 39.06%,rgb(101,104,112) 39.84%,rgb(103,105,112) 40.62%,rgb(104,107,113) 41.40%,rgb(106,108,113) 42.18%,rgb(108,109,114) 42.96%,rgb(110,111,114) 43.75%,rgb(111,112,115) 44.53%,rgb(113,114,115) 45.31%,rgb(115,115,116) 46.09%,rgb(116,117,117) 46.87%,rgb(118,118,118) 47.65%,rgb(120,120,118) 48.43%,rgb(121,121,119) 49.21%,rgb(124,123,120) 50%,rgb(126,125,120) 50.78%,rgb(128,126,120) 51.56%,rgb(130,128,120) 52.34%,rgb(132,129,120) 53.12%,rgb(133,131,120) 53.90%,rgb(135,132,120) 54.68%,rgb(137,134,120) 55.46%,rgb(139,135,120) 56.25%,rgb(141,137,120) 57.03%,rgb(143,138,119) 57.81%,rgb(145,140,119) 58.59%,rgb(147,141,119) 59.37%,rgb(149,143,119) 60.15%,rgb(151,144,118) 60.93%,rgb(153,146,118) 61.71%,rgb(155,147,118) 62.5%,rgb(157,149,117) 63.28%,rgb(159,150,117) 64.06%,rgb(161,152,116) 64.84%,rgb(163,154,116) 65.62%,rgb(165,155,115) 66.40%,rgb(167,157,115) 67.18%,rgb(169,158,114) 67.96%,rgb(171,160,114) 68.75%,rgb(173,162,113) 69.53%,rgb(175,163,112) 70.31%,rgb(177,165,112) 71.09%,rgb(179,166,111) 71.87%,rgb(181,168,110) 72.65%,rgb(183,170,109) 73.43%,rgb(185,171,109) 74.21%,rgb(187,173,108) 75%,rgb(189,175,107) 75.78%,rgb(191,176,106) 76.56%,rgb(194,178,105) 77.34%,rgb(196,180,104) 78.12%,rgb(198,181,103) 78.90%,rgb(200,183,101) 79.68%,rgb(202,185,100) 80.46%,rgb(204,187,99) 81.25%,rgb(206,188,98) 82.03%,rgb(208,190,96) 82.81%,rgb(211,192,95) 83.59%,rgb(213,194,94) 84.37%,rgb(215,195,92) 85.15%,rgb(217,197,90) 85.93%,rgb(219,199,89) 86.71%,rgb(222,201,87) 87.5%,rgb(224,203,85) 88.28%,rgb(226,204,83) 89.06%,rgb(228,206,81) 89.84%,rgb(230,208,79) 90.62%,rgb(233,210,77) 91.40%,rgb(235,212,75) 92.18%,rgb(237,214,72) 92.96%,rgb(239,216,70) 93.75%,rgb(242,218,67) 94.53%,rgb(244,219,64) 95.31%,rgb(246,221,61) 96.09%,rgb(249,223,58) 96.87%,rgb(251,225,54) 97.65%,rgb(253,227,51) 98.43%,rgb(253,230,54) 99.21%,rgb(253,231,55) 100%\",\n tex_buffer: new Uint8Array([0,34,77,0,35,79,0,36,82,0,38,85,0,39,89,0,40,92,0,42,96,0,43,100,0,44,103,0,46,107,0,47,111,0,48,112,0,49,112,8,51,112,14,52,112,20,54,111,24,55,111,28,56,110,31,58,110,34,59,110,37,61,109,40,62,109,43,63,109,46,65,108,48,66,108,50,68,108,53,69,108,55,70,108,57,72,108,59,73,107,62,75,107,64,76,107,66,77,107,68,79,107,70,80,107,72,81,107,74,83,107,76,84,108,78,86,108,79,87,108,81,88,108,83,90,108,85,91,109,87,93,109,89,94,109,90,95,109,92,97,110,94,98,110,96,100,110,97,101,111,99,102,111,101,104,112,103,105,112,104,107,113,106,108,113,108,109,114,110,111,114,111,112,115,113,114,115,115,115,116,116,117,117,118,118,118,120,120,118,121,121,119,124,123,120,126,125,120,128,126,120,130,128,120,132,129,120,133,131,120,135,132,120,137,134,120,139,135,120,141,137,120,143,138,119,145,140,119,147,141,119,149,143,119,151,144,118,153,146,118,155,147,118,157,149,117,159,150,117,161,152,116,163,154,116,165,155,115,167,157,115,169,158,114,171,160,114,173,162,113,175,163,112,177,165,112,179,166,111,181,168,110,183,170,109,185,171,109,187,173,108,189,175,107,191,176,106,194,178,105,196,180,104,198,181,103,200,183,101,202,185,100,204,187,99,206,188,98,208,190,96,211,192,95,213,194,94,215,195,92,217,197,90,219,199,89,222,201,87,224,203,85,226,204,83,228,206,81,230,208,79,233,210,77,235,212,75,237,214,72,239,216,70,242,218,67,244,219,64,246,221,61,249,223,58,251,225,54,253,227,51,253,230,54,253,231,55]),\n linear_interpolation: true\n},\n{\n name: \"cool\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,255,255) 0%,rgb(1,253,255) 0.781%,rgb(3,251,255) 1.562%,rgb(5,249,255) 2.343%,rgb(7,247,255) 3.125%,rgb(9,245,255) 3.906%,rgb(11,243,255) 4.687%,rgb(13,241,255) 5.468%,rgb(15,239,255) 6.25%,rgb(17,237,255) 7.031%,rgb(19,235,255) 7.812%,rgb(21,233,255) 8.593%,rgb(23,231,255) 9.375%,rgb(25,229,255) 10.15%,rgb(27,227,255) 10.93%,rgb(29,225,255) 11.71%,rgb(31,223,255) 12.5%,rgb(33,221,255) 13.28%,rgb(35,219,255) 14.06%,rgb(37,217,255) 14.84%,rgb(39,215,255) 15.62%,rgb(41,213,255) 16.40%,rgb(43,211,255) 17.18%,rgb(45,209,255) 17.96%,rgb(47,207,255) 18.75%,rgb(49,205,255) 19.53%,rgb(51,203,255) 20.31%,rgb(53,201,255) 21.09%,rgb(55,199,255) 21.87%,rgb(57,197,255) 22.65%,rgb(59,195,255) 23.43%,rgb(61,193,255) 24.21%,rgb(63,191,255) 25%,rgb(65,189,255) 25.78%,rgb(67,187,255) 26.56%,rgb(69,185,255) 27.34%,rgb(71,183,255) 28.12%,rgb(73,181,255) 28.90%,rgb(75,179,255) 29.68%,rgb(77,177,255) 30.46%,rgb(79,175,255) 31.25%,rgb(81,173,255) 32.03%,rgb(83,171,255) 32.81%,rgb(85,169,255) 33.59%,rgb(87,167,255) 34.37%,rgb(89,165,255) 35.15%,rgb(91,163,255) 35.93%,rgb(93,161,255) 36.71%,rgb(95,159,255) 37.5%,rgb(97,157,255) 38.28%,rgb(99,155,255) 39.06%,rgb(101,153,255) 39.84%,rgb(103,151,255) 40.62%,rgb(105,149,255) 41.40%,rgb(107,147,255) 42.18%,rgb(109,145,255) 42.96%,rgb(111,143,255) 43.75%,rgb(113,141,255) 44.53%,rgb(115,139,255) 45.31%,rgb(117,137,255) 46.09%,rgb(119,135,255) 46.87%,rgb(121,133,255) 47.65%,rgb(123,131,255) 48.43%,rgb(125,129,255) 49.21%,rgb(127,127,255) 50%,rgb(129,125,255) 50.78%,rgb(131,123,255) 51.56%,rgb(133,121,255) 52.34%,rgb(135,119,255) 53.12%,rgb(137,117,255) 53.90%,rgb(139,115,255) 54.68%,rgb(141,113,255) 55.46%,rgb(143,111,255) 56.25%,rgb(145,109,255) 57.03%,rgb(147,107,255) 57.81%,rgb(149,105,255) 58.59%,rgb(151,103,255) 59.37%,rgb(153,101,255) 60.15%,rgb(155,99,255) 60.93%,rgb(157,97,255) 61.71%,rgb(159,95,255) 62.5%,rgb(161,93,255) 63.28%,rgb(163,91,255) 64.06%,rgb(165,89,255) 64.84%,rgb(167,87,255) 65.62%,rgb(169,85,255) 66.40%,rgb(171,83,255) 67.18%,rgb(173,81,255) 67.96%,rgb(175,79,255) 68.75%,rgb(177,77,255) 69.53%,rgb(179,75,255) 70.31%,rgb(181,73,255) 71.09%,rgb(183,71,255) 71.87%,rgb(185,69,255) 72.65%,rgb(187,67,255) 73.43%,rgb(189,65,255) 74.21%,rgb(191,63,255) 75%,rgb(193,61,255) 75.78%,rgb(195,59,255) 76.56%,rgb(197,57,255) 77.34%,rgb(199,55,255) 78.12%,rgb(201,53,255) 78.90%,rgb(203,51,255) 79.68%,rgb(205,49,255) 80.46%,rgb(207,47,255) 81.25%,rgb(209,45,255) 82.03%,rgb(211,43,255) 82.81%,rgb(213,41,255) 83.59%,rgb(215,39,255) 84.37%,rgb(217,37,255) 85.15%,rgb(219,35,255) 85.93%,rgb(221,33,255) 86.71%,rgb(223,31,255) 87.5%,rgb(225,29,255) 88.28%,rgb(227,27,255) 89.06%,rgb(229,25,255) 89.84%,rgb(231,23,255) 90.62%,rgb(233,21,255) 91.40%,rgb(235,19,255) 92.18%,rgb(237,17,255) 92.96%,rgb(239,15,255) 93.75%,rgb(241,13,255) 94.53%,rgb(243,11,255) 95.31%,rgb(245,9,255) 96.09%,rgb(247,7,255) 96.87%,rgb(249,5,255) 97.65%,rgb(251,3,255) 98.43%,rgb(253,1,255) 99.21%,rgb(255,0,255) 100%\",\n tex_buffer: new Uint8Array([0,255,255,1,253,255,3,251,255,5,249,255,7,247,255,9,245,255,11,243,255,13,241,255,15,239,255,17,237,255,19,235,255,21,233,255,23,231,255,25,229,255,27,227,255,29,225,255,31,223,255,33,221,255,35,219,255,37,217,255,39,215,255,41,213,255,43,211,255,45,209,255,47,207,255,49,205,255,51,203,255,53,201,255,55,199,255,57,197,255,59,195,255,61,193,255,63,191,255,65,189,255,67,187,255,69,185,255,71,183,255,73,181,255,75,179,255,77,177,255,79,175,255,81,173,255,83,171,255,85,169,255,87,167,255,89,165,255,91,163,255,93,161,255,95,159,255,97,157,255,99,155,255,101,153,255,103,151,255,105,149,255,107,147,255,109,145,255,111,143,255,113,141,255,115,139,255,117,137,255,119,135,255,121,133,255,123,131,255,125,129,255,127,127,255,129,125,255,131,123,255,133,121,255,135,119,255,137,117,255,139,115,255,141,113,255,143,111,255,145,109,255,147,107,255,149,105,255,151,103,255,153,101,255,155,99,255,157,97,255,159,95,255,161,93,255,163,91,255,165,89,255,167,87,255,169,85,255,171,83,255,173,81,255,175,79,255,177,77,255,179,75,255,181,73,255,183,71,255,185,69,255,187,67,255,189,65,255,191,63,255,193,61,255,195,59,255,197,57,255,199,55,255,201,53,255,203,51,255,205,49,255,207,47,255,209,45,255,211,43,255,213,41,255,215,39,255,217,37,255,219,35,255,221,33,255,223,31,255,225,29,255,227,27,255,229,25,255,231,23,255,233,21,255,235,19,255,237,17,255,239,15,255,241,13,255,243,11,255,245,9,255,247,7,255,249,5,255,251,3,255,253,1,255,255,0,255]),\n linear_interpolation: true\n},\n{\n name: \"coolwarm\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: true,\n c3g_string: \"rgb(58,76,192) 0%,rgb(59,77,193) 0.781%,rgb(62,81,196) 1.562%,rgb(64,84,199) 2.343%,rgb(66,88,202) 3.125%,rgb(69,91,205) 3.906%,rgb(71,95,208) 4.687%,rgb(74,98,211) 5.468%,rgb(76,102,214) 6.25%,rgb(78,105,216) 7.031%,rgb(81,108,219) 7.812%,rgb(83,112,221) 8.593%,rgb(86,115,224) 9.375%,rgb(88,118,226) 10.15%,rgb(91,122,228) 10.93%,rgb(94,125,230) 11.71%,rgb(96,128,233) 12.5%,rgb(99,131,235) 13.28%,rgb(101,134,236) 14.06%,rgb(104,138,238) 14.84%,rgb(107,141,240) 15.62%,rgb(109,144,242) 16.40%,rgb(112,147,243) 17.18%,rgb(115,150,244) 17.96%,rgb(118,153,246) 18.75%,rgb(120,156,247) 19.53%,rgb(123,158,248) 20.31%,rgb(126,161,249) 21.09%,rgb(129,164,250) 21.87%,rgb(131,167,251) 22.65%,rgb(134,169,252) 23.43%,rgb(137,172,252) 24.21%,rgb(140,175,253) 25%,rgb(143,177,254) 25.78%,rgb(145,179,254) 26.56%,rgb(148,182,254) 27.34%,rgb(151,184,254) 28.12%,rgb(154,186,254) 28.90%,rgb(156,188,254) 29.68%,rgb(159,191,254) 30.46%,rgb(162,193,254) 31.25%,rgb(165,195,254) 32.03%,rgb(167,197,253) 32.81%,rgb(170,199,253) 33.59%,rgb(173,200,252) 34.37%,rgb(175,202,251) 35.15%,rgb(178,204,250) 35.93%,rgb(181,205,250) 36.71%,rgb(183,207,249) 37.5%,rgb(186,208,247) 38.28%,rgb(188,210,246) 39.06%,rgb(191,211,245) 39.84%,rgb(193,212,244) 40.62%,rgb(196,213,242) 41.40%,rgb(198,214,240) 42.18%,rgb(201,215,239) 42.96%,rgb(203,216,237) 43.75%,rgb(205,217,235) 44.53%,rgb(207,217,233) 45.31%,rgb(210,218,231) 46.09%,rgb(212,219,229) 46.87%,rgb(214,219,227) 47.65%,rgb(216,220,225) 48.43%,rgb(218,220,222) 49.21%,rgb(220,220,220) 50%,rgb(222,219,217) 50.78%,rgb(224,218,214) 51.56%,rgb(226,217,212) 52.34%,rgb(228,216,209) 53.12%,rgb(230,215,206) 53.90%,rgb(232,213,203) 54.68%,rgb(234,212,200) 55.46%,rgb(235,210,197) 56.25%,rgb(237,209,194) 57.03%,rgb(238,207,191) 57.81%,rgb(239,205,188) 58.59%,rgb(240,204,185) 59.37%,rgb(241,202,181) 60.15%,rgb(242,200,178) 60.93%,rgb(243,198,175) 61.71%,rgb(244,196,172) 62.5%,rgb(245,193,169) 63.28%,rgb(245,191,166) 64.06%,rgb(246,189,163) 64.84%,rgb(246,186,159) 65.62%,rgb(246,184,156) 66.40%,rgb(247,181,153) 67.18%,rgb(247,179,150) 67.96%,rgb(247,176,147) 68.75%,rgb(247,173,143) 69.53%,rgb(246,170,140) 70.31%,rgb(246,168,137) 71.09%,rgb(246,165,134) 71.87%,rgb(245,162,131) 72.65%,rgb(245,159,128) 73.43%,rgb(244,156,125) 74.21%,rgb(244,152,122) 75%,rgb(243,149,119) 75.78%,rgb(242,146,115) 76.56%,rgb(241,143,112) 77.34%,rgb(240,139,109) 78.12%,rgb(239,136,106) 78.90%,rgb(237,132,103) 79.68%,rgb(236,129,100) 80.46%,rgb(235,125,98) 81.25%,rgb(233,121,95) 82.03%,rgb(231,118,92) 82.81%,rgb(230,114,89) 83.59%,rgb(228,110,86) 84.37%,rgb(226,106,83) 85.15%,rgb(224,102,81) 85.93%,rgb(222,98,78) 86.71%,rgb(220,94,75) 87.5%,rgb(218,90,72) 88.28%,rgb(216,86,70) 89.06%,rgb(214,82,67) 89.84%,rgb(211,77,65) 90.62%,rgb(209,73,62) 91.40%,rgb(206,68,60) 92.18%,rgb(204,64,57) 92.96%,rgb(201,59,55) 93.75%,rgb(198,53,52) 94.53%,rgb(196,48,50) 95.31%,rgb(193,42,48) 96.09%,rgb(190,35,45) 96.87%,rgb(187,26,43) 97.65%,rgb(184,17,41) 98.43%,rgb(181,8,39) 99.21%,rgb(179,3,38) 100%\",\n tex_buffer: new Uint8Array([58,76,192,59,77,193,62,81,196,64,84,199,66,88,202,69,91,205,71,95,208,74,98,211,76,102,214,78,105,216,81,108,219,83,112,221,86,115,224,88,118,226,91,122,228,94,125,230,96,128,233,99,131,235,101,134,236,104,138,238,107,141,240,109,144,242,112,147,243,115,150,244,118,153,246,120,156,247,123,158,248,126,161,249,129,164,250,131,167,251,134,169,252,137,172,252,140,175,253,143,177,254,145,179,254,148,182,254,151,184,254,154,186,254,156,188,254,159,191,254,162,193,254,165,195,254,167,197,253,170,199,253,173,200,252,175,202,251,178,204,250,181,205,250,183,207,249,186,208,247,188,210,246,191,211,245,193,212,244,196,213,242,198,214,240,201,215,239,203,216,237,205,217,235,207,217,233,210,218,231,212,219,229,214,219,227,216,220,225,218,220,222,220,220,220,222,219,217,224,218,214,226,217,212,228,216,209,230,215,206,232,213,203,234,212,200,235,210,197,237,209,194,238,207,191,239,205,188,240,204,185,241,202,181,242,200,178,243,198,175,244,196,172,245,193,169,245,191,166,246,189,163,246,186,159,246,184,156,247,181,153,247,179,150,247,176,147,247,173,143,246,170,140,246,168,137,246,165,134,245,162,131,245,159,128,244,156,125,244,152,122,243,149,119,242,146,115,241,143,112,240,139,109,239,136,106,237,132,103,236,129,100,235,125,98,233,121,95,231,118,92,230,114,89,228,110,86,226,106,83,224,102,81,222,98,78,220,94,75,218,90,72,216,86,70,214,82,67,211,77,65,209,73,62,206,68,60,204,64,57,201,59,55,198,53,52,196,48,50,193,42,48,190,35,45,187,26,43,184,17,41,181,8,39,179,3,38]),\n linear_interpolation: true\n},\n{\n name: \"copper\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(1,0,0) 0.781%,rgb(3,2,1) 1.562%,rgb(6,3,2) 2.343%,rgb(8,5,3) 3.125%,rgb(11,7,4) 3.906%,rgb(13,8,5) 4.687%,rgb(16,10,6) 5.468%,rgb(18,11,7) 6.25%,rgb(21,13,8) 7.031%,rgb(23,14,9) 7.812%,rgb(26,16,10) 8.593%,rgb(28,18,11) 9.375%,rgb(31,19,12) 10.15%,rgb(33,21,13) 10.93%,rgb(35,22,14) 11.71%,rgb(38,24,15) 12.5%,rgb(40,25,16) 13.28%,rgb(43,27,17) 14.06%,rgb(45,29,18) 14.84%,rgb(48,30,19) 15.62%,rgb(50,32,20) 16.40%,rgb(53,33,21) 17.18%,rgb(55,35,22) 17.96%,rgb(58,36,23) 18.75%,rgb(60,38,24) 19.53%,rgb(63,39,25) 20.31%,rgb(65,41,26) 21.09%,rgb(68,43,27) 21.87%,rgb(70,44,28) 22.65%,rgb(73,46,29) 23.43%,rgb(75,47,30) 24.21%,rgb(78,49,31) 25%,rgb(80,50,32) 25.78%,rgb(83,52,33) 26.56%,rgb(85,54,34) 27.34%,rgb(88,55,35) 28.12%,rgb(90,57,36) 28.90%,rgb(93,58,37) 29.68%,rgb(95,60,38) 30.46%,rgb(97,61,39) 31.25%,rgb(100,63,40) 32.03%,rgb(102,65,41) 32.81%,rgb(105,66,42) 33.59%,rgb(107,68,43) 34.37%,rgb(110,69,44) 35.15%,rgb(112,71,45) 35.93%,rgb(115,72,46) 36.71%,rgb(117,74,47) 37.5%,rgb(120,76,48) 38.28%,rgb(122,77,49) 39.06%,rgb(125,79,50) 39.84%,rgb(127,80,51) 40.62%,rgb(130,82,52) 41.40%,rgb(132,83,53) 42.18%,rgb(135,85,54) 42.96%,rgb(137,87,55) 43.75%,rgb(140,88,56) 44.53%,rgb(142,90,57) 45.31%,rgb(145,91,58) 46.09%,rgb(147,93,59) 46.87%,rgb(150,94,60) 47.65%,rgb(152,96,61) 48.43%,rgb(155,98,62) 49.21%,rgb(157,99,63) 50%,rgb(159,101,64) 50.78%,rgb(162,102,65) 51.56%,rgb(164,104,66) 52.34%,rgb(167,105,67) 53.12%,rgb(169,107,68) 53.90%,rgb(172,109,69) 54.68%,rgb(174,110,70) 55.46%,rgb(177,112,71) 56.25%,rgb(179,113,72) 57.03%,rgb(182,115,73) 57.81%,rgb(184,116,74) 58.59%,rgb(187,118,75) 59.37%,rgb(189,119,76) 60.15%,rgb(192,121,77) 60.93%,rgb(194,123,78) 61.71%,rgb(197,124,79) 62.5%,rgb(199,126,80) 63.28%,rgb(202,127,81) 64.06%,rgb(204,129,82) 64.84%,rgb(207,130,83) 65.62%,rgb(209,132,84) 66.40%,rgb(212,134,85) 67.18%,rgb(214,135,86) 67.96%,rgb(217,137,87) 68.75%,rgb(219,138,88) 69.53%,rgb(221,140,89) 70.31%,rgb(224,141,90) 71.09%,rgb(226,143,91) 71.87%,rgb(229,145,92) 72.65%,rgb(231,146,93) 73.43%,rgb(234,148,94) 74.21%,rgb(236,149,95) 75%,rgb(239,151,96) 75.78%,rgb(241,152,97) 76.56%,rgb(244,154,98) 77.34%,rgb(246,156,99) 78.12%,rgb(249,157,100) 78.90%,rgb(251,159,101) 79.68%,rgb(254,160,102) 80.46%,rgb(255,162,103) 81.25%,rgb(255,163,104) 82.03%,rgb(255,165,105) 82.81%,rgb(255,167,106) 83.59%,rgb(255,168,107) 84.37%,rgb(255,170,108) 85.15%,rgb(255,171,109) 85.93%,rgb(255,173,110) 86.71%,rgb(255,174,111) 87.5%,rgb(255,176,112) 88.28%,rgb(255,178,113) 89.06%,rgb(255,179,114) 89.84%,rgb(255,181,115) 90.62%,rgb(255,182,116) 91.40%,rgb(255,184,117) 92.18%,rgb(255,185,118) 92.96%,rgb(255,187,119) 93.75%,rgb(255,189,120) 94.53%,rgb(255,190,121) 95.31%,rgb(255,192,122) 96.09%,rgb(255,193,123) 96.87%,rgb(255,195,124) 97.65%,rgb(255,196,125) 98.43%,rgb(255,198,126) 99.21%,rgb(255,199,126) 100%\",\n tex_buffer: new Uint8Array([0,0,0,1,0,0,3,2,1,6,3,2,8,5,3,11,7,4,13,8,5,16,10,6,18,11,7,21,13,8,23,14,9,26,16,10,28,18,11,31,19,12,33,21,13,35,22,14,38,24,15,40,25,16,43,27,17,45,29,18,48,30,19,50,32,20,53,33,21,55,35,22,58,36,23,60,38,24,63,39,25,65,41,26,68,43,27,70,44,28,73,46,29,75,47,30,78,49,31,80,50,32,83,52,33,85,54,34,88,55,35,90,57,36,93,58,37,95,60,38,97,61,39,100,63,40,102,65,41,105,66,42,107,68,43,110,69,44,112,71,45,115,72,46,117,74,47,120,76,48,122,77,49,125,79,50,127,80,51,130,82,52,132,83,53,135,85,54,137,87,55,140,88,56,142,90,57,145,91,58,147,93,59,150,94,60,152,96,61,155,98,62,157,99,63,159,101,64,162,102,65,164,104,66,167,105,67,169,107,68,172,109,69,174,110,70,177,112,71,179,113,72,182,115,73,184,116,74,187,118,75,189,119,76,192,121,77,194,123,78,197,124,79,199,126,80,202,127,81,204,129,82,207,130,83,209,132,84,212,134,85,214,135,86,217,137,87,219,138,88,221,140,89,224,141,90,226,143,91,229,145,92,231,146,93,234,148,94,236,149,95,239,151,96,241,152,97,244,154,98,246,156,99,249,157,100,251,159,101,254,160,102,255,162,103,255,163,104,255,165,105,255,167,106,255,168,107,255,170,108,255,171,109,255,173,110,255,174,111,255,176,112,255,178,113,255,179,114,255,181,115,255,182,116,255,184,117,255,185,118,255,187,119,255,189,120,255,190,121,255,192,122,255,193,123,255,195,124,255,196,125,255,198,126,255,199,126]),\n linear_interpolation: true\n},\n{\n name: \"cubehelix\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(1,0,1) 0.781%,rgb(5,1,4) 1.562%,rgb(8,2,8) 2.343%,rgb(10,4,11) 3.125%,rgb(13,5,15) 3.906%,rgb(16,6,19) 4.687%,rgb(18,8,23) 5.468%,rgb(20,10,27) 6.25%,rgb(21,12,31) 7.031%,rgb(23,13,35) 7.812%,rgb(24,16,39) 8.593%,rgb(25,18,43) 9.375%,rgb(25,20,47) 10.15%,rgb(26,23,50) 10.93%,rgb(26,25,54) 11.71%,rgb(26,28,57) 12.5%,rgb(26,31,61) 13.28%,rgb(26,34,64) 14.06%,rgb(25,37,66) 14.84%,rgb(25,40,69) 15.62%,rgb(24,43,71) 16.40%,rgb(24,47,73) 17.18%,rgb(23,50,74) 17.96%,rgb(22,54,76) 18.75%,rgb(22,57,77) 19.53%,rgb(21,61,77) 20.31%,rgb(21,64,78) 21.09%,rgb(21,68,78) 21.87%,rgb(20,71,78) 22.65%,rgb(20,75,77) 23.43%,rgb(21,78,77) 24.21%,rgb(21,82,76) 25%,rgb(22,85,75) 25.78%,rgb(23,88,73) 26.56%,rgb(24,91,72) 27.34%,rgb(25,94,70) 28.12%,rgb(27,97,68) 28.90%,rgb(29,100,66) 29.68%,rgb(31,102,64) 30.46%,rgb(34,105,62) 31.25%,rgb(37,107,60) 32.03%,rgb(40,109,58) 32.81%,rgb(43,111,56) 33.59%,rgb(47,113,54) 34.37%,rgb(51,115,53) 35.15%,rgb(56,116,51) 35.93%,rgb(61,117,50) 36.71%,rgb(66,118,48) 37.5%,rgb(71,119,48) 38.28%,rgb(76,120,47) 39.06%,rgb(82,121,46) 39.84%,rgb(88,121,46) 40.62%,rgb(93,122,47) 41.40%,rgb(99,122,47) 42.18%,rgb(106,122,48) 42.96%,rgb(112,122,49) 43.75%,rgb(118,122,51) 44.53%,rgb(124,122,53) 45.31%,rgb(130,122,55) 46.09%,rgb(136,122,58) 46.87%,rgb(142,121,61) 47.65%,rgb(148,121,65) 48.43%,rgb(154,121,68) 49.21%,rgb(160,121,73) 50%,rgb(165,120,77) 50.78%,rgb(170,120,82) 51.56%,rgb(175,120,87) 52.34%,rgb(180,120,92) 53.12%,rgb(184,120,98) 53.90%,rgb(188,121,104) 54.68%,rgb(192,121,110) 55.46%,rgb(195,122,116) 56.25%,rgb(199,122,122) 57.03%,rgb(201,123,129) 57.81%,rgb(204,124,135) 58.59%,rgb(206,125,142) 59.37%,rgb(208,126,148) 60.15%,rgb(209,128,155) 60.93%,rgb(210,129,161) 61.71%,rgb(211,131,167) 62.5%,rgb(212,133,174) 63.28%,rgb(212,135,180) 64.06%,rgb(212,138,185) 64.84%,rgb(212,140,191) 65.62%,rgb(211,143,197) 66.40%,rgb(211,145,202) 67.18%,rgb(210,148,207) 67.96%,rgb(209,151,211) 68.75%,rgb(207,155,216) 69.53%,rgb(206,158,220) 70.31%,rgb(205,161,223) 71.09%,rgb(203,165,227) 71.87%,rgb(202,168,230) 72.65%,rgb(201,172,232) 73.43%,rgb(199,176,235) 74.21%,rgb(198,179,237) 75%,rgb(197,183,239) 75.78%,rgb(196,187,240) 76.56%,rgb(195,190,241) 77.34%,rgb(194,194,242) 78.12%,rgb(193,198,242) 78.90%,rgb(193,201,243) 79.68%,rgb(193,205,243) 80.46%,rgb(193,208,243) 81.25%,rgb(193,211,243) 82.03%,rgb(194,215,242) 82.81%,rgb(195,218,242) 83.59%,rgb(196,221,241) 84.37%,rgb(197,223,241) 85.15%,rgb(198,226,240) 85.93%,rgb(200,229,240) 86.71%,rgb(202,231,239) 87.5%,rgb(205,233,239) 88.28%,rgb(207,236,238) 89.06%,rgb(210,238,238) 89.84%,rgb(213,239,238) 90.62%,rgb(216,241,238) 91.40%,rgb(220,243,239) 92.18%,rgb(223,244,239) 92.96%,rgb(227,246,240) 93.75%,rgb(230,247,241) 94.53%,rgb(234,248,242) 95.31%,rgb(238,250,244) 96.09%,rgb(242,251,246) 96.87%,rgb(245,252,248) 97.65%,rgb(249,253,250) 98.43%,rgb(253,254,253) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([0,0,0,1,0,1,5,1,4,8,2,8,10,4,11,13,5,15,16,6,19,18,8,23,20,10,27,21,12,31,23,13,35,24,16,39,25,18,43,25,20,47,26,23,50,26,25,54,26,28,57,26,31,61,26,34,64,25,37,66,25,40,69,24,43,71,24,47,73,23,50,74,22,54,76,22,57,77,21,61,77,21,64,78,21,68,78,20,71,78,20,75,77,21,78,77,21,82,76,22,85,75,23,88,73,24,91,72,25,94,70,27,97,68,29,100,66,31,102,64,34,105,62,37,107,60,40,109,58,43,111,56,47,113,54,51,115,53,56,116,51,61,117,50,66,118,48,71,119,48,76,120,47,82,121,46,88,121,46,93,122,47,99,122,47,106,122,48,112,122,49,118,122,51,124,122,53,130,122,55,136,122,58,142,121,61,148,121,65,154,121,68,160,121,73,165,120,77,170,120,82,175,120,87,180,120,92,184,120,98,188,121,104,192,121,110,195,122,116,199,122,122,201,123,129,204,124,135,206,125,142,208,126,148,209,128,155,210,129,161,211,131,167,212,133,174,212,135,180,212,138,185,212,140,191,211,143,197,211,145,202,210,148,207,209,151,211,207,155,216,206,158,220,205,161,223,203,165,227,202,168,230,201,172,232,199,176,235,198,179,237,197,183,239,196,187,240,195,190,241,194,194,242,193,198,242,193,201,243,193,205,243,193,208,243,193,211,243,194,215,242,195,218,242,196,221,241,197,223,241,198,226,240,200,229,240,202,231,239,205,233,239,207,236,238,210,238,238,213,239,238,216,241,238,220,243,239,223,244,239,227,246,240,230,247,241,234,248,242,238,250,244,242,251,246,245,252,248,249,253,250,253,254,253,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"curl\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: true,\n c3g_string: \"rgb(21,29,68) 0%,rgb(21,29,68) 0.390%,rgb(21,31,69) 0.390%,rgb(21,31,69) 0.781%,rgb(22,33,70) 0.781%,rgb(22,33,70) 1.171%,rgb(22,35,71) 1.171%,rgb(22,35,71) 1.562%,rgb(23,37,72) 1.562%,rgb(23,37,72) 1.953%,rgb(23,39,73) 1.953%,rgb(23,39,73) 2.343%,rgb(24,41,74) 2.343%,rgb(24,41,74) 2.734%,rgb(24,43,75) 2.734%,rgb(24,43,75) 3.125%,rgb(24,45,76) 3.125%,rgb(24,45,76) 3.515%,rgb(25,47,77) 3.515%,rgb(25,47,77) 3.906%,rgb(25,49,79) 3.906%,rgb(25,49,79) 4.296%,rgb(26,51,80) 4.296%,rgb(26,51,80) 4.687%,rgb(26,53,81) 4.687%,rgb(26,53,81) 5.078%,rgb(26,55,82) 5.078%,rgb(26,55,82) 5.468%,rgb(27,56,83) 5.468%,rgb(27,56,83) 5.859%,rgb(27,58,84) 5.859%,rgb(27,58,84) 6.25%,rgb(27,60,86) 6.25%,rgb(27,60,86) 6.640%,rgb(27,62,87) 6.640%,rgb(27,62,87) 7.031%,rgb(28,64,88) 7.031%,rgb(28,64,88) 7.421%,rgb(28,66,89) 7.421%,rgb(28,66,89) 7.812%,rgb(28,67,90) 7.812%,rgb(28,67,90) 8.203%,rgb(28,69,91) 8.203%,rgb(28,69,91) 8.593%,rgb(28,71,93) 8.593%,rgb(28,71,93) 8.984%,rgb(28,73,94) 8.984%,rgb(28,73,94) 9.375%,rgb(28,75,95) 9.375%,rgb(28,75,95) 9.765%,rgb(28,77,96) 9.765%,rgb(28,77,96) 10.15%,rgb(28,78,97) 10.15%,rgb(28,78,97) 10.54%,rgb(28,80,98) 10.54%,rgb(28,80,98) 10.93%,rgb(28,82,100) 10.93%,rgb(28,82,100) 11.32%,rgb(28,84,101) 11.32%,rgb(28,84,101) 11.71%,rgb(27,86,102) 11.71%,rgb(27,86,102) 12.10%,rgb(27,88,103) 12.10%,rgb(27,88,103) 12.5%,rgb(27,89,104) 12.5%,rgb(27,89,104) 12.89%,rgb(26,91,105) 12.89%,rgb(26,91,105) 13.28%,rgb(26,93,106) 13.28%,rgb(26,93,106) 13.67%,rgb(26,95,107) 13.67%,rgb(26,95,107) 14.06%,rgb(25,97,108) 14.06%,rgb(25,97,108) 14.45%,rgb(24,99,109) 14.45%,rgb(24,99,109) 14.84%,rgb(24,101,110) 14.84%,rgb(24,101,110) 15.23%,rgb(23,103,111) 15.23%,rgb(23,103,111) 15.62%,rgb(23,104,112) 15.62%,rgb(23,104,112) 16.01%,rgb(22,106,113) 16.01%,rgb(22,106,113) 16.40%,rgb(21,108,114) 16.40%,rgb(21,108,114) 16.79%,rgb(20,110,115) 16.79%,rgb(20,110,115) 17.18%,rgb(20,112,116) 17.18%,rgb(20,112,116) 17.57%,rgb(19,114,117) 17.57%,rgb(19,114,117) 17.96%,rgb(18,116,118) 17.96%,rgb(18,116,118) 18.35%,rgb(18,118,118) 18.35%,rgb(18,118,118) 18.75%,rgb(17,120,119) 18.75%,rgb(17,120,119) 19.14%,rgb(17,121,120) 19.14%,rgb(17,121,120) 19.53%,rgb(17,123,121) 19.53%,rgb(17,123,121) 19.92%,rgb(17,125,121) 19.92%,rgb(17,125,121) 20.31%,rgb(17,127,122) 20.31%,rgb(17,127,122) 20.70%,rgb(18,129,123) 20.70%,rgb(18,129,123) 21.09%,rgb(19,131,123) 21.09%,rgb(19,131,123) 21.48%,rgb(20,133,124) 21.48%,rgb(20,133,124) 21.87%,rgb(22,135,124) 21.87%,rgb(22,135,124) 22.26%,rgb(24,136,125) 22.26%,rgb(24,136,125) 22.65%,rgb(26,138,125) 22.65%,rgb(26,138,125) 23.04%,rgb(29,140,126) 23.04%,rgb(29,140,126) 23.43%,rgb(31,142,126) 23.43%,rgb(31,142,126) 23.82%,rgb(34,143,126) 23.82%,rgb(34,143,126) 24.21%,rgb(38,145,127) 24.21%,rgb(38,145,127) 24.60%,rgb(41,147,127) 24.60%,rgb(41,147,127) 25%,rgb(45,149,128) 25%,rgb(45,149,128) 25.39%,rgb(48,150,128) 25.39%,rgb(48,150,128) 25.78%,rgb(52,152,128) 25.78%,rgb(52,152,128) 26.17%,rgb(56,153,129) 26.17%,rgb(56,153,129) 26.56%,rgb(60,155,129) 26.56%,rgb(60,155,129) 26.95%,rgb(64,156,130) 26.95%,rgb(64,156,130) 27.34%,rgb(68,158,130) 27.34%,rgb(68,158,130) 27.73%,rgb(72,159,131) 27.73%,rgb(72,159,131) 28.12%,rgb(76,161,131) 28.12%,rgb(76,161,131) 28.51%,rgb(80,162,132) 28.51%,rgb(80,162,132) 28.90%,rgb(84,164,132) 28.90%,rgb(84,164,132) 29.29%,rgb(88,165,133) 29.29%,rgb(88,165,133) 29.68%,rgb(92,167,134) 29.68%,rgb(92,167,134) 30.07%,rgb(96,168,135) 30.07%,rgb(96,168,135) 30.46%,rgb(100,169,136) 30.46%,rgb(100,169,136) 30.85%,rgb(104,171,137) 30.85%,rgb(104,171,137) 31.25%,rgb(108,172,138) 31.25%,rgb(108,172,138) 31.64%,rgb(111,174,139) 31.64%,rgb(111,174,139) 32.03%,rgb(115,175,140) 32.03%,rgb(115,175,140) 32.42%,rgb(119,176,141) 32.42%,rgb(119,176,141) 32.81%,rgb(122,178,143) 32.81%,rgb(122,178,143) 33.20%,rgb(126,179,144) 33.20%,rgb(126,179,144) 33.59%,rgb(130,180,145) 33.59%,rgb(130,180,145) 33.98%,rgb(133,182,147) 33.98%,rgb(133,182,147) 34.37%,rgb(137,183,148) 34.37%,rgb(137,183,148) 34.76%,rgb(140,184,150) 34.76%,rgb(140,184,150) 35.15%,rgb(144,186,152) 35.15%,rgb(144,186,152) 35.54%,rgb(147,187,153) 35.54%,rgb(147,187,153) 35.93%,rgb(150,189,155) 35.93%,rgb(150,189,155) 36.32%,rgb(154,190,157) 36.32%,rgb(154,190,157) 36.71%,rgb(157,191,159) 36.71%,rgb(157,191,159) 37.10%,rgb(160,193,161) 37.10%,rgb(160,193,161) 37.5%,rgb(163,194,163) 37.5%,rgb(163,194,163) 37.89%,rgb(167,196,165) 37.89%,rgb(167,196,165) 38.28%,rgb(170,197,167) 38.28%,rgb(170,197,167) 38.67%,rgb(173,198,169) 38.67%,rgb(173,198,169) 39.06%,rgb(176,200,171) 39.06%,rgb(176,200,171) 39.45%,rgb(179,201,173) 39.45%,rgb(179,201,173) 39.84%,rgb(182,203,176) 39.84%,rgb(182,203,176) 40.23%,rgb(185,204,178) 40.23%,rgb(185,204,178) 40.62%,rgb(188,206,180) 40.62%,rgb(188,206,180) 41.01%,rgb(192,207,183) 41.01%,rgb(192,207,183) 41.40%,rgb(195,209,185) 41.40%,rgb(195,209,185) 41.79%,rgb(197,210,188) 41.79%,rgb(197,210,188) 42.18%,rgb(200,212,190) 42.18%,rgb(200,212,190) 42.57%,rgb(203,214,193) 42.57%,rgb(203,214,193) 42.96%,rgb(206,215,195) 42.96%,rgb(206,215,195) 43.35%,rgb(209,217,198) 43.35%,rgb(209,217,198) 43.75%,rgb(212,218,200) 43.75%,rgb(212,218,200) 44.14%,rgb(215,220,203) 44.14%,rgb(215,220,203) 44.53%,rgb(218,222,206) 44.53%,rgb(218,222,206) 44.92%,rgb(221,223,209) 44.92%,rgb(221,223,209) 45.31%,rgb(224,225,211) 45.31%,rgb(224,225,211) 45.70%,rgb(226,227,214) 45.70%,rgb(226,227,214) 46.09%,rgb(229,229,217) 46.09%,rgb(229,229,217) 46.48%,rgb(232,230,220) 46.48%,rgb(232,230,220) 46.87%,rgb(235,232,223) 46.87%,rgb(235,232,223) 47.26%,rgb(238,234,225) 47.26%,rgb(238,234,225) 47.65%,rgb(240,236,228) 47.65%,rgb(240,236,228) 48.04%,rgb(243,238,231) 48.04%,rgb(243,238,231) 48.43%,rgb(246,239,234) 48.43%,rgb(246,239,234) 48.82%,rgb(249,241,237) 48.82%,rgb(249,241,237) 49.21%,rgb(251,243,240) 49.21%,rgb(251,243,240) 49.60%,rgb(254,245,243) 49.60%,rgb(254,245,243) 50%,rgb(253,245,244) 50%,rgb(253,245,244) 50.39%,rgb(252,243,240) 50.39%,rgb(252,243,240) 50.78%,rgb(251,240,237) 50.78%,rgb(251,240,237) 51.17%,rgb(250,238,234) 51.17%,rgb(250,238,234) 51.56%,rgb(248,236,230) 51.56%,rgb(248,236,230) 51.95%,rgb(247,233,227) 51.95%,rgb(247,233,227) 52.34%,rgb(246,231,224) 52.34%,rgb(246,231,224) 52.73%,rgb(245,228,220) 52.73%,rgb(245,228,220) 53.12%,rgb(244,226,217) 53.12%,rgb(244,226,217) 53.51%,rgb(243,223,214) 53.51%,rgb(243,223,214) 53.90%,rgb(242,221,210) 53.90%,rgb(242,221,210) 54.29%,rgb(241,218,207) 54.29%,rgb(241,218,207) 54.68%,rgb(240,216,204) 54.68%,rgb(240,216,204) 55.07%,rgb(239,213,200) 55.07%,rgb(239,213,200) 55.46%,rgb(239,211,197) 55.46%,rgb(239,211,197) 55.85%,rgb(238,208,194) 55.85%,rgb(238,208,194) 56.25%,rgb(237,206,190) 56.25%,rgb(237,206,190) 56.64%,rgb(236,203,187) 56.64%,rgb(236,203,187) 57.03%,rgb(235,201,184) 57.03%,rgb(235,201,184) 57.42%,rgb(235,198,181) 57.42%,rgb(235,198,181) 57.81%,rgb(234,196,178) 57.81%,rgb(234,196,178) 58.20%,rgb(233,193,175) 58.20%,rgb(233,193,175) 58.59%,rgb(232,191,171) 58.59%,rgb(232,191,171) 58.98%,rgb(232,189,168) 58.98%,rgb(232,189,168) 59.37%,rgb(231,186,165) 59.37%,rgb(231,186,165) 59.76%,rgb(230,184,162) 59.76%,rgb(230,184,162) 60.15%,rgb(230,181,159) 60.15%,rgb(230,181,159) 60.54%,rgb(229,179,156) 60.54%,rgb(229,179,156) 60.93%,rgb(228,176,154) 60.93%,rgb(228,176,154) 61.32%,rgb(228,174,151) 61.32%,rgb(228,174,151) 61.71%,rgb(227,171,148) 61.71%,rgb(227,171,148) 62.10%,rgb(227,169,145) 62.10%,rgb(227,169,145) 62.5%,rgb(226,166,142) 62.5%,rgb(226,166,142) 62.89%,rgb(225,164,140) 62.89%,rgb(225,164,140) 63.28%,rgb(225,161,137) 63.28%,rgb(225,161,137) 63.67%,rgb(224,158,135) 63.67%,rgb(224,158,135) 64.06%,rgb(223,156,132) 64.06%,rgb(223,156,132) 64.45%,rgb(223,153,130) 64.45%,rgb(223,153,130) 64.84%,rgb(222,151,128) 64.84%,rgb(222,151,128) 65.23%,rgb(221,148,125) 65.23%,rgb(221,148,125) 65.62%,rgb(221,146,123) 65.62%,rgb(221,146,123) 66.01%,rgb(220,143,121) 66.01%,rgb(220,143,121) 66.40%,rgb(219,141,119) 66.40%,rgb(219,141,119) 66.79%,rgb(218,138,117) 66.79%,rgb(218,138,117) 67.18%,rgb(218,136,116) 67.18%,rgb(218,136,116) 67.57%,rgb(217,133,114) 67.57%,rgb(217,133,114) 67.96%,rgb(216,131,112) 67.96%,rgb(216,131,112) 68.35%,rgb(215,128,111) 68.35%,rgb(215,128,111) 68.75%,rgb(214,126,109) 68.75%,rgb(214,126,109) 69.14%,rgb(213,123,108) 69.14%,rgb(213,123,108) 69.53%,rgb(212,121,107) 69.53%,rgb(212,121,107) 69.92%,rgb(211,118,105) 69.92%,rgb(211,118,105) 70.31%,rgb(210,116,104) 70.31%,rgb(210,116,104) 70.70%,rgb(209,114,103) 70.70%,rgb(209,114,103) 71.09%,rgb(208,111,102) 71.09%,rgb(208,111,102) 71.48%,rgb(207,109,102) 71.48%,rgb(207,109,102) 71.87%,rgb(206,106,101) 71.87%,rgb(206,106,101) 72.26%,rgb(204,104,100) 72.26%,rgb(204,104,100) 72.65%,rgb(203,102,100) 72.65%,rgb(203,102,100) 73.04%,rgb(202,99,99) 73.04%,rgb(202,99,99) 73.43%,rgb(200,97,98) 73.43%,rgb(200,97,98) 73.82%,rgb(199,95,98) 73.82%,rgb(199,95,98) 74.21%,rgb(198,93,98) 74.21%,rgb(198,93,98) 74.60%,rgb(196,90,97) 74.60%,rgb(196,90,97) 75%,rgb(195,88,97) 75%,rgb(195,88,97) 75.39%,rgb(193,86,97) 75.39%,rgb(193,86,97) 75.78%,rgb(192,84,97) 75.78%,rgb(192,84,97) 76.17%,rgb(190,82,96) 76.17%,rgb(190,82,96) 76.56%,rgb(188,80,96) 76.56%,rgb(188,80,96) 76.95%,rgb(187,78,96) 76.95%,rgb(187,78,96) 77.34%,rgb(185,76,96) 77.34%,rgb(185,76,96) 77.73%,rgb(183,74,96) 77.73%,rgb(183,74,96) 78.12%,rgb(181,72,96) 78.12%,rgb(181,72,96) 78.51%,rgb(180,70,96) 78.51%,rgb(180,70,96) 78.90%,rgb(178,68,96) 78.90%,rgb(178,68,96) 79.29%,rgb(176,66,96) 79.29%,rgb(176,66,96) 79.68%,rgb(174,64,96) 79.68%,rgb(174,64,96) 80.07%,rgb(172,62,96) 80.07%,rgb(172,62,96) 80.46%,rgb(170,60,96) 80.46%,rgb(170,60,96) 80.85%,rgb(168,58,96) 80.85%,rgb(168,58,96) 81.25%,rgb(166,56,96) 81.25%,rgb(166,56,96) 81.64%,rgb(164,55,96) 81.64%,rgb(164,55,96) 82.03%,rgb(162,53,96) 82.03%,rgb(162,53,96) 82.42%,rgb(160,51,96) 82.42%,rgb(160,51,96) 82.81%,rgb(158,49,96) 82.81%,rgb(158,49,96) 83.20%,rgb(156,48,96) 83.20%,rgb(156,48,96) 83.59%,rgb(154,46,96) 83.59%,rgb(154,46,96) 83.98%,rgb(152,44,97) 83.98%,rgb(152,44,97) 84.37%,rgb(150,43,97) 84.37%,rgb(150,43,97) 84.76%,rgb(148,41,97) 84.76%,rgb(148,41,97) 85.15%,rgb(145,40,96) 85.15%,rgb(145,40,96) 85.54%,rgb(143,38,96) 85.54%,rgb(143,38,96) 85.93%,rgb(141,37,96) 85.93%,rgb(141,37,96) 86.32%,rgb(139,35,96) 86.32%,rgb(139,35,96) 86.71%,rgb(136,34,96) 86.71%,rgb(136,34,96) 87.10%,rgb(134,33,96) 87.10%,rgb(134,33,96) 87.5%,rgb(132,31,96) 87.5%,rgb(132,31,96) 87.89%,rgb(129,30,95) 87.89%,rgb(129,30,95) 88.28%,rgb(127,29,95) 88.28%,rgb(127,29,95) 88.67%,rgb(124,28,95) 88.67%,rgb(124,28,95) 89.06%,rgb(122,27,94) 89.06%,rgb(122,27,94) 89.45%,rgb(119,26,94) 89.45%,rgb(119,26,94) 89.84%,rgb(117,25,93) 89.84%,rgb(117,25,93) 90.23%,rgb(114,24,92) 90.23%,rgb(114,24,92) 90.62%,rgb(112,24,92) 90.62%,rgb(112,24,92) 91.01%,rgb(109,23,91) 91.01%,rgb(109,23,91) 91.40%,rgb(106,22,90) 91.40%,rgb(106,22,90) 91.79%,rgb(104,22,89) 91.79%,rgb(104,22,89) 92.18%,rgb(101,21,88) 92.18%,rgb(101,21,88) 92.57%,rgb(99,21,87) 92.57%,rgb(99,21,87) 92.96%,rgb(96,20,85) 92.96%,rgb(96,20,85) 93.35%,rgb(93,20,84) 93.35%,rgb(93,20,84) 93.75%,rgb(91,20,82) 93.75%,rgb(91,20,82) 94.14%,rgb(88,19,81) 94.14%,rgb(88,19,81) 94.53%,rgb(85,19,79) 94.53%,rgb(85,19,79) 94.92%,rgb(83,19,78) 94.92%,rgb(83,19,78) 95.31%,rgb(80,18,76) 95.31%,rgb(80,18,76) 95.70%,rgb(77,18,74) 95.70%,rgb(77,18,74) 96.09%,rgb(75,18,72) 96.09%,rgb(75,18,72) 96.48%,rgb(72,17,70) 96.48%,rgb(72,17,70) 96.87%,rgb(70,17,68) 96.87%,rgb(70,17,68) 97.26%,rgb(67,16,66) 97.26%,rgb(67,16,66) 97.65%,rgb(64,16,64) 97.65%,rgb(64,16,64) 98.04%,rgb(62,15,62) 98.04%,rgb(62,15,62) 98.43%,rgb(59,15,60) 98.43%,rgb(59,15,60) 98.82%,rgb(57,14,58) 98.82%,rgb(57,14,58) 99.21%,rgb(54,14,55) 99.21%,rgb(54,14,55) 99.60%,rgb(52,13,53) 99.60%,rgb(52,13,53) 100%\",\n tex_buffer: new Uint8Array([21,29,68,21,31,69,22,33,70,22,35,71,23,37,72,23,39,73,24,41,74,24,43,75,24,45,76,25,47,77,25,49,79,26,51,80,26,53,81,26,55,82,27,56,83,27,58,84,27,60,86,27,62,87,28,64,88,28,66,89,28,67,90,28,69,91,28,71,93,28,73,94,28,75,95,28,77,96,28,78,97,28,80,98,28,82,100,28,84,101,27,86,102,27,88,103,27,89,104,26,91,105,26,93,106,26,95,107,25,97,108,24,99,109,24,101,110,23,103,111,23,104,112,22,106,113,21,108,114,20,110,115,20,112,116,19,114,117,18,116,118,18,118,118,17,120,119,17,121,120,17,123,121,17,125,121,17,127,122,18,129,123,19,131,123,20,133,124,22,135,124,24,136,125,26,138,125,29,140,126,31,142,126,34,143,126,38,145,127,41,147,127,45,149,128,48,150,128,52,152,128,56,153,129,60,155,129,64,156,130,68,158,130,72,159,131,76,161,131,80,162,132,84,164,132,88,165,133,92,167,134,96,168,135,100,169,136,104,171,137,108,172,138,111,174,139,115,175,140,119,176,141,122,178,143,126,179,144,130,180,145,133,182,147,137,183,148,140,184,150,144,186,152,147,187,153,150,189,155,154,190,157,157,191,159,160,193,161,163,194,163,167,196,165,170,197,167,173,198,169,176,200,171,179,201,173,182,203,176,185,204,178,188,206,180,192,207,183,195,209,185,197,210,188,200,212,190,203,214,193,206,215,195,209,217,198,212,218,200,215,220,203,218,222,206,221,223,209,224,225,211,226,227,214,229,229,217,232,230,220,235,232,223,238,234,225,240,236,228,243,238,231,246,239,234,249,241,237,251,243,240,254,245,243,253,245,244,252,243,240,251,240,237,250,238,234,248,236,230,247,233,227,246,231,224,245,228,220,244,226,217,243,223,214,242,221,210,241,218,207,240,216,204,239,213,200,239,211,197,238,208,194,237,206,190,236,203,187,235,201,184,235,198,181,234,196,178,233,193,175,232,191,171,232,189,168,231,186,165,230,184,162,230,181,159,229,179,156,228,176,154,228,174,151,227,171,148,227,169,145,226,166,142,225,164,140,225,161,137,224,158,135,223,156,132,223,153,130,222,151,128,221,148,125,221,146,123,220,143,121,219,141,119,218,138,117,218,136,116,217,133,114,216,131,112,215,128,111,214,126,109,213,123,108,212,121,107,211,118,105,210,116,104,209,114,103,208,111,102,207,109,102,206,106,101,204,104,100,203,102,100,202,99,99,200,97,98,199,95,98,198,93,98,196,90,97,195,88,97,193,86,97,192,84,97,190,82,96,188,80,96,187,78,96,185,76,96,183,74,96,181,72,96,180,70,96,178,68,96,176,66,96,174,64,96,172,62,96,170,60,96,168,58,96,166,56,96,164,55,96,162,53,96,160,51,96,158,49,96,156,48,96,154,46,96,152,44,97,150,43,97,148,41,97,145,40,96,143,38,96,141,37,96,139,35,96,136,34,96,134,33,96,132,31,96,129,30,95,127,29,95,124,28,95,122,27,94,119,26,94,117,25,93,114,24,92,112,24,92,109,23,91,106,22,90,104,22,89,101,21,88,99,21,87,96,20,85,93,20,84,91,20,82,88,19,81,85,19,79,83,19,78,80,18,76,77,18,74,75,18,72,72,17,70,70,17,68,67,16,66,64,16,64,62,15,62,59,15,60,57,14,58,54,14,55,52,13,53]),\n linear_interpolation: false\n},\n{\n name: \"deep\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(253,254,204) 0%,rgb(253,254,204) 0.390%,rgb(251,253,203) 0.390%,rgb(251,253,203) 0.781%,rgb(249,252,202) 0.781%,rgb(249,252,202) 1.171%,rgb(247,251,200) 1.171%,rgb(247,251,200) 1.562%,rgb(245,250,199) 1.562%,rgb(245,250,199) 1.953%,rgb(243,250,198) 1.953%,rgb(243,250,198) 2.343%,rgb(241,249,197) 2.343%,rgb(241,249,197) 2.734%,rgb(239,248,196) 2.734%,rgb(239,248,196) 3.125%,rgb(237,247,195) 3.125%,rgb(237,247,195) 3.515%,rgb(235,247,193) 3.515%,rgb(235,247,193) 3.906%,rgb(233,246,192) 3.906%,rgb(233,246,192) 4.296%,rgb(231,245,191) 4.296%,rgb(231,245,191) 4.687%,rgb(229,244,190) 4.687%,rgb(229,244,190) 5.078%,rgb(227,244,189) 5.078%,rgb(227,244,189) 5.468%,rgb(225,243,188) 5.468%,rgb(225,243,188) 5.859%,rgb(223,242,187) 5.859%,rgb(223,242,187) 6.25%,rgb(221,242,186) 6.25%,rgb(221,242,186) 6.640%,rgb(219,241,185) 6.640%,rgb(219,241,185) 7.031%,rgb(217,240,184) 7.031%,rgb(217,240,184) 7.421%,rgb(215,239,183) 7.421%,rgb(215,239,183) 7.812%,rgb(212,239,182) 7.812%,rgb(212,239,182) 8.203%,rgb(210,238,181) 8.203%,rgb(210,238,181) 8.593%,rgb(208,237,180) 8.593%,rgb(208,237,180) 8.984%,rgb(206,236,179) 8.984%,rgb(206,236,179) 9.375%,rgb(204,236,179) 9.375%,rgb(204,236,179) 9.765%,rgb(202,235,178) 9.765%,rgb(202,235,178) 10.15%,rgb(200,234,177) 10.15%,rgb(200,234,177) 10.54%,rgb(198,234,176) 10.54%,rgb(198,234,176) 10.93%,rgb(196,233,175) 10.93%,rgb(196,233,175) 11.32%,rgb(193,232,175) 11.32%,rgb(193,232,175) 11.71%,rgb(191,231,174) 11.71%,rgb(191,231,174) 12.10%,rgb(189,231,173) 12.10%,rgb(189,231,173) 12.5%,rgb(187,230,172) 12.5%,rgb(187,230,172) 12.89%,rgb(185,229,172) 12.89%,rgb(185,229,172) 13.28%,rgb(183,229,171) 13.28%,rgb(183,229,171) 13.67%,rgb(181,228,170) 13.67%,rgb(181,228,170) 14.06%,rgb(178,227,170) 14.06%,rgb(178,227,170) 14.45%,rgb(176,226,169) 14.45%,rgb(176,226,169) 14.84%,rgb(174,226,169) 14.84%,rgb(174,226,169) 15.23%,rgb(172,225,168) 15.23%,rgb(172,225,168) 15.62%,rgb(170,224,168) 15.62%,rgb(170,224,168) 16.01%,rgb(167,224,167) 16.01%,rgb(167,224,167) 16.40%,rgb(165,223,167) 16.40%,rgb(165,223,167) 16.79%,rgb(163,222,166) 16.79%,rgb(163,222,166) 17.18%,rgb(161,221,166) 17.18%,rgb(161,221,166) 17.57%,rgb(159,221,165) 17.57%,rgb(159,221,165) 17.96%,rgb(156,220,165) 17.96%,rgb(156,220,165) 18.35%,rgb(154,219,165) 18.35%,rgb(154,219,165) 18.75%,rgb(152,218,164) 18.75%,rgb(152,218,164) 19.14%,rgb(150,218,164) 19.14%,rgb(150,218,164) 19.53%,rgb(148,217,164) 19.53%,rgb(148,217,164) 19.92%,rgb(146,216,164) 19.92%,rgb(146,216,164) 20.31%,rgb(144,215,164) 20.31%,rgb(144,215,164) 20.70%,rgb(141,215,163) 20.70%,rgb(141,215,163) 21.09%,rgb(139,214,163) 21.09%,rgb(139,214,163) 21.48%,rgb(137,213,163) 21.48%,rgb(137,213,163) 21.87%,rgb(135,212,163) 21.87%,rgb(135,212,163) 22.26%,rgb(133,211,163) 22.26%,rgb(133,211,163) 22.65%,rgb(131,211,163) 22.65%,rgb(131,211,163) 23.04%,rgb(129,210,163) 23.04%,rgb(129,210,163) 23.43%,rgb(127,209,163) 23.43%,rgb(127,209,163) 23.82%,rgb(125,208,163) 23.82%,rgb(125,208,163) 24.21%,rgb(124,207,163) 24.21%,rgb(124,207,163) 24.60%,rgb(122,206,163) 24.60%,rgb(122,206,163) 25%,rgb(120,206,163) 25%,rgb(120,206,163) 25.39%,rgb(118,205,163) 25.39%,rgb(118,205,163) 25.78%,rgb(117,204,163) 25.78%,rgb(117,204,163) 26.17%,rgb(115,203,163) 26.17%,rgb(115,203,163) 26.56%,rgb(113,202,163) 26.56%,rgb(113,202,163) 26.95%,rgb(112,201,163) 26.95%,rgb(112,201,163) 27.34%,rgb(110,200,163) 27.34%,rgb(110,200,163) 27.73%,rgb(109,199,163) 27.73%,rgb(109,199,163) 28.12%,rgb(107,198,163) 28.12%,rgb(107,198,163) 28.51%,rgb(106,197,164) 28.51%,rgb(106,197,164) 28.90%,rgb(105,196,164) 28.90%,rgb(105,196,164) 29.29%,rgb(103,195,164) 29.29%,rgb(103,195,164) 29.68%,rgb(102,194,164) 29.68%,rgb(102,194,164) 30.07%,rgb(101,194,164) 30.07%,rgb(101,194,164) 30.46%,rgb(100,193,164) 30.46%,rgb(100,193,164) 30.85%,rgb(99,192,164) 30.85%,rgb(99,192,164) 31.25%,rgb(98,191,164) 31.25%,rgb(98,191,164) 31.64%,rgb(97,190,164) 31.64%,rgb(97,190,164) 32.03%,rgb(96,189,164) 32.03%,rgb(96,189,164) 32.42%,rgb(95,188,164) 32.42%,rgb(95,188,164) 32.81%,rgb(94,187,164) 32.81%,rgb(94,187,164) 33.20%,rgb(93,186,164) 33.20%,rgb(93,186,164) 33.59%,rgb(92,185,164) 33.59%,rgb(92,185,164) 33.98%,rgb(91,184,164) 33.98%,rgb(91,184,164) 34.37%,rgb(90,183,164) 34.37%,rgb(90,183,164) 34.76%,rgb(90,182,164) 34.76%,rgb(90,182,164) 35.15%,rgb(89,180,164) 35.15%,rgb(89,180,164) 35.54%,rgb(88,179,164) 35.54%,rgb(88,179,164) 35.93%,rgb(88,178,164) 35.93%,rgb(88,178,164) 36.32%,rgb(87,177,164) 36.32%,rgb(87,177,164) 36.71%,rgb(86,176,164) 36.71%,rgb(86,176,164) 37.10%,rgb(86,175,164) 37.10%,rgb(86,175,164) 37.5%,rgb(85,174,163) 37.5%,rgb(85,174,163) 37.89%,rgb(85,173,163) 37.89%,rgb(85,173,163) 38.28%,rgb(84,172,163) 38.28%,rgb(84,172,163) 38.67%,rgb(83,171,163) 38.67%,rgb(83,171,163) 39.06%,rgb(83,170,163) 39.06%,rgb(83,170,163) 39.45%,rgb(82,169,163) 39.45%,rgb(82,169,163) 39.84%,rgb(82,168,163) 39.84%,rgb(82,168,163) 40.23%,rgb(81,167,163) 40.23%,rgb(81,167,163) 40.62%,rgb(81,166,162) 40.62%,rgb(81,166,162) 41.01%,rgb(81,165,162) 41.01%,rgb(81,165,162) 41.40%,rgb(80,164,162) 41.40%,rgb(80,164,162) 41.79%,rgb(80,163,162) 41.79%,rgb(80,163,162) 42.18%,rgb(79,162,162) 42.18%,rgb(79,162,162) 42.57%,rgb(79,161,162) 42.57%,rgb(79,161,162) 42.96%,rgb(79,160,162) 42.96%,rgb(79,160,162) 43.35%,rgb(78,159,161) 43.35%,rgb(78,159,161) 43.75%,rgb(78,158,161) 43.75%,rgb(78,158,161) 44.14%,rgb(77,157,161) 44.14%,rgb(77,157,161) 44.53%,rgb(77,156,161) 44.53%,rgb(77,156,161) 44.92%,rgb(77,155,161) 44.92%,rgb(77,155,161) 45.31%,rgb(76,154,160) 45.31%,rgb(76,154,160) 45.70%,rgb(76,153,160) 45.70%,rgb(76,153,160) 46.09%,rgb(75,152,160) 46.09%,rgb(75,152,160) 46.48%,rgb(75,151,160) 46.48%,rgb(75,151,160) 46.87%,rgb(75,150,160) 46.87%,rgb(75,150,160) 47.26%,rgb(74,149,159) 47.26%,rgb(74,149,159) 47.65%,rgb(74,148,159) 47.65%,rgb(74,148,159) 48.04%,rgb(74,147,159) 48.04%,rgb(74,147,159) 48.43%,rgb(73,146,159) 48.43%,rgb(73,146,159) 48.82%,rgb(73,145,158) 48.82%,rgb(73,145,158) 49.21%,rgb(73,144,158) 49.21%,rgb(73,144,158) 49.60%,rgb(72,143,158) 49.60%,rgb(72,143,158) 50%,rgb(72,142,158) 50%,rgb(72,142,158) 50.39%,rgb(72,141,157) 50.39%,rgb(72,141,157) 50.78%,rgb(71,140,157) 50.78%,rgb(71,140,157) 51.17%,rgb(71,139,157) 51.17%,rgb(71,139,157) 51.56%,rgb(71,138,157) 51.56%,rgb(71,138,157) 51.95%,rgb(70,137,157) 51.95%,rgb(70,137,157) 52.34%,rgb(70,136,156) 52.34%,rgb(70,136,156) 52.73%,rgb(70,135,156) 52.73%,rgb(70,135,156) 53.12%,rgb(69,134,156) 53.12%,rgb(69,134,156) 53.51%,rgb(69,133,156) 53.51%,rgb(69,133,156) 53.90%,rgb(69,132,155) 53.90%,rgb(69,132,155) 54.29%,rgb(68,131,155) 54.29%,rgb(68,131,155) 54.68%,rgb(68,130,155) 54.68%,rgb(68,130,155) 55.07%,rgb(68,129,155) 55.07%,rgb(68,129,155) 55.46%,rgb(68,128,155) 55.46%,rgb(68,128,155) 55.85%,rgb(67,127,154) 55.85%,rgb(67,127,154) 56.25%,rgb(67,126,154) 56.25%,rgb(67,126,154) 56.64%,rgb(67,125,154) 56.64%,rgb(67,125,154) 57.03%,rgb(66,124,154) 57.03%,rgb(66,124,154) 57.42%,rgb(66,123,153) 57.42%,rgb(66,123,153) 57.81%,rgb(66,122,153) 57.81%,rgb(66,122,153) 58.20%,rgb(66,121,153) 58.20%,rgb(66,121,153) 58.59%,rgb(65,120,153) 58.59%,rgb(65,120,153) 58.98%,rgb(65,119,153) 58.98%,rgb(65,119,153) 59.37%,rgb(65,118,152) 59.37%,rgb(65,118,152) 59.76%,rgb(64,117,152) 59.76%,rgb(64,117,152) 60.15%,rgb(64,116,152) 60.15%,rgb(64,116,152) 60.54%,rgb(64,115,152) 60.54%,rgb(64,115,152) 60.93%,rgb(64,114,152) 60.93%,rgb(64,114,152) 61.32%,rgb(64,113,151) 61.32%,rgb(64,113,151) 61.71%,rgb(63,112,151) 61.71%,rgb(63,112,151) 62.10%,rgb(63,111,151) 62.10%,rgb(63,111,151) 62.5%,rgb(63,110,151) 62.5%,rgb(63,110,151) 62.89%,rgb(63,109,151) 62.89%,rgb(63,109,151) 63.28%,rgb(63,108,150) 63.28%,rgb(63,108,150) 63.67%,rgb(62,107,150) 63.67%,rgb(62,107,150) 64.06%,rgb(62,106,150) 64.06%,rgb(62,106,150) 64.45%,rgb(62,105,150) 64.45%,rgb(62,105,150) 64.84%,rgb(62,104,150) 64.84%,rgb(62,104,150) 65.23%,rgb(62,103,149) 65.23%,rgb(62,103,149) 65.62%,rgb(62,102,149) 65.62%,rgb(62,102,149) 66.01%,rgb(62,101,149) 66.01%,rgb(62,101,149) 66.40%,rgb(62,100,149) 66.40%,rgb(62,100,149) 66.79%,rgb(62,99,148) 66.79%,rgb(62,99,148) 67.18%,rgb(62,98,148) 67.18%,rgb(62,98,148) 67.57%,rgb(62,97,148) 67.57%,rgb(62,97,148) 67.96%,rgb(62,96,148) 67.96%,rgb(62,96,148) 68.35%,rgb(62,95,147) 68.35%,rgb(62,95,147) 68.75%,rgb(62,94,147) 68.75%,rgb(62,94,147) 69.14%,rgb(62,92,147) 69.14%,rgb(62,92,147) 69.53%,rgb(62,91,147) 69.53%,rgb(62,91,147) 69.92%,rgb(62,90,146) 69.92%,rgb(62,90,146) 70.31%,rgb(62,89,146) 70.31%,rgb(62,89,146) 70.70%,rgb(62,88,146) 70.70%,rgb(62,88,146) 71.09%,rgb(62,87,145) 71.09%,rgb(62,87,145) 71.48%,rgb(62,86,145) 71.48%,rgb(62,86,145) 71.87%,rgb(63,85,144) 71.87%,rgb(63,85,144) 72.26%,rgb(63,84,144) 72.26%,rgb(63,84,144) 72.65%,rgb(63,83,143) 72.65%,rgb(63,83,143) 73.04%,rgb(63,82,143) 73.04%,rgb(63,82,143) 73.43%,rgb(63,80,142) 73.43%,rgb(63,80,142) 73.82%,rgb(64,79,141) 73.82%,rgb(64,79,141) 74.21%,rgb(64,78,141) 74.21%,rgb(64,78,141) 74.60%,rgb(64,77,140) 74.60%,rgb(64,77,140) 75%,rgb(64,76,139) 75%,rgb(64,76,139) 75.39%,rgb(65,75,138) 75.39%,rgb(65,75,138) 75.78%,rgb(65,74,137) 75.78%,rgb(65,74,137) 76.17%,rgb(65,73,136) 76.17%,rgb(65,73,136) 76.56%,rgb(65,72,135) 76.56%,rgb(65,72,135) 76.95%,rgb(65,71,133) 76.95%,rgb(65,71,133) 77.34%,rgb(65,70,132) 77.34%,rgb(65,70,132) 77.73%,rgb(65,69,131) 77.73%,rgb(65,69,131) 78.12%,rgb(65,68,129) 78.12%,rgb(65,68,129) 78.51%,rgb(66,67,128) 78.51%,rgb(66,67,128) 78.90%,rgb(65,66,126) 78.90%,rgb(65,66,126) 79.29%,rgb(65,65,125) 79.29%,rgb(65,65,125) 79.68%,rgb(65,64,123) 79.68%,rgb(65,64,123) 80.07%,rgb(65,64,122) 80.07%,rgb(65,64,122) 80.46%,rgb(65,63,120) 80.46%,rgb(65,63,120) 80.85%,rgb(65,62,118) 80.85%,rgb(65,62,118) 81.25%,rgb(65,61,117) 81.25%,rgb(65,61,117) 81.64%,rgb(64,60,115) 81.64%,rgb(64,60,115) 82.03%,rgb(64,60,113) 82.03%,rgb(64,60,113) 82.42%,rgb(64,59,112) 82.42%,rgb(64,59,112) 82.81%,rgb(64,58,110) 82.81%,rgb(64,58,110) 83.20%,rgb(63,57,108) 83.20%,rgb(63,57,108) 83.59%,rgb(63,56,107) 83.59%,rgb(63,56,107) 83.98%,rgb(63,56,105) 83.98%,rgb(63,56,105) 84.37%,rgb(62,55,103) 84.37%,rgb(62,55,103) 84.76%,rgb(62,54,102) 84.76%,rgb(62,54,102) 85.15%,rgb(61,53,100) 85.15%,rgb(61,53,100) 85.54%,rgb(61,53,98) 85.54%,rgb(61,53,98) 85.93%,rgb(61,52,97) 85.93%,rgb(61,52,97) 86.32%,rgb(60,51,95) 86.32%,rgb(60,51,95) 86.71%,rgb(60,50,93) 86.71%,rgb(60,50,93) 87.10%,rgb(59,50,92) 87.10%,rgb(59,50,92) 87.5%,rgb(59,49,90) 87.5%,rgb(59,49,90) 87.89%,rgb(58,48,88) 87.89%,rgb(58,48,88) 88.28%,rgb(58,48,87) 88.28%,rgb(58,48,87) 88.67%,rgb(57,47,85) 88.67%,rgb(57,47,85) 89.06%,rgb(57,46,84) 89.06%,rgb(57,46,84) 89.45%,rgb(56,45,82) 89.45%,rgb(56,45,82) 89.84%,rgb(56,45,81) 89.84%,rgb(56,45,81) 90.23%,rgb(55,44,79) 90.23%,rgb(55,44,79) 90.62%,rgb(54,43,77) 90.62%,rgb(54,43,77) 91.01%,rgb(54,42,76) 91.01%,rgb(54,42,76) 91.40%,rgb(53,42,74) 91.40%,rgb(53,42,74) 91.79%,rgb(53,41,73) 91.79%,rgb(53,41,73) 92.18%,rgb(52,40,71) 92.18%,rgb(52,40,71) 92.57%,rgb(52,40,70) 92.57%,rgb(52,40,70) 92.96%,rgb(51,39,68) 92.96%,rgb(51,39,68) 93.35%,rgb(50,38,67) 93.35%,rgb(50,38,67) 93.75%,rgb(50,37,65) 93.75%,rgb(50,37,65) 94.14%,rgb(49,37,64) 94.14%,rgb(49,37,64) 94.53%,rgb(48,36,62) 94.53%,rgb(48,36,62) 94.92%,rgb(48,35,61) 94.92%,rgb(48,35,61) 95.31%,rgb(47,34,59) 95.31%,rgb(47,34,59) 95.70%,rgb(47,34,58) 95.70%,rgb(47,34,58) 96.09%,rgb(46,33,57) 96.09%,rgb(46,33,57) 96.48%,rgb(45,32,55) 96.48%,rgb(45,32,55) 96.87%,rgb(45,31,54) 96.87%,rgb(45,31,54) 97.26%,rgb(44,31,52) 97.26%,rgb(44,31,52) 97.65%,rgb(43,30,51) 97.65%,rgb(43,30,51) 98.04%,rgb(43,29,50) 98.04%,rgb(43,29,50) 98.43%,rgb(42,28,48) 98.43%,rgb(42,28,48) 98.82%,rgb(41,28,47) 98.82%,rgb(41,28,47) 99.21%,rgb(40,27,45) 99.21%,rgb(40,27,45) 99.60%,rgb(40,26,44) 99.60%,rgb(40,26,44) 100%\",\n tex_buffer: new Uint8Array([253,254,204,251,253,203,249,252,202,247,251,200,245,250,199,243,250,198,241,249,197,239,248,196,237,247,195,235,247,193,233,246,192,231,245,191,229,244,190,227,244,189,225,243,188,223,242,187,221,242,186,219,241,185,217,240,184,215,239,183,212,239,182,210,238,181,208,237,180,206,236,179,204,236,179,202,235,178,200,234,177,198,234,176,196,233,175,193,232,175,191,231,174,189,231,173,187,230,172,185,229,172,183,229,171,181,228,170,178,227,170,176,226,169,174,226,169,172,225,168,170,224,168,167,224,167,165,223,167,163,222,166,161,221,166,159,221,165,156,220,165,154,219,165,152,218,164,150,218,164,148,217,164,146,216,164,144,215,164,141,215,163,139,214,163,137,213,163,135,212,163,133,211,163,131,211,163,129,210,163,127,209,163,125,208,163,124,207,163,122,206,163,120,206,163,118,205,163,117,204,163,115,203,163,113,202,163,112,201,163,110,200,163,109,199,163,107,198,163,106,197,164,105,196,164,103,195,164,102,194,164,101,194,164,100,193,164,99,192,164,98,191,164,97,190,164,96,189,164,95,188,164,94,187,164,93,186,164,92,185,164,91,184,164,90,183,164,90,182,164,89,180,164,88,179,164,88,178,164,87,177,164,86,176,164,86,175,164,85,174,163,85,173,163,84,172,163,83,171,163,83,170,163,82,169,163,82,168,163,81,167,163,81,166,162,81,165,162,80,164,162,80,163,162,79,162,162,79,161,162,79,160,162,78,159,161,78,158,161,77,157,161,77,156,161,77,155,161,76,154,160,76,153,160,75,152,160,75,151,160,75,150,160,74,149,159,74,148,159,74,147,159,73,146,159,73,145,158,73,144,158,72,143,158,72,142,158,72,141,157,71,140,157,71,139,157,71,138,157,70,137,157,70,136,156,70,135,156,69,134,156,69,133,156,69,132,155,68,131,155,68,130,155,68,129,155,68,128,155,67,127,154,67,126,154,67,125,154,66,124,154,66,123,153,66,122,153,66,121,153,65,120,153,65,119,153,65,118,152,64,117,152,64,116,152,64,115,152,64,114,152,64,113,151,63,112,151,63,111,151,63,110,151,63,109,151,63,108,150,62,107,150,62,106,150,62,105,150,62,104,150,62,103,149,62,102,149,62,101,149,62,100,149,62,99,148,62,98,148,62,97,148,62,96,148,62,95,147,62,94,147,62,92,147,62,91,147,62,90,146,62,89,146,62,88,146,62,87,145,62,86,145,63,85,144,63,84,144,63,83,143,63,82,143,63,80,142,64,79,141,64,78,141,64,77,140,64,76,139,65,75,138,65,74,137,65,73,136,65,72,135,65,71,133,65,70,132,65,69,131,65,68,129,66,67,128,65,66,126,65,65,125,65,64,123,65,64,122,65,63,120,65,62,118,65,61,117,64,60,115,64,60,113,64,59,112,64,58,110,63,57,108,63,56,107,63,56,105,62,55,103,62,54,102,61,53,100,61,53,98,61,52,97,60,51,95,60,50,93,59,50,92,59,49,90,58,48,88,58,48,87,57,47,85,57,46,84,56,45,82,56,45,81,55,44,79,54,43,77,54,42,76,53,42,74,53,41,73,52,40,71,52,40,70,51,39,68,50,38,67,50,37,65,49,37,64,48,36,62,48,35,61,47,34,59,47,34,58,46,33,57,45,32,55,45,31,54,44,31,52,43,30,51,43,29,50,42,28,48,41,28,47,40,27,45,40,26,44]),\n linear_interpolation: false\n},\n{\n name: \"delta\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: true,\n c3g_string: \"rgb(17,32,64) 0%,rgb(17,32,64) 0.390%,rgb(18,33,67) 0.390%,rgb(18,33,67) 0.781%,rgb(20,34,70) 0.781%,rgb(20,34,70) 1.171%,rgb(21,36,73) 1.171%,rgb(21,36,73) 1.562%,rgb(22,37,76) 1.562%,rgb(22,37,76) 1.953%,rgb(23,39,80) 1.953%,rgb(23,39,80) 2.343%,rgb(25,40,83) 2.343%,rgb(25,40,83) 2.734%,rgb(26,41,86) 2.734%,rgb(26,41,86) 3.125%,rgb(27,42,90) 3.125%,rgb(27,42,90) 3.515%,rgb(28,44,93) 3.515%,rgb(28,44,93) 3.906%,rgb(30,45,96) 3.906%,rgb(30,45,96) 4.296%,rgb(31,46,100) 4.296%,rgb(31,46,100) 4.687%,rgb(32,48,103) 4.687%,rgb(32,48,103) 5.078%,rgb(33,49,107) 5.078%,rgb(33,49,107) 5.468%,rgb(34,50,111) 5.468%,rgb(34,50,111) 5.859%,rgb(35,51,114) 5.859%,rgb(35,51,114) 6.25%,rgb(36,53,118) 6.25%,rgb(36,53,118) 6.640%,rgb(37,54,122) 6.640%,rgb(37,54,122) 7.031%,rgb(37,55,126) 7.031%,rgb(37,55,126) 7.421%,rgb(38,56,130) 7.421%,rgb(38,56,130) 7.812%,rgb(38,58,134) 7.812%,rgb(38,58,134) 8.203%,rgb(39,59,138) 8.203%,rgb(39,59,138) 8.593%,rgb(39,61,141) 8.593%,rgb(39,61,141) 8.984%,rgb(38,62,145) 8.984%,rgb(38,62,145) 9.375%,rgb(37,64,148) 9.375%,rgb(37,64,148) 9.765%,rgb(36,66,151) 9.765%,rgb(36,66,151) 10.15%,rgb(35,68,152) 10.15%,rgb(35,68,152) 10.54%,rgb(33,71,154) 10.54%,rgb(33,71,154) 10.93%,rgb(32,73,155) 10.93%,rgb(32,73,155) 11.32%,rgb(31,75,155) 11.32%,rgb(31,75,155) 11.71%,rgb(30,77,156) 11.71%,rgb(30,77,156) 12.10%,rgb(29,80,156) 12.10%,rgb(29,80,156) 12.5%,rgb(28,82,157) 12.5%,rgb(28,82,157) 12.89%,rgb(28,84,157) 12.89%,rgb(28,84,157) 13.28%,rgb(27,86,157) 13.28%,rgb(27,86,157) 13.67%,rgb(27,88,158) 13.67%,rgb(27,88,158) 14.06%,rgb(27,90,158) 14.06%,rgb(27,90,158) 14.45%,rgb(27,92,158) 14.45%,rgb(27,92,158) 14.84%,rgb(27,94,159) 14.84%,rgb(27,94,159) 15.23%,rgb(27,96,159) 15.23%,rgb(27,96,159) 15.62%,rgb(27,99,159) 15.62%,rgb(27,99,159) 16.01%,rgb(27,101,159) 16.01%,rgb(27,101,159) 16.40%,rgb(28,103,160) 16.40%,rgb(28,103,160) 16.79%,rgb(28,105,160) 16.79%,rgb(28,105,160) 17.18%,rgb(29,106,160) 17.18%,rgb(29,106,160) 17.57%,rgb(30,108,161) 17.57%,rgb(30,108,161) 17.96%,rgb(30,110,161) 17.96%,rgb(30,110,161) 18.35%,rgb(31,112,162) 18.35%,rgb(31,112,162) 18.75%,rgb(32,114,162) 18.75%,rgb(32,114,162) 19.14%,rgb(33,116,162) 19.14%,rgb(33,116,162) 19.53%,rgb(34,118,163) 19.53%,rgb(34,118,163) 19.92%,rgb(35,120,163) 19.92%,rgb(35,120,163) 20.31%,rgb(36,122,164) 20.31%,rgb(36,122,164) 20.70%,rgb(37,124,164) 20.70%,rgb(37,124,164) 21.09%,rgb(38,126,165) 21.09%,rgb(38,126,165) 21.48%,rgb(39,128,165) 21.48%,rgb(39,128,165) 21.87%,rgb(40,130,166) 21.87%,rgb(40,130,166) 22.26%,rgb(42,132,166) 22.26%,rgb(42,132,166) 22.65%,rgb(43,133,166) 22.65%,rgb(43,133,166) 23.04%,rgb(44,135,167) 23.04%,rgb(44,135,167) 23.43%,rgb(46,137,167) 23.43%,rgb(46,137,167) 23.82%,rgb(47,139,168) 23.82%,rgb(47,139,168) 24.21%,rgb(48,141,168) 24.21%,rgb(48,141,168) 24.60%,rgb(50,143,169) 24.60%,rgb(50,143,169) 25%,rgb(51,145,169) 25%,rgb(51,145,169) 25.39%,rgb(53,147,170) 25.39%,rgb(53,147,170) 25.78%,rgb(55,149,170) 25.78%,rgb(55,149,170) 26.17%,rgb(56,151,171) 26.17%,rgb(56,151,171) 26.56%,rgb(58,152,171) 26.56%,rgb(58,152,171) 26.95%,rgb(60,154,172) 26.95%,rgb(60,154,172) 27.34%,rgb(62,156,172) 27.34%,rgb(62,156,172) 27.73%,rgb(64,158,173) 27.73%,rgb(64,158,173) 28.12%,rgb(66,160,173) 28.12%,rgb(66,160,173) 28.51%,rgb(69,162,174) 28.51%,rgb(69,162,174) 28.90%,rgb(71,163,174) 28.90%,rgb(71,163,174) 29.29%,rgb(74,165,174) 29.29%,rgb(74,165,174) 29.68%,rgb(77,167,175) 29.68%,rgb(77,167,175) 30.07%,rgb(80,169,175) 30.07%,rgb(80,169,175) 30.46%,rgb(83,170,176) 30.46%,rgb(83,170,176) 30.85%,rgb(86,172,176) 30.85%,rgb(86,172,176) 31.25%,rgb(90,174,176) 31.25%,rgb(90,174,176) 31.64%,rgb(93,175,177) 31.64%,rgb(93,175,177) 32.03%,rgb(97,177,177) 32.03%,rgb(97,177,177) 32.42%,rgb(101,179,178) 32.42%,rgb(101,179,178) 32.81%,rgb(105,180,179) 32.81%,rgb(105,180,179) 33.20%,rgb(109,182,179) 33.20%,rgb(109,182,179) 33.59%,rgb(113,183,180) 33.59%,rgb(113,183,180) 33.98%,rgb(117,184,181) 33.98%,rgb(117,184,181) 34.37%,rgb(121,186,181) 34.37%,rgb(121,186,181) 34.76%,rgb(125,187,182) 34.76%,rgb(125,187,182) 35.15%,rgb(129,189,183) 35.15%,rgb(129,189,183) 35.54%,rgb(132,190,184) 35.54%,rgb(132,190,184) 35.93%,rgb(136,192,185) 35.93%,rgb(136,192,185) 36.32%,rgb(140,193,186) 36.32%,rgb(140,193,186) 36.71%,rgb(144,195,188) 36.71%,rgb(144,195,188) 37.10%,rgb(148,196,189) 37.10%,rgb(148,196,189) 37.5%,rgb(151,197,190) 37.5%,rgb(151,197,190) 37.89%,rgb(155,199,191) 37.89%,rgb(155,199,191) 38.28%,rgb(158,200,193) 38.28%,rgb(158,200,193) 38.67%,rgb(162,202,194) 38.67%,rgb(162,202,194) 39.06%,rgb(166,203,195) 39.06%,rgb(166,203,195) 39.45%,rgb(169,205,196) 39.45%,rgb(169,205,196) 39.84%,rgb(172,206,198) 39.84%,rgb(172,206,198) 40.23%,rgb(176,208,199) 40.23%,rgb(176,208,199) 40.62%,rgb(179,210,201) 40.62%,rgb(179,210,201) 41.01%,rgb(183,211,202) 41.01%,rgb(183,211,202) 41.40%,rgb(186,213,204) 41.40%,rgb(186,213,204) 41.79%,rgb(189,214,205) 41.79%,rgb(189,214,205) 42.18%,rgb(193,216,206) 42.18%,rgb(193,216,206) 42.57%,rgb(196,218,208) 42.57%,rgb(196,218,208) 42.96%,rgb(199,219,209) 42.96%,rgb(199,219,209) 43.35%,rgb(202,221,211) 43.35%,rgb(202,221,211) 43.75%,rgb(205,223,212) 43.75%,rgb(205,223,212) 44.14%,rgb(209,224,214) 44.14%,rgb(209,224,214) 44.53%,rgb(212,226,215) 44.53%,rgb(212,226,215) 44.92%,rgb(215,228,217) 44.92%,rgb(215,228,217) 45.31%,rgb(218,230,218) 45.31%,rgb(218,230,218) 45.70%,rgb(221,231,219) 45.70%,rgb(221,231,219) 46.09%,rgb(224,233,221) 46.09%,rgb(224,233,221) 46.48%,rgb(227,235,222) 46.48%,rgb(227,235,222) 46.87%,rgb(230,237,223) 46.87%,rgb(230,237,223) 47.26%,rgb(234,239,224) 47.26%,rgb(234,239,224) 47.65%,rgb(237,241,226) 47.65%,rgb(237,241,226) 48.04%,rgb(240,243,227) 48.04%,rgb(240,243,227) 48.43%,rgb(243,245,227) 48.43%,rgb(243,245,227) 48.82%,rgb(246,247,228) 48.82%,rgb(246,247,228) 49.21%,rgb(250,248,229) 49.21%,rgb(250,248,229) 49.60%,rgb(253,250,230) 49.60%,rgb(253,250,230) 50%,rgb(255,252,204) 50%,rgb(255,252,204) 50.39%,rgb(253,250,200) 50.39%,rgb(253,250,200) 50.78%,rgb(252,247,196) 50.78%,rgb(252,247,196) 51.17%,rgb(250,245,191) 51.17%,rgb(250,245,191) 51.56%,rgb(249,243,187) 51.56%,rgb(249,243,187) 51.95%,rgb(248,240,183) 51.95%,rgb(248,240,183) 52.34%,rgb(246,238,178) 52.34%,rgb(246,238,178) 52.73%,rgb(245,235,174) 52.73%,rgb(245,235,174) 53.12%,rgb(244,233,170) 53.12%,rgb(244,233,170) 53.51%,rgb(242,231,166) 53.51%,rgb(242,231,166) 53.90%,rgb(241,228,161) 53.90%,rgb(241,228,161) 54.29%,rgb(240,226,157) 54.29%,rgb(240,226,157) 54.68%,rgb(238,224,153) 54.68%,rgb(238,224,153) 55.07%,rgb(237,222,148) 55.07%,rgb(237,222,148) 55.46%,rgb(235,220,144) 55.46%,rgb(235,220,144) 55.85%,rgb(234,217,140) 55.85%,rgb(234,217,140) 56.25%,rgb(232,215,135) 56.25%,rgb(232,215,135) 56.64%,rgb(231,213,131) 56.64%,rgb(231,213,131) 57.03%,rgb(229,211,127) 57.03%,rgb(229,211,127) 57.42%,rgb(228,209,122) 57.42%,rgb(228,209,122) 57.81%,rgb(226,207,118) 57.81%,rgb(226,207,118) 58.20%,rgb(224,205,113) 58.20%,rgb(224,205,113) 58.59%,rgb(223,203,109) 58.59%,rgb(223,203,109) 58.98%,rgb(221,201,105) 58.98%,rgb(221,201,105) 59.37%,rgb(219,199,100) 59.37%,rgb(219,199,100) 59.76%,rgb(217,197,96) 59.76%,rgb(217,197,96) 60.15%,rgb(215,196,92) 60.15%,rgb(215,196,92) 60.54%,rgb(213,194,88) 60.54%,rgb(213,194,88) 60.93%,rgb(210,192,83) 60.93%,rgb(210,192,83) 61.32%,rgb(208,190,79) 61.32%,rgb(208,190,79) 61.71%,rgb(206,189,75) 61.71%,rgb(206,189,75) 62.10%,rgb(203,187,71) 62.10%,rgb(203,187,71) 62.5%,rgb(200,186,67) 62.5%,rgb(200,186,67) 62.89%,rgb(198,184,63) 62.89%,rgb(198,184,63) 63.28%,rgb(195,183,60) 63.28%,rgb(195,183,60) 63.67%,rgb(192,181,56) 63.67%,rgb(192,181,56) 64.06%,rgb(189,180,52) 64.06%,rgb(189,180,52) 64.45%,rgb(186,179,49) 64.45%,rgb(186,179,49) 64.84%,rgb(183,177,46) 64.84%,rgb(183,177,46) 65.23%,rgb(180,176,42) 65.23%,rgb(180,176,42) 65.62%,rgb(177,175,39) 65.62%,rgb(177,175,39) 66.01%,rgb(174,173,36) 66.01%,rgb(174,173,36) 66.40%,rgb(171,172,33) 66.40%,rgb(171,172,33) 66.79%,rgb(168,171,30) 66.79%,rgb(168,171,30) 67.18%,rgb(164,170,27) 67.18%,rgb(164,170,27) 67.57%,rgb(161,168,24) 67.57%,rgb(161,168,24) 67.96%,rgb(158,167,22) 67.96%,rgb(158,167,22) 68.35%,rgb(154,166,19) 68.35%,rgb(154,166,19) 68.75%,rgb(151,165,17) 68.75%,rgb(151,165,17) 69.14%,rgb(147,164,14) 69.14%,rgb(147,164,14) 69.53%,rgb(144,162,12) 69.53%,rgb(144,162,12) 69.92%,rgb(140,161,10) 69.92%,rgb(140,161,10) 70.31%,rgb(137,160,9) 70.31%,rgb(137,160,9) 70.70%,rgb(133,159,7) 70.70%,rgb(133,159,7) 71.09%,rgb(130,158,6) 71.09%,rgb(130,158,6) 71.48%,rgb(126,156,6) 71.48%,rgb(126,156,6) 71.87%,rgb(123,155,6) 71.87%,rgb(123,155,6) 72.26%,rgb(119,154,6) 72.26%,rgb(119,154,6) 72.65%,rgb(116,153,6) 72.65%,rgb(116,153,6) 73.04%,rgb(112,152,7) 73.04%,rgb(112,152,7) 73.43%,rgb(108,150,7) 73.43%,rgb(108,150,7) 73.82%,rgb(105,149,8) 73.82%,rgb(105,149,8) 74.21%,rgb(101,148,10) 74.21%,rgb(101,148,10) 74.60%,rgb(97,146,11) 74.60%,rgb(97,146,11) 75%,rgb(94,145,13) 75%,rgb(94,145,13) 75.39%,rgb(90,144,14) 75.39%,rgb(90,144,14) 75.78%,rgb(87,143,16) 75.78%,rgb(87,143,16) 76.17%,rgb(83,141,17) 76.17%,rgb(83,141,17) 76.56%,rgb(79,140,19) 76.56%,rgb(79,140,19) 76.95%,rgb(76,139,21) 76.95%,rgb(76,139,21) 77.34%,rgb(72,137,22) 77.34%,rgb(72,137,22) 77.73%,rgb(68,136,24) 77.73%,rgb(68,136,24) 78.12%,rgb(65,134,25) 78.12%,rgb(65,134,25) 78.51%,rgb(61,133,27) 78.51%,rgb(61,133,27) 78.90%,rgb(58,131,28) 78.90%,rgb(58,131,28) 79.29%,rgb(54,130,29) 79.29%,rgb(54,130,29) 79.68%,rgb(51,128,31) 79.68%,rgb(51,128,31) 80.07%,rgb(47,127,32) 80.07%,rgb(47,127,32) 80.46%,rgb(44,125,33) 80.46%,rgb(44,125,33) 80.85%,rgb(41,124,34) 80.85%,rgb(41,124,34) 81.25%,rgb(38,122,36) 81.25%,rgb(38,122,36) 81.64%,rgb(34,121,37) 81.64%,rgb(34,121,37) 82.03%,rgb(31,119,38) 82.03%,rgb(31,119,38) 82.42%,rgb(29,117,39) 82.42%,rgb(29,117,39) 82.81%,rgb(26,116,39) 82.81%,rgb(26,116,39) 83.20%,rgb(23,114,40) 83.20%,rgb(23,114,40) 83.59%,rgb(21,112,41) 83.59%,rgb(21,112,41) 83.98%,rgb(19,110,42) 83.98%,rgb(19,110,42) 84.37%,rgb(17,109,42) 84.37%,rgb(17,109,42) 84.76%,rgb(15,107,43) 84.76%,rgb(15,107,43) 85.15%,rgb(13,105,43) 85.15%,rgb(13,105,43) 85.54%,rgb(12,103,44) 85.54%,rgb(12,103,44) 85.93%,rgb(11,101,44) 85.93%,rgb(11,101,44) 86.32%,rgb(11,100,44) 86.32%,rgb(11,100,44) 86.71%,rgb(11,98,45) 86.71%,rgb(11,98,45) 87.10%,rgb(11,96,45) 87.10%,rgb(11,96,45) 87.5%,rgb(11,94,45) 87.5%,rgb(11,94,45) 87.89%,rgb(12,92,45) 87.89%,rgb(12,92,45) 88.28%,rgb(13,90,45) 88.28%,rgb(13,90,45) 88.67%,rgb(14,88,45) 88.67%,rgb(14,88,45) 89.06%,rgb(15,86,44) 89.06%,rgb(15,86,44) 89.45%,rgb(15,85,44) 89.45%,rgb(15,85,44) 89.84%,rgb(16,83,44) 89.84%,rgb(16,83,44) 90.23%,rgb(17,81,44) 90.23%,rgb(17,81,44) 90.62%,rgb(18,79,43) 90.62%,rgb(18,79,43) 91.01%,rgb(19,77,43) 91.01%,rgb(19,77,43) 91.40%,rgb(20,75,42) 91.40%,rgb(20,75,42) 91.79%,rgb(21,73,42) 91.79%,rgb(21,73,42) 92.18%,rgb(22,71,41) 92.18%,rgb(22,71,41) 92.57%,rgb(22,69,40) 92.57%,rgb(22,69,40) 92.96%,rgb(23,67,39) 92.96%,rgb(23,67,39) 93.35%,rgb(23,65,39) 93.35%,rgb(23,65,39) 93.75%,rgb(24,64,38) 93.75%,rgb(24,64,38) 94.14%,rgb(24,62,37) 94.14%,rgb(24,62,37) 94.53%,rgb(25,60,36) 94.53%,rgb(25,60,36) 94.92%,rgb(25,58,35) 94.92%,rgb(25,58,35) 95.31%,rgb(25,56,34) 95.31%,rgb(25,56,34) 95.70%,rgb(25,54,33) 95.70%,rgb(25,54,33) 96.09%,rgb(25,52,31) 96.09%,rgb(25,52,31) 96.48%,rgb(25,50,30) 96.48%,rgb(25,50,30) 96.87%,rgb(25,48,29) 96.87%,rgb(25,48,29) 97.26%,rgb(25,46,28) 97.26%,rgb(25,46,28) 97.65%,rgb(25,44,26) 97.65%,rgb(25,44,26) 98.04%,rgb(25,43,25) 98.04%,rgb(25,43,25) 98.43%,rgb(24,41,23) 98.43%,rgb(24,41,23) 98.82%,rgb(24,39,22) 98.82%,rgb(24,39,22) 99.21%,rgb(24,37,20) 99.21%,rgb(24,37,20) 99.60%,rgb(23,35,19) 99.60%,rgb(23,35,19) 100%\",\n tex_buffer: new Uint8Array([17,32,64,18,33,67,20,34,70,21,36,73,22,37,76,23,39,80,25,40,83,26,41,86,27,42,90,28,44,93,30,45,96,31,46,100,32,48,103,33,49,107,34,50,111,35,51,114,36,53,118,37,54,122,37,55,126,38,56,130,38,58,134,39,59,138,39,61,141,38,62,145,37,64,148,36,66,151,35,68,152,33,71,154,32,73,155,31,75,155,30,77,156,29,80,156,28,82,157,28,84,157,27,86,157,27,88,158,27,90,158,27,92,158,27,94,159,27,96,159,27,99,159,27,101,159,28,103,160,28,105,160,29,106,160,30,108,161,30,110,161,31,112,162,32,114,162,33,116,162,34,118,163,35,120,163,36,122,164,37,124,164,38,126,165,39,128,165,40,130,166,42,132,166,43,133,166,44,135,167,46,137,167,47,139,168,48,141,168,50,143,169,51,145,169,53,147,170,55,149,170,56,151,171,58,152,171,60,154,172,62,156,172,64,158,173,66,160,173,69,162,174,71,163,174,74,165,174,77,167,175,80,169,175,83,170,176,86,172,176,90,174,176,93,175,177,97,177,177,101,179,178,105,180,179,109,182,179,113,183,180,117,184,181,121,186,181,125,187,182,129,189,183,132,190,184,136,192,185,140,193,186,144,195,188,148,196,189,151,197,190,155,199,191,158,200,193,162,202,194,166,203,195,169,205,196,172,206,198,176,208,199,179,210,201,183,211,202,186,213,204,189,214,205,193,216,206,196,218,208,199,219,209,202,221,211,205,223,212,209,224,214,212,226,215,215,228,217,218,230,218,221,231,219,224,233,221,227,235,222,230,237,223,234,239,224,237,241,226,240,243,227,243,245,227,246,247,228,250,248,229,253,250,230,255,252,204,253,250,200,252,247,196,250,245,191,249,243,187,248,240,183,246,238,178,245,235,174,244,233,170,242,231,166,241,228,161,240,226,157,238,224,153,237,222,148,235,220,144,234,217,140,232,215,135,231,213,131,229,211,127,228,209,122,226,207,118,224,205,113,223,203,109,221,201,105,219,199,100,217,197,96,215,196,92,213,194,88,210,192,83,208,190,79,206,189,75,203,187,71,200,186,67,198,184,63,195,183,60,192,181,56,189,180,52,186,179,49,183,177,46,180,176,42,177,175,39,174,173,36,171,172,33,168,171,30,164,170,27,161,168,24,158,167,22,154,166,19,151,165,17,147,164,14,144,162,12,140,161,10,137,160,9,133,159,7,130,158,6,126,156,6,123,155,6,119,154,6,116,153,6,112,152,7,108,150,7,105,149,8,101,148,10,97,146,11,94,145,13,90,144,14,87,143,16,83,141,17,79,140,19,76,139,21,72,137,22,68,136,24,65,134,25,61,133,27,58,131,28,54,130,29,51,128,31,47,127,32,44,125,33,41,124,34,38,122,36,34,121,37,31,119,38,29,117,39,26,116,39,23,114,40,21,112,41,19,110,42,17,109,42,15,107,43,13,105,43,12,103,44,11,101,44,11,100,44,11,98,45,11,96,45,11,94,45,12,92,45,13,90,45,14,88,45,15,86,44,15,85,44,16,83,44,17,81,44,18,79,43,19,77,43,20,75,42,21,73,42,22,71,41,22,69,40,23,67,39,23,65,39,24,64,38,24,62,37,25,60,36,25,58,35,25,56,34,25,54,33,25,52,31,25,50,30,25,48,29,25,46,28,25,44,26,25,43,25,24,41,23,24,39,22,24,37,20,23,35,19]),\n linear_interpolation: false\n},\n{\n name: \"dense\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(230,241,241) 0%,rgb(230,241,241) 0.390%,rgb(228,240,240) 0.390%,rgb(228,240,240) 0.781%,rgb(227,239,239) 0.781%,rgb(227,239,239) 1.171%,rgb(225,238,239) 1.171%,rgb(225,238,239) 1.562%,rgb(223,237,238) 1.562%,rgb(223,237,238) 1.953%,rgb(221,237,237) 1.953%,rgb(221,237,237) 2.343%,rgb(220,236,237) 2.343%,rgb(220,236,237) 2.734%,rgb(218,235,236) 2.734%,rgb(218,235,236) 3.125%,rgb(216,234,236) 3.125%,rgb(216,234,236) 3.515%,rgb(215,233,235) 3.515%,rgb(215,233,235) 3.906%,rgb(213,233,235) 3.906%,rgb(213,233,235) 4.296%,rgb(211,232,234) 4.296%,rgb(211,232,234) 4.687%,rgb(209,231,234) 4.687%,rgb(209,231,234) 5.078%,rgb(208,230,233) 5.078%,rgb(208,230,233) 5.468%,rgb(206,229,233) 5.468%,rgb(206,229,233) 5.859%,rgb(204,228,232) 5.859%,rgb(204,228,232) 6.25%,rgb(203,228,232) 6.25%,rgb(203,228,232) 6.640%,rgb(201,227,232) 6.640%,rgb(201,227,232) 7.031%,rgb(199,226,231) 7.031%,rgb(199,226,231) 7.421%,rgb(198,225,231) 7.421%,rgb(198,225,231) 7.812%,rgb(196,224,230) 7.812%,rgb(196,224,230) 8.203%,rgb(194,223,230) 8.203%,rgb(194,223,230) 8.593%,rgb(193,223,230) 8.593%,rgb(193,223,230) 8.984%,rgb(191,222,230) 8.984%,rgb(191,222,230) 9.375%,rgb(190,221,229) 9.375%,rgb(190,221,229) 9.765%,rgb(188,220,229) 9.765%,rgb(188,220,229) 10.15%,rgb(186,219,229) 10.15%,rgb(186,219,229) 10.54%,rgb(185,218,228) 10.54%,rgb(185,218,228) 10.93%,rgb(183,218,228) 10.93%,rgb(183,218,228) 11.32%,rgb(182,217,228) 11.32%,rgb(182,217,228) 11.71%,rgb(180,216,228) 11.71%,rgb(180,216,228) 12.10%,rgb(178,215,228) 12.10%,rgb(178,215,228) 12.5%,rgb(177,214,227) 12.5%,rgb(177,214,227) 12.89%,rgb(175,213,227) 12.89%,rgb(175,213,227) 13.28%,rgb(174,212,227) 13.28%,rgb(174,212,227) 13.67%,rgb(172,212,227) 13.67%,rgb(172,212,227) 14.06%,rgb(171,211,227) 14.06%,rgb(171,211,227) 14.45%,rgb(169,210,227) 14.45%,rgb(169,210,227) 14.84%,rgb(168,209,227) 14.84%,rgb(168,209,227) 15.23%,rgb(166,208,227) 15.23%,rgb(166,208,227) 15.62%,rgb(165,207,226) 15.62%,rgb(165,207,226) 16.01%,rgb(163,206,226) 16.01%,rgb(163,206,226) 16.40%,rgb(162,206,226) 16.40%,rgb(162,206,226) 16.79%,rgb(160,205,226) 16.79%,rgb(160,205,226) 17.18%,rgb(159,204,226) 17.18%,rgb(159,204,226) 17.57%,rgb(158,203,226) 17.57%,rgb(158,203,226) 17.96%,rgb(156,202,226) 17.96%,rgb(156,202,226) 18.35%,rgb(155,201,226) 18.35%,rgb(155,201,226) 18.75%,rgb(154,200,226) 18.75%,rgb(154,200,226) 19.14%,rgb(152,199,226) 19.14%,rgb(152,199,226) 19.53%,rgb(151,198,226) 19.53%,rgb(151,198,226) 19.92%,rgb(150,197,226) 19.92%,rgb(150,197,226) 20.31%,rgb(148,197,226) 20.31%,rgb(148,197,226) 20.70%,rgb(147,196,226) 20.70%,rgb(147,196,226) 21.09%,rgb(146,195,226) 21.09%,rgb(146,195,226) 21.48%,rgb(144,194,226) 21.48%,rgb(144,194,226) 21.87%,rgb(143,193,226) 21.87%,rgb(143,193,226) 22.26%,rgb(142,192,226) 22.26%,rgb(142,192,226) 22.65%,rgb(141,191,226) 22.65%,rgb(141,191,226) 23.04%,rgb(140,190,226) 23.04%,rgb(140,190,226) 23.43%,rgb(138,189,227) 23.43%,rgb(138,189,227) 23.82%,rgb(137,188,227) 23.82%,rgb(137,188,227) 24.21%,rgb(136,187,227) 24.21%,rgb(136,187,227) 24.60%,rgb(135,186,227) 24.60%,rgb(135,186,227) 25%,rgb(134,185,227) 25%,rgb(134,185,227) 25.39%,rgb(133,184,227) 25.39%,rgb(133,184,227) 25.78%,rgb(132,183,227) 25.78%,rgb(132,183,227) 26.17%,rgb(131,182,227) 26.17%,rgb(131,182,227) 26.56%,rgb(130,181,227) 26.56%,rgb(130,181,227) 26.95%,rgb(129,180,227) 26.95%,rgb(129,180,227) 27.34%,rgb(128,179,227) 27.34%,rgb(128,179,227) 27.73%,rgb(127,178,227) 27.73%,rgb(127,178,227) 28.12%,rgb(127,177,228) 28.12%,rgb(127,177,228) 28.51%,rgb(126,176,228) 28.51%,rgb(126,176,228) 28.90%,rgb(125,175,228) 28.90%,rgb(125,175,228) 29.29%,rgb(124,174,228) 29.29%,rgb(124,174,228) 29.68%,rgb(123,173,228) 29.68%,rgb(123,173,228) 30.07%,rgb(123,172,228) 30.07%,rgb(123,172,228) 30.46%,rgb(122,171,228) 30.46%,rgb(122,171,228) 30.85%,rgb(121,170,228) 30.85%,rgb(121,170,228) 31.25%,rgb(121,169,228) 31.25%,rgb(121,169,228) 31.64%,rgb(120,168,228) 31.64%,rgb(120,168,228) 32.03%,rgb(120,167,228) 32.03%,rgb(120,167,228) 32.42%,rgb(119,166,228) 32.42%,rgb(119,166,228) 32.81%,rgb(119,165,228) 32.81%,rgb(119,165,228) 33.20%,rgb(118,164,229) 33.20%,rgb(118,164,229) 33.59%,rgb(118,163,229) 33.59%,rgb(118,163,229) 33.98%,rgb(117,161,229) 33.98%,rgb(117,161,229) 34.37%,rgb(117,160,229) 34.37%,rgb(117,160,229) 34.76%,rgb(117,159,229) 34.76%,rgb(117,159,229) 35.15%,rgb(117,158,229) 35.15%,rgb(117,158,229) 35.54%,rgb(116,157,229) 35.54%,rgb(116,157,229) 35.93%,rgb(116,156,228) 35.93%,rgb(116,156,228) 36.32%,rgb(116,155,228) 36.32%,rgb(116,155,228) 36.71%,rgb(116,154,228) 36.71%,rgb(116,154,228) 37.10%,rgb(116,152,228) 37.10%,rgb(116,152,228) 37.5%,rgb(115,151,228) 37.5%,rgb(115,151,228) 37.89%,rgb(115,150,228) 37.89%,rgb(115,150,228) 38.28%,rgb(115,149,228) 38.28%,rgb(115,149,228) 38.67%,rgb(115,148,228) 38.67%,rgb(115,148,228) 39.06%,rgb(115,147,227) 39.06%,rgb(115,147,227) 39.45%,rgb(115,145,227) 39.45%,rgb(115,145,227) 39.84%,rgb(115,144,227) 39.84%,rgb(115,144,227) 40.23%,rgb(115,143,227) 40.23%,rgb(115,143,227) 40.62%,rgb(115,142,226) 40.62%,rgb(115,142,226) 41.01%,rgb(116,141,226) 41.01%,rgb(116,141,226) 41.40%,rgb(116,139,226) 41.40%,rgb(116,139,226) 41.79%,rgb(116,138,226) 41.79%,rgb(116,138,226) 42.18%,rgb(116,137,225) 42.18%,rgb(116,137,225) 42.57%,rgb(116,136,225) 42.57%,rgb(116,136,225) 42.96%,rgb(116,135,224) 42.96%,rgb(116,135,224) 43.35%,rgb(116,133,224) 43.35%,rgb(116,133,224) 43.75%,rgb(117,132,223) 43.75%,rgb(117,132,223) 44.14%,rgb(117,131,223) 44.14%,rgb(117,131,223) 44.53%,rgb(117,130,222) 44.53%,rgb(117,130,222) 44.92%,rgb(117,129,222) 44.92%,rgb(117,129,222) 45.31%,rgb(117,127,221) 45.31%,rgb(117,127,221) 45.70%,rgb(117,126,221) 45.70%,rgb(117,126,221) 46.09%,rgb(118,125,220) 46.09%,rgb(118,125,220) 46.48%,rgb(118,124,220) 46.48%,rgb(118,124,220) 46.87%,rgb(118,123,219) 46.87%,rgb(118,123,219) 47.26%,rgb(118,121,218) 47.26%,rgb(118,121,218) 47.65%,rgb(118,120,218) 47.65%,rgb(118,120,218) 48.04%,rgb(119,119,217) 48.04%,rgb(119,119,217) 48.43%,rgb(119,118,216) 48.43%,rgb(119,118,216) 48.82%,rgb(119,117,215) 48.82%,rgb(119,117,215) 49.21%,rgb(119,115,215) 49.21%,rgb(119,115,215) 49.60%,rgb(119,114,214) 49.60%,rgb(119,114,214) 50%,rgb(120,113,213) 50%,rgb(120,113,213) 50.39%,rgb(120,112,212) 50.39%,rgb(120,112,212) 50.78%,rgb(120,111,211) 50.78%,rgb(120,111,211) 51.17%,rgb(120,110,210) 51.17%,rgb(120,110,210) 51.56%,rgb(120,108,210) 51.56%,rgb(120,108,210) 51.95%,rgb(120,107,209) 51.95%,rgb(120,107,209) 52.34%,rgb(120,106,208) 52.34%,rgb(120,106,208) 52.73%,rgb(121,105,207) 52.73%,rgb(121,105,207) 53.12%,rgb(121,104,206) 53.12%,rgb(121,104,206) 53.51%,rgb(121,102,205) 53.51%,rgb(121,102,205) 53.90%,rgb(121,101,204) 53.90%,rgb(121,101,204) 54.29%,rgb(121,100,203) 54.29%,rgb(121,100,203) 54.68%,rgb(121,99,202) 54.68%,rgb(121,99,202) 55.07%,rgb(121,98,201) 55.07%,rgb(121,98,201) 55.46%,rgb(121,97,200) 55.46%,rgb(121,97,200) 55.85%,rgb(121,96,199) 55.85%,rgb(121,96,199) 56.25%,rgb(121,94,197) 56.25%,rgb(121,94,197) 56.64%,rgb(121,93,196) 56.64%,rgb(121,93,196) 57.03%,rgb(121,92,195) 57.03%,rgb(121,92,195) 57.42%,rgb(121,91,194) 57.42%,rgb(121,91,194) 57.81%,rgb(121,90,193) 57.81%,rgb(121,90,193) 58.20%,rgb(121,89,192) 58.20%,rgb(121,89,192) 58.59%,rgb(121,88,191) 58.59%,rgb(121,88,191) 58.98%,rgb(121,87,189) 58.98%,rgb(121,87,189) 59.37%,rgb(121,86,188) 59.37%,rgb(121,86,188) 59.76%,rgb(121,84,187) 59.76%,rgb(121,84,187) 60.15%,rgb(121,83,186) 60.15%,rgb(121,83,186) 60.54%,rgb(121,82,184) 60.54%,rgb(121,82,184) 60.93%,rgb(121,81,183) 60.93%,rgb(121,81,183) 61.32%,rgb(121,80,182) 61.32%,rgb(121,80,182) 61.71%,rgb(121,79,181) 61.71%,rgb(121,79,181) 62.10%,rgb(120,78,179) 62.10%,rgb(120,78,179) 62.5%,rgb(120,77,178) 62.5%,rgb(120,77,178) 62.89%,rgb(120,76,177) 62.89%,rgb(120,76,177) 63.28%,rgb(120,75,175) 63.28%,rgb(120,75,175) 63.67%,rgb(120,74,174) 63.67%,rgb(120,74,174) 64.06%,rgb(120,73,173) 64.06%,rgb(120,73,173) 64.45%,rgb(119,72,171) 64.45%,rgb(119,72,171) 64.84%,rgb(119,71,170) 64.84%,rgb(119,71,170) 65.23%,rgb(119,70,169) 65.23%,rgb(119,70,169) 65.62%,rgb(119,69,167) 65.62%,rgb(119,69,167) 66.01%,rgb(119,67,166) 66.01%,rgb(119,67,166) 66.40%,rgb(118,66,165) 66.40%,rgb(118,66,165) 66.79%,rgb(118,65,163) 66.79%,rgb(118,65,163) 67.18%,rgb(118,64,162) 67.18%,rgb(118,64,162) 67.57%,rgb(118,63,160) 67.57%,rgb(118,63,160) 67.96%,rgb(117,62,159) 67.96%,rgb(117,62,159) 68.35%,rgb(117,61,157) 68.35%,rgb(117,61,157) 68.75%,rgb(117,60,156) 68.75%,rgb(117,60,156) 69.14%,rgb(116,59,155) 69.14%,rgb(116,59,155) 69.53%,rgb(116,59,153) 69.53%,rgb(116,59,153) 69.92%,rgb(116,58,152) 69.92%,rgb(116,58,152) 70.31%,rgb(115,57,150) 70.31%,rgb(115,57,150) 70.70%,rgb(115,56,149) 70.70%,rgb(115,56,149) 71.09%,rgb(115,55,147) 71.09%,rgb(115,55,147) 71.48%,rgb(114,54,146) 71.48%,rgb(114,54,146) 71.87%,rgb(114,53,144) 71.87%,rgb(114,53,144) 72.26%,rgb(114,52,143) 72.26%,rgb(114,52,143) 72.65%,rgb(113,51,141) 72.65%,rgb(113,51,141) 73.04%,rgb(113,50,140) 73.04%,rgb(113,50,140) 73.43%,rgb(112,49,138) 73.43%,rgb(112,49,138) 73.82%,rgb(112,48,136) 73.82%,rgb(112,48,136) 74.21%,rgb(111,47,135) 74.21%,rgb(111,47,135) 74.60%,rgb(111,46,133) 74.60%,rgb(111,46,133) 75%,rgb(110,45,132) 75%,rgb(110,45,132) 75.39%,rgb(110,45,130) 75.39%,rgb(110,45,130) 75.78%,rgb(109,44,129) 75.78%,rgb(109,44,129) 76.17%,rgb(109,43,127) 76.17%,rgb(109,43,127) 76.56%,rgb(108,42,126) 76.56%,rgb(108,42,126) 76.95%,rgb(108,41,124) 76.95%,rgb(108,41,124) 77.34%,rgb(107,40,122) 77.34%,rgb(107,40,122) 77.73%,rgb(107,40,121) 77.73%,rgb(107,40,121) 78.12%,rgb(106,39,119) 78.12%,rgb(106,39,119) 78.51%,rgb(106,38,117) 78.51%,rgb(106,38,117) 78.90%,rgb(105,37,116) 78.90%,rgb(105,37,116) 79.29%,rgb(104,36,114) 79.29%,rgb(104,36,114) 79.68%,rgb(104,36,113) 79.68%,rgb(104,36,113) 80.07%,rgb(103,35,111) 80.07%,rgb(103,35,111) 80.46%,rgb(103,34,109) 80.46%,rgb(103,34,109) 80.85%,rgb(102,33,108) 80.85%,rgb(102,33,108) 81.25%,rgb(101,33,106) 81.25%,rgb(101,33,106) 81.64%,rgb(101,32,104) 81.64%,rgb(101,32,104) 82.03%,rgb(100,31,103) 82.03%,rgb(100,31,103) 82.42%,rgb(99,31,101) 82.42%,rgb(99,31,101) 82.81%,rgb(98,30,99) 82.81%,rgb(98,30,99) 83.20%,rgb(98,29,98) 83.20%,rgb(98,29,98) 83.59%,rgb(97,29,96) 83.59%,rgb(97,29,96) 83.98%,rgb(96,28,94) 83.98%,rgb(96,28,94) 84.37%,rgb(95,27,93) 84.37%,rgb(95,27,93) 84.76%,rgb(95,27,91) 84.76%,rgb(95,27,91) 85.15%,rgb(94,26,89) 85.15%,rgb(94,26,89) 85.54%,rgb(93,26,88) 85.54%,rgb(93,26,88) 85.93%,rgb(92,25,86) 85.93%,rgb(92,25,86) 86.32%,rgb(91,25,84) 86.32%,rgb(91,25,84) 86.71%,rgb(90,24,83) 86.71%,rgb(90,24,83) 87.10%,rgb(90,24,81) 87.10%,rgb(90,24,81) 87.5%,rgb(89,23,80) 87.5%,rgb(89,23,80) 87.89%,rgb(88,23,78) 87.89%,rgb(88,23,78) 88.28%,rgb(87,22,76) 88.28%,rgb(87,22,76) 88.67%,rgb(86,22,75) 88.67%,rgb(86,22,75) 89.06%,rgb(85,22,73) 89.06%,rgb(85,22,73) 89.45%,rgb(84,21,72) 89.45%,rgb(84,21,72) 89.84%,rgb(83,21,70) 89.84%,rgb(83,21,70) 90.23%,rgb(82,21,68) 90.23%,rgb(82,21,68) 90.62%,rgb(81,20,67) 90.62%,rgb(81,20,67) 91.01%,rgb(80,20,65) 91.01%,rgb(80,20,65) 91.40%,rgb(79,20,64) 91.40%,rgb(79,20,64) 91.79%,rgb(78,19,62) 91.79%,rgb(78,19,62) 92.18%,rgb(77,19,61) 92.18%,rgb(77,19,61) 92.57%,rgb(75,19,59) 92.57%,rgb(75,19,59) 92.96%,rgb(74,19,58) 92.96%,rgb(74,19,58) 93.35%,rgb(73,18,56) 93.35%,rgb(73,18,56) 93.75%,rgb(72,18,55) 93.75%,rgb(72,18,55) 94.14%,rgb(71,18,54) 94.14%,rgb(71,18,54) 94.53%,rgb(70,18,52) 94.53%,rgb(70,18,52) 94.92%,rgb(69,17,51) 94.92%,rgb(69,17,51) 95.31%,rgb(68,17,50) 95.31%,rgb(68,17,50) 95.70%,rgb(66,17,48) 95.70%,rgb(66,17,48) 96.09%,rgb(65,17,47) 96.09%,rgb(65,17,47) 96.48%,rgb(64,16,46) 96.48%,rgb(64,16,46) 96.87%,rgb(63,16,45) 96.87%,rgb(63,16,45) 97.26%,rgb(62,16,43) 97.26%,rgb(62,16,43) 97.65%,rgb(60,16,42) 97.65%,rgb(60,16,42) 98.04%,rgb(59,15,41) 98.04%,rgb(59,15,41) 98.43%,rgb(58,15,40) 98.43%,rgb(58,15,40) 98.82%,rgb(57,15,39) 98.82%,rgb(57,15,39) 99.21%,rgb(56,15,37) 99.21%,rgb(56,15,37) 99.60%,rgb(54,14,36) 99.60%,rgb(54,14,36) 100%\",\n tex_buffer: new Uint8Array([230,241,241,228,240,240,227,239,239,225,238,239,223,237,238,221,237,237,220,236,237,218,235,236,216,234,236,215,233,235,213,233,235,211,232,234,209,231,234,208,230,233,206,229,233,204,228,232,203,228,232,201,227,232,199,226,231,198,225,231,196,224,230,194,223,230,193,223,230,191,222,230,190,221,229,188,220,229,186,219,229,185,218,228,183,218,228,182,217,228,180,216,228,178,215,228,177,214,227,175,213,227,174,212,227,172,212,227,171,211,227,169,210,227,168,209,227,166,208,227,165,207,226,163,206,226,162,206,226,160,205,226,159,204,226,158,203,226,156,202,226,155,201,226,154,200,226,152,199,226,151,198,226,150,197,226,148,197,226,147,196,226,146,195,226,144,194,226,143,193,226,142,192,226,141,191,226,140,190,226,138,189,227,137,188,227,136,187,227,135,186,227,134,185,227,133,184,227,132,183,227,131,182,227,130,181,227,129,180,227,128,179,227,127,178,227,127,177,228,126,176,228,125,175,228,124,174,228,123,173,228,123,172,228,122,171,228,121,170,228,121,169,228,120,168,228,120,167,228,119,166,228,119,165,228,118,164,229,118,163,229,117,161,229,117,160,229,117,159,229,117,158,229,116,157,229,116,156,228,116,155,228,116,154,228,116,152,228,115,151,228,115,150,228,115,149,228,115,148,228,115,147,227,115,145,227,115,144,227,115,143,227,115,142,226,116,141,226,116,139,226,116,138,226,116,137,225,116,136,225,116,135,224,116,133,224,117,132,223,117,131,223,117,130,222,117,129,222,117,127,221,117,126,221,118,125,220,118,124,220,118,123,219,118,121,218,118,120,218,119,119,217,119,118,216,119,117,215,119,115,215,119,114,214,120,113,213,120,112,212,120,111,211,120,110,210,120,108,210,120,107,209,120,106,208,121,105,207,121,104,206,121,102,205,121,101,204,121,100,203,121,99,202,121,98,201,121,97,200,121,96,199,121,94,197,121,93,196,121,92,195,121,91,194,121,90,193,121,89,192,121,88,191,121,87,189,121,86,188,121,84,187,121,83,186,121,82,184,121,81,183,121,80,182,121,79,181,120,78,179,120,77,178,120,76,177,120,75,175,120,74,174,120,73,173,119,72,171,119,71,170,119,70,169,119,69,167,119,67,166,118,66,165,118,65,163,118,64,162,118,63,160,117,62,159,117,61,157,117,60,156,116,59,155,116,59,153,116,58,152,115,57,150,115,56,149,115,55,147,114,54,146,114,53,144,114,52,143,113,51,141,113,50,140,112,49,138,112,48,136,111,47,135,111,46,133,110,45,132,110,45,130,109,44,129,109,43,127,108,42,126,108,41,124,107,40,122,107,40,121,106,39,119,106,38,117,105,37,116,104,36,114,104,36,113,103,35,111,103,34,109,102,33,108,101,33,106,101,32,104,100,31,103,99,31,101,98,30,99,98,29,98,97,29,96,96,28,94,95,27,93,95,27,91,94,26,89,93,26,88,92,25,86,91,25,84,90,24,83,90,24,81,89,23,80,88,23,78,87,22,76,86,22,75,85,22,73,84,21,72,83,21,70,82,21,68,81,20,67,80,20,65,79,20,64,78,19,62,77,19,61,75,19,59,74,19,58,73,18,56,72,18,55,71,18,54,70,18,52,69,17,51,68,17,50,66,17,48,65,17,47,64,16,46,63,16,45,62,16,43,60,16,42,59,15,41,58,15,40,57,15,39,56,15,37,54,14,36]),\n linear_interpolation: false\n},\n{\n name: \"diff\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: true,\n c3g_string: \"rgb(8,35,64) 0%,rgb(8,35,64) 0.390%,rgb(9,37,66) 0.390%,rgb(9,37,66) 0.781%,rgb(10,38,68) 0.781%,rgb(10,38,68) 1.171%,rgb(11,40,69) 1.171%,rgb(11,40,69) 1.562%,rgb(12,42,71) 1.562%,rgb(12,42,71) 1.953%,rgb(12,44,73) 1.953%,rgb(12,44,73) 2.343%,rgb(13,45,75) 2.343%,rgb(13,45,75) 2.734%,rgb(14,47,77) 2.734%,rgb(14,47,77) 3.125%,rgb(15,49,79) 3.125%,rgb(15,49,79) 3.515%,rgb(16,50,81) 3.515%,rgb(16,50,81) 3.906%,rgb(17,52,83) 3.906%,rgb(17,52,83) 4.296%,rgb(17,54,85) 4.296%,rgb(17,54,85) 4.687%,rgb(18,55,86) 4.687%,rgb(18,55,86) 5.078%,rgb(19,57,88) 5.078%,rgb(19,57,88) 5.468%,rgb(20,59,90) 5.468%,rgb(20,59,90) 5.859%,rgb(20,61,92) 5.859%,rgb(20,61,92) 6.25%,rgb(21,62,94) 6.25%,rgb(21,62,94) 6.640%,rgb(22,64,95) 6.640%,rgb(22,64,95) 7.031%,rgb(23,66,97) 7.031%,rgb(23,66,97) 7.421%,rgb(24,67,99) 7.421%,rgb(24,67,99) 7.812%,rgb(25,69,100) 7.812%,rgb(25,69,100) 8.203%,rgb(26,71,102) 8.203%,rgb(26,71,102) 8.593%,rgb(27,72,103) 8.593%,rgb(27,72,103) 8.984%,rgb(29,74,104) 8.984%,rgb(29,74,104) 9.375%,rgb(31,76,105) 9.375%,rgb(31,76,105) 9.765%,rgb(33,77,106) 9.765%,rgb(33,77,106) 10.15%,rgb(36,79,107) 10.15%,rgb(36,79,107) 10.54%,rgb(38,80,108) 10.54%,rgb(38,80,108) 10.93%,rgb(40,82,109) 10.93%,rgb(40,82,109) 11.32%,rgb(43,83,110) 11.32%,rgb(43,83,110) 11.71%,rgb(45,85,111) 11.71%,rgb(45,85,111) 12.10%,rgb(47,86,112) 12.10%,rgb(47,86,112) 12.5%,rgb(49,88,113) 12.5%,rgb(49,88,113) 12.89%,rgb(52,89,115) 12.89%,rgb(52,89,115) 13.28%,rgb(54,91,116) 13.28%,rgb(54,91,116) 13.67%,rgb(56,92,117) 13.67%,rgb(56,92,117) 14.06%,rgb(58,94,118) 14.06%,rgb(58,94,118) 14.45%,rgb(60,95,119) 14.45%,rgb(60,95,119) 14.84%,rgb(62,97,120) 14.84%,rgb(62,97,120) 15.23%,rgb(65,98,121) 15.23%,rgb(65,98,121) 15.62%,rgb(67,100,122) 15.62%,rgb(67,100,122) 16.01%,rgb(69,101,123) 16.01%,rgb(69,101,123) 16.40%,rgb(71,103,125) 16.40%,rgb(71,103,125) 16.79%,rgb(73,104,126) 16.79%,rgb(73,104,126) 17.18%,rgb(75,106,127) 17.18%,rgb(75,106,127) 17.57%,rgb(77,107,128) 17.57%,rgb(77,107,128) 17.96%,rgb(79,109,129) 17.96%,rgb(79,109,129) 18.35%,rgb(81,110,130) 18.35%,rgb(81,110,130) 18.75%,rgb(83,112,132) 18.75%,rgb(83,112,132) 19.14%,rgb(85,113,133) 19.14%,rgb(85,113,133) 19.53%,rgb(88,115,134) 19.53%,rgb(88,115,134) 19.92%,rgb(90,116,135) 19.92%,rgb(90,116,135) 20.31%,rgb(92,118,136) 20.31%,rgb(92,118,136) 20.70%,rgb(94,120,138) 20.70%,rgb(94,120,138) 21.09%,rgb(96,121,139) 21.09%,rgb(96,121,139) 21.48%,rgb(98,123,140) 21.48%,rgb(98,123,140) 21.87%,rgb(100,124,141) 21.87%,rgb(100,124,141) 22.26%,rgb(102,126,142) 22.26%,rgb(102,126,142) 22.65%,rgb(104,127,144) 22.65%,rgb(104,127,144) 23.04%,rgb(106,129,145) 23.04%,rgb(106,129,145) 23.43%,rgb(108,130,146) 23.43%,rgb(108,130,146) 23.82%,rgb(110,132,148) 23.82%,rgb(110,132,148) 24.21%,rgb(112,134,149) 24.21%,rgb(112,134,149) 24.60%,rgb(114,135,150) 24.60%,rgb(114,135,150) 25%,rgb(116,137,151) 25%,rgb(116,137,151) 25.39%,rgb(118,138,153) 25.39%,rgb(118,138,153) 25.78%,rgb(120,140,154) 25.78%,rgb(120,140,154) 26.17%,rgb(123,141,155) 26.17%,rgb(123,141,155) 26.56%,rgb(125,143,157) 26.56%,rgb(125,143,157) 26.95%,rgb(127,145,158) 26.95%,rgb(127,145,158) 27.34%,rgb(129,146,159) 27.34%,rgb(129,146,159) 27.73%,rgb(131,148,161) 27.73%,rgb(131,148,161) 28.12%,rgb(133,150,162) 28.12%,rgb(133,150,162) 28.51%,rgb(135,151,163) 28.51%,rgb(135,151,163) 28.90%,rgb(137,153,165) 28.90%,rgb(137,153,165) 29.29%,rgb(139,154,166) 29.29%,rgb(139,154,166) 29.68%,rgb(141,156,167) 29.68%,rgb(141,156,167) 30.07%,rgb(143,158,169) 30.07%,rgb(143,158,169) 30.46%,rgb(146,159,170) 30.46%,rgb(146,159,170) 30.85%,rgb(148,161,172) 30.85%,rgb(148,161,172) 31.25%,rgb(150,163,173) 31.25%,rgb(150,163,173) 31.64%,rgb(152,165,175) 31.64%,rgb(152,165,175) 32.03%,rgb(154,166,176) 32.03%,rgb(154,166,176) 32.42%,rgb(156,168,177) 32.42%,rgb(156,168,177) 32.81%,rgb(158,170,179) 32.81%,rgb(158,170,179) 33.20%,rgb(160,171,180) 33.20%,rgb(160,171,180) 33.59%,rgb(163,173,182) 33.59%,rgb(163,173,182) 33.98%,rgb(165,175,183) 33.98%,rgb(165,175,183) 34.37%,rgb(167,177,185) 34.37%,rgb(167,177,185) 34.76%,rgb(169,178,186) 34.76%,rgb(169,178,186) 35.15%,rgb(171,180,188) 35.15%,rgb(171,180,188) 35.54%,rgb(174,182,189) 35.54%,rgb(174,182,189) 35.93%,rgb(176,184,191) 35.93%,rgb(176,184,191) 36.32%,rgb(178,186,192) 36.32%,rgb(178,186,192) 36.71%,rgb(180,187,194) 36.71%,rgb(180,187,194) 37.10%,rgb(182,189,196) 37.10%,rgb(182,189,196) 37.5%,rgb(185,191,197) 37.5%,rgb(185,191,197) 37.89%,rgb(187,193,199) 37.89%,rgb(187,193,199) 38.28%,rgb(189,195,200) 38.28%,rgb(189,195,200) 38.67%,rgb(191,197,202) 38.67%,rgb(191,197,202) 39.06%,rgb(194,198,204) 39.06%,rgb(194,198,204) 39.45%,rgb(196,200,205) 39.45%,rgb(196,200,205) 39.84%,rgb(198,202,207) 39.84%,rgb(198,202,207) 40.23%,rgb(200,204,209) 40.23%,rgb(200,204,209) 40.62%,rgb(203,206,210) 40.62%,rgb(203,206,210) 41.01%,rgb(205,208,212) 41.01%,rgb(205,208,212) 41.40%,rgb(207,210,214) 41.40%,rgb(207,210,214) 41.79%,rgb(210,212,215) 41.79%,rgb(210,212,215) 42.18%,rgb(212,214,217) 42.18%,rgb(212,214,217) 42.57%,rgb(214,216,219) 42.57%,rgb(214,216,219) 42.96%,rgb(217,218,221) 42.96%,rgb(217,218,221) 43.35%,rgb(219,220,222) 43.35%,rgb(219,220,222) 43.75%,rgb(221,222,224) 43.75%,rgb(221,222,224) 44.14%,rgb(224,224,226) 44.14%,rgb(224,224,226) 44.53%,rgb(226,226,227) 44.53%,rgb(226,226,227) 44.92%,rgb(228,227,229) 44.92%,rgb(228,227,229) 45.31%,rgb(230,229,231) 45.31%,rgb(230,229,231) 45.70%,rgb(232,231,232) 45.70%,rgb(232,231,232) 46.09%,rgb(235,233,234) 46.09%,rgb(235,233,234) 46.48%,rgb(236,234,235) 46.48%,rgb(236,234,235) 46.87%,rgb(238,236,236) 46.87%,rgb(238,236,236) 47.26%,rgb(240,237,238) 47.26%,rgb(240,237,238) 47.65%,rgb(241,238,239) 47.65%,rgb(241,238,239) 48.04%,rgb(243,239,239) 48.04%,rgb(243,239,239) 48.43%,rgb(244,240,240) 48.43%,rgb(244,240,240) 48.82%,rgb(245,241,240) 48.82%,rgb(245,241,240) 49.21%,rgb(245,241,240) 49.21%,rgb(245,241,240) 49.60%,rgb(246,241,240) 49.60%,rgb(246,241,240) 50%,rgb(246,241,240) 50%,rgb(246,241,240) 50.39%,rgb(245,241,239) 50.39%,rgb(245,241,239) 50.78%,rgb(245,240,238) 50.78%,rgb(245,240,238) 51.17%,rgb(244,239,237) 51.17%,rgb(244,239,237) 51.56%,rgb(243,238,235) 51.56%,rgb(243,238,235) 51.95%,rgb(242,237,233) 51.95%,rgb(242,237,233) 52.34%,rgb(241,235,232) 52.34%,rgb(241,235,232) 52.73%,rgb(239,234,229) 52.73%,rgb(239,234,229) 53.12%,rgb(238,232,227) 53.12%,rgb(238,232,227) 53.51%,rgb(236,230,225) 53.51%,rgb(236,230,225) 53.90%,rgb(234,229,223) 53.90%,rgb(234,229,223) 54.29%,rgb(232,227,220) 54.29%,rgb(232,227,220) 54.68%,rgb(231,225,218) 54.68%,rgb(231,225,218) 55.07%,rgb(229,223,215) 55.07%,rgb(229,223,215) 55.46%,rgb(227,221,212) 55.46%,rgb(227,221,212) 55.85%,rgb(225,219,210) 55.85%,rgb(225,219,210) 56.25%,rgb(223,217,207) 56.25%,rgb(223,217,207) 56.64%,rgb(221,215,205) 56.64%,rgb(221,215,205) 57.03%,rgb(219,213,202) 57.03%,rgb(219,213,202) 57.42%,rgb(217,211,199) 57.42%,rgb(217,211,199) 57.81%,rgb(215,209,197) 57.81%,rgb(215,209,197) 58.20%,rgb(213,207,194) 58.20%,rgb(213,207,194) 58.59%,rgb(211,205,192) 58.59%,rgb(211,205,192) 58.98%,rgb(210,203,189) 58.98%,rgb(210,203,189) 59.37%,rgb(208,201,187) 59.37%,rgb(208,201,187) 59.76%,rgb(206,199,184) 59.76%,rgb(206,199,184) 60.15%,rgb(204,197,181) 60.15%,rgb(204,197,181) 60.54%,rgb(202,195,179) 60.54%,rgb(202,195,179) 60.93%,rgb(200,193,176) 60.93%,rgb(200,193,176) 61.32%,rgb(199,191,174) 61.32%,rgb(199,191,174) 61.71%,rgb(197,189,171) 61.71%,rgb(197,189,171) 62.10%,rgb(195,187,169) 62.10%,rgb(195,187,169) 62.5%,rgb(193,185,166) 62.5%,rgb(193,185,166) 62.89%,rgb(191,183,164) 62.89%,rgb(191,183,164) 63.28%,rgb(190,181,161) 63.28%,rgb(190,181,161) 63.67%,rgb(188,179,159) 63.67%,rgb(188,179,159) 64.06%,rgb(186,177,157) 64.06%,rgb(186,177,157) 64.45%,rgb(185,176,154) 64.45%,rgb(185,176,154) 64.84%,rgb(183,174,152) 64.84%,rgb(183,174,152) 65.23%,rgb(181,172,149) 65.23%,rgb(181,172,149) 65.62%,rgb(179,170,147) 65.62%,rgb(179,170,147) 66.01%,rgb(178,168,144) 66.01%,rgb(178,168,144) 66.40%,rgb(176,166,142) 66.40%,rgb(176,166,142) 66.79%,rgb(174,165,140) 66.79%,rgb(174,165,140) 67.18%,rgb(173,163,137) 67.18%,rgb(173,163,137) 67.57%,rgb(171,161,135) 67.57%,rgb(171,161,135) 67.96%,rgb(169,159,133) 67.96%,rgb(169,159,133) 68.35%,rgb(168,157,130) 68.35%,rgb(168,157,130) 68.75%,rgb(166,156,128) 68.75%,rgb(166,156,128) 69.14%,rgb(164,154,125) 69.14%,rgb(164,154,125) 69.53%,rgb(163,152,123) 69.53%,rgb(163,152,123) 69.92%,rgb(161,150,121) 69.92%,rgb(161,150,121) 70.31%,rgb(160,149,118) 70.31%,rgb(160,149,118) 70.70%,rgb(158,147,116) 70.70%,rgb(158,147,116) 71.09%,rgb(156,145,114) 71.09%,rgb(156,145,114) 71.48%,rgb(155,143,112) 71.48%,rgb(155,143,112) 71.87%,rgb(153,142,109) 71.87%,rgb(153,142,109) 72.26%,rgb(152,140,107) 72.26%,rgb(152,140,107) 72.65%,rgb(150,138,105) 72.65%,rgb(150,138,105) 73.04%,rgb(149,137,103) 73.04%,rgb(149,137,103) 73.43%,rgb(147,135,100) 73.43%,rgb(147,135,100) 73.82%,rgb(145,133,98) 73.82%,rgb(145,133,98) 74.21%,rgb(144,132,96) 74.21%,rgb(144,132,96) 74.60%,rgb(142,130,94) 74.60%,rgb(142,130,94) 75%,rgb(141,128,91) 75%,rgb(141,128,91) 75.39%,rgb(139,127,89) 75.39%,rgb(139,127,89) 75.78%,rgb(138,125,87) 75.78%,rgb(138,125,87) 76.17%,rgb(136,123,85) 76.17%,rgb(136,123,85) 76.56%,rgb(135,122,83) 76.56%,rgb(135,122,83) 76.95%,rgb(133,120,80) 76.95%,rgb(133,120,80) 77.34%,rgb(131,118,78) 77.34%,rgb(131,118,78) 77.73%,rgb(130,117,76) 77.73%,rgb(130,117,76) 78.12%,rgb(128,115,74) 78.12%,rgb(128,115,74) 78.51%,rgb(127,114,72) 78.51%,rgb(127,114,72) 78.90%,rgb(125,112,70) 78.90%,rgb(125,112,70) 79.29%,rgb(124,110,67) 79.29%,rgb(124,110,67) 79.68%,rgb(122,109,65) 79.68%,rgb(122,109,65) 80.07%,rgb(121,107,63) 80.07%,rgb(121,107,63) 80.46%,rgb(119,106,61) 80.46%,rgb(119,106,61) 80.85%,rgb(118,104,59) 80.85%,rgb(118,104,59) 81.25%,rgb(116,102,57) 81.25%,rgb(116,102,57) 81.64%,rgb(114,101,55) 81.64%,rgb(114,101,55) 82.03%,rgb(113,99,53) 82.03%,rgb(113,99,53) 82.42%,rgb(111,98,51) 82.42%,rgb(111,98,51) 82.81%,rgb(110,96,48) 82.81%,rgb(110,96,48) 83.20%,rgb(108,95,46) 83.20%,rgb(108,95,46) 83.59%,rgb(106,93,44) 83.59%,rgb(106,93,44) 83.98%,rgb(104,92,43) 83.98%,rgb(104,92,43) 84.37%,rgb(103,90,41) 84.37%,rgb(103,90,41) 84.76%,rgb(101,89,39) 84.76%,rgb(101,89,39) 85.15%,rgb(99,88,38) 85.15%,rgb(99,88,38) 85.54%,rgb(97,86,37) 85.54%,rgb(97,86,37) 85.93%,rgb(95,85,36) 85.93%,rgb(95,85,36) 86.32%,rgb(93,84,35) 86.32%,rgb(93,84,35) 86.71%,rgb(91,82,34) 86.71%,rgb(91,82,34) 87.10%,rgb(89,81,33) 87.10%,rgb(89,81,33) 87.5%,rgb(87,79,32) 87.5%,rgb(87,79,32) 87.89%,rgb(85,78,32) 87.89%,rgb(85,78,32) 88.28%,rgb(83,77,31) 88.28%,rgb(83,77,31) 88.67%,rgb(81,75,30) 88.67%,rgb(81,75,30) 89.06%,rgb(79,74,29) 89.06%,rgb(79,74,29) 89.45%,rgb(77,72,29) 89.45%,rgb(77,72,29) 89.84%,rgb(75,71,28) 89.84%,rgb(75,71,28) 90.23%,rgb(73,69,27) 90.23%,rgb(73,69,27) 90.62%,rgb(71,68,26) 90.62%,rgb(71,68,26) 91.01%,rgb(69,67,26) 91.01%,rgb(69,67,26) 91.40%,rgb(67,65,25) 91.40%,rgb(67,65,25) 91.79%,rgb(66,64,24) 91.79%,rgb(66,64,24) 92.18%,rgb(64,62,23) 92.18%,rgb(64,62,23) 92.57%,rgb(62,61,22) 92.57%,rgb(62,61,22) 92.96%,rgb(60,59,22) 92.96%,rgb(60,59,22) 93.35%,rgb(58,58,21) 93.35%,rgb(58,58,21) 93.75%,rgb(56,57,20) 93.75%,rgb(56,57,20) 94.14%,rgb(54,55,19) 94.14%,rgb(54,55,19) 94.53%,rgb(52,54,18) 94.53%,rgb(52,54,18) 94.92%,rgb(51,52,18) 94.92%,rgb(51,52,18) 95.31%,rgb(49,51,17) 95.31%,rgb(49,51,17) 95.70%,rgb(47,49,16) 95.70%,rgb(47,49,16) 96.09%,rgb(45,48,15) 96.09%,rgb(45,48,15) 96.48%,rgb(43,46,14) 96.48%,rgb(43,46,14) 96.87%,rgb(41,45,13) 96.87%,rgb(41,45,13) 97.26%,rgb(39,43,12) 97.26%,rgb(39,43,12) 97.65%,rgb(38,42,11) 97.65%,rgb(38,42,11) 98.04%,rgb(36,40,10) 98.04%,rgb(36,40,10) 98.43%,rgb(34,39,9) 98.43%,rgb(34,39,9) 98.82%,rgb(32,37,9) 98.82%,rgb(32,37,9) 99.21%,rgb(30,36,8) 99.21%,rgb(30,36,8) 99.60%,rgb(28,34,7) 99.60%,rgb(28,34,7) 100%\",\n tex_buffer: new Uint8Array([8,35,64,9,37,66,10,38,68,11,40,69,12,42,71,12,44,73,13,45,75,14,47,77,15,49,79,16,50,81,17,52,83,17,54,85,18,55,86,19,57,88,20,59,90,20,61,92,21,62,94,22,64,95,23,66,97,24,67,99,25,69,100,26,71,102,27,72,103,29,74,104,31,76,105,33,77,106,36,79,107,38,80,108,40,82,109,43,83,110,45,85,111,47,86,112,49,88,113,52,89,115,54,91,116,56,92,117,58,94,118,60,95,119,62,97,120,65,98,121,67,100,122,69,101,123,71,103,125,73,104,126,75,106,127,77,107,128,79,109,129,81,110,130,83,112,132,85,113,133,88,115,134,90,116,135,92,118,136,94,120,138,96,121,139,98,123,140,100,124,141,102,126,142,104,127,144,106,129,145,108,130,146,110,132,148,112,134,149,114,135,150,116,137,151,118,138,153,120,140,154,123,141,155,125,143,157,127,145,158,129,146,159,131,148,161,133,150,162,135,151,163,137,153,165,139,154,166,141,156,167,143,158,169,146,159,170,148,161,172,150,163,173,152,165,175,154,166,176,156,168,177,158,170,179,160,171,180,163,173,182,165,175,183,167,177,185,169,178,186,171,180,188,174,182,189,176,184,191,178,186,192,180,187,194,182,189,196,185,191,197,187,193,199,189,195,200,191,197,202,194,198,204,196,200,205,198,202,207,200,204,209,203,206,210,205,208,212,207,210,214,210,212,215,212,214,217,214,216,219,217,218,221,219,220,222,221,222,224,224,224,226,226,226,227,228,227,229,230,229,231,232,231,232,235,233,234,236,234,235,238,236,236,240,237,238,241,238,239,243,239,239,244,240,240,245,241,240,245,241,240,246,241,240,246,241,240,245,241,239,245,240,238,244,239,237,243,238,235,242,237,233,241,235,232,239,234,229,238,232,227,236,230,225,234,229,223,232,227,220,231,225,218,229,223,215,227,221,212,225,219,210,223,217,207,221,215,205,219,213,202,217,211,199,215,209,197,213,207,194,211,205,192,210,203,189,208,201,187,206,199,184,204,197,181,202,195,179,200,193,176,199,191,174,197,189,171,195,187,169,193,185,166,191,183,164,190,181,161,188,179,159,186,177,157,185,176,154,183,174,152,181,172,149,179,170,147,178,168,144,176,166,142,174,165,140,173,163,137,171,161,135,169,159,133,168,157,130,166,156,128,164,154,125,163,152,123,161,150,121,160,149,118,158,147,116,156,145,114,155,143,112,153,142,109,152,140,107,150,138,105,149,137,103,147,135,100,145,133,98,144,132,96,142,130,94,141,128,91,139,127,89,138,125,87,136,123,85,135,122,83,133,120,80,131,118,78,130,117,76,128,115,74,127,114,72,125,112,70,124,110,67,122,109,65,121,107,63,119,106,61,118,104,59,116,102,57,114,101,55,113,99,53,111,98,51,110,96,48,108,95,46,106,93,44,104,92,43,103,90,41,101,89,39,99,88,38,97,86,37,95,85,36,93,84,35,91,82,34,89,81,33,87,79,32,85,78,32,83,77,31,81,75,30,79,74,29,77,72,29,75,71,28,73,69,27,71,68,26,69,67,26,67,65,25,66,64,24,64,62,23,62,61,22,60,59,22,58,58,21,56,57,20,54,55,19,52,54,18,51,52,18,49,51,17,47,49,16,45,48,15,43,46,14,41,45,13,39,43,12,38,42,11,36,40,10,34,39,9,32,37,9,30,36,8,28,34,7]),\n linear_interpolation: false\n},\n{\n name: \"flag\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,0,0) 0%,rgb(255,96,53) 0.781%,rgb(255,234,199) 1.562%,rgb(203,237,255) 2.343%,rgb(58,102,255) 3.125%,rgb(0,0,205) 3.906%,rgb(0,0,60) 4.687%,rgb(47,0,0) 5.468%,rgb(192,0,0) 6.25%,rgb(255,85,45) 7.031%,rgb(255,229,190) 7.812%,rgb(211,241,255) 8.593%,rgb(67,114,255) 9.375%,rgb(0,0,214) 10.15%,rgb(0,0,69) 10.93%,rgb(38,0,0) 11.71%,rgb(183,0,0) 12.5%,rgb(255,73,36) 13.28%,rgb(255,223,181) 14.06%,rgb(220,245,255) 14.84%,rgb(76,125,255) 15.62%,rgb(0,0,222) 16.40%,rgb(0,0,78) 17.18%,rgb(30,0,0) 17.96%,rgb(174,0,0) 18.75%,rgb(255,60,28) 19.53%,rgb(255,217,172) 20.31%,rgb(228,248,255) 21.09%,rgb(85,136,255) 21.87%,rgb(0,0,230) 22.65%,rgb(0,0,87) 23.43%,rgb(22,0,0) 24.21%,rgb(165,0,0) 25%,rgb(255,48,20) 25.78%,rgb(255,210,162) 26.56%,rgb(236,250,255) 27.34%,rgb(94,146,255) 28.12%,rgb(0,0,238) 28.90%,rgb(0,0,96) 29.68%,rgb(14,0,0) 30.46%,rgb(155,0,0) 31.25%,rgb(255,36,12) 32.03%,rgb(255,203,153) 32.81%,rgb(244,252,255) 33.59%,rgb(103,156,255) 34.37%,rgb(0,0,245) 35.15%,rgb(0,0,106) 35.93%,rgb(7,0,0) 36.71%,rgb(146,0,0) 37.5%,rgb(255,23,5) 38.28%,rgb(255,195,144) 39.06%,rgb(251,254,255) 39.84%,rgb(113,166,255) 40.62%,rgb(0,0,253) 41.40%,rgb(0,0,115) 42.18%,rgb(0,0,0) 42.96%,rgb(136,0,0) 43.75%,rgb(255,11,0) 44.53%,rgb(255,186,134) 45.31%,rgb(255,254,255) 46.09%,rgb(122,175,255) 46.87%,rgb(0,0,255) 47.65%,rgb(0,0,125) 48.43%,rgb(0,0,0) 49.21%,rgb(127,0,0) 50%,rgb(255,0,0) 50.78%,rgb(255,178,125) 51.56%,rgb(255,254,255) 52.34%,rgb(132,184,255) 53.12%,rgb(0,7,255) 53.90%,rgb(0,0,134) 54.68%,rgb(0,0,0) 55.46%,rgb(118,0,0) 56.25%,rgb(255,0,0) 57.03%,rgb(255,168,115) 57.81%,rgb(255,254,253) 58.59%,rgb(141,193,255) 59.37%,rgb(3,20,255) 60.15%,rgb(0,0,144) 60.93%,rgb(0,0,5) 61.71%,rgb(108,0,0) 62.5%,rgb(247,0,0) 63.28%,rgb(255,159,106) 64.06%,rgb(255,253,245) 64.84%,rgb(151,201,255) 65.62%,rgb(10,33,255) 66.40%,rgb(0,0,153) 67.18%,rgb(0,0,12) 67.96%,rgb(99,0,0) 68.75%,rgb(240,0,0) 69.53%,rgb(255,149,96) 70.31%,rgb(255,251,238) 71.09%,rgb(160,208,255) 71.87%,rgb(18,45,255) 72.65%,rgb(0,0,162) 73.43%,rgb(0,0,20) 74.21%,rgb(89,0,0) 75%,rgb(232,0,0) 75.78%,rgb(255,138,87) 76.56%,rgb(255,249,230) 77.34%,rgb(169,215,255) 78.12%,rgb(26,57,255) 78.90%,rgb(0,0,172) 79.68%,rgb(0,0,28) 80.46%,rgb(80,0,0) 81.25%,rgb(224,0,0) 82.03%,rgb(255,127,78) 82.81%,rgb(255,246,222) 83.59%,rgb(178,222,255) 84.37%,rgb(34,70,255) 85.15%,rgb(0,0,181) 85.93%,rgb(0,0,36) 86.71%,rgb(71,0,0) 87.5%,rgb(216,0,0) 88.28%,rgb(255,116,69) 89.06%,rgb(255,242,214) 89.84%,rgb(187,228,255) 90.62%,rgb(43,82,255) 91.40%,rgb(0,0,190) 92.18%,rgb(0,0,45) 92.96%,rgb(62,0,0) 93.75%,rgb(207,0,0) 94.53%,rgb(255,105,60) 95.31%,rgb(255,238,205) 96.09%,rgb(196,233,255) 96.87%,rgb(51,93,255) 97.65%,rgb(0,0,199) 98.43%,rgb(0,0,53) 99.21%,rgb(0,0,0) 100%\",\n tex_buffer: new Uint8Array([255,0,0,255,96,53,255,234,199,203,237,255,58,102,255,0,0,205,0,0,60,47,0,0,192,0,0,255,85,45,255,229,190,211,241,255,67,114,255,0,0,214,0,0,69,38,0,0,183,0,0,255,73,36,255,223,181,220,245,255,76,125,255,0,0,222,0,0,78,30,0,0,174,0,0,255,60,28,255,217,172,228,248,255,85,136,255,0,0,230,0,0,87,22,0,0,165,0,0,255,48,20,255,210,162,236,250,255,94,146,255,0,0,238,0,0,96,14,0,0,155,0,0,255,36,12,255,203,153,244,252,255,103,156,255,0,0,245,0,0,106,7,0,0,146,0,0,255,23,5,255,195,144,251,254,255,113,166,255,0,0,253,0,0,115,0,0,0,136,0,0,255,11,0,255,186,134,255,254,255,122,175,255,0,0,255,0,0,125,0,0,0,127,0,0,255,0,0,255,178,125,255,254,255,132,184,255,0,7,255,0,0,134,0,0,0,118,0,0,255,0,0,255,168,115,255,254,253,141,193,255,3,20,255,0,0,144,0,0,5,108,0,0,247,0,0,255,159,106,255,253,245,151,201,255,10,33,255,0,0,153,0,0,12,99,0,0,240,0,0,255,149,96,255,251,238,160,208,255,18,45,255,0,0,162,0,0,20,89,0,0,232,0,0,255,138,87,255,249,230,169,215,255,26,57,255,0,0,172,0,0,28,80,0,0,224,0,0,255,127,78,255,246,222,178,222,255,34,70,255,0,0,181,0,0,36,71,0,0,216,0,0,255,116,69,255,242,214,187,228,255,43,82,255,0,0,190,0,0,45,62,0,0,207,0,0,255,105,60,255,238,205,196,233,255,51,93,255,0,0,199,0,0,53,0,0,0]),\n linear_interpolation: true\n},\n{\n name: \"gist_earth\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(0,0,43) 0.781%,rgb(2,0,67) 1.562%,rgb(3,0,88) 2.343%,rgb(4,0,110) 3.125%,rgb(6,4,116) 3.906%,rgb(7,9,116) 4.687%,rgb(8,13,116) 5.468%,rgb(10,18,117) 6.25%,rgb(11,23,117) 7.031%,rgb(12,27,118) 7.812%,rgb(14,32,118) 8.593%,rgb(15,36,118) 9.375%,rgb(16,41,119) 10.15%,rgb(18,46,119) 10.93%,rgb(19,50,119) 11.71%,rgb(20,54,120) 12.5%,rgb(22,58,120) 13.28%,rgb(23,63,120) 14.06%,rgb(24,67,121) 14.84%,rgb(26,71,121) 15.62%,rgb(27,75,122) 16.40%,rgb(28,79,122) 17.18%,rgb(30,83,122) 17.96%,rgb(31,87,123) 18.75%,rgb(32,90,123) 19.53%,rgb(34,94,123) 20.31%,rgb(35,98,124) 21.09%,rgb(36,101,124) 21.87%,rgb(38,104,124) 22.65%,rgb(39,107,125) 23.43%,rgb(40,110,125) 24.21%,rgb(42,114,126) 25%,rgb(43,117,126) 25.78%,rgb(44,120,126) 26.56%,rgb(46,123,127) 27.34%,rgb(47,126,127) 28.12%,rgb(48,128,126) 28.90%,rgb(49,129,123) 29.68%,rgb(50,131,121) 30.46%,rgb(51,132,118) 31.25%,rgb(52,133,116) 32.03%,rgb(53,134,113) 32.81%,rgb(54,135,111) 33.59%,rgb(55,136,108) 34.37%,rgb(56,137,106) 35.15%,rgb(57,139,103) 35.93%,rgb(58,140,101) 36.71%,rgb(59,141,99) 37.5%,rgb(59,142,96) 38.28%,rgb(60,143,94) 39.06%,rgb(61,144,91) 39.84%,rgb(62,146,89) 40.62%,rgb(63,147,86) 41.40%,rgb(64,148,84) 42.18%,rgb(65,149,81) 42.96%,rgb(66,150,79) 43.75%,rgb(67,151,76) 44.53%,rgb(68,153,74) 45.31%,rgb(70,154,71) 46.09%,rgb(74,155,70) 46.87%,rgb(79,156,71) 47.65%,rgb(83,157,72) 48.43%,rgb(88,158,73) 49.21%,rgb(92,159,75) 50%,rgb(97,161,76) 50.78%,rgb(101,162,77) 51.56%,rgb(105,163,78) 52.34%,rgb(110,164,79) 53.12%,rgb(114,165,80) 53.90%,rgb(119,165,81) 54.68%,rgb(122,166,82) 55.46%,rgb(126,167,83) 56.25%,rgb(129,168,83) 57.03%,rgb(132,169,84) 57.81%,rgb(136,170,85) 58.59%,rgb(139,171,85) 59.37%,rgb(142,172,86) 60.15%,rgb(146,173,86) 60.93%,rgb(149,173,87) 61.71%,rgb(152,174,88) 62.5%,rgb(156,175,88) 63.28%,rgb(159,176,89) 64.06%,rgb(162,177,90) 64.84%,rgb(165,178,90) 65.62%,rgb(169,179,91) 66.40%,rgb(172,180,92) 67.18%,rgb(175,180,92) 67.96%,rgb(179,181,93) 68.75%,rgb(182,182,93) 69.53%,rgb(183,181,94) 70.31%,rgb(184,179,95) 71.09%,rgb(185,177,95) 71.87%,rgb(186,176,96) 72.65%,rgb(187,174,97) 73.43%,rgb(187,172,97) 74.21%,rgb(188,170,98) 75%,rgb(189,169,99) 75.78%,rgb(190,167,99) 76.56%,rgb(191,165,100) 77.34%,rgb(192,164,100) 78.12%,rgb(193,163,105) 78.90%,rgb(195,164,110) 79.68%,rgb(197,165,115) 80.46%,rgb(200,166,120) 81.25%,rgb(202,168,125) 82.03%,rgb(204,170,129) 82.81%,rgb(206,172,134) 83.59%,rgb(209,173,139) 84.37%,rgb(211,175,144) 85.15%,rgb(213,177,149) 85.93%,rgb(215,179,154) 86.71%,rgb(218,182,159) 87.5%,rgb(220,185,164) 88.28%,rgb(222,187,169) 89.06%,rgb(224,191,175) 89.84%,rgb(227,195,181) 90.62%,rgb(229,199,187) 91.40%,rgb(231,203,193) 92.18%,rgb(233,206,199) 92.96%,rgb(236,210,205) 93.75%,rgb(238,215,211) 94.53%,rgb(240,220,217) 95.31%,rgb(242,224,223) 96.09%,rgb(245,230,229) 96.87%,rgb(247,236,235) 97.65%,rgb(249,242,241) 98.43%,rgb(251,248,247) 99.21%,rgb(253,250,250) 100%\",\n tex_buffer: new Uint8Array([0,0,0,0,0,43,2,0,67,3,0,88,4,0,110,6,4,116,7,9,116,8,13,116,10,18,117,11,23,117,12,27,118,14,32,118,15,36,118,16,41,119,18,46,119,19,50,119,20,54,120,22,58,120,23,63,120,24,67,121,26,71,121,27,75,122,28,79,122,30,83,122,31,87,123,32,90,123,34,94,123,35,98,124,36,101,124,38,104,124,39,107,125,40,110,125,42,114,126,43,117,126,44,120,126,46,123,127,47,126,127,48,128,126,49,129,123,50,131,121,51,132,118,52,133,116,53,134,113,54,135,111,55,136,108,56,137,106,57,139,103,58,140,101,59,141,99,59,142,96,60,143,94,61,144,91,62,146,89,63,147,86,64,148,84,65,149,81,66,150,79,67,151,76,68,153,74,70,154,71,74,155,70,79,156,71,83,157,72,88,158,73,92,159,75,97,161,76,101,162,77,105,163,78,110,164,79,114,165,80,119,165,81,122,166,82,126,167,83,129,168,83,132,169,84,136,170,85,139,171,85,142,172,86,146,173,86,149,173,87,152,174,88,156,175,88,159,176,89,162,177,90,165,178,90,169,179,91,172,180,92,175,180,92,179,181,93,182,182,93,183,181,94,184,179,95,185,177,95,186,176,96,187,174,97,187,172,97,188,170,98,189,169,99,190,167,99,191,165,100,192,164,100,193,163,105,195,164,110,197,165,115,200,166,120,202,168,125,204,170,129,206,172,134,209,173,139,211,175,144,213,177,149,215,179,154,218,182,159,220,185,164,222,187,169,224,191,175,227,195,181,229,199,187,231,203,193,233,206,199,236,210,205,238,215,211,240,220,217,242,224,223,245,230,229,247,236,235,249,242,241,251,248,247,253,250,250]),\n linear_interpolation: true\n},\n{\n name: \"gist_gray\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(1,1,1) 0.781%,rgb(3,3,3) 1.562%,rgb(5,5,5) 2.343%,rgb(7,7,7) 3.125%,rgb(9,9,9) 3.906%,rgb(11,11,11) 4.687%,rgb(13,13,13) 5.468%,rgb(15,15,15) 6.25%,rgb(17,17,17) 7.031%,rgb(19,19,19) 7.812%,rgb(21,21,21) 8.593%,rgb(23,23,23) 9.375%,rgb(25,25,25) 10.15%,rgb(27,27,27) 10.93%,rgb(29,29,29) 11.71%,rgb(31,31,31) 12.5%,rgb(33,33,33) 13.28%,rgb(35,35,35) 14.06%,rgb(37,37,37) 14.84%,rgb(39,39,39) 15.62%,rgb(41,41,41) 16.40%,rgb(43,43,43) 17.18%,rgb(45,45,45) 17.96%,rgb(47,47,47) 18.75%,rgb(49,49,49) 19.53%,rgb(51,51,51) 20.31%,rgb(53,53,53) 21.09%,rgb(55,55,55) 21.87%,rgb(57,57,57) 22.65%,rgb(59,59,59) 23.43%,rgb(61,61,61) 24.21%,rgb(63,63,63) 25%,rgb(65,65,65) 25.78%,rgb(67,67,67) 26.56%,rgb(69,69,69) 27.34%,rgb(71,71,71) 28.12%,rgb(73,73,73) 28.90%,rgb(75,75,75) 29.68%,rgb(77,77,77) 30.46%,rgb(79,79,79) 31.25%,rgb(81,81,81) 32.03%,rgb(83,83,83) 32.81%,rgb(85,85,85) 33.59%,rgb(87,87,87) 34.37%,rgb(89,89,89) 35.15%,rgb(91,91,91) 35.93%,rgb(93,93,93) 36.71%,rgb(95,95,95) 37.5%,rgb(97,97,97) 38.28%,rgb(99,99,99) 39.06%,rgb(101,101,101) 39.84%,rgb(103,103,103) 40.62%,rgb(105,105,105) 41.40%,rgb(107,107,107) 42.18%,rgb(109,109,109) 42.96%,rgb(111,111,111) 43.75%,rgb(113,113,113) 44.53%,rgb(115,115,115) 45.31%,rgb(117,117,117) 46.09%,rgb(119,119,119) 46.87%,rgb(121,121,121) 47.65%,rgb(123,123,123) 48.43%,rgb(125,125,125) 49.21%,rgb(127,127,127) 50%,rgb(129,129,129) 50.78%,rgb(131,131,131) 51.56%,rgb(133,133,133) 52.34%,rgb(135,135,135) 53.12%,rgb(137,137,137) 53.90%,rgb(139,139,139) 54.68%,rgb(141,141,141) 55.46%,rgb(143,143,143) 56.25%,rgb(145,145,145) 57.03%,rgb(147,147,147) 57.81%,rgb(149,149,149) 58.59%,rgb(151,151,151) 59.37%,rgb(153,153,153) 60.15%,rgb(155,155,155) 60.93%,rgb(157,157,157) 61.71%,rgb(159,159,159) 62.5%,rgb(161,161,161) 63.28%,rgb(163,163,163) 64.06%,rgb(165,165,165) 64.84%,rgb(167,167,167) 65.62%,rgb(169,169,169) 66.40%,rgb(171,171,171) 67.18%,rgb(173,173,173) 67.96%,rgb(175,175,175) 68.75%,rgb(177,177,177) 69.53%,rgb(179,179,179) 70.31%,rgb(181,181,181) 71.09%,rgb(183,183,183) 71.87%,rgb(185,185,185) 72.65%,rgb(187,187,187) 73.43%,rgb(189,189,189) 74.21%,rgb(191,191,191) 75%,rgb(193,193,193) 75.78%,rgb(195,195,195) 76.56%,rgb(197,197,197) 77.34%,rgb(199,199,199) 78.12%,rgb(201,201,201) 78.90%,rgb(203,203,203) 79.68%,rgb(205,205,205) 80.46%,rgb(207,207,207) 81.25%,rgb(209,209,209) 82.03%,rgb(211,211,211) 82.81%,rgb(213,213,213) 83.59%,rgb(215,215,215) 84.37%,rgb(217,217,217) 85.15%,rgb(219,219,219) 85.93%,rgb(221,221,221) 86.71%,rgb(223,223,223) 87.5%,rgb(225,225,225) 88.28%,rgb(227,227,227) 89.06%,rgb(229,229,229) 89.84%,rgb(231,231,231) 90.62%,rgb(233,233,233) 91.40%,rgb(235,235,235) 92.18%,rgb(237,237,237) 92.96%,rgb(239,239,239) 93.75%,rgb(241,241,241) 94.53%,rgb(243,243,243) 95.31%,rgb(245,245,245) 96.09%,rgb(247,247,247) 96.87%,rgb(249,249,249) 97.65%,rgb(251,251,251) 98.43%,rgb(253,253,253) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([0,0,0,1,1,1,3,3,3,5,5,5,7,7,7,9,9,9,11,11,11,13,13,13,15,15,15,17,17,17,19,19,19,21,21,21,23,23,23,25,25,25,27,27,27,29,29,29,31,31,31,33,33,33,35,35,35,37,37,37,39,39,39,41,41,41,43,43,43,45,45,45,47,47,47,49,49,49,51,51,51,53,53,53,55,55,55,57,57,57,59,59,59,61,61,61,63,63,63,65,65,65,67,67,67,69,69,69,71,71,71,73,73,73,75,75,75,77,77,77,79,79,79,81,81,81,83,83,83,85,85,85,87,87,87,89,89,89,91,91,91,93,93,93,95,95,95,97,97,97,99,99,99,101,101,101,103,103,103,105,105,105,107,107,107,109,109,109,111,111,111,113,113,113,115,115,115,117,117,117,119,119,119,121,121,121,123,123,123,125,125,125,127,127,127,129,129,129,131,131,131,133,133,133,135,135,135,137,137,137,139,139,139,141,141,141,143,143,143,145,145,145,147,147,147,149,149,149,151,151,151,153,153,153,155,155,155,157,157,157,159,159,159,161,161,161,163,163,163,165,165,165,167,167,167,169,169,169,171,171,171,173,173,173,175,175,175,177,177,177,179,179,179,181,181,181,183,183,183,185,185,185,187,187,187,189,189,189,191,191,191,193,193,193,195,195,195,197,197,197,199,199,199,201,201,201,203,203,203,205,205,205,207,207,207,209,209,209,211,211,211,213,213,213,215,215,215,217,217,217,219,219,219,221,221,221,223,223,223,225,225,225,227,227,227,229,229,229,231,231,231,233,233,233,235,235,235,237,237,237,239,239,239,241,241,241,243,243,243,245,245,245,247,247,247,249,249,249,251,251,251,253,253,253,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"gist_heat\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(1,0,0) 0.781%,rgb(4,0,0) 1.562%,rgb(7,0,0) 2.343%,rgb(10,0,0) 3.125%,rgb(13,0,0) 3.906%,rgb(16,0,0) 4.687%,rgb(19,0,0) 5.468%,rgb(22,0,0) 6.25%,rgb(25,0,0) 7.031%,rgb(28,0,0) 7.812%,rgb(31,0,0) 8.593%,rgb(34,0,0) 9.375%,rgb(37,0,0) 10.15%,rgb(40,0,0) 10.93%,rgb(43,0,0) 11.71%,rgb(46,0,0) 12.5%,rgb(49,0,0) 13.28%,rgb(52,0,0) 14.06%,rgb(55,0,0) 14.84%,rgb(58,0,0) 15.62%,rgb(61,0,0) 16.40%,rgb(64,0,0) 17.18%,rgb(67,0,0) 17.96%,rgb(70,0,0) 18.75%,rgb(73,0,0) 19.53%,rgb(76,0,0) 20.31%,rgb(79,0,0) 21.09%,rgb(82,0,0) 21.87%,rgb(85,0,0) 22.65%,rgb(88,0,0) 23.43%,rgb(91,0,0) 24.21%,rgb(94,0,0) 25%,rgb(97,0,0) 25.78%,rgb(100,0,0) 26.56%,rgb(103,0,0) 27.34%,rgb(106,0,0) 28.12%,rgb(109,0,0) 28.90%,rgb(112,0,0) 29.68%,rgb(115,0,0) 30.46%,rgb(118,0,0) 31.25%,rgb(121,0,0) 32.03%,rgb(124,0,0) 32.81%,rgb(128,0,0) 33.59%,rgb(131,0,0) 34.37%,rgb(134,0,0) 35.15%,rgb(137,0,0) 35.93%,rgb(140,0,0) 36.71%,rgb(143,0,0) 37.5%,rgb(146,0,0) 38.28%,rgb(149,0,0) 39.06%,rgb(152,0,0) 39.84%,rgb(155,0,0) 40.62%,rgb(158,0,0) 41.40%,rgb(161,0,0) 42.18%,rgb(164,0,0) 42.96%,rgb(167,0,0) 43.75%,rgb(170,0,0) 44.53%,rgb(173,0,0) 45.31%,rgb(176,0,0) 46.09%,rgb(179,0,0) 46.87%,rgb(182,0,0) 47.65%,rgb(185,0,0) 48.43%,rgb(188,0,0) 49.21%,rgb(191,0,0) 50%,rgb(194,4,0) 50.78%,rgb(197,8,0) 51.56%,rgb(200,12,0) 52.34%,rgb(203,16,0) 53.12%,rgb(206,20,0) 53.90%,rgb(209,24,0) 54.68%,rgb(212,28,0) 55.46%,rgb(215,32,0) 56.25%,rgb(218,36,0) 57.03%,rgb(221,40,0) 57.81%,rgb(224,44,0) 58.59%,rgb(227,48,0) 59.37%,rgb(230,52,0) 60.15%,rgb(233,56,0) 60.93%,rgb(236,60,0) 61.71%,rgb(239,64,0) 62.5%,rgb(242,68,0) 63.28%,rgb(245,72,0) 64.06%,rgb(248,76,0) 64.84%,rgb(251,80,0) 65.62%,rgb(254,84,0) 66.40%,rgb(255,88,0) 67.18%,rgb(255,92,0) 67.96%,rgb(255,96,0) 68.75%,rgb(255,100,0) 69.53%,rgb(255,104,0) 70.31%,rgb(255,108,0) 71.09%,rgb(255,112,0) 71.87%,rgb(255,116,0) 72.65%,rgb(255,120,0) 73.43%,rgb(255,124,0) 74.21%,rgb(255,128,2) 75%,rgb(255,132,10) 75.78%,rgb(255,136,18) 76.56%,rgb(255,140,26) 77.34%,rgb(255,144,34) 78.12%,rgb(255,148,42) 78.90%,rgb(255,152,50) 79.68%,rgb(255,156,58) 80.46%,rgb(255,160,66) 81.25%,rgb(255,164,74) 82.03%,rgb(255,168,82) 82.81%,rgb(255,172,90) 83.59%,rgb(255,176,98) 84.37%,rgb(255,180,106) 85.15%,rgb(255,184,114) 85.93%,rgb(255,188,122) 86.71%,rgb(255,192,130) 87.5%,rgb(255,196,138) 88.28%,rgb(255,200,146) 89.06%,rgb(255,204,154) 89.84%,rgb(255,208,162) 90.62%,rgb(255,212,170) 91.40%,rgb(255,216,178) 92.18%,rgb(255,220,186) 92.96%,rgb(255,224,194) 93.75%,rgb(255,228,202) 94.53%,rgb(255,232,210) 95.31%,rgb(255,236,218) 96.09%,rgb(255,240,226) 96.87%,rgb(255,244,234) 97.65%,rgb(255,248,242) 98.43%,rgb(255,252,250) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([0,0,0,1,0,0,4,0,0,7,0,0,10,0,0,13,0,0,16,0,0,19,0,0,22,0,0,25,0,0,28,0,0,31,0,0,34,0,0,37,0,0,40,0,0,43,0,0,46,0,0,49,0,0,52,0,0,55,0,0,58,0,0,61,0,0,64,0,0,67,0,0,70,0,0,73,0,0,76,0,0,79,0,0,82,0,0,85,0,0,88,0,0,91,0,0,94,0,0,97,0,0,100,0,0,103,0,0,106,0,0,109,0,0,112,0,0,115,0,0,118,0,0,121,0,0,124,0,0,128,0,0,131,0,0,134,0,0,137,0,0,140,0,0,143,0,0,146,0,0,149,0,0,152,0,0,155,0,0,158,0,0,161,0,0,164,0,0,167,0,0,170,0,0,173,0,0,176,0,0,179,0,0,182,0,0,185,0,0,188,0,0,191,0,0,194,4,0,197,8,0,200,12,0,203,16,0,206,20,0,209,24,0,212,28,0,215,32,0,218,36,0,221,40,0,224,44,0,227,48,0,230,52,0,233,56,0,236,60,0,239,64,0,242,68,0,245,72,0,248,76,0,251,80,0,254,84,0,255,88,0,255,92,0,255,96,0,255,100,0,255,104,0,255,108,0,255,112,0,255,116,0,255,120,0,255,124,0,255,128,2,255,132,10,255,136,18,255,140,26,255,144,34,255,148,42,255,152,50,255,156,58,255,160,66,255,164,74,255,168,82,255,172,90,255,176,98,255,180,106,255,184,114,255,188,122,255,192,130,255,196,138,255,200,146,255,204,154,255,208,162,255,212,170,255,216,178,255,220,186,255,224,194,255,228,202,255,232,210,255,236,218,255,240,226,255,244,234,255,248,242,255,252,250,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"gist_ncar\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,128) 0%,rgb(0,7,118) 0.781%,rgb(0,21,99) 1.562%,rgb(0,36,80) 2.343%,rgb(0,51,61) 3.125%,rgb(0,65,43) 3.906%,rgb(0,80,24) 4.687%,rgb(0,94,6) 5.468%,rgb(0,80,39) 6.25%,rgb(0,67,73) 7.031%,rgb(0,53,106) 7.812%,rgb(0,40,139) 8.593%,rgb(0,26,173) 9.375%,rgb(0,12,206) 10.15%,rgb(0,1,240) 10.93%,rgb(0,29,255) 11.71%,rgb(0,58,255) 12.5%,rgb(0,86,255) 13.28%,rgb(0,114,255) 14.06%,rgb(0,143,255) 14.84%,rgb(0,171,255) 15.62%,rgb(0,193,255) 16.40%,rgb(0,202,255) 17.18%,rgb(0,211,255) 17.96%,rgb(0,220,255) 18.75%,rgb(0,229,255) 19.53%,rgb(0,238,255) 20.31%,rgb(0,247,247) 21.09%,rgb(0,254,233) 21.87%,rgb(0,253,220) 22.65%,rgb(0,253,207) 23.43%,rgb(0,252,194) 24.21%,rgb(0,251,181) 25%,rgb(0,250,168) 25.78%,rgb(0,250,153) 26.56%,rgb(0,250,132) 27.34%,rgb(0,250,111) 28.12%,rgb(0,251,90) 28.90%,rgb(0,252,70) 29.68%,rgb(0,253,49) 30.46%,rgb(1,254,28) 31.25%,rgb(14,253,7) 32.03%,rgb(27,246,0) 32.81%,rgb(40,238,0) 33.59%,rgb(53,231,0) 34.37%,rgb(65,223,0) 35.15%,rgb(78,215,0) 35.93%,rgb(91,208,0) 36.71%,rgb(102,210,0) 37.5%,rgb(106,217,0) 38.28%,rgb(110,223,0) 39.06%,rgb(114,230,0) 39.84%,rgb(118,236,0) 40.62%,rgb(122,243,0) 41.40%,rgb(126,249,5) 42.18%,rgb(134,255,13) 42.96%,rgb(143,255,21) 43.75%,rgb(152,255,29) 44.53%,rgb(161,255,37) 45.31%,rgb(170,255,45) 46.09%,rgb(179,255,53) 46.87%,rgb(188,255,57) 47.65%,rgb(198,255,49) 48.43%,rgb(207,255,41) 49.21%,rgb(216,255,33) 50%,rgb(225,255,25) 50.78%,rgb(234,255,17) 51.56%,rgb(243,253,9) 52.34%,rgb(252,248,1) 53.12%,rgb(255,243,0) 53.90%,rgb(255,238,0) 54.68%,rgb(255,233,0) 55.46%,rgb(255,228,0) 56.25%,rgb(255,224,0) 57.03%,rgb(255,219,0) 57.81%,rgb(255,214,1) 58.59%,rgb(255,209,3) 59.37%,rgb(255,204,6) 60.15%,rgb(255,199,8) 60.93%,rgb(255,194,10) 61.71%,rgb(255,189,12) 62.5%,rgb(255,180,13) 63.28%,rgb(255,164,11) 64.06%,rgb(255,147,9) 64.84%,rgb(255,131,7) 65.62%,rgb(255,115,5) 66.40%,rgb(255,98,4) 67.18%,rgb(255,82,2) 67.96%,rgb(255,68,0) 68.75%,rgb(255,58,0) 69.53%,rgb(255,48,0) 70.31%,rgb(255,39,0) 71.09%,rgb(255,29,0) 71.87%,rgb(255,20,0) 72.65%,rgb(255,10,0) 73.43%,rgb(255,1,30) 74.21%,rgb(255,0,66) 75%,rgb(255,0,101) 75.78%,rgb(255,0,137) 76.56%,rgb(255,0,173) 77.34%,rgb(255,0,208) 78.12%,rgb(255,0,244) 78.90%,rgb(242,6,254) 79.68%,rgb(228,13,255) 80.46%,rgb(215,19,255) 81.25%,rgb(201,26,255) 82.03%,rgb(187,33,255) 82.81%,rgb(173,40,255) 83.59%,rgb(159,49,253) 84.37%,rgb(169,61,251) 85.15%,rgb(181,73,249) 85.93%,rgb(193,85,246) 86.71%,rgb(205,97,244) 87.5%,rgb(217,109,241) 88.28%,rgb(228,121,239) 89.06%,rgb(236,131,238) 89.84%,rgb(237,141,239) 90.62%,rgb(238,150,241) 91.40%,rgb(240,159,242) 92.18%,rgb(241,168,243) 92.96%,rgb(243,178,244) 93.75%,rgb(244,187,246) 94.53%,rgb(246,196,247) 95.31%,rgb(247,206,248) 96.09%,rgb(249,215,249) 96.87%,rgb(250,224,250) 97.65%,rgb(251,234,252) 98.43%,rgb(253,243,253) 99.21%,rgb(254,247,254) 100%\",\n tex_buffer: new Uint8Array([0,0,128,0,7,118,0,21,99,0,36,80,0,51,61,0,65,43,0,80,24,0,94,6,0,80,39,0,67,73,0,53,106,0,40,139,0,26,173,0,12,206,0,1,240,0,29,255,0,58,255,0,86,255,0,114,255,0,143,255,0,171,255,0,193,255,0,202,255,0,211,255,0,220,255,0,229,255,0,238,255,0,247,247,0,254,233,0,253,220,0,253,207,0,252,194,0,251,181,0,250,168,0,250,153,0,250,132,0,250,111,0,251,90,0,252,70,0,253,49,1,254,28,14,253,7,27,246,0,40,238,0,53,231,0,65,223,0,78,215,0,91,208,0,102,210,0,106,217,0,110,223,0,114,230,0,118,236,0,122,243,0,126,249,5,134,255,13,143,255,21,152,255,29,161,255,37,170,255,45,179,255,53,188,255,57,198,255,49,207,255,41,216,255,33,225,255,25,234,255,17,243,253,9,252,248,1,255,243,0,255,238,0,255,233,0,255,228,0,255,224,0,255,219,0,255,214,1,255,209,3,255,204,6,255,199,8,255,194,10,255,189,12,255,180,13,255,164,11,255,147,9,255,131,7,255,115,5,255,98,4,255,82,2,255,68,0,255,58,0,255,48,0,255,39,0,255,29,0,255,20,0,255,10,0,255,1,30,255,0,66,255,0,101,255,0,137,255,0,173,255,0,208,255,0,244,242,6,254,228,13,255,215,19,255,201,26,255,187,33,255,173,40,255,159,49,253,169,61,251,181,73,249,193,85,246,205,97,244,217,109,241,228,121,239,236,131,238,237,141,239,238,150,241,240,159,242,241,168,243,243,178,244,244,187,246,246,196,247,247,206,248,249,215,249,250,224,250,251,234,252,253,243,253,254,247,254]),\n linear_interpolation: true\n},\n{\n name: \"gist_rainbow\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,0,40) 0%,rgb(255,0,35) 0.781%,rgb(255,0,24) 1.562%,rgb(255,0,14) 2.343%,rgb(255,0,3) 3.125%,rgb(255,7,0) 3.906%,rgb(255,18,0) 4.687%,rgb(255,29,0) 5.468%,rgb(255,40,0) 6.25%,rgb(255,50,0) 7.031%,rgb(255,61,0) 7.812%,rgb(255,72,0) 8.593%,rgb(255,83,0) 9.375%,rgb(255,94,0) 10.15%,rgb(255,105,0) 10.93%,rgb(255,116,0) 11.71%,rgb(255,126,0) 12.5%,rgb(255,137,0) 13.28%,rgb(255,148,0) 14.06%,rgb(255,159,0) 14.84%,rgb(255,170,0) 15.62%,rgb(255,181,0) 16.40%,rgb(255,191,0) 17.18%,rgb(255,202,0) 17.96%,rgb(255,213,0) 18.75%,rgb(255,224,0) 19.53%,rgb(255,235,0) 20.31%,rgb(255,246,0) 21.09%,rgb(252,255,0) 21.87%,rgb(242,255,0) 22.65%,rgb(231,255,0) 23.43%,rgb(220,255,0) 24.21%,rgb(209,255,0) 25%,rgb(198,255,0) 25.78%,rgb(187,255,0) 26.56%,rgb(176,255,0) 27.34%,rgb(166,255,0) 28.12%,rgb(155,255,0) 28.90%,rgb(144,255,0) 29.68%,rgb(133,255,0) 30.46%,rgb(122,255,0) 31.25%,rgb(111,255,0) 32.03%,rgb(100,255,0) 32.81%,rgb(90,255,0) 33.59%,rgb(79,255,0) 34.37%,rgb(68,255,0) 35.15%,rgb(57,255,0) 35.93%,rgb(46,255,0) 36.71%,rgb(35,255,0) 37.5%,rgb(24,255,0) 38.28%,rgb(14,255,0) 39.06%,rgb(3,255,0) 39.84%,rgb(0,255,7) 40.62%,rgb(0,255,18) 41.40%,rgb(0,255,29) 42.18%,rgb(0,255,39) 42.96%,rgb(0,255,50) 43.75%,rgb(0,255,61) 44.53%,rgb(0,255,72) 45.31%,rgb(0,255,83) 46.09%,rgb(0,255,93) 46.87%,rgb(0,255,104) 47.65%,rgb(0,255,115) 48.43%,rgb(0,255,126) 49.21%,rgb(0,255,137) 50%,rgb(0,255,147) 50.78%,rgb(0,255,158) 51.56%,rgb(0,255,169) 52.34%,rgb(0,255,180) 53.12%,rgb(0,255,191) 53.90%,rgb(0,255,201) 54.68%,rgb(0,255,212) 55.46%,rgb(0,255,223) 56.25%,rgb(0,255,234) 57.03%,rgb(0,255,245) 57.81%,rgb(0,254,255) 58.59%,rgb(0,243,255) 59.37%,rgb(0,232,255) 60.15%,rgb(0,221,255) 60.93%,rgb(0,210,255) 61.71%,rgb(0,199,255) 62.5%,rgb(0,188,255) 63.28%,rgb(0,177,255) 64.06%,rgb(0,166,255) 64.84%,rgb(0,155,255) 65.62%,rgb(0,145,255) 66.40%,rgb(0,134,255) 67.18%,rgb(0,123,255) 67.96%,rgb(0,112,255) 68.75%,rgb(0,101,255) 69.53%,rgb(0,90,255) 70.31%,rgb(0,79,255) 71.09%,rgb(0,68,255) 71.87%,rgb(0,57,255) 72.65%,rgb(0,46,255) 73.43%,rgb(0,35,255) 74.21%,rgb(0,24,255) 75%,rgb(0,14,255) 75.78%,rgb(0,3,255) 76.56%,rgb(7,0,255) 77.34%,rgb(18,0,255) 78.12%,rgb(29,0,255) 78.90%,rgb(40,0,255) 79.68%,rgb(51,0,255) 80.46%,rgb(62,0,255) 81.25%,rgb(73,0,255) 82.03%,rgb(84,0,255) 82.81%,rgb(95,0,255) 83.59%,rgb(105,0,255) 84.37%,rgb(116,0,255) 85.15%,rgb(127,0,255) 85.93%,rgb(138,0,255) 86.71%,rgb(149,0,255) 87.5%,rgb(160,0,255) 88.28%,rgb(171,0,255) 89.06%,rgb(182,0,255) 89.84%,rgb(193,0,255) 90.62%,rgb(204,0,255) 91.40%,rgb(215,0,255) 92.18%,rgb(225,0,255) 92.96%,rgb(236,0,255) 93.75%,rgb(247,0,255) 94.53%,rgb(255,0,251) 95.31%,rgb(255,0,240) 96.09%,rgb(255,0,229) 96.87%,rgb(255,0,218) 97.65%,rgb(255,0,207) 98.43%,rgb(255,0,196) 99.21%,rgb(255,0,191) 100%\",\n tex_buffer: new Uint8Array([255,0,40,255,0,35,255,0,24,255,0,14,255,0,3,255,7,0,255,18,0,255,29,0,255,40,0,255,50,0,255,61,0,255,72,0,255,83,0,255,94,0,255,105,0,255,116,0,255,126,0,255,137,0,255,148,0,255,159,0,255,170,0,255,181,0,255,191,0,255,202,0,255,213,0,255,224,0,255,235,0,255,246,0,252,255,0,242,255,0,231,255,0,220,255,0,209,255,0,198,255,0,187,255,0,176,255,0,166,255,0,155,255,0,144,255,0,133,255,0,122,255,0,111,255,0,100,255,0,90,255,0,79,255,0,68,255,0,57,255,0,46,255,0,35,255,0,24,255,0,14,255,0,3,255,0,0,255,7,0,255,18,0,255,29,0,255,39,0,255,50,0,255,61,0,255,72,0,255,83,0,255,93,0,255,104,0,255,115,0,255,126,0,255,137,0,255,147,0,255,158,0,255,169,0,255,180,0,255,191,0,255,201,0,255,212,0,255,223,0,255,234,0,255,245,0,254,255,0,243,255,0,232,255,0,221,255,0,210,255,0,199,255,0,188,255,0,177,255,0,166,255,0,155,255,0,145,255,0,134,255,0,123,255,0,112,255,0,101,255,0,90,255,0,79,255,0,68,255,0,57,255,0,46,255,0,35,255,0,24,255,0,14,255,0,3,255,7,0,255,18,0,255,29,0,255,40,0,255,51,0,255,62,0,255,73,0,255,84,0,255,95,0,255,105,0,255,116,0,255,127,0,255,138,0,255,149,0,255,160,0,255,171,0,255,182,0,255,193,0,255,204,0,255,215,0,255,225,0,255,236,0,255,247,0,255,255,0,251,255,0,240,255,0,229,255,0,218,255,0,207,255,0,196,255,0,191]),\n linear_interpolation: true\n},\n{\n name: \"gist_stern\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(18,1,2) 0.781%,rgb(55,3,6) 1.562%,rgb(91,5,10) 2.343%,rgb(128,7,14) 3.125%,rgb(165,9,18) 3.906%,rgb(201,11,22) 4.687%,rgb(238,13,26) 5.468%,rgb(249,15,30) 6.25%,rgb(239,17,34) 7.031%,rgb(229,19,38) 7.812%,rgb(219,21,42) 8.593%,rgb(209,23,46) 9.375%,rgb(199,25,50) 10.15%,rgb(189,27,54) 10.93%,rgb(179,29,58) 11.71%,rgb(169,31,62) 12.5%,rgb(159,33,66) 13.28%,rgb(149,35,70) 14.06%,rgb(139,37,74) 14.84%,rgb(129,39,78) 15.62%,rgb(119,41,82) 16.40%,rgb(109,43,86) 17.18%,rgb(99,45,90) 17.96%,rgb(89,47,94) 18.75%,rgb(79,49,98) 19.53%,rgb(69,51,102) 20.31%,rgb(59,53,106) 21.09%,rgb(49,55,110) 21.87%,rgb(39,57,114) 22.65%,rgb(29,59,118) 23.43%,rgb(19,61,122) 24.21%,rgb(9,63,126) 25%,rgb(65,65,130) 25.78%,rgb(67,67,134) 26.56%,rgb(69,69,138) 27.34%,rgb(71,71,142) 28.12%,rgb(73,73,146) 28.90%,rgb(75,75,150) 29.68%,rgb(77,77,154) 30.46%,rgb(79,79,158) 31.25%,rgb(81,81,162) 32.03%,rgb(83,83,166) 32.81%,rgb(85,85,170) 33.59%,rgb(87,87,174) 34.37%,rgb(89,89,178) 35.15%,rgb(91,91,182) 35.93%,rgb(93,93,186) 36.71%,rgb(95,95,190) 37.5%,rgb(97,97,194) 38.28%,rgb(99,99,198) 39.06%,rgb(101,101,202) 39.84%,rgb(103,103,206) 40.62%,rgb(105,105,210) 41.40%,rgb(107,107,214) 42.18%,rgb(109,109,218) 42.96%,rgb(111,111,222) 43.75%,rgb(113,113,226) 44.53%,rgb(115,115,230) 45.31%,rgb(117,117,234) 46.09%,rgb(119,119,238) 46.87%,rgb(121,121,242) 47.65%,rgb(123,123,246) 48.43%,rgb(125,125,250) 49.21%,rgb(127,127,255) 50%,rgb(129,129,246) 50.78%,rgb(131,131,237) 51.56%,rgb(133,133,229) 52.34%,rgb(135,135,220) 53.12%,rgb(137,137,212) 53.90%,rgb(139,139,203) 54.68%,rgb(141,141,195) 55.46%,rgb(143,143,186) 56.25%,rgb(145,145,178) 57.03%,rgb(147,147,169) 57.81%,rgb(149,149,161) 58.59%,rgb(151,151,152) 59.37%,rgb(153,153,143) 60.15%,rgb(155,155,135) 60.93%,rgb(157,157,126) 61.71%,rgb(159,159,118) 62.5%,rgb(161,161,109) 63.28%,rgb(163,163,101) 64.06%,rgb(165,165,92) 64.84%,rgb(167,167,84) 65.62%,rgb(169,169,75) 66.40%,rgb(171,171,67) 67.18%,rgb(173,173,58) 67.96%,rgb(175,175,49) 68.75%,rgb(177,177,41) 69.53%,rgb(179,179,32) 70.31%,rgb(181,181,24) 71.09%,rgb(183,183,15) 71.87%,rgb(185,185,7) 72.65%,rgb(187,187,1) 73.43%,rgb(189,189,8) 74.21%,rgb(191,191,16) 75%,rgb(193,193,23) 75.78%,rgb(195,195,31) 76.56%,rgb(197,197,39) 77.34%,rgb(199,199,46) 78.12%,rgb(201,201,54) 78.90%,rgb(203,203,61) 79.68%,rgb(205,205,69) 80.46%,rgb(207,207,76) 81.25%,rgb(209,209,84) 82.03%,rgb(211,211,92) 82.81%,rgb(213,213,99) 83.59%,rgb(215,215,107) 84.37%,rgb(217,217,114) 85.15%,rgb(219,219,122) 85.93%,rgb(221,221,129) 86.71%,rgb(223,223,137) 87.5%,rgb(225,225,145) 88.28%,rgb(227,227,152) 89.06%,rgb(229,229,160) 89.84%,rgb(231,231,167) 90.62%,rgb(233,233,175) 91.40%,rgb(235,235,183) 92.18%,rgb(237,237,190) 92.96%,rgb(239,239,198) 93.75%,rgb(241,241,205) 94.53%,rgb(243,243,213) 95.31%,rgb(245,245,220) 96.09%,rgb(247,247,228) 96.87%,rgb(249,249,236) 97.65%,rgb(251,251,243) 98.43%,rgb(253,253,251) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([0,0,0,18,1,2,55,3,6,91,5,10,128,7,14,165,9,18,201,11,22,238,13,26,249,15,30,239,17,34,229,19,38,219,21,42,209,23,46,199,25,50,189,27,54,179,29,58,169,31,62,159,33,66,149,35,70,139,37,74,129,39,78,119,41,82,109,43,86,99,45,90,89,47,94,79,49,98,69,51,102,59,53,106,49,55,110,39,57,114,29,59,118,19,61,122,9,63,126,65,65,130,67,67,134,69,69,138,71,71,142,73,73,146,75,75,150,77,77,154,79,79,158,81,81,162,83,83,166,85,85,170,87,87,174,89,89,178,91,91,182,93,93,186,95,95,190,97,97,194,99,99,198,101,101,202,103,103,206,105,105,210,107,107,214,109,109,218,111,111,222,113,113,226,115,115,230,117,117,234,119,119,238,121,121,242,123,123,246,125,125,250,127,127,255,129,129,246,131,131,237,133,133,229,135,135,220,137,137,212,139,139,203,141,141,195,143,143,186,145,145,178,147,147,169,149,149,161,151,151,152,153,153,143,155,155,135,157,157,126,159,159,118,161,161,109,163,163,101,165,165,92,167,167,84,169,169,75,171,171,67,173,173,58,175,175,49,177,177,41,179,179,32,181,181,24,183,183,15,185,185,7,187,187,1,189,189,8,191,191,16,193,193,23,195,195,31,197,197,39,199,199,46,201,201,54,203,203,61,205,205,69,207,207,76,209,209,84,211,211,92,213,213,99,215,215,107,217,217,114,219,219,122,221,221,129,223,223,137,225,225,145,227,227,152,229,229,160,231,231,167,233,233,175,235,235,183,237,237,190,239,239,198,241,241,205,243,243,213,245,245,220,247,247,228,249,249,236,251,251,243,253,253,251,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"gist_yarg\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,255,255) 0%,rgb(253,253,253) 0.781%,rgb(251,251,251) 1.562%,rgb(249,249,249) 2.343%,rgb(247,247,247) 3.125%,rgb(245,245,245) 3.906%,rgb(243,243,243) 4.687%,rgb(241,241,241) 5.468%,rgb(239,239,239) 6.25%,rgb(237,237,237) 7.031%,rgb(235,235,235) 7.812%,rgb(233,233,233) 8.593%,rgb(231,231,231) 9.375%,rgb(229,229,229) 10.15%,rgb(227,227,227) 10.93%,rgb(225,225,225) 11.71%,rgb(223,223,223) 12.5%,rgb(221,221,221) 13.28%,rgb(219,219,219) 14.06%,rgb(217,217,217) 14.84%,rgb(215,215,215) 15.62%,rgb(213,213,213) 16.40%,rgb(211,211,211) 17.18%,rgb(209,209,209) 17.96%,rgb(207,207,207) 18.75%,rgb(205,205,205) 19.53%,rgb(203,203,203) 20.31%,rgb(201,201,201) 21.09%,rgb(199,199,199) 21.87%,rgb(197,197,197) 22.65%,rgb(195,195,195) 23.43%,rgb(193,193,193) 24.21%,rgb(191,191,191) 25%,rgb(189,189,189) 25.78%,rgb(187,187,187) 26.56%,rgb(185,185,185) 27.34%,rgb(183,183,183) 28.12%,rgb(181,181,181) 28.90%,rgb(179,179,179) 29.68%,rgb(177,177,177) 30.46%,rgb(175,175,175) 31.25%,rgb(173,173,173) 32.03%,rgb(171,171,171) 32.81%,rgb(169,169,169) 33.59%,rgb(167,167,167) 34.37%,rgb(165,165,165) 35.15%,rgb(163,163,163) 35.93%,rgb(161,161,161) 36.71%,rgb(159,159,159) 37.5%,rgb(157,157,157) 38.28%,rgb(155,155,155) 39.06%,rgb(153,153,153) 39.84%,rgb(151,151,151) 40.62%,rgb(149,149,149) 41.40%,rgb(147,147,147) 42.18%,rgb(145,145,145) 42.96%,rgb(143,143,143) 43.75%,rgb(141,141,141) 44.53%,rgb(139,139,139) 45.31%,rgb(137,137,137) 46.09%,rgb(135,135,135) 46.87%,rgb(133,133,133) 47.65%,rgb(131,131,131) 48.43%,rgb(129,129,129) 49.21%,rgb(127,127,127) 50%,rgb(125,125,125) 50.78%,rgb(123,123,123) 51.56%,rgb(121,121,121) 52.34%,rgb(119,119,119) 53.12%,rgb(117,117,117) 53.90%,rgb(115,115,115) 54.68%,rgb(113,113,113) 55.46%,rgb(111,111,111) 56.25%,rgb(109,109,109) 57.03%,rgb(107,107,107) 57.81%,rgb(105,105,105) 58.59%,rgb(103,103,103) 59.37%,rgb(101,101,101) 60.15%,rgb(99,99,99) 60.93%,rgb(97,97,97) 61.71%,rgb(95,95,95) 62.5%,rgb(93,93,93) 63.28%,rgb(91,91,91) 64.06%,rgb(89,89,89) 64.84%,rgb(87,87,87) 65.62%,rgb(85,85,85) 66.40%,rgb(83,83,83) 67.18%,rgb(81,81,81) 67.96%,rgb(79,79,79) 68.75%,rgb(77,77,77) 69.53%,rgb(75,75,75) 70.31%,rgb(73,73,73) 71.09%,rgb(71,71,71) 71.87%,rgb(69,69,69) 72.65%,rgb(67,67,67) 73.43%,rgb(65,65,65) 74.21%,rgb(63,63,63) 75%,rgb(61,61,61) 75.78%,rgb(59,59,59) 76.56%,rgb(57,57,57) 77.34%,rgb(55,55,55) 78.12%,rgb(53,53,53) 78.90%,rgb(51,51,51) 79.68%,rgb(49,49,49) 80.46%,rgb(47,47,47) 81.25%,rgb(45,45,45) 82.03%,rgb(43,43,43) 82.81%,rgb(41,41,41) 83.59%,rgb(39,39,39) 84.37%,rgb(37,37,37) 85.15%,rgb(35,35,35) 85.93%,rgb(33,33,33) 86.71%,rgb(31,31,31) 87.5%,rgb(29,29,29) 88.28%,rgb(27,27,27) 89.06%,rgb(25,25,25) 89.84%,rgb(23,23,23) 90.62%,rgb(21,21,21) 91.40%,rgb(19,19,19) 92.18%,rgb(17,17,17) 92.96%,rgb(15,15,15) 93.75%,rgb(13,13,13) 94.53%,rgb(11,11,11) 95.31%,rgb(9,9,9) 96.09%,rgb(7,7,7) 96.87%,rgb(5,5,5) 97.65%,rgb(3,3,3) 98.43%,rgb(1,1,1) 99.21%,rgb(0,0,0) 100%\",\n tex_buffer: new Uint8Array([255,255,255,253,253,253,251,251,251,249,249,249,247,247,247,245,245,245,243,243,243,241,241,241,239,239,239,237,237,237,235,235,235,233,233,233,231,231,231,229,229,229,227,227,227,225,225,225,223,223,223,221,221,221,219,219,219,217,217,217,215,215,215,213,213,213,211,211,211,209,209,209,207,207,207,205,205,205,203,203,203,201,201,201,199,199,199,197,197,197,195,195,195,193,193,193,191,191,191,189,189,189,187,187,187,185,185,185,183,183,183,181,181,181,179,179,179,177,177,177,175,175,175,173,173,173,171,171,171,169,169,169,167,167,167,165,165,165,163,163,163,161,161,161,159,159,159,157,157,157,155,155,155,153,153,153,151,151,151,149,149,149,147,147,147,145,145,145,143,143,143,141,141,141,139,139,139,137,137,137,135,135,135,133,133,133,131,131,131,129,129,129,127,127,127,125,125,125,123,123,123,121,121,121,119,119,119,117,117,117,115,115,115,113,113,113,111,111,111,109,109,109,107,107,107,105,105,105,103,103,103,101,101,101,99,99,99,97,97,97,95,95,95,93,93,93,91,91,91,89,89,89,87,87,87,85,85,85,83,83,83,81,81,81,79,79,79,77,77,77,75,75,75,73,73,73,71,71,71,69,69,69,67,67,67,65,65,65,63,63,63,61,61,61,59,59,59,57,57,57,55,55,55,53,53,53,51,51,51,49,49,49,47,47,47,45,45,45,43,43,43,41,41,41,39,39,39,37,37,37,35,35,35,33,33,33,31,31,31,29,29,29,27,27,27,25,25,25,23,23,23,21,21,21,19,19,19,17,17,17,15,15,15,13,13,13,11,11,11,9,9,9,7,7,7,5,5,5,3,3,3,1,1,1,0,0,0]),\n linear_interpolation: true\n},\n{\n name: \"gnuplot\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(16,0,6) 0.781%,rgb(27,0,18) 1.562%,rgb(35,0,31) 2.343%,rgb(42,0,43) 3.125%,rgb(48,0,56) 3.906%,rgb(53,0,68) 4.687%,rgb(57,0,80) 5.468%,rgb(61,0,92) 6.25%,rgb(65,0,104) 7.031%,rgb(69,0,115) 7.812%,rgb(73,0,126) 8.593%,rgb(76,0,137) 9.375%,rgb(80,0,147) 10.15%,rgb(83,0,157) 10.93%,rgb(86,0,167) 11.71%,rgb(89,0,176) 12.5%,rgb(91,0,185) 13.28%,rgb(94,0,194) 14.06%,rgb(97,0,202) 14.84%,rgb(99,0,209) 15.62%,rgb(102,1,216) 16.40%,rgb(104,1,222) 17.18%,rgb(107,1,228) 17.96%,rgb(109,1,234) 18.75%,rgb(112,1,238) 19.53%,rgb(114,2,242) 20.31%,rgb(116,2,246) 21.09%,rgb(118,2,249) 21.87%,rgb(120,2,251) 22.65%,rgb(122,3,253) 23.43%,rgb(124,3,254) 24.21%,rgb(126,3,254) 25%,rgb(128,4,254) 25.78%,rgb(130,4,254) 26.56%,rgb(132,5,252) 27.34%,rgb(134,5,250) 28.12%,rgb(136,6,247) 28.90%,rgb(138,6,244) 29.68%,rgb(140,7,240) 30.46%,rgb(142,7,236) 31.25%,rgb(144,8,231) 32.03%,rgb(145,8,225) 32.81%,rgb(147,9,219) 33.59%,rgb(149,10,213) 34.37%,rgb(150,10,205) 35.15%,rgb(152,11,198) 35.93%,rgb(154,12,190) 36.71%,rgb(155,13,181) 37.5%,rgb(157,14,172) 38.28%,rgb(159,15,162) 39.06%,rgb(160,16,152) 39.84%,rgb(162,17,142) 40.62%,rgb(163,18,132) 41.40%,rgb(165,19,121) 42.18%,rgb(167,20,109) 42.96%,rgb(168,21,98) 43.75%,rgb(170,22,86) 44.53%,rgb(171,23,74) 45.31%,rgb(173,24,62) 46.09%,rgb(174,26,50) 46.87%,rgb(176,27,37) 47.65%,rgb(177,28,25) 48.43%,rgb(178,30,12) 49.21%,rgb(180,31,0) 50%,rgb(181,33,0) 50.78%,rgb(183,34,0) 51.56%,rgb(184,36,0) 52.34%,rgb(185,38,0) 53.12%,rgb(187,40,0) 53.90%,rgb(188,41,0) 54.68%,rgb(189,43,0) 55.46%,rgb(191,45,0) 56.25%,rgb(192,47,0) 57.03%,rgb(193,49,0) 57.81%,rgb(195,51,0) 58.59%,rgb(196,53,0) 59.37%,rgb(197,55,0) 60.15%,rgb(199,57,0) 60.93%,rgb(200,60,0) 61.71%,rgb(201,62,0) 62.5%,rgb(203,64,0) 63.28%,rgb(204,67,0) 64.06%,rgb(205,69,0) 64.84%,rgb(206,72,0) 65.62%,rgb(208,75,0) 66.40%,rgb(209,77,0) 67.18%,rgb(210,80,0) 67.96%,rgb(211,83,0) 68.75%,rgb(212,86,0) 69.53%,rgb(214,89,0) 70.31%,rgb(215,92,0) 71.09%,rgb(216,95,0) 71.87%,rgb(217,98,0) 72.65%,rgb(218,101,0) 73.43%,rgb(219,105,0) 74.21%,rgb(221,108,0) 75%,rgb(222,111,0) 75.78%,rgb(223,115,0) 76.56%,rgb(224,118,0) 77.34%,rgb(225,122,0) 78.12%,rgb(226,126,0) 78.90%,rgb(227,130,0) 79.68%,rgb(229,134,0) 80.46%,rgb(230,138,0) 81.25%,rgb(231,142,0) 82.03%,rgb(232,146,0) 82.81%,rgb(233,150,0) 83.59%,rgb(234,154,0) 84.37%,rgb(235,159,0) 85.15%,rgb(236,163,0) 85.93%,rgb(237,167,0) 86.71%,rgb(238,172,0) 87.5%,rgb(240,177,0) 88.28%,rgb(241,182,0) 89.06%,rgb(242,186,0) 89.84%,rgb(243,191,0) 90.62%,rgb(244,196,0) 91.40%,rgb(245,201,0) 92.18%,rgb(246,207,0) 92.96%,rgb(247,212,0) 93.75%,rgb(248,217,0) 94.53%,rgb(249,223,0) 95.31%,rgb(250,228,0) 96.09%,rgb(251,234,0) 96.87%,rgb(252,240,0) 97.65%,rgb(253,246,0) 98.43%,rgb(254,252,0) 99.21%,rgb(255,255,0) 100%\",\n tex_buffer: new Uint8Array([0,0,0,16,0,6,27,0,18,35,0,31,42,0,43,48,0,56,53,0,68,57,0,80,61,0,92,65,0,104,69,0,115,73,0,126,76,0,137,80,0,147,83,0,157,86,0,167,89,0,176,91,0,185,94,0,194,97,0,202,99,0,209,102,1,216,104,1,222,107,1,228,109,1,234,112,1,238,114,2,242,116,2,246,118,2,249,120,2,251,122,3,253,124,3,254,126,3,254,128,4,254,130,4,254,132,5,252,134,5,250,136,6,247,138,6,244,140,7,240,142,7,236,144,8,231,145,8,225,147,9,219,149,10,213,150,10,205,152,11,198,154,12,190,155,13,181,157,14,172,159,15,162,160,16,152,162,17,142,163,18,132,165,19,121,167,20,109,168,21,98,170,22,86,171,23,74,173,24,62,174,26,50,176,27,37,177,28,25,178,30,12,180,31,0,181,33,0,183,34,0,184,36,0,185,38,0,187,40,0,188,41,0,189,43,0,191,45,0,192,47,0,193,49,0,195,51,0,196,53,0,197,55,0,199,57,0,200,60,0,201,62,0,203,64,0,204,67,0,205,69,0,206,72,0,208,75,0,209,77,0,210,80,0,211,83,0,212,86,0,214,89,0,215,92,0,216,95,0,217,98,0,218,101,0,219,105,0,221,108,0,222,111,0,223,115,0,224,118,0,225,122,0,226,126,0,227,130,0,229,134,0,230,138,0,231,142,0,232,146,0,233,150,0,234,154,0,235,159,0,236,163,0,237,167,0,238,172,0,240,177,0,241,182,0,242,186,0,243,191,0,244,196,0,245,201,0,246,207,0,247,212,0,248,217,0,249,223,0,250,228,0,251,234,0,252,240,0,253,246,0,254,252,0,255,255,0]),\n linear_interpolation: true\n},\n{\n name: \"gnuplot2\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(0,0,4) 0.781%,rgb(0,0,12) 1.562%,rgb(0,0,20) 2.343%,rgb(0,0,28) 3.125%,rgb(0,0,36) 3.906%,rgb(0,0,44) 4.687%,rgb(0,0,52) 5.468%,rgb(0,0,60) 6.25%,rgb(0,0,68) 7.031%,rgb(0,0,76) 7.812%,rgb(0,0,84) 8.593%,rgb(0,0,92) 9.375%,rgb(0,0,100) 10.15%,rgb(0,0,108) 10.93%,rgb(0,0,116) 11.71%,rgb(0,0,124) 12.5%,rgb(0,0,132) 13.28%,rgb(0,0,140) 14.06%,rgb(0,0,148) 14.84%,rgb(0,0,156) 15.62%,rgb(0,0,164) 16.40%,rgb(0,0,172) 17.18%,rgb(0,0,180) 17.96%,rgb(0,0,188) 18.75%,rgb(0,0,196) 19.53%,rgb(0,0,204) 20.31%,rgb(0,0,212) 21.09%,rgb(0,0,220) 21.87%,rgb(0,0,228) 22.65%,rgb(0,0,236) 23.43%,rgb(0,0,244) 24.21%,rgb(0,0,252) 25%,rgb(4,0,255) 25.78%,rgb(10,0,255) 26.56%,rgb(17,0,255) 27.34%,rgb(23,0,255) 28.12%,rgb(29,0,255) 28.90%,rgb(36,0,255) 29.68%,rgb(42,0,255) 30.46%,rgb(48,0,255) 31.25%,rgb(54,0,255) 32.03%,rgb(61,0,255) 32.81%,rgb(67,0,255) 33.59%,rgb(73,0,255) 34.37%,rgb(80,0,255) 35.15%,rgb(86,0,255) 35.93%,rgb(92,0,255) 36.71%,rgb(98,0,255) 37.5%,rgb(105,0,255) 38.28%,rgb(111,0,255) 39.06%,rgb(117,0,255) 39.84%,rgb(123,0,255) 40.62%,rgb(130,0,255) 41.40%,rgb(136,0,254) 42.18%,rgb(142,4,250) 42.96%,rgb(149,8,246) 43.75%,rgb(155,12,242) 44.53%,rgb(161,16,238) 45.31%,rgb(167,20,234) 46.09%,rgb(174,24,230) 46.87%,rgb(180,28,226) 47.65%,rgb(186,32,222) 48.43%,rgb(192,36,218) 49.21%,rgb(199,40,214) 50%,rgb(205,44,210) 50.78%,rgb(211,48,206) 51.56%,rgb(218,52,202) 52.34%,rgb(224,56,198) 53.12%,rgb(230,60,194) 53.90%,rgb(236,64,190) 54.68%,rgb(243,68,186) 55.46%,rgb(249,72,182) 56.25%,rgb(255,76,178) 57.03%,rgb(255,80,174) 57.81%,rgb(255,84,170) 58.59%,rgb(255,88,166) 59.37%,rgb(255,93,161) 60.15%,rgb(255,97,157) 60.93%,rgb(255,101,153) 61.71%,rgb(255,105,149) 62.5%,rgb(255,109,145) 63.28%,rgb(255,113,141) 64.06%,rgb(255,117,137) 64.84%,rgb(255,121,133) 65.62%,rgb(255,125,129) 66.40%,rgb(255,129,125) 67.18%,rgb(255,133,121) 67.96%,rgb(255,137,117) 68.75%,rgb(255,141,113) 69.53%,rgb(255,145,109) 70.31%,rgb(255,149,105) 71.09%,rgb(255,153,101) 71.87%,rgb(255,157,97) 72.65%,rgb(255,161,93) 73.43%,rgb(255,165,89) 74.21%,rgb(255,169,85) 75%,rgb(255,173,81) 75.78%,rgb(255,177,77) 76.56%,rgb(255,181,73) 77.34%,rgb(255,185,69) 78.12%,rgb(255,189,65) 78.90%,rgb(255,193,61) 79.68%,rgb(255,197,57) 80.46%,rgb(255,201,53) 81.25%,rgb(255,205,49) 82.03%,rgb(255,209,45) 82.81%,rgb(255,213,41) 83.59%,rgb(255,217,37) 84.37%,rgb(255,221,33) 85.15%,rgb(255,225,29) 85.93%,rgb(255,229,25) 86.71%,rgb(255,233,21) 87.5%,rgb(255,237,17) 88.28%,rgb(255,241,13) 89.06%,rgb(255,245,9) 89.84%,rgb(255,249,5) 90.62%,rgb(255,253,1) 91.40%,rgb(255,255,16) 92.18%,rgb(255,255,41) 92.96%,rgb(255,255,66) 93.75%,rgb(255,255,91) 94.53%,rgb(255,255,116) 95.31%,rgb(255,255,142) 96.09%,rgb(255,255,167) 96.87%,rgb(255,255,192) 97.65%,rgb(255,255,217) 98.43%,rgb(255,255,242) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([0,0,0,0,0,4,0,0,12,0,0,20,0,0,28,0,0,36,0,0,44,0,0,52,0,0,60,0,0,68,0,0,76,0,0,84,0,0,92,0,0,100,0,0,108,0,0,116,0,0,124,0,0,132,0,0,140,0,0,148,0,0,156,0,0,164,0,0,172,0,0,180,0,0,188,0,0,196,0,0,204,0,0,212,0,0,220,0,0,228,0,0,236,0,0,244,0,0,252,4,0,255,10,0,255,17,0,255,23,0,255,29,0,255,36,0,255,42,0,255,48,0,255,54,0,255,61,0,255,67,0,255,73,0,255,80,0,255,86,0,255,92,0,255,98,0,255,105,0,255,111,0,255,117,0,255,123,0,255,130,0,255,136,0,254,142,4,250,149,8,246,155,12,242,161,16,238,167,20,234,174,24,230,180,28,226,186,32,222,192,36,218,199,40,214,205,44,210,211,48,206,218,52,202,224,56,198,230,60,194,236,64,190,243,68,186,249,72,182,255,76,178,255,80,174,255,84,170,255,88,166,255,93,161,255,97,157,255,101,153,255,105,149,255,109,145,255,113,141,255,117,137,255,121,133,255,125,129,255,129,125,255,133,121,255,137,117,255,141,113,255,145,109,255,149,105,255,153,101,255,157,97,255,161,93,255,165,89,255,169,85,255,173,81,255,177,77,255,181,73,255,185,69,255,189,65,255,193,61,255,197,57,255,201,53,255,205,49,255,209,45,255,213,41,255,217,37,255,221,33,255,225,29,255,229,25,255,233,21,255,237,17,255,241,13,255,245,9,255,249,5,255,253,1,255,255,16,255,255,41,255,255,66,255,255,91,255,255,116,255,255,142,255,255,167,255,255,192,255,255,217,255,255,242,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"gray\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(1,1,1) 0.781%,rgb(3,3,3) 1.562%,rgb(5,5,5) 2.343%,rgb(7,7,7) 3.125%,rgb(9,9,9) 3.906%,rgb(11,11,11) 4.687%,rgb(13,13,13) 5.468%,rgb(15,15,15) 6.25%,rgb(17,17,17) 7.031%,rgb(19,19,19) 7.812%,rgb(21,21,21) 8.593%,rgb(23,23,23) 9.375%,rgb(25,25,25) 10.15%,rgb(27,27,27) 10.93%,rgb(29,29,29) 11.71%,rgb(31,31,31) 12.5%,rgb(33,33,33) 13.28%,rgb(35,35,35) 14.06%,rgb(37,37,37) 14.84%,rgb(39,39,39) 15.62%,rgb(41,41,41) 16.40%,rgb(43,43,43) 17.18%,rgb(45,45,45) 17.96%,rgb(47,47,47) 18.75%,rgb(49,49,49) 19.53%,rgb(51,51,51) 20.31%,rgb(53,53,53) 21.09%,rgb(55,55,55) 21.87%,rgb(57,57,57) 22.65%,rgb(59,59,59) 23.43%,rgb(61,61,61) 24.21%,rgb(63,63,63) 25%,rgb(65,65,65) 25.78%,rgb(67,67,67) 26.56%,rgb(69,69,69) 27.34%,rgb(71,71,71) 28.12%,rgb(73,73,73) 28.90%,rgb(75,75,75) 29.68%,rgb(77,77,77) 30.46%,rgb(79,79,79) 31.25%,rgb(81,81,81) 32.03%,rgb(83,83,83) 32.81%,rgb(85,85,85) 33.59%,rgb(87,87,87) 34.37%,rgb(89,89,89) 35.15%,rgb(91,91,91) 35.93%,rgb(93,93,93) 36.71%,rgb(95,95,95) 37.5%,rgb(97,97,97) 38.28%,rgb(99,99,99) 39.06%,rgb(101,101,101) 39.84%,rgb(103,103,103) 40.62%,rgb(105,105,105) 41.40%,rgb(107,107,107) 42.18%,rgb(109,109,109) 42.96%,rgb(111,111,111) 43.75%,rgb(113,113,113) 44.53%,rgb(115,115,115) 45.31%,rgb(117,117,117) 46.09%,rgb(119,119,119) 46.87%,rgb(121,121,121) 47.65%,rgb(123,123,123) 48.43%,rgb(125,125,125) 49.21%,rgb(127,127,127) 50%,rgb(129,129,129) 50.78%,rgb(131,131,131) 51.56%,rgb(133,133,133) 52.34%,rgb(135,135,135) 53.12%,rgb(137,137,137) 53.90%,rgb(139,139,139) 54.68%,rgb(141,141,141) 55.46%,rgb(143,143,143) 56.25%,rgb(145,145,145) 57.03%,rgb(147,147,147) 57.81%,rgb(149,149,149) 58.59%,rgb(151,151,151) 59.37%,rgb(153,153,153) 60.15%,rgb(155,155,155) 60.93%,rgb(157,157,157) 61.71%,rgb(159,159,159) 62.5%,rgb(161,161,161) 63.28%,rgb(163,163,163) 64.06%,rgb(165,165,165) 64.84%,rgb(167,167,167) 65.62%,rgb(169,169,169) 66.40%,rgb(171,171,171) 67.18%,rgb(173,173,173) 67.96%,rgb(175,175,175) 68.75%,rgb(177,177,177) 69.53%,rgb(179,179,179) 70.31%,rgb(181,181,181) 71.09%,rgb(183,183,183) 71.87%,rgb(185,185,185) 72.65%,rgb(187,187,187) 73.43%,rgb(189,189,189) 74.21%,rgb(191,191,191) 75%,rgb(193,193,193) 75.78%,rgb(195,195,195) 76.56%,rgb(197,197,197) 77.34%,rgb(199,199,199) 78.12%,rgb(201,201,201) 78.90%,rgb(203,203,203) 79.68%,rgb(205,205,205) 80.46%,rgb(207,207,207) 81.25%,rgb(209,209,209) 82.03%,rgb(211,211,211) 82.81%,rgb(213,213,213) 83.59%,rgb(215,215,215) 84.37%,rgb(217,217,217) 85.15%,rgb(219,219,219) 85.93%,rgb(221,221,221) 86.71%,rgb(223,223,223) 87.5%,rgb(225,225,225) 88.28%,rgb(227,227,227) 89.06%,rgb(229,229,229) 89.84%,rgb(231,231,231) 90.62%,rgb(233,233,233) 91.40%,rgb(235,235,235) 92.18%,rgb(237,237,237) 92.96%,rgb(239,239,239) 93.75%,rgb(241,241,241) 94.53%,rgb(243,243,243) 95.31%,rgb(245,245,245) 96.09%,rgb(247,247,247) 96.87%,rgb(249,249,249) 97.65%,rgb(251,251,251) 98.43%,rgb(253,253,253) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([0,0,0,1,1,1,3,3,3,5,5,5,7,7,7,9,9,9,11,11,11,13,13,13,15,15,15,17,17,17,19,19,19,21,21,21,23,23,23,25,25,25,27,27,27,29,29,29,31,31,31,33,33,33,35,35,35,37,37,37,39,39,39,41,41,41,43,43,43,45,45,45,47,47,47,49,49,49,51,51,51,53,53,53,55,55,55,57,57,57,59,59,59,61,61,61,63,63,63,65,65,65,67,67,67,69,69,69,71,71,71,73,73,73,75,75,75,77,77,77,79,79,79,81,81,81,83,83,83,85,85,85,87,87,87,89,89,89,91,91,91,93,93,93,95,95,95,97,97,97,99,99,99,101,101,101,103,103,103,105,105,105,107,107,107,109,109,109,111,111,111,113,113,113,115,115,115,117,117,117,119,119,119,121,121,121,123,123,123,125,125,125,127,127,127,129,129,129,131,131,131,133,133,133,135,135,135,137,137,137,139,139,139,141,141,141,143,143,143,145,145,145,147,147,147,149,149,149,151,151,151,153,153,153,155,155,155,157,157,157,159,159,159,161,161,161,163,163,163,165,165,165,167,167,167,169,169,169,171,171,171,173,173,173,175,175,175,177,177,177,179,179,179,181,181,181,183,183,183,185,185,185,187,187,187,189,189,189,191,191,191,193,193,193,195,195,195,197,197,197,199,199,199,201,201,201,203,203,203,205,205,205,207,207,207,209,209,209,211,211,211,213,213,213,215,215,215,217,217,217,219,219,219,221,221,221,223,223,223,225,225,225,227,227,227,229,229,229,231,231,231,233,233,233,235,235,235,237,237,237,239,239,239,241,241,241,243,243,243,245,245,245,247,247,247,249,249,249,251,251,251,253,253,253,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"haline\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(42,24,108) 0%,rgb(42,24,108) 0.390%,rgb(42,25,110) 0.390%,rgb(42,25,110) 0.781%,rgb(42,25,113) 0.781%,rgb(42,25,113) 1.171%,rgb(43,25,115) 1.171%,rgb(43,25,115) 1.562%,rgb(43,25,117) 1.562%,rgb(43,25,117) 1.953%,rgb(44,26,120) 1.953%,rgb(44,26,120) 2.343%,rgb(44,26,122) 2.343%,rgb(44,26,122) 2.734%,rgb(45,26,125) 2.734%,rgb(45,26,125) 3.125%,rgb(45,26,127) 3.125%,rgb(45,26,127) 3.515%,rgb(45,27,130) 3.515%,rgb(45,27,130) 3.906%,rgb(46,27,132) 3.906%,rgb(46,27,132) 4.296%,rgb(46,27,135) 4.296%,rgb(46,27,135) 4.687%,rgb(46,28,137) 4.687%,rgb(46,28,137) 5.078%,rgb(46,28,140) 5.078%,rgb(46,28,140) 5.468%,rgb(46,28,142) 5.468%,rgb(46,28,142) 5.859%,rgb(46,29,145) 5.859%,rgb(46,29,145) 6.25%,rgb(46,29,147) 6.25%,rgb(46,29,147) 6.640%,rgb(46,30,149) 6.640%,rgb(46,30,149) 7.031%,rgb(46,30,152) 7.031%,rgb(46,30,152) 7.421%,rgb(46,31,154) 7.421%,rgb(46,31,154) 7.812%,rgb(45,32,156) 7.812%,rgb(45,32,156) 8.203%,rgb(45,33,157) 8.203%,rgb(45,33,157) 8.593%,rgb(44,34,159) 8.593%,rgb(44,34,159) 8.984%,rgb(43,36,160) 8.984%,rgb(43,36,160) 9.375%,rgb(42,37,161) 9.375%,rgb(42,37,161) 9.765%,rgb(41,39,162) 9.765%,rgb(41,39,162) 10.15%,rgb(40,41,163) 10.15%,rgb(40,41,163) 10.54%,rgb(38,43,163) 10.54%,rgb(38,43,163) 10.93%,rgb(37,45,163) 10.93%,rgb(37,45,163) 11.32%,rgb(36,46,163) 11.32%,rgb(36,46,163) 11.71%,rgb(34,48,163) 11.71%,rgb(34,48,163) 12.10%,rgb(33,50,162) 12.10%,rgb(33,50,162) 12.5%,rgb(32,52,162) 12.5%,rgb(32,52,162) 12.89%,rgb(30,53,161) 12.89%,rgb(30,53,161) 13.28%,rgb(29,55,161) 13.28%,rgb(29,55,161) 13.67%,rgb(28,57,160) 13.67%,rgb(28,57,160) 14.06%,rgb(27,58,160) 14.06%,rgb(27,58,160) 14.45%,rgb(25,60,159) 14.45%,rgb(25,60,159) 14.84%,rgb(24,61,158) 14.84%,rgb(24,61,158) 15.23%,rgb(23,63,158) 15.23%,rgb(23,63,158) 15.62%,rgb(22,64,157) 15.62%,rgb(22,64,157) 16.01%,rgb(21,65,156) 16.01%,rgb(21,65,156) 16.40%,rgb(20,67,156) 16.40%,rgb(20,67,156) 16.79%,rgb(19,68,155) 16.79%,rgb(19,68,155) 17.18%,rgb(18,69,155) 17.18%,rgb(18,69,155) 17.57%,rgb(17,71,154) 17.57%,rgb(17,71,154) 17.96%,rgb(16,72,153) 17.96%,rgb(16,72,153) 18.35%,rgb(15,73,153) 18.35%,rgb(15,73,153) 18.75%,rgb(15,74,152) 18.75%,rgb(15,74,152) 19.14%,rgb(14,76,151) 19.14%,rgb(14,76,151) 19.53%,rgb(13,77,151) 19.53%,rgb(13,77,151) 19.92%,rgb(13,78,150) 19.92%,rgb(13,78,150) 20.31%,rgb(13,79,150) 20.31%,rgb(13,79,150) 20.70%,rgb(12,80,149) 20.70%,rgb(12,80,149) 21.09%,rgb(12,81,149) 21.09%,rgb(12,81,149) 21.48%,rgb(12,82,148) 21.48%,rgb(12,82,148) 21.87%,rgb(12,83,148) 21.87%,rgb(12,83,148) 22.26%,rgb(12,84,147) 22.26%,rgb(12,84,147) 22.65%,rgb(13,85,147) 22.65%,rgb(13,85,147) 23.04%,rgb(13,86,146) 23.04%,rgb(13,86,146) 23.43%,rgb(13,87,146) 23.43%,rgb(13,87,146) 23.82%,rgb(14,88,145) 23.82%,rgb(14,88,145) 24.21%,rgb(14,89,145) 24.21%,rgb(14,89,145) 24.60%,rgb(15,90,145) 24.60%,rgb(15,90,145) 25%,rgb(15,91,144) 25%,rgb(15,91,144) 25.39%,rgb(16,92,144) 25.39%,rgb(16,92,144) 25.78%,rgb(17,93,143) 25.78%,rgb(17,93,143) 26.17%,rgb(17,94,143) 26.17%,rgb(17,94,143) 26.56%,rgb(18,95,143) 26.56%,rgb(18,95,143) 26.95%,rgb(19,96,142) 26.95%,rgb(19,96,142) 27.34%,rgb(20,97,142) 27.34%,rgb(20,97,142) 27.73%,rgb(20,98,142) 27.73%,rgb(20,98,142) 28.12%,rgb(21,99,142) 28.12%,rgb(21,99,142) 28.51%,rgb(22,99,141) 28.51%,rgb(22,99,141) 28.90%,rgb(23,100,141) 28.90%,rgb(23,100,141) 29.29%,rgb(24,101,141) 29.29%,rgb(24,101,141) 29.68%,rgb(24,102,140) 29.68%,rgb(24,102,140) 30.07%,rgb(25,103,140) 30.07%,rgb(25,103,140) 30.46%,rgb(26,104,140) 30.46%,rgb(26,104,140) 30.85%,rgb(27,105,140) 30.85%,rgb(27,105,140) 31.25%,rgb(28,106,140) 31.25%,rgb(28,106,140) 31.64%,rgb(29,107,139) 31.64%,rgb(29,107,139) 32.03%,rgb(29,107,139) 32.03%,rgb(29,107,139) 32.42%,rgb(30,108,139) 32.42%,rgb(30,108,139) 32.81%,rgb(31,109,139) 32.81%,rgb(31,109,139) 33.20%,rgb(32,110,139) 33.20%,rgb(32,110,139) 33.59%,rgb(33,111,139) 33.59%,rgb(33,111,139) 33.98%,rgb(34,112,138) 33.98%,rgb(34,112,138) 34.37%,rgb(34,113,138) 34.37%,rgb(34,113,138) 34.76%,rgb(35,113,138) 34.76%,rgb(35,113,138) 35.15%,rgb(36,114,138) 35.15%,rgb(36,114,138) 35.54%,rgb(37,115,138) 35.54%,rgb(37,115,138) 35.93%,rgb(38,116,138) 35.93%,rgb(38,116,138) 36.32%,rgb(38,117,138) 36.32%,rgb(38,117,138) 36.71%,rgb(39,118,138) 36.71%,rgb(39,118,138) 37.10%,rgb(40,118,137) 37.10%,rgb(40,118,137) 37.5%,rgb(41,119,137) 37.5%,rgb(41,119,137) 37.89%,rgb(41,120,137) 37.89%,rgb(41,120,137) 38.28%,rgb(42,121,137) 38.28%,rgb(42,121,137) 38.67%,rgb(43,122,137) 38.67%,rgb(43,122,137) 39.06%,rgb(43,123,137) 39.06%,rgb(43,123,137) 39.45%,rgb(44,124,137) 39.45%,rgb(44,124,137) 39.84%,rgb(45,124,137) 39.84%,rgb(45,124,137) 40.23%,rgb(45,125,137) 40.23%,rgb(45,125,137) 40.62%,rgb(46,126,137) 40.62%,rgb(46,126,137) 41.01%,rgb(47,127,137) 41.01%,rgb(47,127,137) 41.40%,rgb(47,128,137) 41.40%,rgb(47,128,137) 41.79%,rgb(48,129,137) 41.79%,rgb(48,129,137) 42.18%,rgb(49,130,137) 42.18%,rgb(49,130,137) 42.57%,rgb(49,130,136) 42.57%,rgb(49,130,136) 42.96%,rgb(50,131,136) 42.96%,rgb(50,131,136) 43.35%,rgb(51,132,136) 43.35%,rgb(51,132,136) 43.75%,rgb(51,133,136) 43.75%,rgb(51,133,136) 44.14%,rgb(52,134,136) 44.14%,rgb(52,134,136) 44.53%,rgb(52,135,136) 44.53%,rgb(52,135,136) 44.92%,rgb(53,136,136) 44.92%,rgb(53,136,136) 45.31%,rgb(53,137,136) 45.31%,rgb(53,137,136) 45.70%,rgb(54,137,136) 45.70%,rgb(54,137,136) 46.09%,rgb(55,138,136) 46.09%,rgb(55,138,136) 46.48%,rgb(55,139,136) 46.48%,rgb(55,139,136) 46.87%,rgb(56,140,136) 46.87%,rgb(56,140,136) 47.26%,rgb(56,141,136) 47.26%,rgb(56,141,136) 47.65%,rgb(57,142,136) 47.65%,rgb(57,142,136) 48.04%,rgb(57,143,136) 48.04%,rgb(57,143,136) 48.43%,rgb(58,144,135) 48.43%,rgb(58,144,135) 48.82%,rgb(58,144,135) 48.82%,rgb(58,144,135) 49.21%,rgb(59,145,135) 49.21%,rgb(59,145,135) 49.60%,rgb(59,146,135) 49.60%,rgb(59,146,135) 50%,rgb(60,147,135) 50%,rgb(60,147,135) 50.39%,rgb(60,148,135) 50.39%,rgb(60,148,135) 50.78%,rgb(61,149,135) 50.78%,rgb(61,149,135) 51.17%,rgb(61,150,135) 51.17%,rgb(61,150,135) 51.56%,rgb(62,151,135) 51.56%,rgb(62,151,135) 51.95%,rgb(62,152,134) 51.95%,rgb(62,152,134) 52.34%,rgb(63,153,134) 52.34%,rgb(63,153,134) 52.73%,rgb(63,153,134) 52.73%,rgb(63,153,134) 53.12%,rgb(64,154,134) 53.12%,rgb(64,154,134) 53.51%,rgb(65,155,134) 53.51%,rgb(65,155,134) 53.90%,rgb(65,156,133) 53.90%,rgb(65,156,133) 54.29%,rgb(66,157,133) 54.29%,rgb(66,157,133) 54.68%,rgb(66,158,133) 54.68%,rgb(66,158,133) 55.07%,rgb(67,159,133) 55.07%,rgb(67,159,133) 55.46%,rgb(67,160,132) 55.46%,rgb(67,160,132) 55.85%,rgb(68,161,132) 55.85%,rgb(68,161,132) 56.25%,rgb(68,162,132) 56.25%,rgb(68,162,132) 56.64%,rgb(69,163,132) 56.64%,rgb(69,163,132) 57.03%,rgb(70,164,131) 57.03%,rgb(70,164,131) 57.42%,rgb(70,164,131) 57.42%,rgb(70,164,131) 57.81%,rgb(71,165,131) 57.81%,rgb(71,165,131) 58.20%,rgb(72,166,130) 58.20%,rgb(72,166,130) 58.59%,rgb(72,167,130) 58.59%,rgb(72,167,130) 58.98%,rgb(73,168,130) 58.98%,rgb(73,168,130) 59.37%,rgb(74,169,129) 59.37%,rgb(74,169,129) 59.76%,rgb(74,170,129) 59.76%,rgb(74,170,129) 60.15%,rgb(75,171,129) 60.15%,rgb(75,171,129) 60.54%,rgb(76,172,128) 60.54%,rgb(76,172,128) 60.93%,rgb(76,173,128) 60.93%,rgb(76,173,128) 61.32%,rgb(77,174,127) 61.32%,rgb(77,174,127) 61.71%,rgb(78,174,127) 61.71%,rgb(78,174,127) 62.10%,rgb(79,175,126) 62.10%,rgb(79,175,126) 62.5%,rgb(80,176,126) 62.5%,rgb(80,176,126) 62.89%,rgb(81,177,125) 62.89%,rgb(81,177,125) 63.28%,rgb(81,178,125) 63.28%,rgb(81,178,125) 63.67%,rgb(82,179,124) 63.67%,rgb(82,179,124) 64.06%,rgb(83,180,124) 64.06%,rgb(83,180,124) 64.45%,rgb(84,181,123) 64.45%,rgb(84,181,123) 64.84%,rgb(85,182,123) 64.84%,rgb(85,182,123) 65.23%,rgb(86,183,122) 65.23%,rgb(86,183,122) 65.62%,rgb(87,184,121) 65.62%,rgb(87,184,121) 66.01%,rgb(88,184,121) 66.01%,rgb(88,184,121) 66.40%,rgb(90,185,120) 66.40%,rgb(90,185,120) 66.79%,rgb(91,186,119) 66.79%,rgb(91,186,119) 67.18%,rgb(92,187,119) 67.18%,rgb(92,187,119) 67.57%,rgb(93,188,118) 67.57%,rgb(93,188,118) 67.96%,rgb(94,189,117) 67.96%,rgb(94,189,117) 68.35%,rgb(95,190,117) 68.35%,rgb(95,190,117) 68.75%,rgb(97,191,116) 68.75%,rgb(97,191,116) 69.14%,rgb(98,191,115) 69.14%,rgb(98,191,115) 69.53%,rgb(99,192,114) 69.53%,rgb(99,192,114) 69.92%,rgb(101,193,114) 69.92%,rgb(101,193,114) 70.31%,rgb(102,194,113) 70.31%,rgb(102,194,113) 70.70%,rgb(104,195,112) 70.70%,rgb(104,195,112) 71.09%,rgb(105,196,111) 71.09%,rgb(105,196,111) 71.48%,rgb(107,196,110) 71.48%,rgb(107,196,110) 71.87%,rgb(108,197,110) 71.87%,rgb(108,197,110) 72.26%,rgb(110,198,109) 72.26%,rgb(110,198,109) 72.65%,rgb(112,199,108) 72.65%,rgb(112,199,108) 73.04%,rgb(113,200,107) 73.04%,rgb(113,200,107) 73.43%,rgb(115,200,106) 73.43%,rgb(115,200,106) 73.82%,rgb(117,201,105) 73.82%,rgb(117,201,105) 74.21%,rgb(119,202,104) 74.21%,rgb(119,202,104) 74.60%,rgb(120,203,104) 74.60%,rgb(120,203,104) 75%,rgb(122,203,103) 75%,rgb(122,203,103) 75.39%,rgb(124,204,102) 75.39%,rgb(124,204,102) 75.78%,rgb(126,205,101) 75.78%,rgb(126,205,101) 76.17%,rgb(128,206,100) 76.17%,rgb(128,206,100) 76.56%,rgb(130,206,99) 76.56%,rgb(130,206,99) 76.95%,rgb(132,207,98) 76.95%,rgb(132,207,98) 77.34%,rgb(134,208,98) 77.34%,rgb(134,208,98) 77.73%,rgb(137,208,97) 77.73%,rgb(137,208,97) 78.12%,rgb(139,209,96) 78.12%,rgb(139,209,96) 78.51%,rgb(141,210,95) 78.51%,rgb(141,210,95) 78.90%,rgb(143,210,95) 78.90%,rgb(143,210,95) 79.29%,rgb(146,211,94) 79.29%,rgb(146,211,94) 79.68%,rgb(148,211,93) 79.68%,rgb(148,211,93) 80.07%,rgb(151,212,93) 80.07%,rgb(151,212,93) 80.46%,rgb(153,212,93) 80.46%,rgb(153,212,93) 80.85%,rgb(155,213,92) 80.85%,rgb(155,213,92) 81.25%,rgb(158,214,92) 81.25%,rgb(158,214,92) 81.64%,rgb(160,214,92) 81.64%,rgb(160,214,92) 82.03%,rgb(163,215,92) 82.03%,rgb(163,215,92) 82.42%,rgb(165,215,92) 82.42%,rgb(165,215,92) 82.81%,rgb(168,216,92) 82.81%,rgb(168,216,92) 83.20%,rgb(170,216,92) 83.20%,rgb(170,216,92) 83.59%,rgb(173,216,92) 83.59%,rgb(173,216,92) 83.98%,rgb(175,217,93) 83.98%,rgb(175,217,93) 84.37%,rgb(177,217,93) 84.37%,rgb(177,217,93) 84.76%,rgb(180,218,94) 84.76%,rgb(180,218,94) 85.15%,rgb(182,218,95) 85.15%,rgb(182,218,95) 85.54%,rgb(184,219,96) 85.54%,rgb(184,219,96) 85.93%,rgb(187,219,97) 85.93%,rgb(187,219,97) 86.32%,rgb(189,220,98) 86.32%,rgb(189,220,98) 86.71%,rgb(191,220,99) 86.71%,rgb(191,220,99) 87.10%,rgb(193,221,100) 87.10%,rgb(193,221,100) 87.5%,rgb(196,221,101) 87.5%,rgb(196,221,101) 87.89%,rgb(198,222,102) 87.89%,rgb(198,222,102) 88.28%,rgb(200,222,103) 88.28%,rgb(200,222,103) 88.67%,rgb(202,223,105) 88.67%,rgb(202,223,105) 89.06%,rgb(204,223,106) 89.06%,rgb(204,223,106) 89.45%,rgb(206,224,108) 89.45%,rgb(206,224,108) 89.84%,rgb(208,224,109) 89.84%,rgb(208,224,109) 90.23%,rgb(210,225,111) 90.23%,rgb(210,225,111) 90.62%,rgb(212,225,112) 90.62%,rgb(212,225,112) 91.01%,rgb(214,226,114) 91.01%,rgb(214,226,114) 91.40%,rgb(216,226,115) 91.40%,rgb(216,226,115) 91.79%,rgb(218,227,117) 91.79%,rgb(218,227,117) 92.18%,rgb(220,227,119) 92.18%,rgb(220,227,119) 92.57%,rgb(222,228,121) 92.57%,rgb(222,228,121) 92.96%,rgb(224,229,122) 92.96%,rgb(224,229,122) 93.35%,rgb(225,229,124) 93.35%,rgb(225,229,124) 93.75%,rgb(227,230,126) 93.75%,rgb(227,230,126) 94.14%,rgb(229,230,128) 94.14%,rgb(229,230,128) 94.53%,rgb(231,231,129) 94.53%,rgb(231,231,129) 94.92%,rgb(233,231,131) 94.92%,rgb(233,231,131) 95.31%,rgb(235,232,133) 95.31%,rgb(235,232,133) 95.70%,rgb(236,233,135) 95.70%,rgb(236,233,135) 96.09%,rgb(238,233,137) 96.09%,rgb(238,233,137) 96.48%,rgb(240,234,138) 96.48%,rgb(240,234,138) 96.87%,rgb(242,234,140) 96.87%,rgb(242,234,140) 97.26%,rgb(243,235,142) 97.26%,rgb(243,235,142) 97.65%,rgb(245,236,144) 97.65%,rgb(245,236,144) 98.04%,rgb(247,236,146) 98.04%,rgb(247,236,146) 98.43%,rgb(248,237,148) 98.43%,rgb(248,237,148) 98.82%,rgb(250,238,150) 98.82%,rgb(250,238,150) 99.21%,rgb(252,238,152) 99.21%,rgb(252,238,152) 99.60%,rgb(253,239,154) 99.60%,rgb(253,239,154) 100%\",\n tex_buffer: new Uint8Array([42,24,108,42,25,110,42,25,113,43,25,115,43,25,117,44,26,120,44,26,122,45,26,125,45,26,127,45,27,130,46,27,132,46,27,135,46,28,137,46,28,140,46,28,142,46,29,145,46,29,147,46,30,149,46,30,152,46,31,154,45,32,156,45,33,157,44,34,159,43,36,160,42,37,161,41,39,162,40,41,163,38,43,163,37,45,163,36,46,163,34,48,163,33,50,162,32,52,162,30,53,161,29,55,161,28,57,160,27,58,160,25,60,159,24,61,158,23,63,158,22,64,157,21,65,156,20,67,156,19,68,155,18,69,155,17,71,154,16,72,153,15,73,153,15,74,152,14,76,151,13,77,151,13,78,150,13,79,150,12,80,149,12,81,149,12,82,148,12,83,148,12,84,147,13,85,147,13,86,146,13,87,146,14,88,145,14,89,145,15,90,145,15,91,144,16,92,144,17,93,143,17,94,143,18,95,143,19,96,142,20,97,142,20,98,142,21,99,142,22,99,141,23,100,141,24,101,141,24,102,140,25,103,140,26,104,140,27,105,140,28,106,140,29,107,139,29,107,139,30,108,139,31,109,139,32,110,139,33,111,139,34,112,138,34,113,138,35,113,138,36,114,138,37,115,138,38,116,138,38,117,138,39,118,138,40,118,137,41,119,137,41,120,137,42,121,137,43,122,137,43,123,137,44,124,137,45,124,137,45,125,137,46,126,137,47,127,137,47,128,137,48,129,137,49,130,137,49,130,136,50,131,136,51,132,136,51,133,136,52,134,136,52,135,136,53,136,136,53,137,136,54,137,136,55,138,136,55,139,136,56,140,136,56,141,136,57,142,136,57,143,136,58,144,135,58,144,135,59,145,135,59,146,135,60,147,135,60,148,135,61,149,135,61,150,135,62,151,135,62,152,134,63,153,134,63,153,134,64,154,134,65,155,134,65,156,133,66,157,133,66,158,133,67,159,133,67,160,132,68,161,132,68,162,132,69,163,132,70,164,131,70,164,131,71,165,131,72,166,130,72,167,130,73,168,130,74,169,129,74,170,129,75,171,129,76,172,128,76,173,128,77,174,127,78,174,127,79,175,126,80,176,126,81,177,125,81,178,125,82,179,124,83,180,124,84,181,123,85,182,123,86,183,122,87,184,121,88,184,121,90,185,120,91,186,119,92,187,119,93,188,118,94,189,117,95,190,117,97,191,116,98,191,115,99,192,114,101,193,114,102,194,113,104,195,112,105,196,111,107,196,110,108,197,110,110,198,109,112,199,108,113,200,107,115,200,106,117,201,105,119,202,104,120,203,104,122,203,103,124,204,102,126,205,101,128,206,100,130,206,99,132,207,98,134,208,98,137,208,97,139,209,96,141,210,95,143,210,95,146,211,94,148,211,93,151,212,93,153,212,93,155,213,92,158,214,92,160,214,92,163,215,92,165,215,92,168,216,92,170,216,92,173,216,92,175,217,93,177,217,93,180,218,94,182,218,95,184,219,96,187,219,97,189,220,98,191,220,99,193,221,100,196,221,101,198,222,102,200,222,103,202,223,105,204,223,106,206,224,108,208,224,109,210,225,111,212,225,112,214,226,114,216,226,115,218,227,117,220,227,119,222,228,121,224,229,122,225,229,124,227,230,126,229,230,128,231,231,129,233,231,131,235,232,133,236,233,135,238,233,137,240,234,138,242,234,140,243,235,142,245,236,144,247,236,146,248,237,148,250,238,150,252,238,152,253,239,154]),\n linear_interpolation: false\n},\n{\n name: \"hot\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(10,0,0) 0%,rgb(13,0,0) 0.781%,rgb(18,0,0) 1.562%,rgb(23,0,0) 2.343%,rgb(29,0,0) 3.125%,rgb(34,0,0) 3.906%,rgb(39,0,0) 4.687%,rgb(44,0,0) 5.468%,rgb(50,0,0) 6.25%,rgb(55,0,0) 7.031%,rgb(60,0,0) 7.812%,rgb(65,0,0) 8.593%,rgb(71,0,0) 9.375%,rgb(76,0,0) 10.15%,rgb(81,0,0) 10.93%,rgb(87,0,0) 11.71%,rgb(92,0,0) 12.5%,rgb(97,0,0) 13.28%,rgb(102,0,0) 14.06%,rgb(108,0,0) 14.84%,rgb(113,0,0) 15.62%,rgb(118,0,0) 16.40%,rgb(123,0,0) 17.18%,rgb(129,0,0) 17.96%,rgb(134,0,0) 18.75%,rgb(139,0,0) 19.53%,rgb(145,0,0) 20.31%,rgb(150,0,0) 21.09%,rgb(155,0,0) 21.87%,rgb(160,0,0) 22.65%,rgb(166,0,0) 23.43%,rgb(171,0,0) 24.21%,rgb(176,0,0) 25%,rgb(181,0,0) 25.78%,rgb(187,0,0) 26.56%,rgb(192,0,0) 27.34%,rgb(197,0,0) 28.12%,rgb(203,0,0) 28.90%,rgb(208,0,0) 29.68%,rgb(213,0,0) 30.46%,rgb(218,0,0) 31.25%,rgb(224,0,0) 32.03%,rgb(229,0,0) 32.81%,rgb(234,0,0) 33.59%,rgb(239,0,0) 34.37%,rgb(245,0,0) 35.15%,rgb(250,0,0) 35.93%,rgb(255,0,0) 36.71%,rgb(255,5,0) 37.5%,rgb(255,11,0) 38.28%,rgb(255,16,0) 39.06%,rgb(255,21,0) 39.84%,rgb(255,27,0) 40.62%,rgb(255,32,0) 41.40%,rgb(255,37,0) 42.18%,rgb(255,42,0) 42.96%,rgb(255,48,0) 43.75%,rgb(255,53,0) 44.53%,rgb(255,58,0) 45.31%,rgb(255,63,0) 46.09%,rgb(255,69,0) 46.87%,rgb(255,74,0) 47.65%,rgb(255,79,0) 48.43%,rgb(255,85,0) 49.21%,rgb(255,90,0) 50%,rgb(255,95,0) 50.78%,rgb(255,100,0) 51.56%,rgb(255,106,0) 52.34%,rgb(255,111,0) 53.12%,rgb(255,116,0) 53.90%,rgb(255,121,0) 54.68%,rgb(255,127,0) 55.46%,rgb(255,132,0) 56.25%,rgb(255,137,0) 57.03%,rgb(255,143,0) 57.81%,rgb(255,148,0) 58.59%,rgb(255,153,0) 59.37%,rgb(255,158,0) 60.15%,rgb(255,164,0) 60.93%,rgb(255,169,0) 61.71%,rgb(255,174,0) 62.5%,rgb(255,179,0) 63.28%,rgb(255,185,0) 64.06%,rgb(255,190,0) 64.84%,rgb(255,195,0) 65.62%,rgb(255,200,0) 66.40%,rgb(255,206,0) 67.18%,rgb(255,211,0) 67.96%,rgb(255,216,0) 68.75%,rgb(255,222,0) 69.53%,rgb(255,227,0) 70.31%,rgb(255,232,0) 71.09%,rgb(255,237,0) 71.87%,rgb(255,243,0) 72.65%,rgb(255,248,0) 73.43%,rgb(255,253,0) 74.21%,rgb(255,255,5) 75%,rgb(255,255,13) 75.78%,rgb(255,255,21) 76.56%,rgb(255,255,29) 77.34%,rgb(255,255,37) 78.12%,rgb(255,255,45) 78.90%,rgb(255,255,53) 79.68%,rgb(255,255,61) 80.46%,rgb(255,255,69) 81.25%,rgb(255,255,77) 82.03%,rgb(255,255,85) 82.81%,rgb(255,255,92) 83.59%,rgb(255,255,100) 84.37%,rgb(255,255,108) 85.15%,rgb(255,255,116) 85.93%,rgb(255,255,124) 86.71%,rgb(255,255,132) 87.5%,rgb(255,255,140) 88.28%,rgb(255,255,148) 89.06%,rgb(255,255,156) 89.84%,rgb(255,255,164) 90.62%,rgb(255,255,171) 91.40%,rgb(255,255,179) 92.18%,rgb(255,255,187) 92.96%,rgb(255,255,195) 93.75%,rgb(255,255,203) 94.53%,rgb(255,255,211) 95.31%,rgb(255,255,219) 96.09%,rgb(255,255,227) 96.87%,rgb(255,255,235) 97.65%,rgb(255,255,243) 98.43%,rgb(255,255,251) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([10,0,0,13,0,0,18,0,0,23,0,0,29,0,0,34,0,0,39,0,0,44,0,0,50,0,0,55,0,0,60,0,0,65,0,0,71,0,0,76,0,0,81,0,0,87,0,0,92,0,0,97,0,0,102,0,0,108,0,0,113,0,0,118,0,0,123,0,0,129,0,0,134,0,0,139,0,0,145,0,0,150,0,0,155,0,0,160,0,0,166,0,0,171,0,0,176,0,0,181,0,0,187,0,0,192,0,0,197,0,0,203,0,0,208,0,0,213,0,0,218,0,0,224,0,0,229,0,0,234,0,0,239,0,0,245,0,0,250,0,0,255,0,0,255,5,0,255,11,0,255,16,0,255,21,0,255,27,0,255,32,0,255,37,0,255,42,0,255,48,0,255,53,0,255,58,0,255,63,0,255,69,0,255,74,0,255,79,0,255,85,0,255,90,0,255,95,0,255,100,0,255,106,0,255,111,0,255,116,0,255,121,0,255,127,0,255,132,0,255,137,0,255,143,0,255,148,0,255,153,0,255,158,0,255,164,0,255,169,0,255,174,0,255,179,0,255,185,0,255,190,0,255,195,0,255,200,0,255,206,0,255,211,0,255,216,0,255,222,0,255,227,0,255,232,0,255,237,0,255,243,0,255,248,0,255,253,0,255,255,5,255,255,13,255,255,21,255,255,29,255,255,37,255,255,45,255,255,53,255,255,61,255,255,69,255,255,77,255,255,85,255,255,92,255,255,100,255,255,108,255,255,116,255,255,124,255,255,132,255,255,140,255,255,148,255,255,156,255,255,164,255,255,171,255,255,179,255,255,187,255,255,195,255,255,203,255,255,211,255,255,219,255,255,227,255,255,235,255,255,243,255,255,251,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"hsv\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,0,0) 0%,rgb(255,5,0) 0.781%,rgb(255,17,0) 1.562%,rgb(255,29,0) 2.343%,rgb(255,41,0) 3.125%,rgb(255,53,0) 3.906%,rgb(255,65,0) 4.687%,rgb(255,77,0) 5.468%,rgb(255,88,0) 6.25%,rgb(255,100,0) 7.031%,rgb(255,112,0) 7.812%,rgb(255,124,0) 8.593%,rgb(255,136,0) 9.375%,rgb(255,148,0) 10.15%,rgb(255,160,0) 10.93%,rgb(255,171,0) 11.71%,rgb(255,183,0) 12.5%,rgb(255,195,0) 13.28%,rgb(255,207,0) 14.06%,rgb(255,219,0) 14.84%,rgb(255,231,0) 15.62%,rgb(253,241,0) 16.40%,rgb(249,249,0) 17.18%,rgb(243,255,0) 17.96%,rgb(231,255,0) 18.75%,rgb(219,255,0) 19.53%,rgb(207,255,0) 20.31%,rgb(195,255,0) 21.09%,rgb(183,255,0) 21.87%,rgb(172,255,0) 22.65%,rgb(160,255,0) 23.43%,rgb(148,255,0) 24.21%,rgb(136,255,0) 25%,rgb(124,255,0) 25.78%,rgb(112,255,0) 26.56%,rgb(100,255,0) 27.34%,rgb(89,255,0) 28.12%,rgb(77,255,0) 28.90%,rgb(65,255,0) 29.68%,rgb(53,255,0) 30.46%,rgb(41,255,0) 31.25%,rgb(29,255,0) 32.03%,rgb(17,255,0) 32.81%,rgb(7,255,1) 33.59%,rgb(3,255,9) 34.37%,rgb(0,255,17) 35.15%,rgb(0,255,29) 35.93%,rgb(0,255,41) 36.71%,rgb(0,255,53) 37.5%,rgb(0,255,65) 38.28%,rgb(0,255,77) 39.06%,rgb(0,255,88) 39.84%,rgb(0,255,100) 40.62%,rgb(0,255,112) 41.40%,rgb(0,255,124) 42.18%,rgb(0,255,136) 42.96%,rgb(0,255,148) 43.75%,rgb(0,255,160) 44.53%,rgb(0,255,171) 45.31%,rgb(0,255,183) 46.09%,rgb(0,255,195) 46.87%,rgb(0,255,207) 47.65%,rgb(0,255,219) 48.43%,rgb(0,255,231) 49.21%,rgb(0,255,243) 50%,rgb(0,255,254) 50.78%,rgb(0,243,255) 51.56%,rgb(0,231,255) 52.34%,rgb(0,219,255) 53.12%,rgb(0,207,255) 53.90%,rgb(0,195,255) 54.68%,rgb(0,183,255) 55.46%,rgb(0,172,255) 56.25%,rgb(0,160,255) 57.03%,rgb(0,148,255) 57.81%,rgb(0,136,255) 58.59%,rgb(0,124,255) 59.37%,rgb(0,112,255) 60.15%,rgb(0,100,255) 60.93%,rgb(0,89,255) 61.71%,rgb(0,77,255) 62.5%,rgb(0,65,255) 63.28%,rgb(0,53,255) 64.06%,rgb(0,41,255) 64.84%,rgb(0,29,255) 65.62%,rgb(0,17,255) 66.40%,rgb(3,9,255) 67.18%,rgb(7,1,255) 67.96%,rgb(17,0,255) 68.75%,rgb(29,0,255) 69.53%,rgb(41,0,255) 70.31%,rgb(53,0,255) 71.09%,rgb(65,0,255) 71.87%,rgb(76,0,255) 72.65%,rgb(88,0,255) 73.43%,rgb(100,0,255) 74.21%,rgb(112,0,255) 75%,rgb(124,0,255) 75.78%,rgb(136,0,255) 76.56%,rgb(148,0,255) 77.34%,rgb(159,0,255) 78.12%,rgb(171,0,255) 78.90%,rgb(183,0,255) 79.68%,rgb(195,0,255) 80.46%,rgb(207,0,255) 81.25%,rgb(219,0,255) 82.03%,rgb(231,0,255) 82.81%,rgb(242,0,255) 83.59%,rgb(249,0,249) 84.37%,rgb(253,0,241) 85.15%,rgb(255,0,231) 85.93%,rgb(255,0,219) 86.71%,rgb(255,0,207) 87.5%,rgb(255,0,195) 88.28%,rgb(255,0,184) 89.06%,rgb(255,0,172) 89.84%,rgb(255,0,160) 90.62%,rgb(255,0,148) 91.40%,rgb(255,0,136) 92.18%,rgb(255,0,124) 92.96%,rgb(255,0,112) 93.75%,rgb(255,0,100) 94.53%,rgb(255,0,89) 95.31%,rgb(255,0,77) 96.09%,rgb(255,0,65) 96.87%,rgb(255,0,53) 97.65%,rgb(255,0,41) 98.43%,rgb(255,0,29) 99.21%,rgb(255,0,23) 100%\",\n tex_buffer: new Uint8Array([255,0,0,255,5,0,255,17,0,255,29,0,255,41,0,255,53,0,255,65,0,255,77,0,255,88,0,255,100,0,255,112,0,255,124,0,255,136,0,255,148,0,255,160,0,255,171,0,255,183,0,255,195,0,255,207,0,255,219,0,255,231,0,253,241,0,249,249,0,243,255,0,231,255,0,219,255,0,207,255,0,195,255,0,183,255,0,172,255,0,160,255,0,148,255,0,136,255,0,124,255,0,112,255,0,100,255,0,89,255,0,77,255,0,65,255,0,53,255,0,41,255,0,29,255,0,17,255,0,7,255,1,3,255,9,0,255,17,0,255,29,0,255,41,0,255,53,0,255,65,0,255,77,0,255,88,0,255,100,0,255,112,0,255,124,0,255,136,0,255,148,0,255,160,0,255,171,0,255,183,0,255,195,0,255,207,0,255,219,0,255,231,0,255,243,0,255,254,0,243,255,0,231,255,0,219,255,0,207,255,0,195,255,0,183,255,0,172,255,0,160,255,0,148,255,0,136,255,0,124,255,0,112,255,0,100,255,0,89,255,0,77,255,0,65,255,0,53,255,0,41,255,0,29,255,0,17,255,3,9,255,7,1,255,17,0,255,29,0,255,41,0,255,53,0,255,65,0,255,76,0,255,88,0,255,100,0,255,112,0,255,124,0,255,136,0,255,148,0,255,159,0,255,171,0,255,183,0,255,195,0,255,207,0,255,219,0,255,231,0,255,242,0,255,249,0,249,253,0,241,255,0,231,255,0,219,255,0,207,255,0,195,255,0,184,255,0,172,255,0,160,255,0,148,255,0,136,255,0,124,255,0,112,255,0,100,255,0,89,255,0,77,255,0,65,255,0,53,255,0,41,255,0,29,255,0,23]),\n linear_interpolation: true\n},\n{\n name: \"ice\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(4,6,19) 0%,rgb(4,6,19) 0.390%,rgb(5,6,20) 0.390%,rgb(5,6,20) 0.781%,rgb(5,7,21) 0.781%,rgb(5,7,21) 1.171%,rgb(6,8,23) 1.171%,rgb(6,8,23) 1.562%,rgb(7,9,24) 1.562%,rgb(7,9,24) 1.953%,rgb(8,10,26) 1.953%,rgb(8,10,26) 2.343%,rgb(9,11,27) 2.343%,rgb(9,11,27) 2.734%,rgb(10,12,29) 2.734%,rgb(10,12,29) 3.125%,rgb(11,13,30) 3.125%,rgb(11,13,30) 3.515%,rgb(12,13,31) 3.515%,rgb(12,13,31) 3.906%,rgb(13,14,33) 3.906%,rgb(13,14,33) 4.296%,rgb(14,15,34) 4.296%,rgb(14,15,34) 4.687%,rgb(15,16,36) 4.687%,rgb(15,16,36) 5.078%,rgb(16,17,37) 5.078%,rgb(16,17,37) 5.468%,rgb(17,18,39) 5.468%,rgb(17,18,39) 5.859%,rgb(18,19,40) 5.859%,rgb(18,19,40) 6.25%,rgb(19,19,42) 6.25%,rgb(19,19,42) 6.640%,rgb(20,20,43) 6.640%,rgb(20,20,43) 7.031%,rgb(21,21,44) 7.031%,rgb(21,21,44) 7.421%,rgb(22,22,46) 7.421%,rgb(22,22,46) 7.812%,rgb(23,23,47) 7.812%,rgb(23,23,47) 8.203%,rgb(23,24,49) 8.203%,rgb(23,24,49) 8.593%,rgb(24,24,50) 8.593%,rgb(24,24,50) 8.984%,rgb(25,25,52) 8.984%,rgb(25,25,52) 9.375%,rgb(26,26,53) 9.375%,rgb(26,26,53) 9.765%,rgb(27,27,55) 9.765%,rgb(27,27,55) 10.15%,rgb(28,28,56) 10.15%,rgb(28,28,56) 10.54%,rgb(29,28,58) 10.54%,rgb(29,28,58) 10.93%,rgb(30,29,59) 10.93%,rgb(30,29,59) 11.32%,rgb(31,30,61) 11.32%,rgb(31,30,61) 11.71%,rgb(31,31,62) 11.71%,rgb(31,31,62) 12.10%,rgb(32,31,64) 12.10%,rgb(32,31,64) 12.5%,rgb(33,32,65) 12.5%,rgb(33,32,65) 12.89%,rgb(34,33,67) 12.89%,rgb(34,33,67) 13.28%,rgb(35,34,68) 13.28%,rgb(35,34,68) 13.67%,rgb(36,34,70) 13.67%,rgb(36,34,70) 14.06%,rgb(37,35,71) 14.06%,rgb(37,35,71) 14.45%,rgb(37,36,73) 14.45%,rgb(37,36,73) 14.84%,rgb(38,37,74) 14.84%,rgb(38,37,74) 15.23%,rgb(39,37,76) 15.23%,rgb(39,37,76) 15.62%,rgb(40,38,78) 15.62%,rgb(40,38,78) 16.01%,rgb(41,39,79) 16.01%,rgb(41,39,79) 16.40%,rgb(41,40,81) 16.40%,rgb(41,40,81) 16.79%,rgb(42,40,82) 16.79%,rgb(42,40,82) 17.18%,rgb(43,41,84) 17.18%,rgb(43,41,84) 17.57%,rgb(44,42,85) 17.57%,rgb(44,42,85) 17.96%,rgb(44,43,87) 17.96%,rgb(44,43,87) 18.35%,rgb(45,43,89) 18.35%,rgb(45,43,89) 18.75%,rgb(46,44,90) 18.75%,rgb(46,44,90) 19.14%,rgb(47,45,92) 19.14%,rgb(47,45,92) 19.53%,rgb(47,46,94) 19.53%,rgb(47,46,94) 19.92%,rgb(48,47,95) 19.92%,rgb(48,47,95) 20.31%,rgb(49,47,97) 20.31%,rgb(49,47,97) 20.70%,rgb(49,48,98) 20.70%,rgb(49,48,98) 21.09%,rgb(50,49,100) 21.09%,rgb(50,49,100) 21.48%,rgb(51,50,102) 21.48%,rgb(51,50,102) 21.87%,rgb(51,50,103) 21.87%,rgb(51,50,103) 22.26%,rgb(52,51,105) 22.26%,rgb(52,51,105) 22.65%,rgb(53,52,107) 22.65%,rgb(53,52,107) 23.04%,rgb(53,53,108) 23.04%,rgb(53,53,108) 23.43%,rgb(54,53,110) 23.43%,rgb(54,53,110) 23.82%,rgb(54,54,112) 23.82%,rgb(54,54,112) 24.21%,rgb(55,55,113) 24.21%,rgb(55,55,113) 24.60%,rgb(56,56,115) 24.60%,rgb(56,56,115) 25%,rgb(56,57,117) 25%,rgb(56,57,117) 25.39%,rgb(57,57,118) 25.39%,rgb(57,57,118) 25.78%,rgb(57,58,120) 25.78%,rgb(57,58,120) 26.17%,rgb(58,59,122) 26.17%,rgb(58,59,122) 26.56%,rgb(58,60,123) 26.56%,rgb(58,60,123) 26.95%,rgb(58,61,125) 26.95%,rgb(58,61,125) 27.34%,rgb(59,62,127) 27.34%,rgb(59,62,127) 27.73%,rgb(59,62,128) 27.73%,rgb(59,62,128) 28.12%,rgb(60,63,130) 28.12%,rgb(60,63,130) 28.51%,rgb(60,64,132) 28.51%,rgb(60,64,132) 28.90%,rgb(60,65,133) 28.90%,rgb(60,65,133) 29.29%,rgb(61,66,135) 29.29%,rgb(61,66,135) 29.68%,rgb(61,67,137) 29.68%,rgb(61,67,137) 30.07%,rgb(61,68,138) 30.07%,rgb(61,68,138) 30.46%,rgb(62,69,140) 30.46%,rgb(62,69,140) 30.85%,rgb(62,70,141) 30.85%,rgb(62,70,141) 31.25%,rgb(62,71,143) 31.25%,rgb(62,71,143) 31.64%,rgb(62,72,144) 31.64%,rgb(62,72,144) 32.03%,rgb(62,73,146) 32.03%,rgb(62,73,146) 32.42%,rgb(62,73,147) 32.42%,rgb(62,73,147) 32.81%,rgb(63,74,149) 32.81%,rgb(63,74,149) 33.20%,rgb(63,75,150) 33.20%,rgb(63,75,150) 33.59%,rgb(63,76,151) 33.59%,rgb(63,76,151) 33.98%,rgb(63,78,153) 33.98%,rgb(63,78,153) 34.37%,rgb(63,79,154) 34.37%,rgb(63,79,154) 34.76%,rgb(63,80,155) 34.76%,rgb(63,80,155) 35.15%,rgb(63,81,157) 35.15%,rgb(63,81,157) 35.54%,rgb(63,82,158) 35.54%,rgb(63,82,158) 35.93%,rgb(63,83,159) 35.93%,rgb(63,83,159) 36.32%,rgb(63,84,160) 36.32%,rgb(63,84,160) 36.71%,rgb(63,85,161) 36.71%,rgb(63,85,161) 37.10%,rgb(63,86,162) 37.10%,rgb(63,86,162) 37.5%,rgb(63,87,163) 37.5%,rgb(63,87,163) 37.89%,rgb(63,88,164) 37.89%,rgb(63,88,164) 38.28%,rgb(63,89,165) 38.28%,rgb(63,89,165) 38.67%,rgb(62,90,166) 38.67%,rgb(62,90,166) 39.06%,rgb(62,92,167) 39.06%,rgb(62,92,167) 39.45%,rgb(62,93,168) 39.45%,rgb(62,93,168) 39.84%,rgb(62,94,169) 39.84%,rgb(62,94,169) 40.23%,rgb(62,95,170) 40.23%,rgb(62,95,170) 40.62%,rgb(62,96,171) 40.62%,rgb(62,96,171) 41.01%,rgb(62,97,171) 41.01%,rgb(62,97,171) 41.40%,rgb(62,98,172) 41.40%,rgb(62,98,172) 41.79%,rgb(62,99,173) 41.79%,rgb(62,99,173) 42.18%,rgb(62,101,173) 42.18%,rgb(62,101,173) 42.57%,rgb(62,102,174) 42.57%,rgb(62,102,174) 42.96%,rgb(62,103,175) 42.96%,rgb(62,103,175) 43.35%,rgb(62,104,175) 43.35%,rgb(62,104,175) 43.75%,rgb(62,105,176) 43.75%,rgb(62,105,176) 44.14%,rgb(62,106,176) 44.14%,rgb(62,106,176) 44.53%,rgb(63,107,177) 44.53%,rgb(63,107,177) 44.92%,rgb(63,108,178) 44.92%,rgb(63,108,178) 45.31%,rgb(63,110,178) 45.31%,rgb(63,110,178) 45.70%,rgb(63,111,179) 45.70%,rgb(63,111,179) 46.09%,rgb(63,112,179) 46.09%,rgb(63,112,179) 46.48%,rgb(63,113,180) 46.48%,rgb(63,113,180) 46.87%,rgb(64,114,180) 46.87%,rgb(64,114,180) 47.26%,rgb(64,115,180) 47.26%,rgb(64,115,180) 47.65%,rgb(64,116,181) 47.65%,rgb(64,116,181) 48.04%,rgb(64,117,181) 48.04%,rgb(64,117,181) 48.43%,rgb(65,118,182) 48.43%,rgb(65,118,182) 48.82%,rgb(65,120,182) 48.82%,rgb(65,120,182) 49.21%,rgb(66,121,183) 49.21%,rgb(66,121,183) 49.60%,rgb(66,122,183) 49.60%,rgb(66,122,183) 50%,rgb(66,123,183) 50%,rgb(66,123,183) 50.39%,rgb(67,124,184) 50.39%,rgb(67,124,184) 50.78%,rgb(67,125,184) 50.78%,rgb(67,125,184) 51.17%,rgb(68,126,185) 51.17%,rgb(68,126,185) 51.56%,rgb(68,127,185) 51.56%,rgb(68,127,185) 51.95%,rgb(69,128,185) 51.95%,rgb(69,128,185) 52.34%,rgb(69,129,186) 52.34%,rgb(69,129,186) 52.73%,rgb(70,130,186) 52.73%,rgb(70,130,186) 53.12%,rgb(70,132,187) 53.12%,rgb(70,132,187) 53.51%,rgb(71,133,187) 53.51%,rgb(71,133,187) 53.90%,rgb(71,134,187) 53.90%,rgb(71,134,187) 54.29%,rgb(72,135,188) 54.29%,rgb(72,135,188) 54.68%,rgb(73,136,188) 54.68%,rgb(73,136,188) 55.07%,rgb(73,137,188) 55.07%,rgb(73,137,188) 55.46%,rgb(74,138,189) 55.46%,rgb(74,138,189) 55.85%,rgb(75,139,189) 55.85%,rgb(75,139,189) 56.25%,rgb(75,140,189) 56.25%,rgb(75,140,189) 56.64%,rgb(76,141,190) 56.64%,rgb(76,141,190) 57.03%,rgb(77,142,190) 57.03%,rgb(77,142,190) 57.42%,rgb(78,143,191) 57.42%,rgb(78,143,191) 57.81%,rgb(78,144,191) 57.81%,rgb(78,144,191) 58.20%,rgb(79,145,191) 58.20%,rgb(79,145,191) 58.59%,rgb(80,146,192) 58.59%,rgb(80,146,192) 58.98%,rgb(81,148,192) 58.98%,rgb(81,148,192) 59.37%,rgb(81,149,192) 59.37%,rgb(81,149,192) 59.76%,rgb(82,150,193) 59.76%,rgb(82,150,193) 60.15%,rgb(83,151,193) 60.15%,rgb(83,151,193) 60.54%,rgb(84,152,194) 60.54%,rgb(84,152,194) 60.93%,rgb(85,153,194) 60.93%,rgb(85,153,194) 61.32%,rgb(85,154,194) 61.32%,rgb(85,154,194) 61.71%,rgb(86,155,195) 61.71%,rgb(86,155,195) 62.10%,rgb(87,156,195) 62.10%,rgb(87,156,195) 62.5%,rgb(88,157,195) 62.5%,rgb(88,157,195) 62.89%,rgb(89,158,196) 62.89%,rgb(89,158,196) 63.28%,rgb(90,159,196) 63.28%,rgb(90,159,196) 63.67%,rgb(91,160,197) 63.67%,rgb(91,160,197) 64.06%,rgb(92,161,197) 64.06%,rgb(92,161,197) 64.45%,rgb(93,162,197) 64.45%,rgb(93,162,197) 64.84%,rgb(94,163,198) 64.84%,rgb(94,163,198) 65.23%,rgb(95,164,198) 65.23%,rgb(95,164,198) 65.62%,rgb(95,166,199) 65.62%,rgb(95,166,199) 66.01%,rgb(96,167,199) 66.01%,rgb(96,167,199) 66.40%,rgb(97,168,199) 66.40%,rgb(97,168,199) 66.79%,rgb(98,169,200) 66.79%,rgb(98,169,200) 67.18%,rgb(99,170,200) 67.18%,rgb(99,170,200) 67.57%,rgb(100,171,201) 67.57%,rgb(100,171,201) 67.96%,rgb(101,172,201) 67.96%,rgb(101,172,201) 68.35%,rgb(103,173,201) 68.35%,rgb(103,173,201) 68.75%,rgb(104,174,202) 68.75%,rgb(104,174,202) 69.14%,rgb(105,175,202) 69.14%,rgb(105,175,202) 69.53%,rgb(106,176,203) 69.53%,rgb(106,176,203) 69.92%,rgb(107,177,203) 69.92%,rgb(107,177,203) 70.31%,rgb(108,178,203) 70.31%,rgb(108,178,203) 70.70%,rgb(109,179,204) 70.70%,rgb(109,179,204) 71.09%,rgb(110,180,204) 71.09%,rgb(110,180,204) 71.48%,rgb(111,181,205) 71.48%,rgb(111,181,205) 71.87%,rgb(113,182,205) 71.87%,rgb(113,182,205) 72.26%,rgb(114,184,206) 72.26%,rgb(114,184,206) 72.65%,rgb(115,185,206) 72.65%,rgb(115,185,206) 73.04%,rgb(116,186,206) 73.04%,rgb(116,186,206) 73.43%,rgb(117,187,207) 73.43%,rgb(117,187,207) 73.82%,rgb(119,188,207) 73.82%,rgb(119,188,207) 74.21%,rgb(120,189,208) 74.21%,rgb(120,189,208) 74.60%,rgb(121,190,208) 74.60%,rgb(121,190,208) 75%,rgb(123,191,208) 75%,rgb(123,191,208) 75.39%,rgb(124,192,209) 75.39%,rgb(124,192,209) 75.78%,rgb(125,193,209) 75.78%,rgb(125,193,209) 76.17%,rgb(127,194,210) 76.17%,rgb(127,194,210) 76.56%,rgb(128,195,210) 76.56%,rgb(128,195,210) 76.95%,rgb(130,196,211) 76.95%,rgb(130,196,211) 77.34%,rgb(131,197,211) 77.34%,rgb(131,197,211) 77.73%,rgb(133,198,211) 77.73%,rgb(133,198,211) 78.12%,rgb(134,199,212) 78.12%,rgb(134,199,212) 78.51%,rgb(136,200,212) 78.51%,rgb(136,200,212) 78.90%,rgb(137,201,213) 78.90%,rgb(137,201,213) 79.29%,rgb(139,202,213) 79.29%,rgb(139,202,213) 79.68%,rgb(140,203,214) 79.68%,rgb(140,203,214) 80.07%,rgb(142,204,214) 80.07%,rgb(142,204,214) 80.46%,rgb(144,205,215) 80.46%,rgb(144,205,215) 80.85%,rgb(146,206,215) 80.85%,rgb(146,206,215) 81.25%,rgb(147,207,216) 81.25%,rgb(147,207,216) 81.64%,rgb(149,208,216) 81.64%,rgb(149,208,216) 82.03%,rgb(151,209,217) 82.03%,rgb(151,209,217) 82.42%,rgb(153,210,217) 82.42%,rgb(153,210,217) 82.81%,rgb(154,211,218) 82.81%,rgb(154,211,218) 83.20%,rgb(156,212,218) 83.20%,rgb(156,212,218) 83.59%,rgb(158,213,219) 83.59%,rgb(158,213,219) 83.98%,rgb(160,214,220) 83.98%,rgb(160,214,220) 84.37%,rgb(162,214,220) 84.37%,rgb(162,214,220) 84.76%,rgb(164,215,221) 84.76%,rgb(164,215,221) 85.15%,rgb(166,216,222) 85.15%,rgb(166,216,222) 85.54%,rgb(168,217,222) 85.54%,rgb(168,217,222) 85.93%,rgb(169,218,223) 85.93%,rgb(169,218,223) 86.32%,rgb(171,219,224) 86.32%,rgb(171,219,224) 86.71%,rgb(173,220,224) 86.71%,rgb(173,220,224) 87.10%,rgb(175,221,225) 87.10%,rgb(175,221,225) 87.5%,rgb(177,222,226) 87.5%,rgb(177,222,226) 87.89%,rgb(179,223,227) 87.89%,rgb(179,223,227) 88.28%,rgb(181,224,227) 88.28%,rgb(181,224,227) 88.67%,rgb(183,225,228) 88.67%,rgb(183,225,228) 89.06%,rgb(185,226,229) 89.06%,rgb(185,226,229) 89.45%,rgb(186,227,230) 89.45%,rgb(186,227,230) 89.84%,rgb(188,228,231) 89.84%,rgb(188,228,231) 90.23%,rgb(190,229,231) 90.23%,rgb(190,229,231) 90.62%,rgb(192,230,232) 90.62%,rgb(192,230,232) 91.01%,rgb(194,230,233) 91.01%,rgb(194,230,233) 91.40%,rgb(196,231,234) 91.40%,rgb(196,231,234) 91.79%,rgb(198,232,235) 91.79%,rgb(198,232,235) 92.18%,rgb(200,233,236) 92.18%,rgb(200,233,236) 92.57%,rgb(201,234,237) 92.57%,rgb(201,234,237) 92.96%,rgb(203,235,238) 92.96%,rgb(203,235,238) 93.35%,rgb(205,236,239) 93.35%,rgb(205,236,239) 93.75%,rgb(207,237,239) 93.75%,rgb(207,237,239) 94.14%,rgb(209,238,240) 94.14%,rgb(209,238,240) 94.53%,rgb(211,239,241) 94.53%,rgb(211,239,241) 94.92%,rgb(213,240,242) 94.92%,rgb(213,240,242) 95.31%,rgb(214,241,243) 95.31%,rgb(214,241,243) 95.70%,rgb(216,242,244) 95.70%,rgb(216,242,244) 96.09%,rgb(218,243,245) 96.09%,rgb(218,243,245) 96.48%,rgb(220,244,246) 96.48%,rgb(220,244,246) 96.87%,rgb(222,245,247) 96.87%,rgb(222,245,247) 97.26%,rgb(224,246,248) 97.26%,rgb(224,246,248) 97.65%,rgb(225,247,249) 97.65%,rgb(225,247,249) 98.04%,rgb(227,249,250) 98.04%,rgb(227,249,250) 98.43%,rgb(229,250,251) 98.43%,rgb(229,250,251) 98.82%,rgb(231,251,251) 98.82%,rgb(231,251,251) 99.21%,rgb(232,252,252) 99.21%,rgb(232,252,252) 99.60%,rgb(234,253,253) 99.60%,rgb(234,253,253) 100%\",\n tex_buffer: new Uint8Array([4,6,19,5,6,20,5,7,21,6,8,23,7,9,24,8,10,26,9,11,27,10,12,29,11,13,30,12,13,31,13,14,33,14,15,34,15,16,36,16,17,37,17,18,39,18,19,40,19,19,42,20,20,43,21,21,44,22,22,46,23,23,47,23,24,49,24,24,50,25,25,52,26,26,53,27,27,55,28,28,56,29,28,58,30,29,59,31,30,61,31,31,62,32,31,64,33,32,65,34,33,67,35,34,68,36,34,70,37,35,71,37,36,73,38,37,74,39,37,76,40,38,78,41,39,79,41,40,81,42,40,82,43,41,84,44,42,85,44,43,87,45,43,89,46,44,90,47,45,92,47,46,94,48,47,95,49,47,97,49,48,98,50,49,100,51,50,102,51,50,103,52,51,105,53,52,107,53,53,108,54,53,110,54,54,112,55,55,113,56,56,115,56,57,117,57,57,118,57,58,120,58,59,122,58,60,123,58,61,125,59,62,127,59,62,128,60,63,130,60,64,132,60,65,133,61,66,135,61,67,137,61,68,138,62,69,140,62,70,141,62,71,143,62,72,144,62,73,146,62,73,147,63,74,149,63,75,150,63,76,151,63,78,153,63,79,154,63,80,155,63,81,157,63,82,158,63,83,159,63,84,160,63,85,161,63,86,162,63,87,163,63,88,164,63,89,165,62,90,166,62,92,167,62,93,168,62,94,169,62,95,170,62,96,171,62,97,171,62,98,172,62,99,173,62,101,173,62,102,174,62,103,175,62,104,175,62,105,176,62,106,176,63,107,177,63,108,178,63,110,178,63,111,179,63,112,179,63,113,180,64,114,180,64,115,180,64,116,181,64,117,181,65,118,182,65,120,182,66,121,183,66,122,183,66,123,183,67,124,184,67,125,184,68,126,185,68,127,185,69,128,185,69,129,186,70,130,186,70,132,187,71,133,187,71,134,187,72,135,188,73,136,188,73,137,188,74,138,189,75,139,189,75,140,189,76,141,190,77,142,190,78,143,191,78,144,191,79,145,191,80,146,192,81,148,192,81,149,192,82,150,193,83,151,193,84,152,194,85,153,194,85,154,194,86,155,195,87,156,195,88,157,195,89,158,196,90,159,196,91,160,197,92,161,197,93,162,197,94,163,198,95,164,198,95,166,199,96,167,199,97,168,199,98,169,200,99,170,200,100,171,201,101,172,201,103,173,201,104,174,202,105,175,202,106,176,203,107,177,203,108,178,203,109,179,204,110,180,204,111,181,205,113,182,205,114,184,206,115,185,206,116,186,206,117,187,207,119,188,207,120,189,208,121,190,208,123,191,208,124,192,209,125,193,209,127,194,210,128,195,210,130,196,211,131,197,211,133,198,211,134,199,212,136,200,212,137,201,213,139,202,213,140,203,214,142,204,214,144,205,215,146,206,215,147,207,216,149,208,216,151,209,217,153,210,217,154,211,218,156,212,218,158,213,219,160,214,220,162,214,220,164,215,221,166,216,222,168,217,222,169,218,223,171,219,224,173,220,224,175,221,225,177,222,226,179,223,227,181,224,227,183,225,228,185,226,229,186,227,230,188,228,231,190,229,231,192,230,232,194,230,233,196,231,234,198,232,235,200,233,236,201,234,237,203,235,238,205,236,239,207,237,239,209,238,240,211,239,241,213,240,242,214,241,243,216,242,244,218,243,245,220,244,246,222,245,247,224,246,248,225,247,249,227,249,250,229,250,251,231,251,251,232,252,252,234,253,253]),\n linear_interpolation: false\n},\n{\n name: \"inferno\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,3) 0%,rgb(0,0,4) 0.781%,rgb(1,0,7) 1.562%,rgb(1,1,11) 2.343%,rgb(2,2,16) 3.125%,rgb(4,3,20) 3.906%,rgb(5,4,24) 4.687%,rgb(7,5,29) 5.468%,rgb(9,6,33) 6.25%,rgb(11,7,38) 7.031%,rgb(14,8,42) 7.812%,rgb(16,9,47) 8.593%,rgb(19,10,52) 9.375%,rgb(22,11,57) 10.15%,rgb(25,11,62) 10.93%,rgb(28,12,67) 11.71%,rgb(31,12,71) 12.5%,rgb(34,11,76) 13.28%,rgb(38,11,80) 14.06%,rgb(41,11,84) 14.84%,rgb(45,10,88) 15.62%,rgb(48,10,92) 16.40%,rgb(52,9,95) 17.18%,rgb(55,9,97) 17.96%,rgb(59,9,100) 18.75%,rgb(62,9,102) 19.53%,rgb(65,9,103) 20.31%,rgb(69,10,105) 21.09%,rgb(72,11,106) 21.87%,rgb(75,12,107) 22.65%,rgb(79,13,108) 23.43%,rgb(82,14,108) 24.21%,rgb(85,15,109) 25%,rgb(88,16,109) 25.78%,rgb(91,17,110) 26.56%,rgb(95,18,110) 27.34%,rgb(98,20,110) 28.12%,rgb(101,21,110) 28.90%,rgb(104,22,110) 29.68%,rgb(107,23,110) 30.46%,rgb(110,24,110) 31.25%,rgb(114,25,109) 32.03%,rgb(117,27,109) 32.81%,rgb(120,28,109) 33.59%,rgb(123,29,108) 34.37%,rgb(126,30,108) 35.15%,rgb(129,31,107) 35.93%,rgb(133,32,106) 36.71%,rgb(136,33,106) 37.5%,rgb(139,34,105) 38.28%,rgb(142,36,104) 39.06%,rgb(145,37,103) 39.84%,rgb(149,38,102) 40.62%,rgb(152,39,101) 41.40%,rgb(155,40,100) 42.18%,rgb(158,41,99) 42.96%,rgb(161,43,97) 43.75%,rgb(164,44,96) 44.53%,rgb(167,45,95) 45.31%,rgb(171,46,93) 46.09%,rgb(174,48,91) 46.87%,rgb(177,49,90) 47.65%,rgb(180,51,88) 48.43%,rgb(183,52,86) 49.21%,rgb(187,55,84) 50%,rgb(190,56,82) 50.78%,rgb(193,58,80) 51.56%,rgb(196,60,78) 52.34%,rgb(199,62,76) 53.12%,rgb(201,63,74) 53.90%,rgb(204,65,72) 54.68%,rgb(207,68,70) 55.46%,rgb(209,70,67) 56.25%,rgb(212,72,65) 57.03%,rgb(214,74,63) 57.81%,rgb(217,77,61) 58.59%,rgb(219,79,58) 59.37%,rgb(221,82,56) 60.15%,rgb(223,84,54) 60.93%,rgb(226,87,51) 61.71%,rgb(228,90,49) 62.5%,rgb(230,92,46) 63.28%,rgb(231,95,44) 64.06%,rgb(233,98,42) 64.84%,rgb(235,101,39) 65.62%,rgb(237,104,37) 66.40%,rgb(238,108,34) 67.18%,rgb(240,111,31) 67.96%,rgb(241,114,29) 68.75%,rgb(242,117,26) 69.53%,rgb(243,121,24) 70.31%,rgb(245,124,21) 71.09%,rgb(246,128,18) 71.87%,rgb(247,131,16) 72.65%,rgb(248,135,13) 73.43%,rgb(248,138,11) 74.21%,rgb(249,142,8) 75%,rgb(250,145,7) 75.78%,rgb(250,149,6) 76.56%,rgb(251,153,6) 77.34%,rgb(251,157,6) 78.12%,rgb(251,160,7) 78.90%,rgb(251,164,10) 79.68%,rgb(251,168,13) 80.46%,rgb(251,172,16) 81.25%,rgb(251,176,20) 82.03%,rgb(251,179,24) 82.81%,rgb(251,183,28) 83.59%,rgb(250,187,33) 84.37%,rgb(250,191,37) 85.15%,rgb(249,195,42) 85.93%,rgb(249,199,47) 86.71%,rgb(248,203,52) 87.5%,rgb(247,207,58) 88.28%,rgb(246,211,63) 89.06%,rgb(245,215,69) 89.84%,rgb(244,219,75) 90.62%,rgb(243,222,82) 91.40%,rgb(243,226,89) 92.18%,rgb(242,230,96) 92.96%,rgb(241,233,104) 93.75%,rgb(241,237,112) 94.53%,rgb(241,240,121) 95.31%,rgb(242,243,129) 96.09%,rgb(243,246,137) 96.87%,rgb(245,248,145) 97.65%,rgb(247,251,153) 98.43%,rgb(250,253,160) 99.21%,rgb(252,254,164) 100%\",\n tex_buffer: new Uint8Array([0,0,3,0,0,4,1,0,7,1,1,11,2,2,16,4,3,20,5,4,24,7,5,29,9,6,33,11,7,38,14,8,42,16,9,47,19,10,52,22,11,57,25,11,62,28,12,67,31,12,71,34,11,76,38,11,80,41,11,84,45,10,88,48,10,92,52,9,95,55,9,97,59,9,100,62,9,102,65,9,103,69,10,105,72,11,106,75,12,107,79,13,108,82,14,108,85,15,109,88,16,109,91,17,110,95,18,110,98,20,110,101,21,110,104,22,110,107,23,110,110,24,110,114,25,109,117,27,109,120,28,109,123,29,108,126,30,108,129,31,107,133,32,106,136,33,106,139,34,105,142,36,104,145,37,103,149,38,102,152,39,101,155,40,100,158,41,99,161,43,97,164,44,96,167,45,95,171,46,93,174,48,91,177,49,90,180,51,88,183,52,86,187,55,84,190,56,82,193,58,80,196,60,78,199,62,76,201,63,74,204,65,72,207,68,70,209,70,67,212,72,65,214,74,63,217,77,61,219,79,58,221,82,56,223,84,54,226,87,51,228,90,49,230,92,46,231,95,44,233,98,42,235,101,39,237,104,37,238,108,34,240,111,31,241,114,29,242,117,26,243,121,24,245,124,21,246,128,18,247,131,16,248,135,13,248,138,11,249,142,8,250,145,7,250,149,6,251,153,6,251,157,6,251,160,7,251,164,10,251,168,13,251,172,16,251,176,20,251,179,24,251,183,28,250,187,33,250,191,37,249,195,42,249,199,47,248,203,52,247,207,58,246,211,63,245,215,69,244,219,75,243,222,82,243,226,89,242,230,96,241,233,104,241,237,112,241,240,121,242,243,129,243,246,137,245,248,145,247,251,153,250,253,160,252,254,164]),\n linear_interpolation: true\n},\n{\n name: \"jet\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,127) 0%,rgb(0,0,132) 0.781%,rgb(0,0,141) 1.562%,rgb(0,0,150) 2.343%,rgb(0,0,159) 3.125%,rgb(0,0,168) 3.906%,rgb(0,0,177) 4.687%,rgb(0,0,186) 5.468%,rgb(0,0,195) 6.25%,rgb(0,0,205) 7.031%,rgb(0,0,214) 7.812%,rgb(0,0,223) 8.593%,rgb(0,0,232) 9.375%,rgb(0,0,241) 10.15%,rgb(0,0,250) 10.93%,rgb(0,0,255) 11.71%,rgb(0,0,255) 12.5%,rgb(0,0,255) 12.5%,rgb(0,5,255) 13.28%,rgb(0,13,255) 14.06%,rgb(0,21,255) 14.84%,rgb(0,29,255) 15.62%,rgb(0,37,255) 16.40%,rgb(0,45,255) 17.18%,rgb(0,53,255) 17.96%,rgb(0,61,255) 18.75%,rgb(0,69,255) 19.53%,rgb(0,77,255) 20.31%,rgb(0,85,255) 21.09%,rgb(0,93,255) 21.87%,rgb(0,101,255) 22.65%,rgb(0,109,255) 23.43%,rgb(0,117,255) 24.21%,rgb(0,125,255) 25%,rgb(0,133,255) 25.78%,rgb(0,141,255) 26.56%,rgb(0,149,255) 27.34%,rgb(0,157,255) 28.12%,rgb(0,165,255) 28.90%,rgb(0,173,255) 29.68%,rgb(0,181,255) 30.46%,rgb(0,189,255) 31.25%,rgb(0,197,255) 32.03%,rgb(0,205,255) 32.81%,rgb(0,213,255) 33.59%,rgb(0,221,252) 34.37%,rgb(0,229,246) 35.15%,rgb(6,237,239) 35.93%,rgb(13,245,233) 36.71%,rgb(19,253,227) 37.5%,rgb(26,255,220) 38.28%,rgb(32,255,214) 39.06%,rgb(39,255,207) 39.84%,rgb(45,255,201) 40.62%,rgb(52,255,194) 41.40%,rgb(58,255,188) 42.18%,rgb(65,255,181) 42.96%,rgb(71,255,175) 43.75%,rgb(78,255,168) 44.53%,rgb(84,255,162) 45.31%,rgb(91,255,155) 46.09%,rgb(97,255,149) 46.87%,rgb(103,255,142) 47.65%,rgb(110,255,136) 48.43%,rgb(116,255,129) 49.21%,rgb(123,255,123) 50%,rgb(129,255,116) 50.78%,rgb(136,255,110) 51.56%,rgb(142,255,103) 52.34%,rgb(149,255,97) 53.12%,rgb(155,255,91) 53.90%,rgb(162,255,84) 54.68%,rgb(168,255,78) 55.46%,rgb(175,255,71) 56.25%,rgb(181,255,65) 57.03%,rgb(188,255,58) 57.81%,rgb(194,255,52) 58.59%,rgb(201,255,45) 59.37%,rgb(207,255,39) 60.15%,rgb(214,255,32) 60.93%,rgb(220,255,26) 61.71%,rgb(227,255,19) 62.5%,rgb(233,255,13) 63.28%,rgb(239,253,6) 64.06%,rgb(246,245,0) 64.84%,rgb(252,238,0) 65.62%,rgb(255,231,0) 66.40%,rgb(255,223,0) 67.18%,rgb(255,216,0) 67.96%,rgb(255,208,0) 68.75%,rgb(255,201,0) 69.53%,rgb(255,193,0) 70.31%,rgb(255,186,0) 71.09%,rgb(255,178,0) 71.87%,rgb(255,171,0) 72.65%,rgb(255,164,0) 73.43%,rgb(255,156,0) 74.21%,rgb(255,149,0) 75%,rgb(255,141,0) 75.78%,rgb(255,134,0) 76.56%,rgb(255,126,0) 77.34%,rgb(255,119,0) 78.12%,rgb(255,112,0) 78.90%,rgb(255,104,0) 79.68%,rgb(255,97,0) 80.46%,rgb(255,89,0) 81.25%,rgb(255,82,0) 82.03%,rgb(255,74,0) 82.81%,rgb(255,67,0) 83.59%,rgb(255,60,0) 84.37%,rgb(255,52,0) 85.15%,rgb(255,45,0) 85.93%,rgb(255,37,0) 86.71%,rgb(255,30,0) 87.5%,rgb(255,22,0) 88.28%,rgb(250,15,0) 89.06%,rgb(241,7,0) 89.84%,rgb(232,0,0) 90.62%,rgb(223,0,0) 91.40%,rgb(214,0,0) 92.18%,rgb(205,0,0) 92.96%,rgb(195,0,0) 93.75%,rgb(186,0,0) 94.53%,rgb(177,0,0) 95.31%,rgb(168,0,0) 96.09%,rgb(159,0,0) 96.87%,rgb(150,0,0) 97.65%,rgb(141,0,0) 98.43%,rgb(132,0,0) 99.21%,rgb(127,0,0) 100%\",\n tex_buffer: new Uint8Array([0,0,127,0,0,132,0,0,141,0,0,150,0,0,159,0,0,168,0,0,177,0,0,186,0,0,195,0,0,205,0,0,214,0,0,223,0,0,232,0,0,241,0,0,250,0,0,255,0,0,255,0,5,255,0,13,255,0,21,255,0,29,255,0,37,255,0,45,255,0,53,255,0,61,255,0,69,255,0,77,255,0,85,255,0,93,255,0,101,255,0,109,255,0,117,255,0,125,255,0,133,255,0,141,255,0,149,255,0,157,255,0,165,255,0,173,255,0,181,255,0,189,255,0,197,255,0,205,255,0,213,255,0,221,252,0,229,246,6,237,239,13,245,233,19,253,227,26,255,220,32,255,214,39,255,207,45,255,201,52,255,194,58,255,188,65,255,181,71,255,175,78,255,168,84,255,162,91,255,155,97,255,149,103,255,142,110,255,136,116,255,129,123,255,123,129,255,116,136,255,110,142,255,103,149,255,97,155,255,91,162,255,84,168,255,78,175,255,71,181,255,65,188,255,58,194,255,52,201,255,45,207,255,39,214,255,32,220,255,26,227,255,19,233,255,13,239,253,6,246,245,0,252,238,0,255,231,0,255,223,0,255,216,0,255,208,0,255,201,0,255,193,0,255,186,0,255,178,0,255,171,0,255,164,0,255,156,0,255,149,0,255,141,0,255,134,0,255,126,0,255,119,0,255,112,0,255,104,0,255,97,0,255,89,0,255,82,0,255,74,0,255,67,0,255,60,0,255,52,0,255,45,0,255,37,0,255,30,0,255,22,0,250,15,0,241,7,0,232,0,0,223,0,0,214,0,0,205,0,0,195,0,0,186,0,0,177,0,0,168,0,0,159,0,0,150,0,0,141,0,0,132,0,0,127,0,0]),\n linear_interpolation: true\n},\n{\n name: \"Landmass\",\n author: {\n name: \"Flemming Stäbler\",\n url: \"https://geomar.de\"\n },\n license: {\n name: \"EUPL v1.2\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [-100, 100],\n symmetric: true,\n c3g_string: \"rgb(53,90,110) 0%,rgb(180,216,239) 49.5%,rgb(157,152,133) 50.5%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([53,90,110,54,91,111,55,92,112,56,93,113,58,95,115,59,96,116,60,97,117,61,98,119,63,100,120,64,101,121,65,102,123,67,104,124,68,105,125,69,106,126,70,107,128,72,109,129,73,110,130,74,111,132,76,112,133,77,114,134,78,115,136,79,116,137,81,118,138,82,119,139,83,120,141,85,121,142,86,123,143,87,124,145,88,125,146,90,126,147,91,128,149,92,129,150,94,130,151,95,132,153,96,133,154,97,134,155,99,135,156,100,137,158,101,138,159,103,139,160,104,140,162,105,142,163,106,143,164,108,144,166,109,146,167,110,147,168,112,148,169,113,149,171,114,151,172,115,152,173,117,153,175,118,154,176,119,156,177,120,157,179,122,158,180,123,160,181,124,161,182,126,162,184,127,163,185,128,165,186,129,166,188,131,167,189,132,168,190,133,170,192,135,171,193,136,172,194,137,174,196,138,175,197,140,176,198,141,177,199,142,179,201,144,180,202,145,181,203,146,182,205,147,184,206,149,185,207,150,186,209,151,188,210,153,189,211,154,190,212,155,191,214,156,193,215,158,194,216,159,195,218,160,196,219,162,198,220,163,199,222,164,200,223,165,202,224,167,203,225,168,204,227,169,205,228,171,207,229,172,208,231,173,209,232,174,210,233,176,212,235,177,213,236,178,214,237,180,216,239,168,184,186,157,152,133,157,153,134,158,154,135,159,155,136,160,156,137,161,157,139,162,158,140,163,159,141,164,160,142,165,161,144,166,162,145,167,163,146,168,164,147,169,165,149,170,166,150,171,167,151,172,168,152,173,169,153,174,170,155,175,171,156,176,172,157,177,173,158,178,174,160,179,175,161,180,176,162,181,178,163,182,179,165,183,180,166,184,181,167,185,182,168,186,183,169,187,184,171,188,185,172,189,186,173,190,187,174,191,188,176,192,189,177,193,190,178,194,191,179,195,192,181,196,193,182,197,194,183,198,195,184,199,196,185,200,197,187,201,198,188,202,199,189,203,200,190,204,201,192,205,202,193,206,204,194,207,205,195,208,206,197,209,207,198,210,208,199,211,209,200,212,210,202,213,211,203,214,212,204,215,213,205,216,214,206,217,215,208,218,216,209,219,217,210,220,218,211,221,219,213,222,220,214,223,221,215,224,222,216,225,223,218,226,224,219,227,225,220,228,226,221,229,227,222,230,228,224,231,230,225,232,231,226,233,232,227,234,233,229,235,234,230,236,235,231,237,236,232,238,237,234,239,238,235,240,239,236,241,240,237,242,241,238,243,242,240,244,243,241,245,244,242,246,245,243,247,246,245,248,247,246,249,248,247,250,249,248,251,250,250,252,251,251,253,252,252,254,253,253,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"magma\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,3) 0%,rgb(0,0,4) 0.781%,rgb(1,0,7) 1.562%,rgb(1,1,11) 2.343%,rgb(2,2,15) 3.125%,rgb(4,3,19) 3.906%,rgb(5,4,23) 4.687%,rgb(7,5,27) 5.468%,rgb(9,7,31) 6.25%,rgb(11,8,36) 7.031%,rgb(13,10,40) 7.812%,rgb(15,11,44) 8.593%,rgb(17,12,49) 9.375%,rgb(20,13,53) 10.15%,rgb(22,14,58) 10.93%,rgb(24,15,63) 11.71%,rgb(27,16,68) 12.5%,rgb(30,16,73) 13.28%,rgb(32,17,77) 14.06%,rgb(35,17,82) 14.84%,rgb(38,17,87) 15.62%,rgb(42,17,92) 16.40%,rgb(45,16,96) 17.18%,rgb(48,16,101) 17.96%,rgb(52,16,104) 18.75%,rgb(55,15,108) 19.53%,rgb(59,15,111) 20.31%,rgb(62,15,114) 21.09%,rgb(66,15,116) 21.87%,rgb(69,15,118) 22.65%,rgb(72,16,120) 23.43%,rgb(75,16,121) 24.21%,rgb(79,17,123) 25%,rgb(82,18,124) 25.78%,rgb(85,19,125) 26.56%,rgb(88,21,126) 27.34%,rgb(91,22,126) 28.12%,rgb(94,23,127) 28.90%,rgb(97,24,127) 29.68%,rgb(101,26,128) 30.46%,rgb(104,27,128) 31.25%,rgb(107,28,128) 32.03%,rgb(110,30,129) 32.81%,rgb(113,31,129) 33.59%,rgb(116,32,129) 34.37%,rgb(119,33,129) 35.15%,rgb(122,34,129) 35.93%,rgb(126,36,129) 36.71%,rgb(129,37,129) 37.5%,rgb(132,38,129) 38.28%,rgb(135,39,129) 39.06%,rgb(138,40,129) 39.84%,rgb(141,41,128) 40.62%,rgb(145,42,128) 41.40%,rgb(148,43,128) 42.18%,rgb(151,44,127) 42.96%,rgb(154,45,127) 43.75%,rgb(158,46,126) 44.53%,rgb(161,47,126) 45.31%,rgb(164,48,125) 46.09%,rgb(167,49,125) 46.87%,rgb(171,51,124) 47.65%,rgb(174,52,123) 48.43%,rgb(177,53,122) 49.21%,rgb(182,54,121) 50%,rgb(185,55,120) 50.78%,rgb(189,57,119) 51.56%,rgb(192,58,117) 52.34%,rgb(195,59,116) 53.12%,rgb(198,60,115) 53.90%,rgb(202,62,114) 54.68%,rgb(205,63,112) 55.46%,rgb(208,65,111) 56.25%,rgb(211,66,109) 57.03%,rgb(214,68,108) 57.81%,rgb(217,70,106) 58.59%,rgb(220,72,105) 59.37%,rgb(222,74,103) 60.15%,rgb(225,76,102) 60.93%,rgb(228,78,100) 61.71%,rgb(230,81,98) 62.5%,rgb(232,84,97) 63.28%,rgb(235,86,96) 64.06%,rgb(237,89,95) 64.84%,rgb(238,93,93) 65.62%,rgb(240,96,93) 66.40%,rgb(242,99,92) 67.18%,rgb(243,103,91) 67.96%,rgb(245,106,91) 68.75%,rgb(246,110,91) 69.53%,rgb(247,113,91) 70.31%,rgb(248,117,92) 71.09%,rgb(249,121,92) 71.87%,rgb(249,125,93) 72.65%,rgb(250,128,94) 73.43%,rgb(251,132,96) 74.21%,rgb(251,136,97) 75%,rgb(252,140,99) 75.78%,rgb(252,144,100) 76.56%,rgb(252,147,102) 77.34%,rgb(253,151,104) 78.12%,rgb(253,155,106) 78.90%,rgb(253,159,108) 79.68%,rgb(253,162,111) 80.46%,rgb(254,166,113) 81.25%,rgb(254,170,116) 82.03%,rgb(254,174,118) 82.81%,rgb(254,177,121) 83.59%,rgb(254,181,124) 84.37%,rgb(254,185,127) 85.15%,rgb(254,188,130) 85.93%,rgb(254,192,133) 86.71%,rgb(254,196,136) 87.5%,rgb(254,199,139) 88.28%,rgb(254,203,142) 89.06%,rgb(253,207,146) 89.84%,rgb(253,210,149) 90.62%,rgb(253,214,152) 91.40%,rgb(253,218,156) 92.18%,rgb(253,221,159) 92.96%,rgb(253,225,163) 93.75%,rgb(252,229,166) 94.53%,rgb(252,232,170) 95.31%,rgb(252,236,174) 96.09%,rgb(252,240,177) 96.87%,rgb(252,243,181) 97.65%,rgb(251,247,185) 98.43%,rgb(251,250,189) 99.21%,rgb(251,252,191) 100%\",\n tex_buffer: new Uint8Array([0,0,3,0,0,4,1,0,7,1,1,11,2,2,15,4,3,19,5,4,23,7,5,27,9,7,31,11,8,36,13,10,40,15,11,44,17,12,49,20,13,53,22,14,58,24,15,63,27,16,68,30,16,73,32,17,77,35,17,82,38,17,87,42,17,92,45,16,96,48,16,101,52,16,104,55,15,108,59,15,111,62,15,114,66,15,116,69,15,118,72,16,120,75,16,121,79,17,123,82,18,124,85,19,125,88,21,126,91,22,126,94,23,127,97,24,127,101,26,128,104,27,128,107,28,128,110,30,129,113,31,129,116,32,129,119,33,129,122,34,129,126,36,129,129,37,129,132,38,129,135,39,129,138,40,129,141,41,128,145,42,128,148,43,128,151,44,127,154,45,127,158,46,126,161,47,126,164,48,125,167,49,125,171,51,124,174,52,123,177,53,122,182,54,121,185,55,120,189,57,119,192,58,117,195,59,116,198,60,115,202,62,114,205,63,112,208,65,111,211,66,109,214,68,108,217,70,106,220,72,105,222,74,103,225,76,102,228,78,100,230,81,98,232,84,97,235,86,96,237,89,95,238,93,93,240,96,93,242,99,92,243,103,91,245,106,91,246,110,91,247,113,91,248,117,92,249,121,92,249,125,93,250,128,94,251,132,96,251,136,97,252,140,99,252,144,100,252,147,102,253,151,104,253,155,106,253,159,108,253,162,111,254,166,113,254,170,116,254,174,118,254,177,121,254,181,124,254,185,127,254,188,130,254,192,133,254,196,136,254,199,139,254,203,142,253,207,146,253,210,149,253,214,152,253,218,156,253,221,159,253,225,163,252,229,166,252,232,170,252,236,174,252,240,177,252,243,181,251,247,185,251,250,189,251,252,191]),\n linear_interpolation: true\n},\n{\n name: \"matter\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(254,237,176) 0%,rgb(254,237,176) 0.390%,rgb(253,236,175) 0.390%,rgb(253,236,175) 0.781%,rgb(253,234,173) 0.781%,rgb(253,234,173) 1.171%,rgb(253,233,172) 1.171%,rgb(253,233,172) 1.562%,rgb(253,232,171) 1.562%,rgb(253,232,171) 1.953%,rgb(253,230,169) 1.953%,rgb(253,230,169) 2.343%,rgb(253,229,168) 2.343%,rgb(253,229,168) 2.734%,rgb(253,227,167) 2.734%,rgb(253,227,167) 3.125%,rgb(253,226,165) 3.125%,rgb(253,226,165) 3.515%,rgb(252,225,164) 3.515%,rgb(252,225,164) 3.906%,rgb(252,223,163) 3.906%,rgb(252,223,163) 4.296%,rgb(252,222,161) 4.296%,rgb(252,222,161) 4.687%,rgb(252,220,160) 4.687%,rgb(252,220,160) 5.078%,rgb(252,219,159) 5.078%,rgb(252,219,159) 5.468%,rgb(252,218,157) 5.468%,rgb(252,218,157) 5.859%,rgb(252,216,156) 5.859%,rgb(252,216,156) 6.25%,rgb(251,215,155) 6.25%,rgb(251,215,155) 6.640%,rgb(251,213,154) 6.640%,rgb(251,213,154) 7.031%,rgb(251,212,152) 7.031%,rgb(251,212,152) 7.421%,rgb(251,211,151) 7.421%,rgb(251,211,151) 7.812%,rgb(251,209,150) 7.812%,rgb(251,209,150) 8.203%,rgb(251,208,148) 8.203%,rgb(251,208,148) 8.593%,rgb(251,207,147) 8.593%,rgb(251,207,147) 8.984%,rgb(250,205,146) 8.984%,rgb(250,205,146) 9.375%,rgb(250,204,145) 9.375%,rgb(250,204,145) 9.765%,rgb(250,202,144) 9.765%,rgb(250,202,144) 10.15%,rgb(250,201,142) 10.15%,rgb(250,201,142) 10.54%,rgb(250,200,141) 10.54%,rgb(250,200,141) 10.93%,rgb(250,198,140) 10.93%,rgb(250,198,140) 11.32%,rgb(250,197,139) 11.32%,rgb(250,197,139) 11.71%,rgb(249,195,138) 11.71%,rgb(249,195,138) 12.10%,rgb(249,194,136) 12.10%,rgb(249,194,136) 12.5%,rgb(249,193,135) 12.5%,rgb(249,193,135) 12.89%,rgb(249,191,134) 12.89%,rgb(249,191,134) 13.28%,rgb(249,190,133) 13.28%,rgb(249,190,133) 13.67%,rgb(249,189,132) 13.67%,rgb(249,189,132) 14.06%,rgb(248,187,131) 14.06%,rgb(248,187,131) 14.45%,rgb(248,186,130) 14.45%,rgb(248,186,130) 14.84%,rgb(248,184,128) 14.84%,rgb(248,184,128) 15.23%,rgb(248,183,127) 15.23%,rgb(248,183,127) 15.62%,rgb(248,182,126) 15.62%,rgb(248,182,126) 16.01%,rgb(247,180,125) 16.01%,rgb(247,180,125) 16.40%,rgb(247,179,124) 16.40%,rgb(247,179,124) 16.79%,rgb(247,178,123) 16.79%,rgb(247,178,123) 17.18%,rgb(247,176,122) 17.18%,rgb(247,176,122) 17.57%,rgb(247,175,121) 17.57%,rgb(247,175,121) 17.96%,rgb(246,174,120) 17.96%,rgb(246,174,120) 18.35%,rgb(246,172,119) 18.35%,rgb(246,172,119) 18.75%,rgb(246,171,118) 18.75%,rgb(246,171,118) 19.14%,rgb(246,169,117) 19.14%,rgb(246,169,117) 19.53%,rgb(245,168,116) 19.53%,rgb(245,168,116) 19.92%,rgb(245,167,115) 19.92%,rgb(245,167,115) 20.31%,rgb(245,165,114) 20.31%,rgb(245,165,114) 20.70%,rgb(245,164,113) 20.70%,rgb(245,164,113) 21.09%,rgb(245,163,112) 21.09%,rgb(245,163,112) 21.48%,rgb(244,161,111) 21.48%,rgb(244,161,111) 21.87%,rgb(244,160,110) 21.87%,rgb(244,160,110) 22.26%,rgb(244,159,109) 22.26%,rgb(244,159,109) 22.65%,rgb(244,157,108) 22.65%,rgb(244,157,108) 23.04%,rgb(243,156,107) 23.04%,rgb(243,156,107) 23.43%,rgb(243,154,106) 23.43%,rgb(243,154,106) 23.82%,rgb(243,153,105) 23.82%,rgb(243,153,105) 24.21%,rgb(242,152,104) 24.21%,rgb(242,152,104) 24.60%,rgb(242,150,104) 24.60%,rgb(242,150,104) 25%,rgb(242,149,103) 25%,rgb(242,149,103) 25.39%,rgb(242,148,102) 25.39%,rgb(242,148,102) 25.78%,rgb(241,146,101) 25.78%,rgb(241,146,101) 26.17%,rgb(241,145,100) 26.17%,rgb(241,145,100) 26.56%,rgb(241,143,99) 26.56%,rgb(241,143,99) 26.95%,rgb(240,142,99) 26.95%,rgb(240,142,99) 27.34%,rgb(240,141,98) 27.34%,rgb(240,141,98) 27.73%,rgb(240,139,97) 27.73%,rgb(240,139,97) 28.12%,rgb(239,138,96) 28.12%,rgb(239,138,96) 28.51%,rgb(239,137,96) 28.51%,rgb(239,137,96) 28.90%,rgb(239,135,95) 28.90%,rgb(239,135,95) 29.29%,rgb(238,134,94) 29.29%,rgb(238,134,94) 29.68%,rgb(238,133,94) 29.68%,rgb(238,133,94) 30.07%,rgb(238,131,93) 30.07%,rgb(238,131,93) 30.46%,rgb(237,130,92) 30.46%,rgb(237,130,92) 30.85%,rgb(237,129,92) 30.85%,rgb(237,129,92) 31.25%,rgb(237,127,91) 31.25%,rgb(237,127,91) 31.64%,rgb(236,126,90) 31.64%,rgb(236,126,90) 32.03%,rgb(236,124,90) 32.03%,rgb(236,124,90) 32.42%,rgb(236,123,89) 32.42%,rgb(236,123,89) 32.81%,rgb(235,122,89) 32.81%,rgb(235,122,89) 33.20%,rgb(235,120,88) 33.20%,rgb(235,120,88) 33.59%,rgb(234,119,88) 33.59%,rgb(234,119,88) 33.98%,rgb(234,118,87) 33.98%,rgb(234,118,87) 34.37%,rgb(233,116,87) 34.37%,rgb(233,116,87) 34.76%,rgb(233,115,86) 34.76%,rgb(233,115,86) 35.15%,rgb(233,114,86) 35.15%,rgb(233,114,86) 35.54%,rgb(232,112,86) 35.54%,rgb(232,112,86) 35.93%,rgb(232,111,85) 35.93%,rgb(232,111,85) 36.32%,rgb(231,110,85) 36.32%,rgb(231,110,85) 36.71%,rgb(231,108,85) 36.71%,rgb(231,108,85) 37.10%,rgb(230,107,84) 37.10%,rgb(230,107,84) 37.5%,rgb(230,106,84) 37.5%,rgb(230,106,84) 37.89%,rgb(229,104,84) 37.89%,rgb(229,104,84) 38.28%,rgb(229,103,84) 38.28%,rgb(229,103,84) 38.67%,rgb(228,102,83) 38.67%,rgb(228,102,83) 39.06%,rgb(227,100,83) 39.06%,rgb(227,100,83) 39.45%,rgb(227,99,83) 39.45%,rgb(227,99,83) 39.84%,rgb(226,98,83) 39.84%,rgb(226,98,83) 40.23%,rgb(226,96,83) 40.23%,rgb(226,96,83) 40.62%,rgb(225,95,83) 40.62%,rgb(225,95,83) 41.01%,rgb(224,94,83) 41.01%,rgb(224,94,83) 41.40%,rgb(224,93,83) 41.40%,rgb(224,93,83) 41.79%,rgb(223,91,83) 41.79%,rgb(223,91,83) 42.18%,rgb(223,90,83) 42.18%,rgb(223,90,83) 42.57%,rgb(222,89,83) 42.57%,rgb(222,89,83) 42.96%,rgb(221,88,83) 42.96%,rgb(221,88,83) 43.35%,rgb(220,86,83) 43.35%,rgb(220,86,83) 43.75%,rgb(220,85,83) 43.75%,rgb(220,85,83) 44.14%,rgb(219,84,83) 44.14%,rgb(219,84,83) 44.53%,rgb(218,83,83) 44.53%,rgb(218,83,83) 44.92%,rgb(217,81,83) 44.92%,rgb(217,81,83) 45.31%,rgb(217,80,83) 45.31%,rgb(217,80,83) 45.70%,rgb(216,79,84) 45.70%,rgb(216,79,84) 46.09%,rgb(215,78,84) 46.09%,rgb(215,78,84) 46.48%,rgb(214,77,84) 46.48%,rgb(214,77,84) 46.87%,rgb(213,76,84) 46.87%,rgb(213,76,84) 47.26%,rgb(213,75,84) 47.26%,rgb(213,75,84) 47.65%,rgb(212,74,85) 47.65%,rgb(212,74,85) 48.04%,rgb(211,72,85) 48.04%,rgb(211,72,85) 48.43%,rgb(210,71,85) 48.43%,rgb(210,71,85) 48.82%,rgb(209,70,86) 48.82%,rgb(209,70,86) 49.21%,rgb(208,69,86) 49.21%,rgb(208,69,86) 49.60%,rgb(207,68,86) 49.60%,rgb(207,68,86) 50%,rgb(206,67,86) 50%,rgb(206,67,86) 50.39%,rgb(205,66,87) 50.39%,rgb(205,66,87) 50.78%,rgb(204,65,87) 50.78%,rgb(204,65,87) 51.17%,rgb(203,64,87) 51.17%,rgb(203,64,87) 51.56%,rgb(202,63,88) 51.56%,rgb(202,63,88) 51.95%,rgb(201,62,88) 51.95%,rgb(201,62,88) 52.34%,rgb(200,61,88) 52.34%,rgb(200,61,88) 52.73%,rgb(199,61,89) 52.73%,rgb(199,61,89) 53.12%,rgb(198,60,89) 53.12%,rgb(198,60,89) 53.51%,rgb(197,59,89) 53.51%,rgb(197,59,89) 53.90%,rgb(196,58,90) 53.90%,rgb(196,58,90) 54.29%,rgb(195,57,90) 54.29%,rgb(195,57,90) 54.68%,rgb(194,56,90) 54.68%,rgb(194,56,90) 55.07%,rgb(193,55,91) 55.07%,rgb(193,55,91) 55.46%,rgb(192,54,91) 55.46%,rgb(192,54,91) 55.85%,rgb(191,54,91) 55.85%,rgb(191,54,91) 56.25%,rgb(190,53,92) 56.25%,rgb(190,53,92) 56.64%,rgb(189,52,92) 56.64%,rgb(189,52,92) 57.03%,rgb(187,51,92) 57.03%,rgb(187,51,92) 57.42%,rgb(186,50,93) 57.42%,rgb(186,50,93) 57.81%,rgb(185,50,93) 57.81%,rgb(185,50,93) 58.20%,rgb(184,49,93) 58.20%,rgb(184,49,93) 58.59%,rgb(183,48,94) 58.59%,rgb(183,48,94) 58.98%,rgb(182,47,94) 58.98%,rgb(182,47,94) 59.37%,rgb(181,47,94) 59.37%,rgb(181,47,94) 59.76%,rgb(179,46,95) 59.76%,rgb(179,46,95) 60.15%,rgb(178,45,95) 60.15%,rgb(178,45,95) 60.54%,rgb(177,45,95) 60.54%,rgb(177,45,95) 60.93%,rgb(176,44,95) 60.93%,rgb(176,44,95) 61.32%,rgb(175,43,96) 61.32%,rgb(175,43,96) 61.71%,rgb(174,43,96) 61.71%,rgb(174,43,96) 62.10%,rgb(172,42,96) 62.10%,rgb(172,42,96) 62.5%,rgb(171,41,96) 62.5%,rgb(171,41,96) 62.89%,rgb(170,41,97) 62.89%,rgb(170,41,97) 63.28%,rgb(169,40,97) 63.28%,rgb(169,40,97) 63.67%,rgb(167,40,97) 63.67%,rgb(167,40,97) 64.06%,rgb(166,39,97) 64.06%,rgb(166,39,97) 64.45%,rgb(165,38,98) 64.45%,rgb(165,38,98) 64.84%,rgb(164,38,98) 64.84%,rgb(164,38,98) 65.23%,rgb(163,37,98) 65.23%,rgb(163,37,98) 65.62%,rgb(161,37,98) 65.62%,rgb(161,37,98) 66.01%,rgb(160,36,98) 66.01%,rgb(160,36,98) 66.40%,rgb(159,36,98) 66.40%,rgb(159,36,98) 66.79%,rgb(158,35,99) 66.79%,rgb(158,35,99) 67.18%,rgb(156,35,99) 67.18%,rgb(156,35,99) 67.57%,rgb(155,34,99) 67.57%,rgb(155,34,99) 67.96%,rgb(154,34,99) 67.96%,rgb(154,34,99) 68.35%,rgb(153,34,99) 68.35%,rgb(153,34,99) 68.75%,rgb(151,33,99) 68.75%,rgb(151,33,99) 69.14%,rgb(150,33,99) 69.14%,rgb(150,33,99) 69.53%,rgb(149,32,99) 69.53%,rgb(149,32,99) 69.92%,rgb(147,32,99) 69.92%,rgb(147,32,99) 70.31%,rgb(146,31,99) 70.31%,rgb(146,31,99) 70.70%,rgb(145,31,99) 70.70%,rgb(145,31,99) 71.09%,rgb(144,31,99) 71.09%,rgb(144,31,99) 71.48%,rgb(142,30,99) 71.48%,rgb(142,30,99) 71.87%,rgb(141,30,99) 71.87%,rgb(141,30,99) 72.26%,rgb(140,30,99) 72.26%,rgb(140,30,99) 72.65%,rgb(138,29,99) 72.65%,rgb(138,29,99) 73.04%,rgb(137,29,99) 73.04%,rgb(137,29,99) 73.43%,rgb(136,29,99) 73.43%,rgb(136,29,99) 73.82%,rgb(134,29,99) 73.82%,rgb(134,29,99) 74.21%,rgb(133,28,99) 74.21%,rgb(133,28,99) 74.60%,rgb(132,28,99) 74.60%,rgb(132,28,99) 75%,rgb(130,28,99) 75%,rgb(130,28,99) 75.39%,rgb(129,28,99) 75.39%,rgb(129,28,99) 75.78%,rgb(128,27,98) 75.78%,rgb(128,27,98) 76.17%,rgb(126,27,98) 76.17%,rgb(126,27,98) 76.56%,rgb(125,27,98) 76.56%,rgb(125,27,98) 76.95%,rgb(124,27,98) 76.95%,rgb(124,27,98) 77.34%,rgb(122,27,98) 77.34%,rgb(122,27,98) 77.73%,rgb(121,26,97) 77.73%,rgb(121,26,97) 78.12%,rgb(120,26,97) 78.12%,rgb(120,26,97) 78.51%,rgb(118,26,97) 78.51%,rgb(118,26,97) 78.90%,rgb(117,26,97) 78.90%,rgb(117,26,97) 79.29%,rgb(116,26,96) 79.29%,rgb(116,26,96) 79.68%,rgb(114,26,96) 79.68%,rgb(114,26,96) 80.07%,rgb(113,25,96) 80.07%,rgb(113,25,96) 80.46%,rgb(112,25,95) 80.46%,rgb(112,25,95) 80.85%,rgb(110,25,95) 80.85%,rgb(110,25,95) 81.25%,rgb(109,25,94) 81.25%,rgb(109,25,94) 81.64%,rgb(107,25,94) 81.64%,rgb(107,25,94) 82.03%,rgb(106,25,94) 82.03%,rgb(106,25,94) 82.42%,rgb(105,25,93) 82.42%,rgb(105,25,93) 82.81%,rgb(103,25,93) 82.81%,rgb(103,25,93) 83.20%,rgb(102,24,92) 83.20%,rgb(102,24,92) 83.59%,rgb(101,24,92) 83.59%,rgb(101,24,92) 83.98%,rgb(99,24,91) 83.98%,rgb(99,24,91) 84.37%,rgb(98,24,91) 84.37%,rgb(98,24,91) 84.76%,rgb(97,24,90) 84.76%,rgb(97,24,90) 85.15%,rgb(95,24,90) 85.15%,rgb(95,24,90) 85.54%,rgb(94,24,89) 85.54%,rgb(94,24,89) 85.93%,rgb(93,23,88) 85.93%,rgb(93,23,88) 86.32%,rgb(91,23,88) 86.32%,rgb(91,23,88) 86.71%,rgb(90,23,87) 86.71%,rgb(90,23,87) 87.10%,rgb(89,23,87) 87.10%,rgb(89,23,87) 87.5%,rgb(87,23,86) 87.5%,rgb(87,23,86) 87.89%,rgb(86,23,85) 87.89%,rgb(86,23,85) 88.28%,rgb(85,23,85) 88.28%,rgb(85,23,85) 88.67%,rgb(83,22,84) 88.67%,rgb(83,22,84) 89.06%,rgb(82,22,83) 89.06%,rgb(82,22,83) 89.45%,rgb(81,22,83) 89.45%,rgb(81,22,83) 89.84%,rgb(79,22,82) 89.84%,rgb(79,22,82) 90.23%,rgb(78,22,81) 90.23%,rgb(78,22,81) 90.62%,rgb(77,21,81) 90.62%,rgb(77,21,81) 91.01%,rgb(75,21,80) 91.01%,rgb(75,21,80) 91.40%,rgb(74,21,79) 91.40%,rgb(74,21,79) 91.79%,rgb(73,21,78) 91.79%,rgb(73,21,78) 92.18%,rgb(71,21,78) 92.18%,rgb(71,21,78) 92.57%,rgb(70,20,77) 92.57%,rgb(70,20,77) 92.96%,rgb(69,20,76) 92.96%,rgb(69,20,76) 93.35%,rgb(68,20,75) 93.35%,rgb(68,20,75) 93.75%,rgb(66,20,75) 93.75%,rgb(66,20,75) 94.14%,rgb(65,19,74) 94.14%,rgb(65,19,74) 94.53%,rgb(64,19,73) 94.53%,rgb(64,19,73) 94.92%,rgb(62,19,72) 94.92%,rgb(62,19,72) 95.31%,rgb(61,19,71) 95.31%,rgb(61,19,71) 95.70%,rgb(60,18,71) 95.70%,rgb(60,18,71) 96.09%,rgb(59,18,70) 96.09%,rgb(59,18,70) 96.48%,rgb(57,18,69) 96.48%,rgb(57,18,69) 96.87%,rgb(56,17,68) 96.87%,rgb(56,17,68) 97.26%,rgb(55,17,67) 97.26%,rgb(55,17,67) 97.65%,rgb(54,17,66) 97.65%,rgb(54,17,66) 98.04%,rgb(52,17,65) 98.04%,rgb(52,17,65) 98.43%,rgb(51,16,65) 98.43%,rgb(51,16,65) 98.82%,rgb(50,16,64) 98.82%,rgb(50,16,64) 99.21%,rgb(48,15,63) 99.21%,rgb(48,15,63) 99.60%,rgb(47,15,62) 99.60%,rgb(47,15,62) 100%\",\n tex_buffer: new Uint8Array([254,237,176,253,236,175,253,234,173,253,233,172,253,232,171,253,230,169,253,229,168,253,227,167,253,226,165,252,225,164,252,223,163,252,222,161,252,220,160,252,219,159,252,218,157,252,216,156,251,215,155,251,213,154,251,212,152,251,211,151,251,209,150,251,208,148,251,207,147,250,205,146,250,204,145,250,202,144,250,201,142,250,200,141,250,198,140,250,197,139,249,195,138,249,194,136,249,193,135,249,191,134,249,190,133,249,189,132,248,187,131,248,186,130,248,184,128,248,183,127,248,182,126,247,180,125,247,179,124,247,178,123,247,176,122,247,175,121,246,174,120,246,172,119,246,171,118,246,169,117,245,168,116,245,167,115,245,165,114,245,164,113,245,163,112,244,161,111,244,160,110,244,159,109,244,157,108,243,156,107,243,154,106,243,153,105,242,152,104,242,150,104,242,149,103,242,148,102,241,146,101,241,145,100,241,143,99,240,142,99,240,141,98,240,139,97,239,138,96,239,137,96,239,135,95,238,134,94,238,133,94,238,131,93,237,130,92,237,129,92,237,127,91,236,126,90,236,124,90,236,123,89,235,122,89,235,120,88,234,119,88,234,118,87,233,116,87,233,115,86,233,114,86,232,112,86,232,111,85,231,110,85,231,108,85,230,107,84,230,106,84,229,104,84,229,103,84,228,102,83,227,100,83,227,99,83,226,98,83,226,96,83,225,95,83,224,94,83,224,93,83,223,91,83,223,90,83,222,89,83,221,88,83,220,86,83,220,85,83,219,84,83,218,83,83,217,81,83,217,80,83,216,79,84,215,78,84,214,77,84,213,76,84,213,75,84,212,74,85,211,72,85,210,71,85,209,70,86,208,69,86,207,68,86,206,67,86,205,66,87,204,65,87,203,64,87,202,63,88,201,62,88,200,61,88,199,61,89,198,60,89,197,59,89,196,58,90,195,57,90,194,56,90,193,55,91,192,54,91,191,54,91,190,53,92,189,52,92,187,51,92,186,50,93,185,50,93,184,49,93,183,48,94,182,47,94,181,47,94,179,46,95,178,45,95,177,45,95,176,44,95,175,43,96,174,43,96,172,42,96,171,41,96,170,41,97,169,40,97,167,40,97,166,39,97,165,38,98,164,38,98,163,37,98,161,37,98,160,36,98,159,36,98,158,35,99,156,35,99,155,34,99,154,34,99,153,34,99,151,33,99,150,33,99,149,32,99,147,32,99,146,31,99,145,31,99,144,31,99,142,30,99,141,30,99,140,30,99,138,29,99,137,29,99,136,29,99,134,29,99,133,28,99,132,28,99,130,28,99,129,28,99,128,27,98,126,27,98,125,27,98,124,27,98,122,27,98,121,26,97,120,26,97,118,26,97,117,26,97,116,26,96,114,26,96,113,25,96,112,25,95,110,25,95,109,25,94,107,25,94,106,25,94,105,25,93,103,25,93,102,24,92,101,24,92,99,24,91,98,24,91,97,24,90,95,24,90,94,24,89,93,23,88,91,23,88,90,23,87,89,23,87,87,23,86,86,23,85,85,23,85,83,22,84,82,22,83,81,22,83,79,22,82,78,22,81,77,21,81,75,21,80,74,21,79,73,21,78,71,21,78,70,20,77,69,20,76,68,20,75,66,20,75,65,19,74,64,19,73,62,19,72,61,19,71,60,18,71,59,18,70,57,18,69,56,17,68,55,17,67,54,17,66,52,17,65,51,16,65,50,16,64,48,15,63,47,15,62]),\n linear_interpolation: false\n},\n{\n name: \"nipy_spectral\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,0) 0%,rgb(9,0,10) 0.781%,rgb(28,0,32) 1.562%,rgb(46,0,53) 2.343%,rgb(65,0,74) 3.125%,rgb(84,0,96) 3.906%,rgb(103,0,117) 4.687%,rgb(119,0,136) 5.468%,rgb(122,0,139) 6.25%,rgb(124,0,141) 7.031%,rgb(127,0,144) 7.812%,rgb(130,0,147) 8.593%,rgb(132,0,149) 9.375%,rgb(135,0,152) 10.15%,rgb(118,0,155) 10.93%,rgb(97,0,157) 11.71%,rgb(76,0,160) 12.5%,rgb(54,0,163) 13.28%,rgb(33,0,165) 14.06%,rgb(11,0,168) 14.84%,rgb(0,0,173) 15.62%,rgb(0,0,181) 16.40%,rgb(0,0,189) 17.18%,rgb(0,0,197) 17.96%,rgb(0,0,205) 18.75%,rgb(0,0,213) 19.53%,rgb(0,1,221) 20.31%,rgb(0,20,221) 21.09%,rgb(0,39,221) 21.87%,rgb(0,58,221) 22.65%,rgb(0,76,221) 23.43%,rgb(0,95,221) 24.21%,rgb(0,114,221) 25%,rgb(0,123,221) 25.78%,rgb(0,128,221) 26.56%,rgb(0,133,221) 27.34%,rgb(0,139,221) 28.12%,rgb(0,144,221) 28.90%,rgb(0,149,221) 29.68%,rgb(0,154,217) 30.46%,rgb(0,156,209) 31.25%,rgb(0,159,201) 32.03%,rgb(0,162,193) 32.81%,rgb(0,164,185) 33.59%,rgb(0,167,177) 34.37%,rgb(0,170,169) 35.15%,rgb(0,170,164) 35.93%,rgb(0,170,159) 36.71%,rgb(0,170,153) 37.5%,rgb(0,170,148) 38.28%,rgb(0,170,142) 39.06%,rgb(0,170,137) 39.84%,rgb(0,168,121) 40.62%,rgb(0,165,99) 41.40%,rgb(0,162,78) 42.18%,rgb(0,160,56) 42.96%,rgb(0,157,35) 43.75%,rgb(0,154,13) 44.53%,rgb(0,154,0) 45.31%,rgb(0,160,0) 46.09%,rgb(0,165,0) 46.87%,rgb(0,170,0) 47.65%,rgb(0,176,0) 48.43%,rgb(0,181,0) 49.21%,rgb(0,186,0) 50%,rgb(0,192,0) 50.78%,rgb(0,197,0) 51.56%,rgb(0,203,0) 52.34%,rgb(0,208,0) 53.12%,rgb(0,213,0) 53.90%,rgb(0,219,0) 54.68%,rgb(0,224,0) 55.46%,rgb(0,229,0) 56.25%,rgb(0,235,0) 57.03%,rgb(0,240,0) 57.81%,rgb(0,245,0) 58.59%,rgb(0,251,0) 59.37%,rgb(8,255,0) 60.15%,rgb(38,255,0) 60.93%,rgb(67,255,0) 61.71%,rgb(97,255,0) 62.5%,rgb(126,255,0) 63.28%,rgb(156,255,0) 64.06%,rgb(185,255,0) 64.84%,rgb(194,252,0) 65.62%,rgb(202,249,0) 66.40%,rgb(210,247,0) 67.18%,rgb(218,244,0) 67.96%,rgb(226,241,0) 68.75%,rgb(234,239,0) 69.53%,rgb(239,234,0) 70.31%,rgb(242,229,0) 71.09%,rgb(244,224,0) 71.87%,rgb(247,218,0) 72.65%,rgb(250,213,0) 73.43%,rgb(252,208,0) 74.21%,rgb(255,201,0) 75%,rgb(255,193,0) 75.78%,rgb(255,185,0) 76.56%,rgb(255,177,0) 77.34%,rgb(255,169,0) 78.12%,rgb(255,161,0) 78.90%,rgb(255,153,0) 79.68%,rgb(255,131,0) 80.46%,rgb(255,107,0) 81.25%,rgb(255,83,0) 82.03%,rgb(255,59,0) 82.81%,rgb(255,34,0) 83.59%,rgb(255,10,0) 84.37%,rgb(252,0,0) 85.15%,rgb(246,0,0) 85.93%,rgb(241,0,0) 86.71%,rgb(235,0,0) 87.5%,rgb(230,0,0) 88.28%,rgb(225,0,0) 89.06%,rgb(220,0,0) 89.84%,rgb(217,0,0) 90.62%,rgb(215,0,0) 91.40%,rgb(212,0,0) 92.18%,rgb(209,0,0) 92.96%,rgb(207,0,0) 93.75%,rgb(204,0,0) 94.53%,rgb(204,27,27) 95.31%,rgb(204,59,59) 96.09%,rgb(204,91,91) 96.87%,rgb(204,123,123) 97.65%,rgb(204,155,155) 98.43%,rgb(204,187,187) 99.21%,rgb(204,204,204) 100%\",\n tex_buffer: new Uint8Array([0,0,0,9,0,10,28,0,32,46,0,53,65,0,74,84,0,96,103,0,117,119,0,136,122,0,139,124,0,141,127,0,144,130,0,147,132,0,149,135,0,152,118,0,155,97,0,157,76,0,160,54,0,163,33,0,165,11,0,168,0,0,173,0,0,181,0,0,189,0,0,197,0,0,205,0,0,213,0,1,221,0,20,221,0,39,221,0,58,221,0,76,221,0,95,221,0,114,221,0,123,221,0,128,221,0,133,221,0,139,221,0,144,221,0,149,221,0,154,217,0,156,209,0,159,201,0,162,193,0,164,185,0,167,177,0,170,169,0,170,164,0,170,159,0,170,153,0,170,148,0,170,142,0,170,137,0,168,121,0,165,99,0,162,78,0,160,56,0,157,35,0,154,13,0,154,0,0,160,0,0,165,0,0,170,0,0,176,0,0,181,0,0,186,0,0,192,0,0,197,0,0,203,0,0,208,0,0,213,0,0,219,0,0,224,0,0,229,0,0,235,0,0,240,0,0,245,0,0,251,0,8,255,0,38,255,0,67,255,0,97,255,0,126,255,0,156,255,0,185,255,0,194,252,0,202,249,0,210,247,0,218,244,0,226,241,0,234,239,0,239,234,0,242,229,0,244,224,0,247,218,0,250,213,0,252,208,0,255,201,0,255,193,0,255,185,0,255,177,0,255,169,0,255,161,0,255,153,0,255,131,0,255,107,0,255,83,0,255,59,0,255,34,0,255,10,0,252,0,0,246,0,0,241,0,0,235,0,0,230,0,0,225,0,0,220,0,0,217,0,0,215,0,0,212,0,0,209,0,0,207,0,0,204,0,0,204,27,27,204,59,59,204,91,91,204,123,123,204,155,155,204,187,187,204,204,204]),\n linear_interpolation: true\n},\n{\n name: \"Nordisk Familjebok\",\n author: {\n name: \"Christian Emanuel Gernandt\",\n url: null\n },\n license: {\n name: \"Public Domain\",\n url: null\n },\n range: [-8000, 4000],\n symmetric: false,\n c3g_string: \"rgb(108,139,141) 0%,rgb(108,139,141) 16.66%,rgb(129,159,144) 16.66%,rgb(129,159,144) 33.33%,rgb(169,182,162) 33.33%,rgb(169,182,162) 50%,rgb(192,198,173) 50%,rgb(192,198,173) 65%,rgb(230,221,204) 65%,rgb(230,221,204) 66.66%,rgb(188,187,128) 66.66%,rgb(188,187,128) 68.33%,rgb(207,199,153) 68.33%,rgb(207,199,153) 70.83%,rgb(227,194,165) 70.83%,rgb(227,194,165) 75%,rgb(215,158,120) 75%,rgb(215,158,120) 83.33%,rgb(213,130,85) 83.33%,rgb(213,130,85) 91.66%,rgb(93,42,19) 91.66%,rgb(93,42,19) 100%\",\n tex_buffer: new Uint8Array([108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,108,139,141,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,129,159,144,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,169,182,162,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,192,198,173,230,221,204,230,221,204,188,187,128,188,187,128,207,199,153,207,199,153,207,199,153,227,194,165,227,194,165,227,194,165,227,194,165,227,194,165,215,158,120,215,158,120,215,158,120,215,158,120,215,158,120,215,158,120,215,158,120,215,158,120,215,158,120,215,158,120,213,130,85,213,130,85,213,130,85,213,130,85,213,130,85,213,130,85,213,130,85,213,130,85,213,130,85,213,130,85,93,42,19,93,42,19,93,42,19,93,42,19,93,42,19,93,42,19,93,42,19,93,42,19,93,42,19,93,42,19]),\n linear_interpolation: false\n},\n{\n name: \"ocean\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,127,0) 0%,rgb(0,125,1) 0.781%,rgb(0,122,3) 1.562%,rgb(0,119,5) 2.343%,rgb(0,116,7) 3.125%,rgb(0,113,9) 3.906%,rgb(0,110,11) 4.687%,rgb(0,107,13) 5.468%,rgb(0,104,15) 6.25%,rgb(0,101,17) 7.031%,rgb(0,98,19) 7.812%,rgb(0,95,21) 8.593%,rgb(0,92,23) 9.375%,rgb(0,89,25) 10.15%,rgb(0,86,27) 10.93%,rgb(0,83,29) 11.71%,rgb(0,80,31) 12.5%,rgb(0,77,33) 13.28%,rgb(0,74,35) 14.06%,rgb(0,71,37) 14.84%,rgb(0,68,39) 15.62%,rgb(0,65,41) 16.40%,rgb(0,62,43) 17.18%,rgb(0,59,45) 17.96%,rgb(0,56,47) 18.75%,rgb(0,53,49) 19.53%,rgb(0,50,51) 20.31%,rgb(0,47,53) 21.09%,rgb(0,44,55) 21.87%,rgb(0,41,57) 22.65%,rgb(0,38,59) 23.43%,rgb(0,35,61) 24.21%,rgb(0,32,63) 25%,rgb(0,29,65) 25.78%,rgb(0,26,67) 26.56%,rgb(0,23,69) 27.34%,rgb(0,20,71) 28.12%,rgb(0,17,73) 28.90%,rgb(0,14,75) 29.68%,rgb(0,11,77) 30.46%,rgb(0,8,79) 31.25%,rgb(0,5,81) 32.03%,rgb(0,2,83) 32.81%,rgb(0,0,85) 33.59%,rgb(0,3,87) 34.37%,rgb(0,6,89) 35.15%,rgb(0,9,91) 35.93%,rgb(0,12,93) 36.71%,rgb(0,15,95) 37.5%,rgb(0,18,97) 38.28%,rgb(0,21,99) 39.06%,rgb(0,24,101) 39.84%,rgb(0,27,103) 40.62%,rgb(0,30,105) 41.40%,rgb(0,33,107) 42.18%,rgb(0,36,109) 42.96%,rgb(0,39,111) 43.75%,rgb(0,42,113) 44.53%,rgb(0,45,115) 45.31%,rgb(0,48,117) 46.09%,rgb(0,51,119) 46.87%,rgb(0,54,121) 47.65%,rgb(0,57,123) 48.43%,rgb(0,60,125) 49.21%,rgb(0,63,127) 50%,rgb(0,66,129) 50.78%,rgb(0,69,131) 51.56%,rgb(0,72,133) 52.34%,rgb(0,75,135) 53.12%,rgb(0,78,137) 53.90%,rgb(0,81,139) 54.68%,rgb(0,84,141) 55.46%,rgb(0,87,143) 56.25%,rgb(0,90,145) 57.03%,rgb(0,93,147) 57.81%,rgb(0,96,149) 58.59%,rgb(0,99,151) 59.37%,rgb(0,102,153) 60.15%,rgb(0,105,155) 60.93%,rgb(0,108,157) 61.71%,rgb(0,111,159) 62.5%,rgb(0,114,161) 63.28%,rgb(0,117,163) 64.06%,rgb(0,120,165) 64.84%,rgb(0,123,167) 65.62%,rgb(0,126,169) 66.40%,rgb(5,130,171) 67.18%,rgb(11,133,173) 67.96%,rgb(17,136,175) 68.75%,rgb(23,139,177) 69.53%,rgb(29,142,179) 70.31%,rgb(35,145,181) 71.09%,rgb(41,148,183) 71.87%,rgb(47,151,185) 72.65%,rgb(53,154,187) 73.43%,rgb(59,157,189) 74.21%,rgb(65,160,191) 75%,rgb(71,163,193) 75.78%,rgb(77,166,195) 76.56%,rgb(83,169,197) 77.34%,rgb(89,172,199) 78.12%,rgb(95,175,201) 78.90%,rgb(101,178,203) 79.68%,rgb(107,181,205) 80.46%,rgb(113,184,207) 81.25%,rgb(119,187,209) 82.03%,rgb(125,190,211) 82.81%,rgb(131,193,213) 83.59%,rgb(137,196,215) 84.37%,rgb(143,199,217) 85.15%,rgb(149,202,219) 85.93%,rgb(155,205,221) 86.71%,rgb(161,208,223) 87.5%,rgb(167,211,225) 88.28%,rgb(173,214,227) 89.06%,rgb(179,217,229) 89.84%,rgb(185,220,231) 90.62%,rgb(191,223,233) 91.40%,rgb(197,226,235) 92.18%,rgb(203,229,237) 92.96%,rgb(209,232,239) 93.75%,rgb(215,235,241) 94.53%,rgb(221,238,243) 95.31%,rgb(227,241,245) 96.09%,rgb(233,244,247) 96.87%,rgb(239,247,249) 97.65%,rgb(245,250,251) 98.43%,rgb(251,253,253) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([0,127,0,0,125,1,0,122,3,0,119,5,0,116,7,0,113,9,0,110,11,0,107,13,0,104,15,0,101,17,0,98,19,0,95,21,0,92,23,0,89,25,0,86,27,0,83,29,0,80,31,0,77,33,0,74,35,0,71,37,0,68,39,0,65,41,0,62,43,0,59,45,0,56,47,0,53,49,0,50,51,0,47,53,0,44,55,0,41,57,0,38,59,0,35,61,0,32,63,0,29,65,0,26,67,0,23,69,0,20,71,0,17,73,0,14,75,0,11,77,0,8,79,0,5,81,0,2,83,0,0,85,0,3,87,0,6,89,0,9,91,0,12,93,0,15,95,0,18,97,0,21,99,0,24,101,0,27,103,0,30,105,0,33,107,0,36,109,0,39,111,0,42,113,0,45,115,0,48,117,0,51,119,0,54,121,0,57,123,0,60,125,0,63,127,0,66,129,0,69,131,0,72,133,0,75,135,0,78,137,0,81,139,0,84,141,0,87,143,0,90,145,0,93,147,0,96,149,0,99,151,0,102,153,0,105,155,0,108,157,0,111,159,0,114,161,0,117,163,0,120,165,0,123,167,0,126,169,5,130,171,11,133,173,17,136,175,23,139,177,29,142,179,35,145,181,41,148,183,47,151,185,53,154,187,59,157,189,65,160,191,71,163,193,77,166,195,83,169,197,89,172,199,95,175,201,101,178,203,107,181,205,113,184,207,119,187,209,125,190,211,131,193,213,137,196,215,143,199,217,149,202,219,155,205,221,161,208,223,167,211,225,173,214,227,179,217,229,185,220,231,191,223,233,197,226,235,203,229,237,209,232,239,215,235,241,221,238,243,227,241,245,233,244,247,239,247,249,245,250,251,251,253,253,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"oxy\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(64,5,5) 0%,rgb(64,5,5) 0.390%,rgb(66,5,5) 0.390%,rgb(66,5,5) 0.781%,rgb(67,6,6) 0.781%,rgb(67,6,6) 1.171%,rgb(69,6,6) 1.171%,rgb(69,6,6) 1.562%,rgb(71,6,7) 1.562%,rgb(71,6,7) 1.953%,rgb(72,6,7) 1.953%,rgb(72,6,7) 2.343%,rgb(74,6,8) 2.343%,rgb(74,6,8) 2.734%,rgb(76,6,8) 2.734%,rgb(76,6,8) 3.125%,rgb(77,7,8) 3.125%,rgb(77,7,8) 3.515%,rgb(79,7,9) 3.515%,rgb(79,7,9) 3.906%,rgb(81,7,9) 3.906%,rgb(81,7,9) 4.296%,rgb(82,7,10) 4.296%,rgb(82,7,10) 4.687%,rgb(84,7,10) 4.687%,rgb(84,7,10) 5.078%,rgb(86,7,11) 5.078%,rgb(86,7,11) 5.468%,rgb(87,7,11) 5.468%,rgb(87,7,11) 5.859%,rgb(89,7,11) 5.859%,rgb(89,7,11) 6.25%,rgb(91,7,12) 6.25%,rgb(91,7,12) 6.640%,rgb(92,7,12) 6.640%,rgb(92,7,12) 7.031%,rgb(94,7,13) 7.031%,rgb(94,7,13) 7.421%,rgb(96,7,13) 7.421%,rgb(96,7,13) 7.812%,rgb(98,7,13) 7.812%,rgb(98,7,13) 8.203%,rgb(99,7,14) 8.203%,rgb(99,7,14) 8.593%,rgb(101,7,14) 8.593%,rgb(101,7,14) 8.984%,rgb(103,7,14) 8.984%,rgb(103,7,14) 9.375%,rgb(104,7,14) 9.375%,rgb(104,7,14) 9.765%,rgb(106,6,15) 9.765%,rgb(106,6,15) 10.15%,rgb(108,6,15) 10.15%,rgb(108,6,15) 10.54%,rgb(110,6,15) 10.54%,rgb(110,6,15) 10.93%,rgb(111,6,15) 10.93%,rgb(111,6,15) 11.32%,rgb(113,6,15) 11.32%,rgb(113,6,15) 11.71%,rgb(115,5,15) 11.71%,rgb(115,5,15) 12.10%,rgb(117,5,15) 12.10%,rgb(117,5,15) 12.5%,rgb(118,5,15) 12.5%,rgb(118,5,15) 12.89%,rgb(120,5,15) 12.89%,rgb(120,5,15) 13.28%,rgb(122,5,15) 13.28%,rgb(122,5,15) 13.67%,rgb(123,5,14) 13.67%,rgb(123,5,14) 14.06%,rgb(125,5,14) 14.06%,rgb(125,5,14) 14.45%,rgb(127,5,14) 14.45%,rgb(127,5,14) 14.84%,rgb(128,6,13) 14.84%,rgb(128,6,13) 15.23%,rgb(130,7,13) 15.23%,rgb(130,7,13) 15.62%,rgb(131,8,12) 15.62%,rgb(131,8,12) 16.01%,rgb(132,9,12) 16.01%,rgb(132,9,12) 16.40%,rgb(134,11,11) 16.40%,rgb(134,11,11) 16.79%,rgb(135,13,10) 16.79%,rgb(135,13,10) 17.18%,rgb(136,14,10) 17.18%,rgb(136,14,10) 17.57%,rgb(138,16,9) 17.57%,rgb(138,16,9) 17.96%,rgb(139,18,9) 17.96%,rgb(139,18,9) 18.35%,rgb(140,20,9) 18.35%,rgb(140,20,9) 18.75%,rgb(141,22,8) 18.75%,rgb(141,22,8) 19.14%,rgb(142,23,8) 19.14%,rgb(142,23,8) 19.53%,rgb(143,25,7) 19.53%,rgb(143,25,7) 19.92%,rgb(92,68,65) 19.92%,rgb(92,68,65) 20.31%,rgb(80,80,80) 20.31%,rgb(80,80,80) 20.70%,rgb(81,81,81) 20.70%,rgb(81,81,81) 21.09%,rgb(82,82,81) 21.09%,rgb(82,82,81) 21.48%,rgb(83,83,82) 21.48%,rgb(83,83,82) 21.87%,rgb(84,84,83) 21.87%,rgb(84,84,83) 22.26%,rgb(85,85,84) 22.26%,rgb(85,85,84) 22.65%,rgb(86,86,85) 22.65%,rgb(86,86,85) 23.04%,rgb(87,86,86) 23.04%,rgb(87,86,86) 23.43%,rgb(88,87,87) 23.43%,rgb(88,87,87) 23.82%,rgb(89,88,88) 23.82%,rgb(89,88,88) 24.21%,rgb(90,89,89) 24.21%,rgb(90,89,89) 24.60%,rgb(91,90,90) 24.60%,rgb(91,90,90) 25%,rgb(92,91,91) 25%,rgb(92,91,91) 25.39%,rgb(93,92,92) 25.39%,rgb(93,92,92) 25.78%,rgb(94,93,93) 25.78%,rgb(94,93,93) 26.17%,rgb(94,94,94) 26.17%,rgb(94,94,94) 26.56%,rgb(95,95,94) 26.56%,rgb(95,95,94) 26.95%,rgb(96,96,95) 26.95%,rgb(96,96,95) 27.34%,rgb(97,97,96) 27.34%,rgb(97,97,96) 27.73%,rgb(98,98,97) 27.73%,rgb(98,98,97) 28.12%,rgb(99,99,98) 28.12%,rgb(99,99,98) 28.51%,rgb(100,100,99) 28.51%,rgb(100,100,99) 28.90%,rgb(101,101,100) 28.90%,rgb(101,101,100) 29.29%,rgb(102,102,101) 29.29%,rgb(102,102,101) 29.68%,rgb(103,102,102) 29.68%,rgb(103,102,102) 30.07%,rgb(104,103,103) 30.07%,rgb(104,103,103) 30.46%,rgb(105,104,104) 30.46%,rgb(105,104,104) 30.85%,rgb(106,105,105) 30.85%,rgb(106,105,105) 31.25%,rgb(107,106,106) 31.25%,rgb(107,106,106) 31.64%,rgb(108,107,107) 31.64%,rgb(108,107,107) 32.03%,rgb(109,108,108) 32.03%,rgb(109,108,108) 32.42%,rgb(110,109,109) 32.42%,rgb(110,109,109) 32.81%,rgb(111,110,110) 32.81%,rgb(111,110,110) 33.20%,rgb(112,111,111) 33.20%,rgb(112,111,111) 33.59%,rgb(113,112,112) 33.59%,rgb(113,112,112) 33.98%,rgb(114,113,112) 33.98%,rgb(114,113,112) 34.37%,rgb(114,114,113) 34.37%,rgb(114,114,113) 34.76%,rgb(115,115,114) 34.76%,rgb(115,115,114) 35.15%,rgb(116,116,115) 35.15%,rgb(116,116,115) 35.54%,rgb(117,117,116) 35.54%,rgb(117,117,116) 35.93%,rgb(118,118,117) 35.93%,rgb(118,118,117) 36.32%,rgb(119,119,118) 36.32%,rgb(119,119,118) 36.71%,rgb(120,120,119) 36.71%,rgb(120,120,119) 37.10%,rgb(121,121,120) 37.10%,rgb(121,121,120) 37.5%,rgb(122,122,121) 37.5%,rgb(122,122,121) 37.89%,rgb(123,123,122) 37.89%,rgb(123,123,122) 38.28%,rgb(124,124,123) 38.28%,rgb(124,124,123) 38.67%,rgb(125,125,124) 38.67%,rgb(125,125,124) 39.06%,rgb(126,126,125) 39.06%,rgb(126,126,125) 39.45%,rgb(127,127,126) 39.45%,rgb(127,127,126) 39.84%,rgb(128,128,127) 39.84%,rgb(128,128,127) 40.23%,rgb(129,129,128) 40.23%,rgb(129,129,128) 40.62%,rgb(130,130,129) 40.62%,rgb(130,130,129) 41.01%,rgb(131,131,130) 41.01%,rgb(131,131,130) 41.40%,rgb(132,132,131) 41.40%,rgb(132,132,131) 41.79%,rgb(133,133,132) 41.79%,rgb(133,133,132) 42.18%,rgb(134,134,133) 42.18%,rgb(134,134,133) 42.57%,rgb(135,135,134) 42.57%,rgb(135,135,134) 42.96%,rgb(136,136,135) 42.96%,rgb(136,136,135) 43.35%,rgb(137,137,136) 43.35%,rgb(137,137,136) 43.75%,rgb(138,138,137) 43.75%,rgb(138,138,137) 44.14%,rgb(139,139,138) 44.14%,rgb(139,139,138) 44.53%,rgb(140,140,139) 44.53%,rgb(140,140,139) 44.92%,rgb(141,141,140) 44.92%,rgb(141,141,140) 45.31%,rgb(142,142,141) 45.31%,rgb(142,142,141) 45.70%,rgb(143,143,142) 45.70%,rgb(143,143,142) 46.09%,rgb(144,144,143) 46.09%,rgb(144,144,143) 46.48%,rgb(146,145,144) 46.48%,rgb(146,145,144) 46.87%,rgb(147,146,145) 46.87%,rgb(147,146,145) 47.26%,rgb(148,147,146) 47.26%,rgb(148,147,146) 47.65%,rgb(149,148,147) 47.65%,rgb(149,148,147) 48.04%,rgb(150,149,149) 48.04%,rgb(150,149,149) 48.43%,rgb(151,150,150) 48.43%,rgb(151,150,150) 48.82%,rgb(152,151,151) 48.82%,rgb(152,151,151) 49.21%,rgb(153,152,152) 49.21%,rgb(153,152,152) 49.60%,rgb(154,153,153) 49.60%,rgb(154,153,153) 50%,rgb(155,155,154) 50%,rgb(155,155,154) 50.39%,rgb(156,156,155) 50.39%,rgb(156,156,155) 50.78%,rgb(157,157,156) 50.78%,rgb(157,157,156) 51.17%,rgb(158,158,157) 51.17%,rgb(158,158,157) 51.56%,rgb(159,159,158) 51.56%,rgb(159,159,158) 51.95%,rgb(160,160,159) 51.95%,rgb(160,160,159) 52.34%,rgb(161,161,160) 52.34%,rgb(161,161,160) 52.73%,rgb(162,162,161) 52.73%,rgb(162,162,161) 53.12%,rgb(164,163,162) 53.12%,rgb(164,163,162) 53.51%,rgb(165,164,163) 53.51%,rgb(165,164,163) 53.90%,rgb(166,165,164) 53.90%,rgb(166,165,164) 54.29%,rgb(167,166,166) 54.29%,rgb(167,166,166) 54.68%,rgb(168,167,167) 54.68%,rgb(168,167,167) 55.07%,rgb(169,169,168) 55.07%,rgb(169,169,168) 55.46%,rgb(170,170,169) 55.46%,rgb(170,170,169) 55.85%,rgb(171,171,170) 55.85%,rgb(171,171,170) 56.25%,rgb(172,172,171) 56.25%,rgb(172,172,171) 56.64%,rgb(173,173,172) 56.64%,rgb(173,173,172) 57.03%,rgb(174,174,173) 57.03%,rgb(174,174,173) 57.42%,rgb(176,175,174) 57.42%,rgb(176,175,174) 57.81%,rgb(177,176,175) 57.81%,rgb(177,176,175) 58.20%,rgb(178,177,177) 58.20%,rgb(178,177,177) 58.59%,rgb(179,179,178) 58.59%,rgb(179,179,178) 58.98%,rgb(180,180,179) 58.98%,rgb(180,180,179) 59.37%,rgb(181,181,180) 59.37%,rgb(181,181,180) 59.76%,rgb(182,182,181) 59.76%,rgb(182,182,181) 60.15%,rgb(184,183,182) 60.15%,rgb(184,183,182) 60.54%,rgb(185,184,183) 60.54%,rgb(185,184,183) 60.93%,rgb(186,185,184) 60.93%,rgb(186,185,184) 61.32%,rgb(187,187,186) 61.32%,rgb(187,187,186) 61.71%,rgb(188,188,187) 61.71%,rgb(188,188,187) 62.10%,rgb(189,189,188) 62.10%,rgb(189,189,188) 62.5%,rgb(190,190,189) 62.5%,rgb(190,190,189) 62.89%,rgb(192,191,190) 62.89%,rgb(192,191,190) 63.28%,rgb(193,192,191) 63.28%,rgb(193,192,191) 63.67%,rgb(194,194,193) 63.67%,rgb(194,194,193) 64.06%,rgb(195,195,194) 64.06%,rgb(195,195,194) 64.45%,rgb(196,196,195) 64.45%,rgb(196,196,195) 64.84%,rgb(197,197,196) 64.84%,rgb(197,197,196) 65.23%,rgb(199,198,197) 65.23%,rgb(199,198,197) 65.62%,rgb(200,200,198) 65.62%,rgb(200,200,198) 66.01%,rgb(201,201,200) 66.01%,rgb(201,201,200) 66.40%,rgb(202,202,201) 66.40%,rgb(202,202,201) 66.79%,rgb(203,203,202) 66.79%,rgb(203,203,202) 67.18%,rgb(205,204,203) 67.18%,rgb(205,204,203) 67.57%,rgb(206,206,204) 67.57%,rgb(206,206,204) 67.96%,rgb(207,207,206) 67.96%,rgb(207,207,206) 68.35%,rgb(208,208,207) 68.35%,rgb(208,208,207) 68.75%,rgb(210,209,208) 68.75%,rgb(210,209,208) 69.14%,rgb(211,210,209) 69.14%,rgb(211,210,209) 69.53%,rgb(212,212,211) 69.53%,rgb(212,212,211) 69.92%,rgb(213,213,212) 69.92%,rgb(213,213,212) 70.31%,rgb(214,214,213) 70.31%,rgb(214,214,213) 70.70%,rgb(216,215,214) 70.70%,rgb(216,215,214) 71.09%,rgb(217,217,216) 71.09%,rgb(217,217,216) 71.48%,rgb(218,218,217) 71.48%,rgb(218,218,217) 71.87%,rgb(219,219,218) 71.87%,rgb(219,219,218) 72.26%,rgb(221,220,219) 72.26%,rgb(221,220,219) 72.65%,rgb(222,222,221) 72.65%,rgb(222,222,221) 73.04%,rgb(223,223,222) 73.04%,rgb(223,223,222) 73.43%,rgb(225,224,223) 73.43%,rgb(225,224,223) 73.82%,rgb(226,226,224) 73.82%,rgb(226,226,224) 74.21%,rgb(227,227,226) 74.21%,rgb(227,227,226) 74.60%,rgb(228,228,227) 74.60%,rgb(228,228,227) 75%,rgb(230,229,228) 75%,rgb(230,229,228) 75.39%,rgb(231,231,230) 75.39%,rgb(231,231,230) 75.78%,rgb(232,232,231) 75.78%,rgb(232,232,231) 76.17%,rgb(234,233,232) 76.17%,rgb(234,233,232) 76.56%,rgb(235,235,233) 76.56%,rgb(235,235,233) 76.95%,rgb(236,236,235) 76.95%,rgb(236,236,235) 77.34%,rgb(238,237,236) 77.34%,rgb(238,237,236) 77.73%,rgb(239,239,237) 77.73%,rgb(239,239,237) 78.12%,rgb(240,240,239) 78.12%,rgb(240,240,239) 78.51%,rgb(242,241,240) 78.51%,rgb(242,241,240) 78.90%,rgb(243,243,241) 78.90%,rgb(243,243,241) 79.29%,rgb(244,244,243) 79.29%,rgb(244,244,243) 79.68%,rgb(246,247,216) 79.68%,rgb(246,247,216) 80.07%,rgb(247,254,104) 80.07%,rgb(247,254,104) 80.46%,rgb(245,253,101) 80.46%,rgb(245,253,101) 80.85%,rgb(244,252,98) 80.85%,rgb(244,252,98) 81.25%,rgb(242,250,95) 81.25%,rgb(242,250,95) 81.64%,rgb(240,249,91) 81.64%,rgb(240,249,91) 82.03%,rgb(239,248,88) 82.03%,rgb(239,248,88) 82.42%,rgb(238,247,85) 82.42%,rgb(238,247,85) 82.81%,rgb(236,245,81) 82.81%,rgb(236,245,81) 83.20%,rgb(235,244,77) 83.20%,rgb(235,244,77) 83.59%,rgb(235,242,73) 83.59%,rgb(235,242,73) 83.98%,rgb(234,241,69) 83.98%,rgb(234,241,69) 84.37%,rgb(234,239,66) 84.37%,rgb(234,239,66) 84.76%,rgb(234,237,63) 84.76%,rgb(234,237,63) 85.15%,rgb(234,236,61) 85.15%,rgb(234,236,61) 85.54%,rgb(234,234,59) 85.54%,rgb(234,234,59) 85.93%,rgb(234,232,57) 85.93%,rgb(234,232,57) 86.32%,rgb(233,230,56) 86.32%,rgb(233,230,56) 86.71%,rgb(233,229,54) 86.71%,rgb(233,229,54) 87.10%,rgb(233,227,53) 87.10%,rgb(233,227,53) 87.5%,rgb(233,225,51) 87.5%,rgb(233,225,51) 87.89%,rgb(233,223,50) 87.89%,rgb(233,223,50) 88.28%,rgb(232,222,49) 88.28%,rgb(232,222,49) 88.67%,rgb(232,220,48) 88.67%,rgb(232,220,48) 89.06%,rgb(232,218,46) 89.06%,rgb(232,218,46) 89.45%,rgb(231,217,45) 89.45%,rgb(231,217,45) 89.84%,rgb(231,215,44) 89.84%,rgb(231,215,44) 90.23%,rgb(231,213,43) 90.23%,rgb(231,213,43) 90.62%,rgb(231,212,42) 90.62%,rgb(231,212,42) 91.01%,rgb(230,210,42) 91.01%,rgb(230,210,42) 91.40%,rgb(230,208,41) 91.40%,rgb(230,208,41) 91.79%,rgb(229,207,40) 91.79%,rgb(229,207,40) 92.18%,rgb(229,205,39) 92.18%,rgb(229,205,39) 92.57%,rgb(229,203,38) 92.57%,rgb(229,203,38) 92.96%,rgb(228,202,37) 92.96%,rgb(228,202,37) 93.35%,rgb(228,200,37) 93.35%,rgb(228,200,37) 93.75%,rgb(227,199,36) 93.75%,rgb(227,199,36) 94.14%,rgb(227,197,35) 94.14%,rgb(227,197,35) 94.53%,rgb(227,195,34) 94.53%,rgb(227,195,34) 94.92%,rgb(226,194,34) 94.92%,rgb(226,194,34) 95.31%,rgb(226,192,33) 95.31%,rgb(226,192,33) 95.70%,rgb(225,191,32) 95.70%,rgb(225,191,32) 96.09%,rgb(225,189,31) 96.09%,rgb(225,189,31) 96.48%,rgb(224,187,31) 96.48%,rgb(224,187,31) 96.87%,rgb(224,186,30) 96.87%,rgb(224,186,30) 97.26%,rgb(223,184,29) 97.26%,rgb(223,184,29) 97.65%,rgb(223,183,29) 97.65%,rgb(223,183,29) 98.04%,rgb(223,181,28) 98.04%,rgb(223,181,28) 98.43%,rgb(222,180,27) 98.43%,rgb(222,180,27) 98.82%,rgb(222,178,27) 98.82%,rgb(222,178,27) 99.21%,rgb(221,176,26) 99.21%,rgb(221,176,26) 99.60%,rgb(221,175,25) 99.60%,rgb(221,175,25) 100%\",\n tex_buffer: new Uint8Array([64,5,5,66,5,5,67,6,6,69,6,6,71,6,7,72,6,7,74,6,8,76,6,8,77,7,8,79,7,9,81,7,9,82,7,10,84,7,10,86,7,11,87,7,11,89,7,11,91,7,12,92,7,12,94,7,13,96,7,13,98,7,13,99,7,14,101,7,14,103,7,14,104,7,14,106,6,15,108,6,15,110,6,15,111,6,15,113,6,15,115,5,15,117,5,15,118,5,15,120,5,15,122,5,15,123,5,14,125,5,14,127,5,14,128,6,13,130,7,13,131,8,12,132,9,12,134,11,11,135,13,10,136,14,10,138,16,9,139,18,9,140,20,9,141,22,8,142,23,8,143,25,7,92,68,65,80,80,80,81,81,81,82,82,81,83,83,82,84,84,83,85,85,84,86,86,85,87,86,86,88,87,87,89,88,88,90,89,89,91,90,90,92,91,91,93,92,92,94,93,93,94,94,94,95,95,94,96,96,95,97,97,96,98,98,97,99,99,98,100,100,99,101,101,100,102,102,101,103,102,102,104,103,103,105,104,104,106,105,105,107,106,106,108,107,107,109,108,108,110,109,109,111,110,110,112,111,111,113,112,112,114,113,112,114,114,113,115,115,114,116,116,115,117,117,116,118,118,117,119,119,118,120,120,119,121,121,120,122,122,121,123,123,122,124,124,123,125,125,124,126,126,125,127,127,126,128,128,127,129,129,128,130,130,129,131,131,130,132,132,131,133,133,132,134,134,133,135,135,134,136,136,135,137,137,136,138,138,137,139,139,138,140,140,139,141,141,140,142,142,141,143,143,142,144,144,143,146,145,144,147,146,145,148,147,146,149,148,147,150,149,149,151,150,150,152,151,151,153,152,152,154,153,153,155,155,154,156,156,155,157,157,156,158,158,157,159,159,158,160,160,159,161,161,160,162,162,161,164,163,162,165,164,163,166,165,164,167,166,166,168,167,167,169,169,168,170,170,169,171,171,170,172,172,171,173,173,172,174,174,173,176,175,174,177,176,175,178,177,177,179,179,178,180,180,179,181,181,180,182,182,181,184,183,182,185,184,183,186,185,184,187,187,186,188,188,187,189,189,188,190,190,189,192,191,190,193,192,191,194,194,193,195,195,194,196,196,195,197,197,196,199,198,197,200,200,198,201,201,200,202,202,201,203,203,202,205,204,203,206,206,204,207,207,206,208,208,207,210,209,208,211,210,209,212,212,211,213,213,212,214,214,213,216,215,214,217,217,216,218,218,217,219,219,218,221,220,219,222,222,221,223,223,222,225,224,223,226,226,224,227,227,226,228,228,227,230,229,228,231,231,230,232,232,231,234,233,232,235,235,233,236,236,235,238,237,236,239,239,237,240,240,239,242,241,240,243,243,241,244,244,243,246,247,216,247,254,104,245,253,101,244,252,98,242,250,95,240,249,91,239,248,88,238,247,85,236,245,81,235,244,77,235,242,73,234,241,69,234,239,66,234,237,63,234,236,61,234,234,59,234,232,57,233,230,56,233,229,54,233,227,53,233,225,51,233,223,50,232,222,49,232,220,48,232,218,46,231,217,45,231,215,44,231,213,43,231,212,42,230,210,42,230,208,41,229,207,40,229,205,39,229,203,38,228,202,37,228,200,37,227,199,36,227,197,35,227,195,34,226,194,34,226,192,33,225,191,32,225,189,31,224,187,31,224,186,30,223,184,29,223,183,29,223,181,28,222,180,27,222,178,27,221,176,26,221,175,25]),\n linear_interpolation: false\n},\n{\n name: \"phase\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(168,120,13) 0%,rgb(168,120,13) 0.390%,rgb(169,119,15) 0.390%,rgb(169,119,15) 0.781%,rgb(171,118,17) 0.781%,rgb(171,118,17) 1.171%,rgb(172,117,19) 1.171%,rgb(172,117,19) 1.562%,rgb(174,116,20) 1.562%,rgb(174,116,20) 1.953%,rgb(175,115,22) 1.953%,rgb(175,115,22) 2.343%,rgb(177,114,24) 2.343%,rgb(177,114,24) 2.734%,rgb(178,113,25) 2.734%,rgb(178,113,25) 3.125%,rgb(179,112,27) 3.125%,rgb(179,112,27) 3.515%,rgb(181,111,29) 3.515%,rgb(181,111,29) 3.906%,rgb(182,110,30) 3.906%,rgb(182,110,30) 4.296%,rgb(183,109,32) 4.296%,rgb(183,109,32) 4.687%,rgb(185,108,34) 4.687%,rgb(185,108,34) 5.078%,rgb(186,107,35) 5.078%,rgb(186,107,35) 5.468%,rgb(187,106,37) 5.468%,rgb(187,106,37) 5.859%,rgb(189,105,38) 5.859%,rgb(189,105,38) 6.25%,rgb(190,104,40) 6.25%,rgb(190,104,40) 6.640%,rgb(191,103,42) 6.640%,rgb(191,103,42) 7.031%,rgb(192,102,43) 7.031%,rgb(192,102,43) 7.421%,rgb(193,101,45) 7.421%,rgb(193,101,45) 7.812%,rgb(194,100,46) 7.812%,rgb(194,100,46) 8.203%,rgb(196,98,48) 8.203%,rgb(196,98,48) 8.593%,rgb(197,97,50) 8.593%,rgb(197,97,50) 8.984%,rgb(198,96,51) 8.984%,rgb(198,96,51) 9.375%,rgb(199,95,53) 9.375%,rgb(199,95,53) 9.765%,rgb(200,94,55) 9.765%,rgb(200,94,55) 10.15%,rgb(201,93,56) 10.15%,rgb(201,93,56) 10.54%,rgb(202,92,58) 10.54%,rgb(202,92,58) 10.93%,rgb(203,90,60) 10.93%,rgb(203,90,60) 11.32%,rgb(204,89,62) 11.32%,rgb(204,89,62) 11.71%,rgb(205,88,63) 11.71%,rgb(205,88,63) 12.10%,rgb(206,87,65) 12.10%,rgb(206,87,65) 12.5%,rgb(207,86,67) 12.5%,rgb(207,86,67) 12.89%,rgb(208,84,69) 12.89%,rgb(208,84,69) 13.28%,rgb(208,83,71) 13.28%,rgb(208,83,71) 13.67%,rgb(209,82,73) 13.67%,rgb(209,82,73) 14.06%,rgb(210,81,75) 14.06%,rgb(210,81,75) 14.45%,rgb(211,79,77) 14.45%,rgb(211,79,77) 14.84%,rgb(212,78,79) 14.84%,rgb(212,78,79) 15.23%,rgb(213,77,81) 15.23%,rgb(213,77,81) 15.62%,rgb(213,75,83) 15.62%,rgb(213,75,83) 16.01%,rgb(214,74,85) 16.01%,rgb(214,74,85) 16.40%,rgb(215,73,87) 16.40%,rgb(215,73,87) 16.79%,rgb(216,71,90) 16.79%,rgb(216,71,90) 17.18%,rgb(216,70,92) 17.18%,rgb(216,70,92) 17.57%,rgb(217,69,94) 17.57%,rgb(217,69,94) 17.96%,rgb(217,67,97) 17.96%,rgb(217,67,97) 18.35%,rgb(218,66,99) 18.35%,rgb(218,66,99) 18.75%,rgb(219,64,102) 18.75%,rgb(219,64,102) 19.14%,rgb(219,63,104) 19.14%,rgb(219,63,104) 19.53%,rgb(220,61,107) 19.53%,rgb(220,61,107) 19.92%,rgb(220,60,109) 19.92%,rgb(220,60,109) 20.31%,rgb(221,58,112) 20.31%,rgb(221,58,112) 20.70%,rgb(221,57,115) 20.70%,rgb(221,57,115) 21.09%,rgb(221,56,118) 21.09%,rgb(221,56,118) 21.48%,rgb(222,54,120) 21.48%,rgb(222,54,120) 21.87%,rgb(222,53,123) 21.87%,rgb(222,53,123) 22.26%,rgb(222,51,126) 22.26%,rgb(222,51,126) 22.65%,rgb(222,50,129) 22.65%,rgb(222,50,129) 23.04%,rgb(223,49,132) 23.04%,rgb(223,49,132) 23.43%,rgb(223,47,135) 23.43%,rgb(223,47,135) 23.82%,rgb(223,46,138) 23.82%,rgb(223,46,138) 24.21%,rgb(223,45,141) 24.21%,rgb(223,45,141) 24.60%,rgb(223,43,144) 24.60%,rgb(223,43,144) 25%,rgb(223,42,147) 25%,rgb(223,42,147) 25.39%,rgb(222,41,151) 25.39%,rgb(222,41,151) 25.78%,rgb(222,40,154) 25.78%,rgb(222,40,154) 26.17%,rgb(222,40,157) 26.17%,rgb(222,40,157) 26.56%,rgb(222,39,160) 26.56%,rgb(222,39,160) 26.95%,rgb(221,38,163) 26.95%,rgb(221,38,163) 27.34%,rgb(221,38,166) 27.34%,rgb(221,38,166) 27.73%,rgb(220,37,169) 27.73%,rgb(220,37,169) 28.12%,rgb(220,37,173) 28.12%,rgb(220,37,173) 28.51%,rgb(219,37,176) 28.51%,rgb(219,37,176) 28.90%,rgb(218,37,179) 28.90%,rgb(218,37,179) 29.29%,rgb(218,38,182) 29.29%,rgb(218,38,182) 29.68%,rgb(217,38,185) 29.68%,rgb(217,38,185) 30.07%,rgb(216,39,188) 30.07%,rgb(216,39,188) 30.46%,rgb(215,39,190) 30.46%,rgb(215,39,190) 30.85%,rgb(214,40,193) 30.85%,rgb(214,40,193) 31.25%,rgb(213,41,196) 31.25%,rgb(213,41,196) 31.64%,rgb(212,42,199) 31.64%,rgb(212,42,199) 32.03%,rgb(211,43,201) 32.03%,rgb(211,43,201) 32.42%,rgb(210,45,204) 32.42%,rgb(210,45,204) 32.81%,rgb(209,46,206) 32.81%,rgb(209,46,206) 33.20%,rgb(208,47,208) 33.20%,rgb(208,47,208) 33.59%,rgb(207,49,211) 33.59%,rgb(207,49,211) 33.98%,rgb(205,50,213) 33.98%,rgb(205,50,213) 34.37%,rgb(204,52,215) 34.37%,rgb(204,52,215) 34.76%,rgb(203,53,217) 34.76%,rgb(203,53,217) 35.15%,rgb(201,55,219) 35.15%,rgb(201,55,219) 35.54%,rgb(200,57,221) 35.54%,rgb(200,57,221) 35.93%,rgb(198,58,223) 35.93%,rgb(198,58,223) 36.32%,rgb(197,60,225) 36.32%,rgb(197,60,225) 36.71%,rgb(195,62,226) 36.71%,rgb(195,62,226) 37.10%,rgb(194,63,228) 37.10%,rgb(194,63,228) 37.5%,rgb(192,65,229) 37.5%,rgb(192,65,229) 37.89%,rgb(190,67,231) 37.89%,rgb(190,67,231) 38.28%,rgb(189,69,232) 38.28%,rgb(189,69,232) 38.67%,rgb(187,70,233) 38.67%,rgb(187,70,233) 39.06%,rgb(185,72,235) 39.06%,rgb(185,72,235) 39.45%,rgb(184,74,236) 39.45%,rgb(184,74,236) 39.84%,rgb(182,75,237) 39.84%,rgb(182,75,237) 40.23%,rgb(180,77,238) 40.23%,rgb(180,77,238) 40.62%,rgb(178,79,239) 40.62%,rgb(178,79,239) 41.01%,rgb(176,80,239) 41.01%,rgb(176,80,239) 41.40%,rgb(174,82,240) 41.40%,rgb(174,82,240) 41.79%,rgb(172,84,241) 41.79%,rgb(172,84,241) 42.18%,rgb(170,85,241) 42.18%,rgb(170,85,241) 42.57%,rgb(169,87,242) 42.57%,rgb(169,87,242) 42.96%,rgb(167,89,243) 42.96%,rgb(167,89,243) 43.35%,rgb(164,90,243) 43.35%,rgb(164,90,243) 43.75%,rgb(162,92,243) 43.75%,rgb(162,92,243) 44.14%,rgb(160,93,244) 44.14%,rgb(160,93,244) 44.53%,rgb(158,95,244) 44.53%,rgb(158,95,244) 44.92%,rgb(156,96,244) 44.92%,rgb(156,96,244) 45.31%,rgb(154,98,244) 45.31%,rgb(154,98,244) 45.70%,rgb(152,99,244) 45.70%,rgb(152,99,244) 46.09%,rgb(149,101,244) 46.09%,rgb(149,101,244) 46.48%,rgb(147,102,244) 46.48%,rgb(147,102,244) 46.87%,rgb(145,104,244) 46.87%,rgb(145,104,244) 47.26%,rgb(143,105,244) 47.26%,rgb(143,105,244) 47.65%,rgb(140,107,243) 47.65%,rgb(140,107,243) 48.04%,rgb(138,108,243) 48.04%,rgb(138,108,243) 48.43%,rgb(135,109,243) 48.43%,rgb(135,109,243) 48.82%,rgb(133,111,242) 48.82%,rgb(133,111,242) 49.21%,rgb(130,112,241) 49.21%,rgb(130,112,241) 49.60%,rgb(128,113,241) 49.60%,rgb(128,113,241) 50%,rgb(125,115,240) 50%,rgb(125,115,240) 50.39%,rgb(123,116,239) 50.39%,rgb(123,116,239) 50.78%,rgb(120,117,239) 50.78%,rgb(120,117,239) 51.17%,rgb(118,119,238) 51.17%,rgb(118,119,238) 51.56%,rgb(115,120,237) 51.56%,rgb(115,120,237) 51.95%,rgb(112,121,236) 51.95%,rgb(112,121,236) 52.34%,rgb(110,122,235) 52.34%,rgb(110,122,235) 52.73%,rgb(107,123,233) 52.73%,rgb(107,123,233) 53.12%,rgb(104,124,232) 53.12%,rgb(104,124,232) 53.51%,rgb(102,126,231) 53.51%,rgb(102,126,231) 53.90%,rgb(99,127,230) 53.90%,rgb(99,127,230) 54.29%,rgb(96,128,228) 54.29%,rgb(96,128,228) 54.68%,rgb(93,129,227) 54.68%,rgb(93,129,227) 55.07%,rgb(90,130,225) 55.07%,rgb(90,130,225) 55.46%,rgb(88,131,223) 55.46%,rgb(88,131,223) 55.85%,rgb(85,132,222) 55.85%,rgb(85,132,222) 56.25%,rgb(82,133,220) 56.25%,rgb(82,133,220) 56.64%,rgb(79,134,218) 56.64%,rgb(79,134,218) 57.03%,rgb(77,135,216) 57.03%,rgb(77,135,216) 57.42%,rgb(74,135,215) 57.42%,rgb(74,135,215) 57.81%,rgb(71,136,213) 57.81%,rgb(71,136,213) 58.20%,rgb(69,137,211) 58.20%,rgb(69,137,211) 58.59%,rgb(66,138,209) 58.59%,rgb(66,138,209) 58.98%,rgb(64,138,207) 58.98%,rgb(64,138,207) 59.37%,rgb(61,139,205) 59.37%,rgb(61,139,205) 59.76%,rgb(59,140,203) 59.76%,rgb(59,140,203) 60.15%,rgb(56,140,201) 60.15%,rgb(56,140,201) 60.54%,rgb(54,141,199) 60.54%,rgb(54,141,199) 60.93%,rgb(52,142,196) 60.93%,rgb(52,142,196) 61.32%,rgb(50,142,194) 61.32%,rgb(50,142,194) 61.71%,rgb(48,143,192) 61.71%,rgb(48,143,192) 62.10%,rgb(46,143,190) 62.10%,rgb(46,143,190) 62.5%,rgb(44,144,188) 62.5%,rgb(44,144,188) 62.89%,rgb(42,144,186) 62.89%,rgb(42,144,186) 63.28%,rgb(40,145,184) 63.28%,rgb(40,145,184) 63.67%,rgb(39,145,182) 63.67%,rgb(39,145,182) 64.06%,rgb(37,145,180) 64.06%,rgb(37,145,180) 64.45%,rgb(36,146,178) 64.45%,rgb(36,146,178) 64.84%,rgb(35,146,176) 64.84%,rgb(35,146,176) 65.23%,rgb(33,146,174) 65.23%,rgb(33,146,174) 65.62%,rgb(32,147,172) 65.62%,rgb(32,147,172) 66.01%,rgb(31,147,170) 66.01%,rgb(31,147,170) 66.40%,rgb(30,147,168) 66.40%,rgb(30,147,168) 66.79%,rgb(29,148,166) 66.79%,rgb(29,148,166) 67.18%,rgb(28,148,164) 67.18%,rgb(28,148,164) 67.57%,rgb(27,148,162) 67.57%,rgb(27,148,162) 67.96%,rgb(26,148,160) 67.96%,rgb(26,148,160) 68.35%,rgb(25,149,158) 68.35%,rgb(25,149,158) 68.75%,rgb(25,149,156) 68.75%,rgb(25,149,156) 69.14%,rgb(24,149,154) 69.14%,rgb(24,149,154) 69.53%,rgb(23,149,152) 69.53%,rgb(23,149,152) 69.92%,rgb(22,150,150) 69.92%,rgb(22,150,150) 70.31%,rgb(21,150,148) 70.31%,rgb(21,150,148) 70.70%,rgb(20,150,146) 70.70%,rgb(20,150,146) 71.09%,rgb(20,150,144) 71.09%,rgb(20,150,144) 71.48%,rgb(19,151,142) 71.48%,rgb(19,151,142) 71.87%,rgb(18,151,140) 71.87%,rgb(18,151,140) 72.26%,rgb(17,151,138) 72.26%,rgb(17,151,138) 72.65%,rgb(16,151,136) 72.65%,rgb(16,151,136) 73.04%,rgb(15,151,134) 73.04%,rgb(15,151,134) 73.43%,rgb(14,152,132) 73.43%,rgb(14,152,132) 73.82%,rgb(13,152,130) 73.82%,rgb(13,152,130) 74.21%,rgb(13,152,128) 74.21%,rgb(13,152,128) 74.60%,rgb(12,152,126) 74.60%,rgb(12,152,126) 75%,rgb(12,152,124) 75%,rgb(12,152,124) 75.39%,rgb(11,153,121) 75.39%,rgb(11,153,121) 75.78%,rgb(11,153,119) 75.78%,rgb(11,153,119) 76.17%,rgb(11,153,117) 76.17%,rgb(11,153,117) 76.56%,rgb(12,153,115) 76.56%,rgb(12,153,115) 76.95%,rgb(13,153,112) 76.95%,rgb(13,153,112) 77.34%,rgb(14,153,110) 77.34%,rgb(14,153,110) 77.73%,rgb(15,154,107) 77.73%,rgb(15,154,107) 78.12%,rgb(17,154,105) 78.12%,rgb(17,154,105) 78.51%,rgb(19,154,102) 78.51%,rgb(19,154,102) 78.90%,rgb(21,154,99) 78.90%,rgb(21,154,99) 79.29%,rgb(23,154,97) 79.29%,rgb(23,154,97) 79.68%,rgb(25,154,94) 79.68%,rgb(25,154,94) 80.07%,rgb(28,154,91) 80.07%,rgb(28,154,91) 80.46%,rgb(31,154,88) 80.46%,rgb(31,154,88) 80.85%,rgb(33,154,85) 80.85%,rgb(33,154,85) 81.25%,rgb(36,154,82) 81.25%,rgb(36,154,82) 81.64%,rgb(39,154,79) 81.64%,rgb(39,154,79) 82.03%,rgb(43,154,76) 82.03%,rgb(43,154,76) 82.42%,rgb(46,154,73) 82.42%,rgb(46,154,73) 82.81%,rgb(49,153,70) 82.81%,rgb(49,153,70) 83.20%,rgb(53,153,67) 83.20%,rgb(53,153,67) 83.59%,rgb(56,153,64) 83.59%,rgb(56,153,64) 83.98%,rgb(60,153,60) 83.98%,rgb(60,153,60) 84.37%,rgb(64,152,57) 84.37%,rgb(64,152,57) 84.76%,rgb(67,152,54) 84.76%,rgb(67,152,54) 85.15%,rgb(71,151,50) 85.15%,rgb(71,151,50) 85.54%,rgb(75,151,47) 85.54%,rgb(75,151,47) 85.93%,rgb(79,150,44) 85.93%,rgb(79,150,44) 86.32%,rgb(83,150,41) 86.32%,rgb(83,150,41) 86.71%,rgb(86,149,38) 86.71%,rgb(86,149,38) 87.10%,rgb(90,148,35) 87.10%,rgb(90,148,35) 87.5%,rgb(94,148,32) 87.5%,rgb(94,148,32) 87.89%,rgb(97,147,30) 87.89%,rgb(97,147,30) 88.28%,rgb(101,146,27) 88.28%,rgb(101,146,27) 88.67%,rgb(104,145,25) 88.67%,rgb(104,145,25) 89.06%,rgb(107,144,23) 89.06%,rgb(107,144,23) 89.45%,rgb(111,144,22) 89.45%,rgb(111,144,22) 89.84%,rgb(114,143,20) 89.84%,rgb(114,143,20) 90.23%,rgb(116,142,19) 90.23%,rgb(116,142,19) 90.62%,rgb(119,141,18) 90.62%,rgb(119,141,18) 91.01%,rgb(122,140,17) 91.01%,rgb(122,140,17) 91.40%,rgb(125,139,16) 91.40%,rgb(125,139,16) 91.79%,rgb(127,139,15) 91.79%,rgb(127,139,15) 92.18%,rgb(130,138,15) 92.18%,rgb(130,138,15) 92.57%,rgb(132,137,14) 92.57%,rgb(132,137,14) 92.96%,rgb(134,136,14) 92.96%,rgb(134,136,14) 93.35%,rgb(136,135,14) 93.35%,rgb(136,135,14) 93.75%,rgb(139,134,13) 93.75%,rgb(139,134,13) 94.14%,rgb(141,133,13) 94.14%,rgb(141,133,13) 94.53%,rgb(143,132,13) 94.53%,rgb(143,132,13) 94.92%,rgb(145,131,13) 94.92%,rgb(145,131,13) 95.31%,rgb(147,131,13) 95.31%,rgb(147,131,13) 95.70%,rgb(149,130,13) 95.70%,rgb(149,130,13) 96.09%,rgb(151,129,13) 96.09%,rgb(151,129,13) 96.48%,rgb(153,128,13) 96.48%,rgb(153,128,13) 96.87%,rgb(155,127,13) 96.87%,rgb(155,127,13) 97.26%,rgb(157,126,13) 97.26%,rgb(157,126,13) 97.65%,rgb(159,125,13) 97.65%,rgb(159,125,13) 98.04%,rgb(161,124,13) 98.04%,rgb(161,124,13) 98.43%,rgb(162,123,13) 98.43%,rgb(162,123,13) 98.82%,rgb(164,122,13) 98.82%,rgb(164,122,13) 99.21%,rgb(166,121,13) 99.21%,rgb(166,121,13) 99.60%,rgb(168,120,13) 99.60%,rgb(168,120,13) 100%\",\n tex_buffer: new Uint8Array([168,120,13,169,119,15,171,118,17,172,117,19,174,116,20,175,115,22,177,114,24,178,113,25,179,112,27,181,111,29,182,110,30,183,109,32,185,108,34,186,107,35,187,106,37,189,105,38,190,104,40,191,103,42,192,102,43,193,101,45,194,100,46,196,98,48,197,97,50,198,96,51,199,95,53,200,94,55,201,93,56,202,92,58,203,90,60,204,89,62,205,88,63,206,87,65,207,86,67,208,84,69,208,83,71,209,82,73,210,81,75,211,79,77,212,78,79,213,77,81,213,75,83,214,74,85,215,73,87,216,71,90,216,70,92,217,69,94,217,67,97,218,66,99,219,64,102,219,63,104,220,61,107,220,60,109,221,58,112,221,57,115,221,56,118,222,54,120,222,53,123,222,51,126,222,50,129,223,49,132,223,47,135,223,46,138,223,45,141,223,43,144,223,42,147,222,41,151,222,40,154,222,40,157,222,39,160,221,38,163,221,38,166,220,37,169,220,37,173,219,37,176,218,37,179,218,38,182,217,38,185,216,39,188,215,39,190,214,40,193,213,41,196,212,42,199,211,43,201,210,45,204,209,46,206,208,47,208,207,49,211,205,50,213,204,52,215,203,53,217,201,55,219,200,57,221,198,58,223,197,60,225,195,62,226,194,63,228,192,65,229,190,67,231,189,69,232,187,70,233,185,72,235,184,74,236,182,75,237,180,77,238,178,79,239,176,80,239,174,82,240,172,84,241,170,85,241,169,87,242,167,89,243,164,90,243,162,92,243,160,93,244,158,95,244,156,96,244,154,98,244,152,99,244,149,101,244,147,102,244,145,104,244,143,105,244,140,107,243,138,108,243,135,109,243,133,111,242,130,112,241,128,113,241,125,115,240,123,116,239,120,117,239,118,119,238,115,120,237,112,121,236,110,122,235,107,123,233,104,124,232,102,126,231,99,127,230,96,128,228,93,129,227,90,130,225,88,131,223,85,132,222,82,133,220,79,134,218,77,135,216,74,135,215,71,136,213,69,137,211,66,138,209,64,138,207,61,139,205,59,140,203,56,140,201,54,141,199,52,142,196,50,142,194,48,143,192,46,143,190,44,144,188,42,144,186,40,145,184,39,145,182,37,145,180,36,146,178,35,146,176,33,146,174,32,147,172,31,147,170,30,147,168,29,148,166,28,148,164,27,148,162,26,148,160,25,149,158,25,149,156,24,149,154,23,149,152,22,150,150,21,150,148,20,150,146,20,150,144,19,151,142,18,151,140,17,151,138,16,151,136,15,151,134,14,152,132,13,152,130,13,152,128,12,152,126,12,152,124,11,153,121,11,153,119,11,153,117,12,153,115,13,153,112,14,153,110,15,154,107,17,154,105,19,154,102,21,154,99,23,154,97,25,154,94,28,154,91,31,154,88,33,154,85,36,154,82,39,154,79,43,154,76,46,154,73,49,153,70,53,153,67,56,153,64,60,153,60,64,152,57,67,152,54,71,151,50,75,151,47,79,150,44,83,150,41,86,149,38,90,148,35,94,148,32,97,147,30,101,146,27,104,145,25,107,144,23,111,144,22,114,143,20,116,142,19,119,141,18,122,140,17,125,139,16,127,139,15,130,138,15,132,137,14,134,136,14,136,135,14,139,134,13,141,133,13,143,132,13,145,131,13,147,131,13,149,130,13,151,129,13,153,128,13,155,127,13,157,126,13,159,125,13,161,124,13,162,123,13,164,122,13,166,121,13,168,120,13]),\n linear_interpolation: false\n},\n{\n name: \"pink\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(30,0,0) 0%,rgb(34,6,6) 0.781%,rgb(44,19,19) 1.562%,rgb(53,28,28) 2.343%,rgb(60,34,34) 3.125%,rgb(66,39,39) 3.906%,rgb(72,43,43) 4.687%,rgb(77,47,47) 5.468%,rgb(82,50,50) 6.25%,rgb(87,53,53) 7.031%,rgb(91,56,56) 7.812%,rgb(95,59,59) 8.593%,rgb(99,62,62) 9.375%,rgb(103,65,65) 10.15%,rgb(107,67,67) 10.93%,rgb(111,70,70) 11.71%,rgb(114,72,72) 12.5%,rgb(117,75,75) 13.28%,rgb(121,77,77) 14.06%,rgb(124,79,79) 14.84%,rgb(127,81,81) 15.62%,rgb(130,83,83) 16.40%,rgb(133,85,85) 17.18%,rgb(136,87,87) 17.96%,rgb(139,89,89) 18.75%,rgb(142,91,91) 19.53%,rgb(144,93,93) 20.31%,rgb(147,95,95) 21.09%,rgb(150,96,96) 21.87%,rgb(152,98,98) 22.65%,rgb(155,100,100) 23.43%,rgb(158,102,102) 24.21%,rgb(160,103,103) 25%,rgb(162,105,105) 25.78%,rgb(165,106,106) 26.56%,rgb(167,108,108) 27.34%,rgb(170,110,110) 28.12%,rgb(172,111,111) 28.90%,rgb(174,113,113) 29.68%,rgb(176,114,114) 30.46%,rgb(179,116,116) 31.25%,rgb(181,117,117) 32.03%,rgb(183,119,119) 32.81%,rgb(185,120,120) 33.59%,rgb(187,121,121) 34.37%,rgb(189,123,123) 35.15%,rgb(191,124,124) 35.93%,rgb(193,126,125) 36.71%,rgb(194,129,127) 37.5%,rgb(195,132,128) 38.28%,rgb(196,135,129) 39.06%,rgb(197,138,131) 39.84%,rgb(198,140,132) 40.62%,rgb(198,143,133) 41.40%,rgb(199,146,135) 42.18%,rgb(200,149,136) 42.96%,rgb(201,151,137) 43.75%,rgb(202,154,138) 44.53%,rgb(203,156,140) 45.31%,rgb(204,159,141) 46.09%,rgb(204,161,142) 46.87%,rgb(205,164,143) 47.65%,rgb(206,166,144) 48.43%,rgb(207,169,146) 49.21%,rgb(208,171,147) 50%,rgb(209,173,148) 50.78%,rgb(209,175,149) 51.56%,rgb(210,178,150) 52.34%,rgb(211,180,151) 53.12%,rgb(212,182,152) 53.90%,rgb(213,184,154) 54.68%,rgb(213,186,155) 55.46%,rgb(214,188,156) 56.25%,rgb(215,190,157) 57.03%,rgb(216,192,158) 57.81%,rgb(217,195,159) 58.59%,rgb(217,197,160) 59.37%,rgb(218,199,161) 60.15%,rgb(219,200,162) 60.93%,rgb(220,202,163) 61.71%,rgb(220,204,164) 62.5%,rgb(221,206,165) 63.28%,rgb(222,208,166) 64.06%,rgb(223,210,167) 64.84%,rgb(224,212,168) 65.62%,rgb(224,214,169) 66.40%,rgb(225,216,170) 67.18%,rgb(226,217,171) 67.96%,rgb(227,219,172) 68.75%,rgb(227,221,173) 69.53%,rgb(228,223,174) 70.31%,rgb(229,225,175) 71.09%,rgb(230,226,176) 71.87%,rgb(230,228,177) 72.65%,rgb(231,230,178) 73.43%,rgb(232,231,179) 74.21%,rgb(232,232,181) 75%,rgb(233,233,184) 75.78%,rgb(234,234,187) 76.56%,rgb(235,235,190) 77.34%,rgb(235,235,192) 78.12%,rgb(236,236,195) 78.90%,rgb(237,237,197) 79.68%,rgb(238,238,200) 80.46%,rgb(238,238,202) 81.25%,rgb(239,239,205) 82.03%,rgb(240,240,207) 82.81%,rgb(240,240,210) 83.59%,rgb(241,241,212) 84.37%,rgb(242,242,215) 85.15%,rgb(243,243,217) 85.93%,rgb(243,243,219) 86.71%,rgb(244,244,222) 87.5%,rgb(245,245,224) 88.28%,rgb(245,245,226) 89.06%,rgb(246,246,228) 89.84%,rgb(247,247,231) 90.62%,rgb(247,247,233) 91.40%,rgb(248,248,235) 92.18%,rgb(249,249,237) 92.96%,rgb(249,249,239) 93.75%,rgb(250,250,241) 94.53%,rgb(251,251,243) 95.31%,rgb(251,251,245) 96.09%,rgb(252,252,247) 96.87%,rgb(253,253,249) 97.65%,rgb(253,253,251) 98.43%,rgb(254,254,253) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([30,0,0,34,6,6,44,19,19,53,28,28,60,34,34,66,39,39,72,43,43,77,47,47,82,50,50,87,53,53,91,56,56,95,59,59,99,62,62,103,65,65,107,67,67,111,70,70,114,72,72,117,75,75,121,77,77,124,79,79,127,81,81,130,83,83,133,85,85,136,87,87,139,89,89,142,91,91,144,93,93,147,95,95,150,96,96,152,98,98,155,100,100,158,102,102,160,103,103,162,105,105,165,106,106,167,108,108,170,110,110,172,111,111,174,113,113,176,114,114,179,116,116,181,117,117,183,119,119,185,120,120,187,121,121,189,123,123,191,124,124,193,126,125,194,129,127,195,132,128,196,135,129,197,138,131,198,140,132,198,143,133,199,146,135,200,149,136,201,151,137,202,154,138,203,156,140,204,159,141,204,161,142,205,164,143,206,166,144,207,169,146,208,171,147,209,173,148,209,175,149,210,178,150,211,180,151,212,182,152,213,184,154,213,186,155,214,188,156,215,190,157,216,192,158,217,195,159,217,197,160,218,199,161,219,200,162,220,202,163,220,204,164,221,206,165,222,208,166,223,210,167,224,212,168,224,214,169,225,216,170,226,217,171,227,219,172,227,221,173,228,223,174,229,225,175,230,226,176,230,228,177,231,230,178,232,231,179,232,232,181,233,233,184,234,234,187,235,235,190,235,235,192,236,236,195,237,237,197,238,238,200,238,238,202,239,239,205,240,240,207,240,240,210,241,241,212,242,242,215,243,243,217,243,243,219,244,244,222,245,245,224,245,245,226,246,246,228,247,247,231,247,247,233,248,248,235,249,249,237,249,249,239,250,250,241,251,251,243,251,251,245,252,252,247,253,253,249,253,253,251,254,254,253,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"plasma\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(12,7,134) 0%,rgb(16,7,135) 0.781%,rgb(21,6,138) 1.562%,rgb(27,6,140) 2.343%,rgb(31,5,142) 3.125%,rgb(35,5,144) 3.906%,rgb(39,5,146) 4.687%,rgb(43,5,148) 5.468%,rgb(47,4,149) 6.25%,rgb(51,4,151) 7.031%,rgb(54,4,152) 7.812%,rgb(58,4,154) 8.593%,rgb(61,3,155) 9.375%,rgb(64,3,156) 10.15%,rgb(68,3,158) 10.93%,rgb(71,2,159) 11.71%,rgb(74,2,160) 12.5%,rgb(78,2,161) 13.28%,rgb(81,1,162) 14.06%,rgb(84,1,163) 14.84%,rgb(87,1,164) 15.62%,rgb(90,0,165) 16.40%,rgb(94,0,165) 17.18%,rgb(97,0,166) 17.96%,rgb(100,0,167) 18.75%,rgb(103,0,167) 19.53%,rgb(106,0,167) 20.31%,rgb(109,0,168) 21.09%,rgb(112,0,168) 21.87%,rgb(115,0,168) 22.65%,rgb(118,1,168) 23.43%,rgb(121,1,168) 24.21%,rgb(124,2,167) 25%,rgb(127,3,167) 25.78%,rgb(130,4,167) 26.56%,rgb(133,6,166) 27.34%,rgb(136,7,165) 28.12%,rgb(139,9,164) 28.90%,rgb(142,12,164) 29.68%,rgb(144,14,163) 30.46%,rgb(147,16,161) 31.25%,rgb(150,18,160) 32.03%,rgb(153,20,159) 32.81%,rgb(155,23,158) 33.59%,rgb(158,25,156) 34.37%,rgb(160,27,155) 35.15%,rgb(163,29,153) 35.93%,rgb(165,31,151) 36.71%,rgb(168,34,150) 37.5%,rgb(170,36,148) 38.28%,rgb(173,38,146) 39.06%,rgb(175,40,144) 39.84%,rgb(177,43,143) 40.62%,rgb(180,45,141) 41.40%,rgb(182,47,139) 42.18%,rgb(184,50,137) 42.96%,rgb(186,52,135) 43.75%,rgb(188,54,133) 44.53%,rgb(190,56,131) 45.31%,rgb(192,59,129) 46.09%,rgb(194,61,128) 46.87%,rgb(196,63,126) 47.65%,rgb(198,65,124) 48.43%,rgb(200,68,122) 49.21%,rgb(203,71,119) 50%,rgb(205,73,117) 50.78%,rgb(207,75,116) 51.56%,rgb(209,78,114) 52.34%,rgb(210,80,112) 53.12%,rgb(212,82,110) 53.90%,rgb(214,85,109) 54.68%,rgb(215,87,107) 55.46%,rgb(217,89,105) 56.25%,rgb(219,91,103) 57.03%,rgb(220,94,102) 57.81%,rgb(222,96,100) 58.59%,rgb(223,98,98) 59.37%,rgb(225,101,96) 60.15%,rgb(227,103,95) 60.93%,rgb(228,106,93) 61.71%,rgb(229,108,91) 62.5%,rgb(231,110,90) 63.28%,rgb(232,113,88) 64.06%,rgb(234,115,86) 64.84%,rgb(235,118,84) 65.62%,rgb(236,120,83) 66.40%,rgb(237,123,81) 67.18%,rgb(239,125,79) 67.96%,rgb(240,128,77) 68.75%,rgb(241,130,76) 69.53%,rgb(242,133,74) 70.31%,rgb(243,135,72) 71.09%,rgb(244,138,71) 71.87%,rgb(245,141,69) 72.65%,rgb(246,143,67) 73.43%,rgb(247,146,65) 74.21%,rgb(248,149,64) 75%,rgb(248,152,62) 75.78%,rgb(249,154,60) 76.56%,rgb(250,157,58) 77.34%,rgb(250,160,57) 78.12%,rgb(251,163,55) 78.90%,rgb(252,166,53) 79.68%,rgb(252,169,52) 80.46%,rgb(252,172,50) 81.25%,rgb(253,175,49) 82.03%,rgb(253,178,47) 82.81%,rgb(253,181,45) 83.59%,rgb(253,184,44) 84.37%,rgb(253,187,43) 85.15%,rgb(253,190,41) 85.93%,rgb(253,193,40) 86.71%,rgb(253,196,39) 87.5%,rgb(252,199,38) 88.28%,rgb(252,203,37) 89.06%,rgb(252,206,37) 89.84%,rgb(251,209,36) 90.62%,rgb(250,213,36) 91.40%,rgb(250,216,36) 92.18%,rgb(249,219,36) 92.96%,rgb(248,223,36) 93.75%,rgb(247,226,37) 94.53%,rgb(246,229,37) 95.31%,rgb(245,233,38) 96.09%,rgb(243,236,38) 96.87%,rgb(242,240,38) 97.65%,rgb(241,243,38) 98.43%,rgb(240,246,35) 99.21%,rgb(239,248,33) 100%\",\n tex_buffer: new Uint8Array([12,7,134,16,7,135,21,6,138,27,6,140,31,5,142,35,5,144,39,5,146,43,5,148,47,4,149,51,4,151,54,4,152,58,4,154,61,3,155,64,3,156,68,3,158,71,2,159,74,2,160,78,2,161,81,1,162,84,1,163,87,1,164,90,0,165,94,0,165,97,0,166,100,0,167,103,0,167,106,0,167,109,0,168,112,0,168,115,0,168,118,1,168,121,1,168,124,2,167,127,3,167,130,4,167,133,6,166,136,7,165,139,9,164,142,12,164,144,14,163,147,16,161,150,18,160,153,20,159,155,23,158,158,25,156,160,27,155,163,29,153,165,31,151,168,34,150,170,36,148,173,38,146,175,40,144,177,43,143,180,45,141,182,47,139,184,50,137,186,52,135,188,54,133,190,56,131,192,59,129,194,61,128,196,63,126,198,65,124,200,68,122,203,71,119,205,73,117,207,75,116,209,78,114,210,80,112,212,82,110,214,85,109,215,87,107,217,89,105,219,91,103,220,94,102,222,96,100,223,98,98,225,101,96,227,103,95,228,106,93,229,108,91,231,110,90,232,113,88,234,115,86,235,118,84,236,120,83,237,123,81,239,125,79,240,128,77,241,130,76,242,133,74,243,135,72,244,138,71,245,141,69,246,143,67,247,146,65,248,149,64,248,152,62,249,154,60,250,157,58,250,160,57,251,163,55,252,166,53,252,169,52,252,172,50,253,175,49,253,178,47,253,181,45,253,184,44,253,187,43,253,190,41,253,193,40,253,196,39,252,199,38,252,203,37,252,206,37,251,209,36,250,213,36,250,216,36,249,219,36,248,223,36,247,226,37,246,229,37,245,233,38,243,236,38,242,240,38,241,243,38,240,246,35,239,248,33]),\n linear_interpolation: true\n},\n{\n name: \"prism\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,0,0) 0%,rgb(255,0,0) 0.781%,rgb(255,0,0) 0.781%,rgb(255,82,0) 1.562%,rgb(255,177,0) 2.343%,rgb(255,247,0) 3.125%,rgb(176,255,0) 3.906%,rgb(81,253,0) 4.687%,rgb(9,186,60) 5.468%,rgb(0,93,188) 6.25%,rgb(0,0,255) 7.031%,rgb(65,0,255) 7.812%,rgb(157,0,211) 8.593%,rgb(253,0,92) 9.375%,rgb(255,0,0) 10.15%,rgb(255,67,0) 10.93%,rgb(255,163,0) 11.71%,rgb(255,239,0) 12.5%,rgb(191,255,0) 13.28%,rgb(94,255,0) 14.06%,rgb(18,199,39) 14.84%,rgb(0,108,171) 15.62%,rgb(0,11,255) 16.40%,rgb(52,0,255) 17.18%,rgb(142,0,225) 17.96%,rgb(239,0,113) 18.75%,rgb(255,0,0) 19.53%,rgb(255,52,0) 20.31%,rgb(255,149,0) 21.09%,rgb(255,229,0) 21.87%,rgb(206,255,0) 22.65%,rgb(109,255,0) 23.43%,rgb(27,210,16) 24.21%,rgb(0,123,153) 25%,rgb(0,25,249) 25.78%,rgb(41,0,255) 26.56%,rgb(127,0,237) 27.34%,rgb(225,0,133) 28.12%,rgb(255,0,0) 28.90%,rgb(255,37,0) 29.68%,rgb(255,135,0) 30.46%,rgb(255,219,0) 31.25%,rgb(221,255,0) 32.03%,rgb(123,255,0) 32.81%,rgb(38,221,0) 33.59%,rgb(0,138,134) 34.37%,rgb(0,40,238) 35.15%,rgb(30,0,255) 35.93%,rgb(113,0,248) 36.71%,rgb(210,0,152) 37.5%,rgb(255,0,16) 38.28%,rgb(255,22,0) 39.06%,rgb(255,120,0) 39.84%,rgb(255,208,0) 40.62%,rgb(235,255,0) 41.40%,rgb(138,255,0) 42.18%,rgb(49,231,0) 42.96%,rgb(0,152,114) 43.75%,rgb(0,55,225) 44.53%,rgb(20,0,255) 45.31%,rgb(98,0,255) 46.09%,rgb(195,0,170) 46.87%,rgb(255,0,38) 47.65%,rgb(255,8,0) 48.43%,rgb(255,105,0) 49.21%,rgb(255,196,0) 50%,rgb(249,255,0) 50.78%,rgb(153,255,0) 51.56%,rgb(61,241,0) 52.34%,rgb(0,166,93) 53.12%,rgb(0,70,212) 53.90%,rgb(11,0,255) 54.68%,rgb(85,0,255) 55.46%,rgb(180,0,187) 56.25%,rgb(255,0,60) 57.03%,rgb(255,0,0) 57.81%,rgb(255,90,0) 58.59%,rgb(255,183,0) 59.37%,rgb(255,251,0) 60.15%,rgb(168,255,0) 60.93%,rgb(74,249,0) 61.71%,rgb(5,179,72) 62.5%,rgb(0,85,196) 63.28%,rgb(3,0,255) 64.06%,rgb(71,0,255) 64.84%,rgb(165,0,203) 65.62%,rgb(255,0,81) 66.40%,rgb(255,0,0) 67.18%,rgb(255,75,0) 67.96%,rgb(255,170,0) 68.75%,rgb(255,243,0) 69.53%,rgb(183,255,0) 70.31%,rgb(87,255,0) 71.09%,rgb(13,192,50) 71.87%,rgb(0,100,180) 72.65%,rgb(0,4,255) 73.43%,rgb(59,0,255) 74.21%,rgb(150,0,218) 75%,rgb(247,0,102) 75.78%,rgb(255,0,0) 76.56%,rgb(255,60,0) 77.34%,rgb(255,157,0) 78.12%,rgb(255,234,0) 78.90%,rgb(198,255,0) 79.68%,rgb(101,255,0) 80.46%,rgb(22,204,28) 81.25%,rgb(0,115,162) 82.03%,rgb(0,18,254) 82.81%,rgb(47,0,255) 83.59%,rgb(135,0,231) 84.37%,rgb(233,0,122) 85.15%,rgb(255,0,0) 85.93%,rgb(255,45,0) 86.71%,rgb(255,142,0) 87.5%,rgb(255,225,0) 88.28%,rgb(213,255,0) 89.06%,rgb(115,255,0) 89.84%,rgb(32,216,6) 90.62%,rgb(0,130,144) 91.40%,rgb(0,32,244) 92.18%,rgb(36,0,255) 92.96%,rgb(120,0,243) 93.75%,rgb(218,0,142) 94.53%,rgb(255,0,4) 95.31%,rgb(255,30,0) 96.09%,rgb(255,128,0) 96.87%,rgb(255,214,0) 97.65%,rgb(228,255,0) 98.43%,rgb(130,255,0) 99.21%,rgb(84,254,0) 100%\",\n tex_buffer: new Uint8Array([255,0,0,255,0,0,255,82,0,255,177,0,255,247,0,176,255,0,81,253,0,9,186,60,0,93,188,0,0,255,65,0,255,157,0,211,253,0,92,255,0,0,255,67,0,255,163,0,255,239,0,191,255,0,94,255,0,18,199,39,0,108,171,0,11,255,52,0,255,142,0,225,239,0,113,255,0,0,255,52,0,255,149,0,255,229,0,206,255,0,109,255,0,27,210,16,0,123,153,0,25,249,41,0,255,127,0,237,225,0,133,255,0,0,255,37,0,255,135,0,255,219,0,221,255,0,123,255,0,38,221,0,0,138,134,0,40,238,30,0,255,113,0,248,210,0,152,255,0,16,255,22,0,255,120,0,255,208,0,235,255,0,138,255,0,49,231,0,0,152,114,0,55,225,20,0,255,98,0,255,195,0,170,255,0,38,255,8,0,255,105,0,255,196,0,249,255,0,153,255,0,61,241,0,0,166,93,0,70,212,11,0,255,85,0,255,180,0,187,255,0,60,255,0,0,255,90,0,255,183,0,255,251,0,168,255,0,74,249,0,5,179,72,0,85,196,3,0,255,71,0,255,165,0,203,255,0,81,255,0,0,255,75,0,255,170,0,255,243,0,183,255,0,87,255,0,13,192,50,0,100,180,0,4,255,59,0,255,150,0,218,247,0,102,255,0,0,255,60,0,255,157,0,255,234,0,198,255,0,101,255,0,22,204,28,0,115,162,0,18,254,47,0,255,135,0,231,233,0,122,255,0,0,255,45,0,255,142,0,255,225,0,213,255,0,115,255,0,32,216,6,0,130,144,0,32,244,36,0,255,120,0,243,218,0,142,255,0,4,255,30,0,255,128,0,255,214,0,228,255,0,130,255,0,84,254,0]),\n linear_interpolation: true\n},\n{\n name: \"rain\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(238,237,243) 0%,rgb(238,237,243) 0.390%,rgb(238,236,241) 0.390%,rgb(238,236,241) 0.781%,rgb(237,235,240) 0.781%,rgb(237,235,240) 1.171%,rgb(236,234,238) 1.171%,rgb(236,234,238) 1.562%,rgb(235,233,236) 1.562%,rgb(235,233,236) 1.953%,rgb(235,232,235) 1.953%,rgb(235,232,235) 2.343%,rgb(234,231,233) 2.343%,rgb(234,231,233) 2.734%,rgb(233,230,232) 2.734%,rgb(233,230,232) 3.125%,rgb(232,229,230) 3.125%,rgb(232,229,230) 3.515%,rgb(232,228,229) 3.515%,rgb(232,228,229) 3.906%,rgb(231,227,227) 3.906%,rgb(231,227,227) 4.296%,rgb(230,226,226) 4.296%,rgb(230,226,226) 4.687%,rgb(229,225,224) 4.687%,rgb(229,225,224) 5.078%,rgb(228,223,223) 5.078%,rgb(228,223,223) 5.468%,rgb(228,222,221) 5.468%,rgb(228,222,221) 5.859%,rgb(227,221,220) 5.859%,rgb(227,221,220) 6.25%,rgb(227,220,218) 6.25%,rgb(227,220,218) 6.640%,rgb(226,219,216) 6.640%,rgb(226,219,216) 7.031%,rgb(226,218,214) 7.031%,rgb(226,218,214) 7.421%,rgb(225,217,212) 7.421%,rgb(225,217,212) 7.812%,rgb(224,216,211) 7.812%,rgb(224,216,211) 8.203%,rgb(224,215,209) 8.203%,rgb(224,215,209) 8.593%,rgb(223,214,207) 8.593%,rgb(223,214,207) 8.984%,rgb(223,213,205) 8.984%,rgb(223,213,205) 9.375%,rgb(222,212,203) 9.375%,rgb(222,212,203) 9.765%,rgb(222,211,201) 9.765%,rgb(222,211,201) 10.15%,rgb(221,209,199) 10.15%,rgb(221,209,199) 10.54%,rgb(221,208,197) 10.54%,rgb(221,208,197) 10.93%,rgb(220,207,195) 10.93%,rgb(220,207,195) 11.32%,rgb(220,206,193) 11.32%,rgb(220,206,193) 11.71%,rgb(219,205,191) 11.71%,rgb(219,205,191) 12.10%,rgb(219,204,190) 12.10%,rgb(219,204,190) 12.5%,rgb(219,203,188) 12.5%,rgb(219,203,188) 12.89%,rgb(218,202,186) 12.89%,rgb(218,202,186) 13.28%,rgb(218,201,184) 13.28%,rgb(218,201,184) 13.67%,rgb(217,200,182) 13.67%,rgb(217,200,182) 14.06%,rgb(216,199,180) 14.06%,rgb(216,199,180) 14.45%,rgb(216,198,178) 14.45%,rgb(216,198,178) 14.84%,rgb(215,197,176) 14.84%,rgb(215,197,176) 15.23%,rgb(215,196,174) 15.23%,rgb(215,196,174) 15.62%,rgb(214,195,172) 15.62%,rgb(214,195,172) 16.01%,rgb(213,194,170) 16.01%,rgb(213,194,170) 16.40%,rgb(213,193,168) 16.40%,rgb(213,193,168) 16.79%,rgb(212,192,166) 16.79%,rgb(212,192,166) 17.18%,rgb(211,191,164) 17.18%,rgb(211,191,164) 17.57%,rgb(210,191,162) 17.57%,rgb(210,191,162) 17.96%,rgb(209,190,160) 17.96%,rgb(209,190,160) 18.35%,rgb(208,189,158) 18.35%,rgb(208,189,158) 18.75%,rgb(207,188,156) 18.75%,rgb(207,188,156) 19.14%,rgb(205,188,155) 19.14%,rgb(205,188,155) 19.53%,rgb(204,187,153) 19.53%,rgb(204,187,153) 19.92%,rgb(203,186,152) 19.92%,rgb(203,186,152) 20.31%,rgb(201,186,150) 20.31%,rgb(201,186,150) 20.70%,rgb(200,185,149) 20.70%,rgb(200,185,149) 21.09%,rgb(198,185,148) 21.09%,rgb(198,185,148) 21.48%,rgb(196,184,146) 21.48%,rgb(196,184,146) 21.87%,rgb(195,183,145) 21.87%,rgb(195,183,145) 22.26%,rgb(193,183,144) 22.26%,rgb(193,183,144) 22.65%,rgb(192,182,143) 22.65%,rgb(192,182,143) 23.04%,rgb(190,182,142) 23.04%,rgb(190,182,142) 23.43%,rgb(188,181,141) 23.43%,rgb(188,181,141) 23.82%,rgb(186,181,141) 23.82%,rgb(186,181,141) 24.21%,rgb(185,180,140) 24.21%,rgb(185,180,140) 24.60%,rgb(183,179,139) 24.60%,rgb(183,179,139) 25%,rgb(181,179,138) 25%,rgb(181,179,138) 25.39%,rgb(180,178,137) 25.39%,rgb(180,178,137) 25.78%,rgb(178,178,137) 25.78%,rgb(178,178,137) 26.17%,rgb(176,177,136) 26.17%,rgb(176,177,136) 26.56%,rgb(174,177,135) 26.56%,rgb(174,177,135) 26.95%,rgb(173,176,135) 26.95%,rgb(173,176,135) 27.34%,rgb(171,176,134) 27.34%,rgb(171,176,134) 27.73%,rgb(169,175,133) 27.73%,rgb(169,175,133) 28.12%,rgb(168,174,133) 28.12%,rgb(168,174,133) 28.51%,rgb(166,174,132) 28.51%,rgb(166,174,132) 28.90%,rgb(164,173,132) 28.90%,rgb(164,173,132) 29.29%,rgb(162,173,131) 29.29%,rgb(162,173,131) 29.68%,rgb(161,172,130) 29.68%,rgb(161,172,130) 30.07%,rgb(159,172,130) 30.07%,rgb(159,172,130) 30.46%,rgb(157,171,129) 30.46%,rgb(157,171,129) 30.85%,rgb(156,170,129) 30.85%,rgb(156,170,129) 31.25%,rgb(154,170,128) 31.25%,rgb(154,170,128) 31.64%,rgb(152,169,128) 31.64%,rgb(152,169,128) 32.03%,rgb(150,169,127) 32.03%,rgb(150,169,127) 32.42%,rgb(149,168,126) 32.42%,rgb(149,168,126) 32.81%,rgb(147,168,126) 32.81%,rgb(147,168,126) 33.20%,rgb(145,167,125) 33.20%,rgb(145,167,125) 33.59%,rgb(144,167,125) 33.59%,rgb(144,167,125) 33.98%,rgb(142,166,124) 33.98%,rgb(142,166,124) 34.37%,rgb(140,165,124) 34.37%,rgb(140,165,124) 34.76%,rgb(138,165,123) 34.76%,rgb(138,165,123) 35.15%,rgb(137,164,123) 35.15%,rgb(137,164,123) 35.54%,rgb(135,164,122) 35.54%,rgb(135,164,122) 35.93%,rgb(133,163,122) 35.93%,rgb(133,163,122) 36.32%,rgb(131,163,121) 36.32%,rgb(131,163,121) 36.71%,rgb(130,162,120) 36.71%,rgb(130,162,120) 37.10%,rgb(128,161,120) 37.10%,rgb(128,161,120) 37.5%,rgb(126,161,119) 37.5%,rgb(126,161,119) 37.89%,rgb(124,160,119) 37.89%,rgb(124,160,119) 38.28%,rgb(122,160,118) 38.28%,rgb(122,160,118) 38.67%,rgb(121,159,118) 38.67%,rgb(121,159,118) 39.06%,rgb(119,159,117) 39.06%,rgb(119,159,117) 39.45%,rgb(117,158,117) 39.45%,rgb(117,158,117) 39.84%,rgb(115,157,117) 39.84%,rgb(115,157,117) 40.23%,rgb(113,157,116) 40.23%,rgb(113,157,116) 40.62%,rgb(111,156,116) 40.62%,rgb(111,156,116) 41.01%,rgb(109,156,115) 41.01%,rgb(109,156,115) 41.40%,rgb(107,155,115) 41.40%,rgb(107,155,115) 41.79%,rgb(105,155,114) 41.79%,rgb(105,155,114) 42.18%,rgb(103,154,114) 42.18%,rgb(103,154,114) 42.57%,rgb(101,154,114) 42.57%,rgb(101,154,114) 42.96%,rgb(100,153,113) 42.96%,rgb(100,153,113) 43.35%,rgb(97,152,113) 43.35%,rgb(97,152,113) 43.75%,rgb(95,152,113) 43.75%,rgb(95,152,113) 44.14%,rgb(93,151,112) 44.14%,rgb(93,151,112) 44.53%,rgb(91,151,112) 44.53%,rgb(91,151,112) 44.92%,rgb(89,150,112) 44.92%,rgb(89,150,112) 45.31%,rgb(87,149,111) 45.31%,rgb(87,149,111) 45.70%,rgb(85,149,111) 45.70%,rgb(85,149,111) 46.09%,rgb(83,148,111) 46.09%,rgb(83,148,111) 46.48%,rgb(81,148,111) 46.48%,rgb(81,148,111) 46.87%,rgb(79,147,110) 46.87%,rgb(79,147,110) 47.26%,rgb(76,147,110) 47.26%,rgb(76,147,110) 47.65%,rgb(74,146,110) 47.65%,rgb(74,146,110) 48.04%,rgb(72,145,110) 48.04%,rgb(72,145,110) 48.43%,rgb(70,145,110) 48.43%,rgb(70,145,110) 48.82%,rgb(67,144,110) 48.82%,rgb(67,144,110) 49.21%,rgb(65,143,110) 49.21%,rgb(65,143,110) 49.60%,rgb(63,143,110) 49.60%,rgb(63,143,110) 50%,rgb(61,142,110) 50%,rgb(61,142,110) 50.39%,rgb(58,141,109) 50.39%,rgb(58,141,109) 50.78%,rgb(56,141,109) 50.78%,rgb(56,141,109) 51.17%,rgb(54,140,109) 51.17%,rgb(54,140,109) 51.56%,rgb(52,139,109) 51.56%,rgb(52,139,109) 51.95%,rgb(49,139,110) 51.95%,rgb(49,139,110) 52.34%,rgb(47,138,110) 52.34%,rgb(47,138,110) 52.73%,rgb(45,137,110) 52.73%,rgb(45,137,110) 53.12%,rgb(43,137,110) 53.12%,rgb(43,137,110) 53.51%,rgb(41,136,110) 53.51%,rgb(41,136,110) 53.90%,rgb(38,135,110) 53.90%,rgb(38,135,110) 54.29%,rgb(36,134,110) 54.29%,rgb(36,134,110) 54.68%,rgb(34,134,110) 54.68%,rgb(34,134,110) 55.07%,rgb(32,133,110) 55.07%,rgb(32,133,110) 55.46%,rgb(30,132,110) 55.46%,rgb(30,132,110) 55.85%,rgb(28,131,110) 55.85%,rgb(28,131,110) 56.25%,rgb(27,130,110) 56.25%,rgb(27,130,110) 56.64%,rgb(25,129,110) 56.64%,rgb(25,129,110) 57.03%,rgb(23,129,110) 57.03%,rgb(23,129,110) 57.42%,rgb(21,128,110) 57.42%,rgb(21,128,110) 57.81%,rgb(20,127,110) 57.81%,rgb(20,127,110) 58.20%,rgb(18,126,110) 58.20%,rgb(18,126,110) 58.59%,rgb(17,125,110) 58.59%,rgb(17,125,110) 58.98%,rgb(15,124,110) 58.98%,rgb(15,124,110) 59.37%,rgb(14,124,110) 59.37%,rgb(14,124,110) 59.76%,rgb(12,123,110) 59.76%,rgb(12,123,110) 60.15%,rgb(11,122,110) 60.15%,rgb(11,122,110) 60.54%,rgb(10,121,110) 60.54%,rgb(10,121,110) 60.93%,rgb(9,120,110) 60.93%,rgb(9,120,110) 61.32%,rgb(8,119,110) 61.32%,rgb(8,119,110) 61.71%,rgb(7,118,110) 61.71%,rgb(7,118,110) 62.10%,rgb(6,117,110) 62.10%,rgb(6,117,110) 62.5%,rgb(6,116,110) 62.5%,rgb(6,116,110) 62.89%,rgb(5,116,110) 62.89%,rgb(5,116,110) 63.28%,rgb(5,115,110) 63.28%,rgb(5,115,110) 63.67%,rgb(4,114,110) 63.67%,rgb(4,114,110) 64.06%,rgb(4,113,110) 64.06%,rgb(4,113,110) 64.45%,rgb(4,112,109) 64.45%,rgb(4,112,109) 64.84%,rgb(3,111,109) 64.84%,rgb(3,111,109) 65.23%,rgb(3,110,109) 65.23%,rgb(3,110,109) 65.62%,rgb(3,109,109) 65.62%,rgb(3,109,109) 66.01%,rgb(3,108,109) 66.01%,rgb(3,108,109) 66.40%,rgb(4,107,109) 66.40%,rgb(4,107,109) 66.79%,rgb(4,107,109) 66.79%,rgb(4,107,109) 67.18%,rgb(4,106,108) 67.18%,rgb(4,106,108) 67.57%,rgb(4,105,108) 67.57%,rgb(4,105,108) 67.96%,rgb(5,104,108) 67.96%,rgb(5,104,108) 68.35%,rgb(5,103,108) 68.35%,rgb(5,103,108) 68.75%,rgb(6,102,108) 68.75%,rgb(6,102,108) 69.14%,rgb(7,101,107) 69.14%,rgb(7,101,107) 69.53%,rgb(7,100,107) 69.53%,rgb(7,100,107) 69.92%,rgb(8,99,107) 69.92%,rgb(8,99,107) 70.31%,rgb(9,98,107) 70.31%,rgb(9,98,107) 70.70%,rgb(10,97,106) 70.70%,rgb(10,97,106) 71.09%,rgb(11,96,106) 71.09%,rgb(11,96,106) 71.48%,rgb(12,95,106) 71.48%,rgb(12,95,106) 71.87%,rgb(13,95,105) 71.87%,rgb(13,95,105) 72.26%,rgb(14,94,105) 72.26%,rgb(14,94,105) 72.65%,rgb(15,93,105) 72.65%,rgb(15,93,105) 73.04%,rgb(16,92,104) 73.04%,rgb(16,92,104) 73.43%,rgb(17,91,104) 73.43%,rgb(17,91,104) 73.82%,rgb(18,90,103) 73.82%,rgb(18,90,103) 74.21%,rgb(19,89,103) 74.21%,rgb(19,89,103) 74.60%,rgb(20,88,103) 74.60%,rgb(20,88,103) 75%,rgb(21,87,102) 75%,rgb(21,87,102) 75.39%,rgb(22,86,102) 75.39%,rgb(22,86,102) 75.78%,rgb(22,85,101) 75.78%,rgb(22,85,101) 76.17%,rgb(23,84,101) 76.17%,rgb(23,84,101) 76.56%,rgb(24,83,100) 76.56%,rgb(24,83,100) 76.95%,rgb(25,82,100) 76.95%,rgb(25,82,100) 77.34%,rgb(26,81,99) 77.34%,rgb(26,81,99) 77.73%,rgb(26,80,99) 77.73%,rgb(26,80,99) 78.12%,rgb(27,79,98) 78.12%,rgb(27,79,98) 78.51%,rgb(28,78,97) 78.51%,rgb(28,78,97) 78.90%,rgb(28,77,97) 78.90%,rgb(28,77,97) 79.29%,rgb(29,76,96) 79.29%,rgb(29,76,96) 79.68%,rgb(30,75,95) 79.68%,rgb(30,75,95) 80.07%,rgb(30,74,95) 80.07%,rgb(30,74,95) 80.46%,rgb(31,73,94) 80.46%,rgb(31,73,94) 80.85%,rgb(31,72,93) 80.85%,rgb(31,72,93) 81.25%,rgb(32,72,93) 81.25%,rgb(32,72,93) 81.64%,rgb(33,71,92) 81.64%,rgb(33,71,92) 82.03%,rgb(33,70,91) 82.03%,rgb(33,70,91) 82.42%,rgb(33,69,90) 82.42%,rgb(33,69,90) 82.81%,rgb(34,68,90) 82.81%,rgb(34,68,90) 83.20%,rgb(34,67,89) 83.20%,rgb(34,67,89) 83.59%,rgb(35,66,88) 83.59%,rgb(35,66,88) 83.98%,rgb(35,65,87) 83.98%,rgb(35,65,87) 84.37%,rgb(35,64,86) 84.37%,rgb(35,64,86) 84.76%,rgb(36,63,86) 84.76%,rgb(36,63,86) 85.15%,rgb(36,62,85) 85.15%,rgb(36,62,85) 85.54%,rgb(36,61,84) 85.54%,rgb(36,61,84) 85.93%,rgb(36,60,83) 85.93%,rgb(36,60,83) 86.32%,rgb(36,59,82) 86.32%,rgb(36,59,82) 86.71%,rgb(37,58,81) 86.71%,rgb(37,58,81) 87.10%,rgb(37,57,81) 87.10%,rgb(37,57,81) 87.5%,rgb(37,56,80) 87.5%,rgb(37,56,80) 87.89%,rgb(37,55,79) 87.89%,rgb(37,55,79) 88.28%,rgb(37,55,78) 88.28%,rgb(37,55,78) 88.67%,rgb(37,54,77) 88.67%,rgb(37,54,77) 89.06%,rgb(37,53,76) 89.06%,rgb(37,53,76) 89.45%,rgb(37,52,76) 89.45%,rgb(37,52,76) 89.84%,rgb(37,51,75) 89.84%,rgb(37,51,75) 90.23%,rgb(37,50,74) 90.23%,rgb(37,50,74) 90.62%,rgb(37,49,73) 90.62%,rgb(37,49,73) 91.01%,rgb(37,48,72) 91.01%,rgb(37,48,72) 91.40%,rgb(37,47,72) 91.40%,rgb(37,47,72) 91.79%,rgb(37,46,71) 91.79%,rgb(37,46,71) 92.18%,rgb(37,45,70) 92.18%,rgb(37,45,70) 92.57%,rgb(37,44,69) 92.57%,rgb(37,44,69) 92.96%,rgb(37,43,69) 92.96%,rgb(37,43,69) 93.35%,rgb(37,42,68) 93.35%,rgb(37,42,68) 93.75%,rgb(36,41,67) 93.75%,rgb(36,41,67) 94.14%,rgb(36,40,66) 94.14%,rgb(36,40,66) 94.53%,rgb(36,39,66) 94.53%,rgb(36,39,66) 94.92%,rgb(36,39,65) 94.92%,rgb(36,39,65) 95.31%,rgb(36,38,64) 95.31%,rgb(36,38,64) 95.70%,rgb(36,37,63) 95.70%,rgb(36,37,63) 96.09%,rgb(35,36,63) 96.09%,rgb(35,36,63) 96.48%,rgb(35,35,62) 96.48%,rgb(35,35,62) 96.87%,rgb(35,34,61) 96.87%,rgb(35,34,61) 97.26%,rgb(35,33,61) 97.26%,rgb(35,33,61) 97.65%,rgb(35,32,60) 97.65%,rgb(35,32,60) 98.04%,rgb(34,31,59) 98.04%,rgb(34,31,59) 98.43%,rgb(34,30,58) 98.43%,rgb(34,30,58) 98.82%,rgb(34,29,58) 98.82%,rgb(34,29,58) 99.21%,rgb(34,28,57) 99.21%,rgb(34,28,57) 99.60%,rgb(34,27,56) 99.60%,rgb(34,27,56) 100%\",\n tex_buffer: new Uint8Array([238,237,243,238,236,241,237,235,240,236,234,238,235,233,236,235,232,235,234,231,233,233,230,232,232,229,230,232,228,229,231,227,227,230,226,226,229,225,224,228,223,223,228,222,221,227,221,220,227,220,218,226,219,216,226,218,214,225,217,212,224,216,211,224,215,209,223,214,207,223,213,205,222,212,203,222,211,201,221,209,199,221,208,197,220,207,195,220,206,193,219,205,191,219,204,190,219,203,188,218,202,186,218,201,184,217,200,182,216,199,180,216,198,178,215,197,176,215,196,174,214,195,172,213,194,170,213,193,168,212,192,166,211,191,164,210,191,162,209,190,160,208,189,158,207,188,156,205,188,155,204,187,153,203,186,152,201,186,150,200,185,149,198,185,148,196,184,146,195,183,145,193,183,144,192,182,143,190,182,142,188,181,141,186,181,141,185,180,140,183,179,139,181,179,138,180,178,137,178,178,137,176,177,136,174,177,135,173,176,135,171,176,134,169,175,133,168,174,133,166,174,132,164,173,132,162,173,131,161,172,130,159,172,130,157,171,129,156,170,129,154,170,128,152,169,128,150,169,127,149,168,126,147,168,126,145,167,125,144,167,125,142,166,124,140,165,124,138,165,123,137,164,123,135,164,122,133,163,122,131,163,121,130,162,120,128,161,120,126,161,119,124,160,119,122,160,118,121,159,118,119,159,117,117,158,117,115,157,117,113,157,116,111,156,116,109,156,115,107,155,115,105,155,114,103,154,114,101,154,114,100,153,113,97,152,113,95,152,113,93,151,112,91,151,112,89,150,112,87,149,111,85,149,111,83,148,111,81,148,111,79,147,110,76,147,110,74,146,110,72,145,110,70,145,110,67,144,110,65,143,110,63,143,110,61,142,110,58,141,109,56,141,109,54,140,109,52,139,109,49,139,110,47,138,110,45,137,110,43,137,110,41,136,110,38,135,110,36,134,110,34,134,110,32,133,110,30,132,110,28,131,110,27,130,110,25,129,110,23,129,110,21,128,110,20,127,110,18,126,110,17,125,110,15,124,110,14,124,110,12,123,110,11,122,110,10,121,110,9,120,110,8,119,110,7,118,110,6,117,110,6,116,110,5,116,110,5,115,110,4,114,110,4,113,110,4,112,109,3,111,109,3,110,109,3,109,109,3,108,109,4,107,109,4,107,109,4,106,108,4,105,108,5,104,108,5,103,108,6,102,108,7,101,107,7,100,107,8,99,107,9,98,107,10,97,106,11,96,106,12,95,106,13,95,105,14,94,105,15,93,105,16,92,104,17,91,104,18,90,103,19,89,103,20,88,103,21,87,102,22,86,102,22,85,101,23,84,101,24,83,100,25,82,100,26,81,99,26,80,99,27,79,98,28,78,97,28,77,97,29,76,96,30,75,95,30,74,95,31,73,94,31,72,93,32,72,93,33,71,92,33,70,91,33,69,90,34,68,90,34,67,89,35,66,88,35,65,87,35,64,86,36,63,86,36,62,85,36,61,84,36,60,83,36,59,82,37,58,81,37,57,81,37,56,80,37,55,79,37,55,78,37,54,77,37,53,76,37,52,76,37,51,75,37,50,74,37,49,73,37,48,72,37,47,72,37,46,71,37,45,70,37,44,69,37,43,69,37,42,68,36,41,67,36,40,66,36,39,66,36,39,65,36,38,64,36,37,63,35,36,63,35,35,62,35,34,61,35,33,61,35,32,60,34,31,59,34,30,58,34,29,58,34,28,57,34,27,56]),\n linear_interpolation: false\n},\n{\n name: \"rainbow\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(127,0,255) 0%,rgb(125,3,254) 0.781%,rgb(121,9,254) 1.562%,rgb(117,15,254) 2.343%,rgb(113,22,254) 3.125%,rgb(109,28,254) 3.906%,rgb(105,34,254) 4.687%,rgb(101,40,254) 5.468%,rgb(97,47,253) 6.25%,rgb(93,53,253) 7.031%,rgb(89,59,253) 7.812%,rgb(85,65,252) 8.593%,rgb(81,71,252) 9.375%,rgb(77,77,251) 10.15%,rgb(73,83,251) 10.93%,rgb(69,89,250) 11.71%,rgb(65,95,250) 12.5%,rgb(61,101,249) 13.28%,rgb(57,106,249) 14.06%,rgb(53,112,248) 14.84%,rgb(49,118,247) 15.62%,rgb(45,123,246) 16.40%,rgb(41,129,246) 17.18%,rgb(37,134,245) 17.96%,rgb(33,140,244) 18.75%,rgb(29,145,243) 19.53%,rgb(25,150,242) 20.31%,rgb(21,155,241) 21.09%,rgb(17,160,240) 21.87%,rgb(13,165,239) 22.65%,rgb(9,170,238) 23.43%,rgb(5,174,237) 24.21%,rgb(1,179,235) 25%,rgb(3,183,234) 25.78%,rgb(7,187,233) 26.56%,rgb(11,192,232) 27.34%,rgb(15,196,230) 28.12%,rgb(19,200,229) 28.90%,rgb(23,204,228) 29.68%,rgb(27,207,226) 30.46%,rgb(31,211,225) 31.25%,rgb(35,214,223) 32.03%,rgb(39,218,222) 32.81%,rgb(43,221,220) 33.59%,rgb(47,224,218) 34.37%,rgb(51,227,217) 35.15%,rgb(55,230,215) 35.93%,rgb(59,232,213) 36.71%,rgb(63,235,212) 37.5%,rgb(67,237,210) 38.28%,rgb(71,239,208) 39.06%,rgb(75,241,206) 39.84%,rgb(79,243,204) 40.62%,rgb(83,245,203) 41.40%,rgb(87,247,201) 42.18%,rgb(91,248,199) 42.96%,rgb(95,250,197) 43.75%,rgb(99,251,195) 44.53%,rgb(103,252,193) 45.31%,rgb(107,253,191) 46.09%,rgb(111,253,189) 46.87%,rgb(115,254,186) 47.65%,rgb(119,254,184) 48.43%,rgb(123,254,182) 49.21%,rgb(127,255,180) 50%,rgb(131,254,178) 50.78%,rgb(135,254,175) 51.56%,rgb(139,254,173) 52.34%,rgb(143,253,171) 53.12%,rgb(147,253,168) 53.90%,rgb(151,252,166) 54.68%,rgb(155,251,164) 55.46%,rgb(159,250,161) 56.25%,rgb(163,248,159) 57.03%,rgb(167,247,156) 57.81%,rgb(171,245,154) 58.59%,rgb(175,243,151) 59.37%,rgb(179,241,149) 60.15%,rgb(183,239,146) 60.93%,rgb(187,237,143) 61.71%,rgb(191,235,141) 62.5%,rgb(195,232,138) 63.28%,rgb(199,230,136) 64.06%,rgb(203,227,133) 64.84%,rgb(207,224,130) 65.62%,rgb(211,221,127) 66.40%,rgb(215,218,125) 67.18%,rgb(219,214,122) 67.96%,rgb(223,211,119) 68.75%,rgb(227,207,116) 69.53%,rgb(231,204,114) 70.31%,rgb(235,200,111) 71.09%,rgb(239,196,108) 71.87%,rgb(243,192,105) 72.65%,rgb(247,187,102) 73.43%,rgb(251,183,99) 74.21%,rgb(255,179,96) 75%,rgb(255,174,93) 75.78%,rgb(255,170,90) 76.56%,rgb(255,165,88) 77.34%,rgb(255,160,85) 78.12%,rgb(255,155,82) 78.90%,rgb(255,150,79) 79.68%,rgb(255,145,76) 80.46%,rgb(255,140,73) 81.25%,rgb(255,134,70) 82.03%,rgb(255,129,67) 82.81%,rgb(255,123,63) 83.59%,rgb(255,118,60) 84.37%,rgb(255,112,57) 85.15%,rgb(255,106,54) 85.93%,rgb(255,101,51) 86.71%,rgb(255,95,48) 87.5%,rgb(255,89,45) 88.28%,rgb(255,83,42) 89.06%,rgb(255,77,39) 89.84%,rgb(255,71,36) 90.62%,rgb(255,65,33) 91.40%,rgb(255,59,29) 92.18%,rgb(255,53,26) 92.96%,rgb(255,47,23) 93.75%,rgb(255,40,20) 94.53%,rgb(255,34,17) 95.31%,rgb(255,28,14) 96.09%,rgb(255,22,11) 96.87%,rgb(255,15,7) 97.65%,rgb(255,9,4) 98.43%,rgb(255,3,1) 99.21%,rgb(255,0,0) 100%\",\n tex_buffer: new Uint8Array([127,0,255,125,3,254,121,9,254,117,15,254,113,22,254,109,28,254,105,34,254,101,40,254,97,47,253,93,53,253,89,59,253,85,65,252,81,71,252,77,77,251,73,83,251,69,89,250,65,95,250,61,101,249,57,106,249,53,112,248,49,118,247,45,123,246,41,129,246,37,134,245,33,140,244,29,145,243,25,150,242,21,155,241,17,160,240,13,165,239,9,170,238,5,174,237,1,179,235,3,183,234,7,187,233,11,192,232,15,196,230,19,200,229,23,204,228,27,207,226,31,211,225,35,214,223,39,218,222,43,221,220,47,224,218,51,227,217,55,230,215,59,232,213,63,235,212,67,237,210,71,239,208,75,241,206,79,243,204,83,245,203,87,247,201,91,248,199,95,250,197,99,251,195,103,252,193,107,253,191,111,253,189,115,254,186,119,254,184,123,254,182,127,255,180,131,254,178,135,254,175,139,254,173,143,253,171,147,253,168,151,252,166,155,251,164,159,250,161,163,248,159,167,247,156,171,245,154,175,243,151,179,241,149,183,239,146,187,237,143,191,235,141,195,232,138,199,230,136,203,227,133,207,224,130,211,221,127,215,218,125,219,214,122,223,211,119,227,207,116,231,204,114,235,200,111,239,196,108,243,192,105,247,187,102,251,183,99,255,179,96,255,174,93,255,170,90,255,165,88,255,160,85,255,155,82,255,150,79,255,145,76,255,140,73,255,134,70,255,129,67,255,123,63,255,118,60,255,112,57,255,106,54,255,101,51,255,95,48,255,89,45,255,83,42,255,77,39,255,71,36,255,65,33,255,59,29,255,53,26,255,47,23,255,40,20,255,34,17,255,28,14,255,22,11,255,15,7,255,9,4,255,3,1,255,0,0]),\n linear_interpolation: true\n},\n{\n name: \"seismic\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: true,\n c3g_string: \"rgb(0,0,76) 0%,rgb(0,0,79) 0.781%,rgb(0,0,84) 1.562%,rgb(0,0,90) 2.343%,rgb(0,0,96) 3.125%,rgb(0,0,101) 3.906%,rgb(0,0,107) 4.687%,rgb(0,0,113) 5.468%,rgb(0,0,118) 6.25%,rgb(0,0,124) 7.031%,rgb(0,0,129) 7.812%,rgb(0,0,135) 8.593%,rgb(0,0,141) 9.375%,rgb(0,0,146) 10.15%,rgb(0,0,152) 10.93%,rgb(0,0,158) 11.71%,rgb(0,0,163) 12.5%,rgb(0,0,169) 13.28%,rgb(0,0,174) 14.06%,rgb(0,0,180) 14.84%,rgb(0,0,186) 15.62%,rgb(0,0,191) 16.40%,rgb(0,0,197) 17.18%,rgb(0,0,202) 17.96%,rgb(0,0,208) 18.75%,rgb(0,0,214) 19.53%,rgb(0,0,219) 20.31%,rgb(0,0,225) 21.09%,rgb(0,0,231) 21.87%,rgb(0,0,236) 22.65%,rgb(0,0,242) 23.43%,rgb(0,0,247) 24.21%,rgb(0,0,253) 25%,rgb(6,6,255) 25.78%,rgb(14,14,255) 26.56%,rgb(22,22,255) 27.34%,rgb(30,30,255) 28.12%,rgb(38,38,255) 28.90%,rgb(46,46,255) 29.68%,rgb(54,54,255) 30.46%,rgb(62,62,255) 31.25%,rgb(70,70,255) 32.03%,rgb(78,78,255) 32.81%,rgb(86,86,255) 33.59%,rgb(94,94,255) 34.37%,rgb(102,102,255) 35.15%,rgb(110,110,255) 35.93%,rgb(118,118,255) 36.71%,rgb(126,126,255) 37.5%,rgb(134,134,255) 38.28%,rgb(142,142,255) 39.06%,rgb(150,150,255) 39.84%,rgb(158,158,255) 40.62%,rgb(166,166,255) 41.40%,rgb(174,174,255) 42.18%,rgb(182,182,255) 42.96%,rgb(190,190,255) 43.75%,rgb(198,198,255) 44.53%,rgb(206,206,255) 45.31%,rgb(214,214,255) 46.09%,rgb(222,222,255) 46.87%,rgb(230,230,255) 47.65%,rgb(238,238,255) 48.43%,rgb(246,246,255) 49.21%,rgb(255,255,255) 50%,rgb(255,246,246) 50.78%,rgb(255,238,238) 51.56%,rgb(255,230,230) 52.34%,rgb(255,222,222) 53.12%,rgb(255,214,214) 53.90%,rgb(255,206,206) 54.68%,rgb(255,198,198) 55.46%,rgb(255,190,190) 56.25%,rgb(255,182,182) 57.03%,rgb(255,174,174) 57.81%,rgb(255,166,166) 58.59%,rgb(255,158,158) 59.37%,rgb(255,150,150) 60.15%,rgb(255,142,142) 60.93%,rgb(255,134,134) 61.71%,rgb(255,126,126) 62.5%,rgb(255,118,118) 63.28%,rgb(255,110,110) 64.06%,rgb(255,102,102) 64.84%,rgb(255,94,94) 65.62%,rgb(255,86,86) 66.40%,rgb(255,78,78) 67.18%,rgb(255,70,70) 67.96%,rgb(255,62,62) 68.75%,rgb(255,54,54) 69.53%,rgb(255,46,46) 70.31%,rgb(255,38,38) 71.09%,rgb(255,30,30) 71.87%,rgb(255,22,22) 72.65%,rgb(255,14,14) 73.43%,rgb(255,6,6) 74.21%,rgb(253,0,0) 75%,rgb(249,0,0) 75.78%,rgb(245,0,0) 76.56%,rgb(241,0,0) 77.34%,rgb(237,0,0) 78.12%,rgb(233,0,0) 78.90%,rgb(229,0,0) 79.68%,rgb(225,0,0) 80.46%,rgb(221,0,0) 81.25%,rgb(217,0,0) 82.03%,rgb(213,0,0) 82.81%,rgb(209,0,0) 83.59%,rgb(205,0,0) 84.37%,rgb(201,0,0) 85.15%,rgb(197,0,0) 85.93%,rgb(193,0,0) 86.71%,rgb(189,0,0) 87.5%,rgb(185,0,0) 88.28%,rgb(181,0,0) 89.06%,rgb(177,0,0) 89.84%,rgb(173,0,0) 90.62%,rgb(169,0,0) 91.40%,rgb(165,0,0) 92.18%,rgb(161,0,0) 92.96%,rgb(157,0,0) 93.75%,rgb(153,0,0) 94.53%,rgb(149,0,0) 95.31%,rgb(145,0,0) 96.09%,rgb(141,0,0) 96.87%,rgb(137,0,0) 97.65%,rgb(133,0,0) 98.43%,rgb(129,0,0) 99.21%,rgb(127,0,0) 100%\",\n tex_buffer: new Uint8Array([0,0,76,0,0,79,0,0,84,0,0,90,0,0,96,0,0,101,0,0,107,0,0,113,0,0,118,0,0,124,0,0,129,0,0,135,0,0,141,0,0,146,0,0,152,0,0,158,0,0,163,0,0,169,0,0,174,0,0,180,0,0,186,0,0,191,0,0,197,0,0,202,0,0,208,0,0,214,0,0,219,0,0,225,0,0,231,0,0,236,0,0,242,0,0,247,0,0,253,6,6,255,14,14,255,22,22,255,30,30,255,38,38,255,46,46,255,54,54,255,62,62,255,70,70,255,78,78,255,86,86,255,94,94,255,102,102,255,110,110,255,118,118,255,126,126,255,134,134,255,142,142,255,150,150,255,158,158,255,166,166,255,174,174,255,182,182,255,190,190,255,198,198,255,206,206,255,214,214,255,222,222,255,230,230,255,238,238,255,246,246,255,255,255,255,255,246,246,255,238,238,255,230,230,255,222,222,255,214,214,255,206,206,255,198,198,255,190,190,255,182,182,255,174,174,255,166,166,255,158,158,255,150,150,255,142,142,255,134,134,255,126,126,255,118,118,255,110,110,255,102,102,255,94,94,255,86,86,255,78,78,255,70,70,255,62,62,255,54,54,255,46,46,255,38,38,255,30,30,255,22,22,255,14,14,255,6,6,253,0,0,249,0,0,245,0,0,241,0,0,237,0,0,233,0,0,229,0,0,225,0,0,221,0,0,217,0,0,213,0,0,209,0,0,205,0,0,201,0,0,197,0,0,193,0,0,189,0,0,185,0,0,181,0,0,177,0,0,173,0,0,169,0,0,165,0,0,161,0,0,157,0,0,153,0,0,149,0,0,145,0,0,141,0,0,137,0,0,133,0,0,129,0,0,127,0,0]),\n linear_interpolation: true\n},\n{\n name: \"solar\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(51,20,24) 0%,rgb(51,20,24) 0.390%,rgb(53,20,24) 0.390%,rgb(53,20,24) 0.781%,rgb(54,21,25) 0.781%,rgb(54,21,25) 1.171%,rgb(55,21,25) 1.171%,rgb(55,21,25) 1.562%,rgb(56,21,26) 1.562%,rgb(56,21,26) 1.953%,rgb(58,22,26) 1.953%,rgb(58,22,26) 2.343%,rgb(59,22,27) 2.343%,rgb(59,22,27) 2.734%,rgb(60,23,27) 2.734%,rgb(60,23,27) 3.125%,rgb(61,23,28) 3.125%,rgb(61,23,28) 3.515%,rgb(62,24,28) 3.515%,rgb(62,24,28) 3.906%,rgb(64,24,29) 3.906%,rgb(64,24,29) 4.296%,rgb(65,24,29) 4.296%,rgb(65,24,29) 4.687%,rgb(66,25,29) 4.687%,rgb(66,25,29) 5.078%,rgb(67,25,30) 5.078%,rgb(67,25,30) 5.468%,rgb(69,26,30) 5.468%,rgb(69,26,30) 5.859%,rgb(70,26,31) 5.859%,rgb(70,26,31) 6.25%,rgb(71,26,31) 6.25%,rgb(71,26,31) 6.640%,rgb(72,27,31) 6.640%,rgb(72,27,31) 7.031%,rgb(74,27,32) 7.031%,rgb(74,27,32) 7.421%,rgb(75,27,32) 7.421%,rgb(75,27,32) 7.812%,rgb(76,28,32) 7.812%,rgb(76,28,32) 8.203%,rgb(77,28,33) 8.203%,rgb(77,28,33) 8.593%,rgb(79,28,33) 8.593%,rgb(79,28,33) 8.984%,rgb(80,29,33) 8.984%,rgb(80,29,33) 9.375%,rgb(81,29,34) 9.375%,rgb(81,29,34) 9.765%,rgb(82,30,34) 9.765%,rgb(82,30,34) 10.15%,rgb(84,30,34) 10.15%,rgb(84,30,34) 10.54%,rgb(85,30,34) 10.54%,rgb(85,30,34) 10.93%,rgb(86,31,35) 10.93%,rgb(86,31,35) 11.32%,rgb(87,31,35) 11.32%,rgb(87,31,35) 11.71%,rgb(89,31,35) 11.71%,rgb(89,31,35) 12.10%,rgb(90,32,35) 12.10%,rgb(90,32,35) 12.5%,rgb(91,32,35) 12.5%,rgb(91,32,35) 12.89%,rgb(92,32,36) 12.89%,rgb(92,32,36) 13.28%,rgb(94,33,36) 13.28%,rgb(94,33,36) 13.67%,rgb(95,33,36) 13.67%,rgb(95,33,36) 14.06%,rgb(96,33,36) 14.06%,rgb(96,33,36) 14.45%,rgb(97,34,36) 14.45%,rgb(97,34,36) 14.84%,rgb(99,34,36) 14.84%,rgb(99,34,36) 15.23%,rgb(100,34,36) 15.23%,rgb(100,34,36) 15.62%,rgb(101,35,36) 15.62%,rgb(101,35,36) 16.01%,rgb(102,35,37) 16.01%,rgb(102,35,37) 16.40%,rgb(104,35,37) 16.40%,rgb(104,35,37) 16.79%,rgb(105,36,37) 16.79%,rgb(105,36,37) 17.18%,rgb(106,36,37) 17.18%,rgb(106,36,37) 17.57%,rgb(107,36,37) 17.57%,rgb(107,36,37) 17.96%,rgb(109,37,37) 17.96%,rgb(109,37,37) 18.35%,rgb(110,37,37) 18.35%,rgb(110,37,37) 18.75%,rgb(111,37,37) 18.75%,rgb(111,37,37) 19.14%,rgb(112,38,37) 19.14%,rgb(112,38,37) 19.53%,rgb(114,38,37) 19.53%,rgb(114,38,37) 19.92%,rgb(115,39,36) 19.92%,rgb(115,39,36) 20.31%,rgb(116,39,36) 20.31%,rgb(116,39,36) 20.70%,rgb(117,39,36) 20.70%,rgb(117,39,36) 21.09%,rgb(119,40,36) 21.09%,rgb(119,40,36) 21.48%,rgb(120,40,36) 21.48%,rgb(120,40,36) 21.87%,rgb(121,41,36) 21.87%,rgb(121,41,36) 22.26%,rgb(122,41,36) 22.26%,rgb(122,41,36) 22.65%,rgb(123,42,36) 22.65%,rgb(123,42,36) 23.04%,rgb(124,42,35) 23.04%,rgb(124,42,35) 23.43%,rgb(126,43,35) 23.43%,rgb(126,43,35) 23.82%,rgb(127,43,35) 23.82%,rgb(127,43,35) 24.21%,rgb(128,44,35) 24.21%,rgb(128,44,35) 24.60%,rgb(129,44,34) 24.60%,rgb(129,44,34) 25%,rgb(130,45,34) 25%,rgb(130,45,34) 25.39%,rgb(131,45,34) 25.39%,rgb(131,45,34) 25.78%,rgb(132,46,34) 25.78%,rgb(132,46,34) 26.17%,rgb(133,46,33) 26.17%,rgb(133,46,33) 26.56%,rgb(135,47,33) 26.56%,rgb(135,47,33) 26.95%,rgb(136,48,33) 26.95%,rgb(136,48,33) 27.34%,rgb(137,48,33) 27.34%,rgb(137,48,33) 27.73%,rgb(138,49,32) 27.73%,rgb(138,49,32) 28.12%,rgb(139,49,32) 28.12%,rgb(139,49,32) 28.51%,rgb(140,50,32) 28.51%,rgb(140,50,32) 28.90%,rgb(141,51,31) 28.90%,rgb(141,51,31) 29.29%,rgb(142,52,31) 29.29%,rgb(142,52,31) 29.68%,rgb(143,52,31) 29.68%,rgb(143,52,31) 30.07%,rgb(144,53,30) 30.07%,rgb(144,53,30) 30.46%,rgb(145,54,30) 30.46%,rgb(145,54,30) 30.85%,rgb(146,54,30) 30.85%,rgb(146,54,30) 31.25%,rgb(147,55,29) 31.25%,rgb(147,55,29) 31.64%,rgb(147,56,29) 31.64%,rgb(147,56,29) 32.03%,rgb(148,57,29) 32.03%,rgb(148,57,29) 32.42%,rgb(149,58,29) 32.42%,rgb(149,58,29) 32.81%,rgb(150,58,28) 32.81%,rgb(150,58,28) 33.20%,rgb(151,59,28) 33.20%,rgb(151,59,28) 33.59%,rgb(152,60,28) 33.59%,rgb(152,60,28) 33.98%,rgb(153,61,27) 33.98%,rgb(153,61,27) 34.37%,rgb(154,62,27) 34.37%,rgb(154,62,27) 34.76%,rgb(154,63,27) 34.76%,rgb(154,63,27) 35.15%,rgb(155,64,26) 35.15%,rgb(155,64,26) 35.54%,rgb(156,64,26) 35.54%,rgb(156,64,26) 35.93%,rgb(157,65,26) 35.93%,rgb(157,65,26) 36.32%,rgb(158,66,26) 36.32%,rgb(158,66,26) 36.71%,rgb(159,67,25) 36.71%,rgb(159,67,25) 37.10%,rgb(159,68,25) 37.10%,rgb(159,68,25) 37.5%,rgb(160,69,25) 37.5%,rgb(160,69,25) 37.89%,rgb(161,70,25) 37.89%,rgb(161,70,25) 38.28%,rgb(162,71,24) 38.28%,rgb(162,71,24) 38.67%,rgb(163,72,24) 38.67%,rgb(163,72,24) 39.06%,rgb(163,73,24) 39.06%,rgb(163,73,24) 39.45%,rgb(164,74,24) 39.45%,rgb(164,74,24) 39.84%,rgb(165,74,23) 39.84%,rgb(165,74,23) 40.23%,rgb(166,75,23) 40.23%,rgb(166,75,23) 40.62%,rgb(166,76,23) 40.62%,rgb(166,76,23) 41.01%,rgb(167,77,23) 41.01%,rgb(167,77,23) 41.40%,rgb(168,78,22) 41.40%,rgb(168,78,22) 41.79%,rgb(168,79,22) 41.79%,rgb(168,79,22) 42.18%,rgb(169,80,22) 42.18%,rgb(169,80,22) 42.57%,rgb(170,81,22) 42.57%,rgb(170,81,22) 42.96%,rgb(171,82,22) 42.96%,rgb(171,82,22) 43.35%,rgb(171,83,21) 43.35%,rgb(171,83,21) 43.75%,rgb(172,84,21) 43.75%,rgb(172,84,21) 44.14%,rgb(173,85,21) 44.14%,rgb(173,85,21) 44.53%,rgb(173,86,21) 44.53%,rgb(173,86,21) 44.92%,rgb(174,87,21) 44.92%,rgb(174,87,21) 45.31%,rgb(175,88,20) 45.31%,rgb(175,88,20) 45.70%,rgb(175,89,20) 45.70%,rgb(175,89,20) 46.09%,rgb(176,90,20) 46.09%,rgb(176,90,20) 46.48%,rgb(177,91,20) 46.48%,rgb(177,91,20) 46.87%,rgb(177,92,20) 46.87%,rgb(177,92,20) 47.26%,rgb(178,93,20) 47.26%,rgb(178,93,20) 47.65%,rgb(178,94,20) 47.65%,rgb(178,94,20) 48.04%,rgb(179,95,20) 48.04%,rgb(179,95,20) 48.43%,rgb(180,96,19) 48.43%,rgb(180,96,19) 48.82%,rgb(180,97,19) 48.82%,rgb(180,97,19) 49.21%,rgb(181,98,19) 49.21%,rgb(181,98,19) 49.60%,rgb(182,99,19) 49.60%,rgb(182,99,19) 50%,rgb(182,100,19) 50%,rgb(182,100,19) 50.39%,rgb(183,101,19) 50.39%,rgb(183,101,19) 50.78%,rgb(183,102,19) 50.78%,rgb(183,102,19) 51.17%,rgb(184,104,19) 51.17%,rgb(184,104,19) 51.56%,rgb(184,105,19) 51.56%,rgb(184,105,19) 51.95%,rgb(185,106,19) 51.95%,rgb(185,106,19) 52.34%,rgb(186,107,19) 52.34%,rgb(186,107,19) 52.73%,rgb(186,108,19) 52.73%,rgb(186,108,19) 53.12%,rgb(187,109,19) 53.12%,rgb(187,109,19) 53.51%,rgb(187,110,19) 53.51%,rgb(187,110,19) 53.90%,rgb(188,111,19) 53.90%,rgb(188,111,19) 54.29%,rgb(188,112,19) 54.29%,rgb(188,112,19) 54.68%,rgb(189,113,19) 54.68%,rgb(189,113,19) 55.07%,rgb(190,114,19) 55.07%,rgb(190,114,19) 55.46%,rgb(190,115,19) 55.46%,rgb(190,115,19) 55.85%,rgb(191,116,19) 55.85%,rgb(191,116,19) 56.25%,rgb(191,117,19) 56.25%,rgb(191,117,19) 56.64%,rgb(192,118,19) 56.64%,rgb(192,118,19) 57.03%,rgb(192,119,20) 57.03%,rgb(192,119,20) 57.42%,rgb(193,121,20) 57.42%,rgb(193,121,20) 57.81%,rgb(193,122,20) 57.81%,rgb(193,122,20) 58.20%,rgb(194,123,20) 58.20%,rgb(194,123,20) 58.59%,rgb(194,124,20) 58.59%,rgb(194,124,20) 58.98%,rgb(195,125,20) 58.98%,rgb(195,125,20) 59.37%,rgb(195,126,21) 59.37%,rgb(195,126,21) 59.76%,rgb(196,127,21) 59.76%,rgb(196,127,21) 60.15%,rgb(196,128,21) 60.15%,rgb(196,128,21) 60.54%,rgb(197,129,21) 60.54%,rgb(197,129,21) 60.93%,rgb(197,130,21) 60.93%,rgb(197,130,21) 61.32%,rgb(198,132,22) 61.32%,rgb(198,132,22) 61.71%,rgb(198,133,22) 61.71%,rgb(198,133,22) 62.10%,rgb(199,134,22) 62.10%,rgb(199,134,22) 62.5%,rgb(199,135,22) 62.5%,rgb(199,135,22) 62.89%,rgb(199,136,23) 62.89%,rgb(199,136,23) 63.28%,rgb(200,137,23) 63.28%,rgb(200,137,23) 63.67%,rgb(200,138,23) 63.67%,rgb(200,138,23) 64.06%,rgb(201,139,24) 64.06%,rgb(201,139,24) 64.45%,rgb(201,140,24) 64.45%,rgb(201,140,24) 64.84%,rgb(202,142,24) 64.84%,rgb(202,142,24) 65.23%,rgb(202,143,25) 65.23%,rgb(202,143,25) 65.62%,rgb(203,144,25) 65.62%,rgb(203,144,25) 66.01%,rgb(203,145,25) 66.01%,rgb(203,145,25) 66.40%,rgb(203,146,26) 66.40%,rgb(203,146,26) 66.79%,rgb(204,147,26) 66.79%,rgb(204,147,26) 67.18%,rgb(204,148,26) 67.18%,rgb(204,148,26) 67.57%,rgb(205,150,27) 67.57%,rgb(205,150,27) 67.96%,rgb(205,151,27) 67.96%,rgb(205,151,27) 68.35%,rgb(206,152,28) 68.35%,rgb(206,152,28) 68.75%,rgb(206,153,28) 68.75%,rgb(206,153,28) 69.14%,rgb(206,154,28) 69.14%,rgb(206,154,28) 69.53%,rgb(207,155,29) 69.53%,rgb(207,155,29) 69.92%,rgb(207,156,29) 69.92%,rgb(207,156,29) 70.31%,rgb(208,158,30) 70.31%,rgb(208,158,30) 70.70%,rgb(208,159,30) 70.70%,rgb(208,159,30) 71.09%,rgb(208,160,31) 71.09%,rgb(208,160,31) 71.48%,rgb(209,161,31) 71.48%,rgb(209,161,31) 71.87%,rgb(209,162,32) 71.87%,rgb(209,162,32) 72.26%,rgb(209,164,32) 72.26%,rgb(209,164,32) 72.65%,rgb(210,165,32) 72.65%,rgb(210,165,32) 73.04%,rgb(210,166,33) 73.04%,rgb(210,166,33) 73.43%,rgb(211,167,33) 73.43%,rgb(211,167,33) 73.82%,rgb(211,168,34) 73.82%,rgb(211,168,34) 74.21%,rgb(211,169,34) 74.21%,rgb(211,169,34) 74.60%,rgb(212,171,35) 74.60%,rgb(212,171,35) 75%,rgb(212,172,36) 75%,rgb(212,172,36) 75.39%,rgb(212,173,36) 75.39%,rgb(212,173,36) 75.78%,rgb(213,174,37) 75.78%,rgb(213,174,37) 76.17%,rgb(213,175,37) 76.17%,rgb(213,175,37) 76.56%,rgb(213,177,38) 76.56%,rgb(213,177,38) 76.95%,rgb(214,178,38) 76.95%,rgb(214,178,38) 77.34%,rgb(214,179,39) 77.34%,rgb(214,179,39) 77.73%,rgb(214,180,39) 77.73%,rgb(214,180,39) 78.12%,rgb(215,181,40) 78.12%,rgb(215,181,40) 78.51%,rgb(215,183,40) 78.51%,rgb(215,183,40) 78.90%,rgb(215,184,41) 78.90%,rgb(215,184,41) 79.29%,rgb(215,185,42) 79.29%,rgb(215,185,42) 79.68%,rgb(216,186,42) 79.68%,rgb(216,186,42) 80.07%,rgb(216,188,43) 80.07%,rgb(216,188,43) 80.46%,rgb(216,189,43) 80.46%,rgb(216,189,43) 80.85%,rgb(217,190,44) 80.85%,rgb(217,190,44) 81.25%,rgb(217,191,44) 81.25%,rgb(217,191,44) 81.64%,rgb(217,193,45) 81.64%,rgb(217,193,45) 82.03%,rgb(217,194,46) 82.03%,rgb(217,194,46) 82.42%,rgb(218,195,46) 82.42%,rgb(218,195,46) 82.81%,rgb(218,196,47) 82.81%,rgb(218,196,47) 83.20%,rgb(218,198,47) 83.20%,rgb(218,198,47) 83.59%,rgb(218,199,48) 83.59%,rgb(218,199,48) 83.98%,rgb(219,200,49) 83.98%,rgb(219,200,49) 84.37%,rgb(219,201,49) 84.37%,rgb(219,201,49) 84.76%,rgb(219,203,50) 84.76%,rgb(219,203,50) 85.15%,rgb(219,204,50) 85.15%,rgb(219,204,50) 85.54%,rgb(220,205,51) 85.54%,rgb(220,205,51) 85.93%,rgb(220,206,52) 85.93%,rgb(220,206,52) 86.32%,rgb(220,208,52) 86.32%,rgb(220,208,52) 86.71%,rgb(220,209,53) 86.71%,rgb(220,209,53) 87.10%,rgb(221,210,54) 87.10%,rgb(221,210,54) 87.5%,rgb(221,212,54) 87.5%,rgb(221,212,54) 87.89%,rgb(221,213,55) 87.89%,rgb(221,213,55) 88.28%,rgb(221,214,55) 88.28%,rgb(221,214,55) 88.67%,rgb(221,215,56) 88.67%,rgb(221,215,56) 89.06%,rgb(222,217,57) 89.06%,rgb(222,217,57) 89.45%,rgb(222,218,57) 89.45%,rgb(222,218,57) 89.84%,rgb(222,219,58) 89.84%,rgb(222,219,58) 90.23%,rgb(222,221,59) 90.23%,rgb(222,221,59) 90.62%,rgb(222,222,59) 90.62%,rgb(222,222,59) 91.01%,rgb(222,223,60) 91.01%,rgb(222,223,60) 91.40%,rgb(223,225,61) 91.40%,rgb(223,225,61) 91.79%,rgb(223,226,61) 91.79%,rgb(223,226,61) 92.18%,rgb(223,227,62) 92.18%,rgb(223,227,62) 92.57%,rgb(223,229,63) 92.57%,rgb(223,229,63) 92.96%,rgb(223,230,63) 92.96%,rgb(223,230,63) 93.35%,rgb(223,231,64) 93.35%,rgb(223,231,64) 93.75%,rgb(223,233,65) 93.75%,rgb(223,233,65) 94.14%,rgb(224,234,65) 94.14%,rgb(224,234,65) 94.53%,rgb(224,235,66) 94.53%,rgb(224,235,66) 94.92%,rgb(224,237,67) 94.92%,rgb(224,237,67) 95.31%,rgb(224,238,67) 95.31%,rgb(224,238,67) 95.70%,rgb(224,240,68) 95.70%,rgb(224,240,68) 96.09%,rgb(224,241,69) 96.09%,rgb(224,241,69) 96.48%,rgb(224,242,69) 96.48%,rgb(224,242,69) 96.87%,rgb(224,244,70) 96.87%,rgb(224,244,70) 97.26%,rgb(224,245,71) 97.26%,rgb(224,245,71) 97.65%,rgb(224,246,71) 97.65%,rgb(224,246,71) 98.04%,rgb(224,248,72) 98.04%,rgb(224,248,72) 98.43%,rgb(224,249,73) 98.43%,rgb(224,249,73) 98.82%,rgb(224,251,73) 98.82%,rgb(224,251,73) 99.21%,rgb(225,252,74) 99.21%,rgb(225,252,74) 99.60%,rgb(225,253,75) 99.60%,rgb(225,253,75) 100%\",\n tex_buffer: new Uint8Array([51,20,24,53,20,24,54,21,25,55,21,25,56,21,26,58,22,26,59,22,27,60,23,27,61,23,28,62,24,28,64,24,29,65,24,29,66,25,29,67,25,30,69,26,30,70,26,31,71,26,31,72,27,31,74,27,32,75,27,32,76,28,32,77,28,33,79,28,33,80,29,33,81,29,34,82,30,34,84,30,34,85,30,34,86,31,35,87,31,35,89,31,35,90,32,35,91,32,35,92,32,36,94,33,36,95,33,36,96,33,36,97,34,36,99,34,36,100,34,36,101,35,36,102,35,37,104,35,37,105,36,37,106,36,37,107,36,37,109,37,37,110,37,37,111,37,37,112,38,37,114,38,37,115,39,36,116,39,36,117,39,36,119,40,36,120,40,36,121,41,36,122,41,36,123,42,36,124,42,35,126,43,35,127,43,35,128,44,35,129,44,34,130,45,34,131,45,34,132,46,34,133,46,33,135,47,33,136,48,33,137,48,33,138,49,32,139,49,32,140,50,32,141,51,31,142,52,31,143,52,31,144,53,30,145,54,30,146,54,30,147,55,29,147,56,29,148,57,29,149,58,29,150,58,28,151,59,28,152,60,28,153,61,27,154,62,27,154,63,27,155,64,26,156,64,26,157,65,26,158,66,26,159,67,25,159,68,25,160,69,25,161,70,25,162,71,24,163,72,24,163,73,24,164,74,24,165,74,23,166,75,23,166,76,23,167,77,23,168,78,22,168,79,22,169,80,22,170,81,22,171,82,22,171,83,21,172,84,21,173,85,21,173,86,21,174,87,21,175,88,20,175,89,20,176,90,20,177,91,20,177,92,20,178,93,20,178,94,20,179,95,20,180,96,19,180,97,19,181,98,19,182,99,19,182,100,19,183,101,19,183,102,19,184,104,19,184,105,19,185,106,19,186,107,19,186,108,19,187,109,19,187,110,19,188,111,19,188,112,19,189,113,19,190,114,19,190,115,19,191,116,19,191,117,19,192,118,19,192,119,20,193,121,20,193,122,20,194,123,20,194,124,20,195,125,20,195,126,21,196,127,21,196,128,21,197,129,21,197,130,21,198,132,22,198,133,22,199,134,22,199,135,22,199,136,23,200,137,23,200,138,23,201,139,24,201,140,24,202,142,24,202,143,25,203,144,25,203,145,25,203,146,26,204,147,26,204,148,26,205,150,27,205,151,27,206,152,28,206,153,28,206,154,28,207,155,29,207,156,29,208,158,30,208,159,30,208,160,31,209,161,31,209,162,32,209,164,32,210,165,32,210,166,33,211,167,33,211,168,34,211,169,34,212,171,35,212,172,36,212,173,36,213,174,37,213,175,37,213,177,38,214,178,38,214,179,39,214,180,39,215,181,40,215,183,40,215,184,41,215,185,42,216,186,42,216,188,43,216,189,43,217,190,44,217,191,44,217,193,45,217,194,46,218,195,46,218,196,47,218,198,47,218,199,48,219,200,49,219,201,49,219,203,50,219,204,50,220,205,51,220,206,52,220,208,52,220,209,53,221,210,54,221,212,54,221,213,55,221,214,55,221,215,56,222,217,57,222,218,57,222,219,58,222,221,59,222,222,59,222,223,60,223,225,61,223,226,61,223,227,62,223,229,63,223,230,63,223,231,64,223,233,65,224,234,65,224,235,66,224,237,67,224,238,67,224,240,68,224,241,69,224,242,69,224,244,70,224,245,71,224,246,71,224,248,72,224,249,73,224,251,73,225,252,74,225,253,75]),\n linear_interpolation: false\n},\n{\n name: \"speed\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(255,253,205) 0%,rgb(255,253,205) 0.390%,rgb(254,252,203) 0.390%,rgb(254,252,203) 0.781%,rgb(254,250,201) 0.781%,rgb(254,250,201) 1.171%,rgb(253,249,199) 1.171%,rgb(253,249,199) 1.562%,rgb(252,248,197) 1.562%,rgb(252,248,197) 1.953%,rgb(252,247,194) 1.953%,rgb(252,247,194) 2.343%,rgb(251,246,192) 2.343%,rgb(251,246,192) 2.734%,rgb(250,244,190) 2.734%,rgb(250,244,190) 3.125%,rgb(249,243,188) 3.125%,rgb(249,243,188) 3.515%,rgb(249,242,186) 3.515%,rgb(249,242,186) 3.906%,rgb(248,241,184) 3.906%,rgb(248,241,184) 4.296%,rgb(247,240,182) 4.296%,rgb(247,240,182) 4.687%,rgb(247,238,180) 4.687%,rgb(247,238,180) 5.078%,rgb(246,237,177) 5.078%,rgb(246,237,177) 5.468%,rgb(246,236,175) 5.468%,rgb(246,236,175) 5.859%,rgb(245,235,173) 5.859%,rgb(245,235,173) 6.25%,rgb(244,234,171) 6.25%,rgb(244,234,171) 6.640%,rgb(243,233,169) 6.640%,rgb(243,233,169) 7.031%,rgb(243,231,167) 7.031%,rgb(243,231,167) 7.421%,rgb(242,230,165) 7.421%,rgb(242,230,165) 7.812%,rgb(241,229,162) 7.812%,rgb(241,229,162) 8.203%,rgb(241,228,160) 8.203%,rgb(241,228,160) 8.593%,rgb(240,227,158) 8.593%,rgb(240,227,158) 8.984%,rgb(239,226,156) 8.984%,rgb(239,226,156) 9.375%,rgb(239,225,154) 9.375%,rgb(239,225,154) 9.765%,rgb(238,223,152) 9.765%,rgb(238,223,152) 10.15%,rgb(237,222,150) 10.15%,rgb(237,222,150) 10.54%,rgb(237,221,147) 10.54%,rgb(237,221,147) 10.93%,rgb(236,220,145) 10.93%,rgb(236,220,145) 11.32%,rgb(235,219,143) 11.32%,rgb(235,219,143) 11.71%,rgb(234,218,141) 11.71%,rgb(234,218,141) 12.10%,rgb(234,217,139) 12.10%,rgb(234,217,139) 12.5%,rgb(233,216,137) 12.5%,rgb(233,216,137) 12.89%,rgb(232,215,134) 12.89%,rgb(232,215,134) 13.28%,rgb(231,214,132) 13.28%,rgb(231,214,132) 13.67%,rgb(231,213,130) 13.67%,rgb(231,213,130) 14.06%,rgb(230,212,128) 14.06%,rgb(230,212,128) 14.45%,rgb(229,211,126) 14.45%,rgb(229,211,126) 14.84%,rgb(228,210,123) 14.84%,rgb(228,210,123) 15.23%,rgb(227,208,121) 15.23%,rgb(227,208,121) 15.62%,rgb(227,207,119) 15.62%,rgb(227,207,119) 16.01%,rgb(226,206,117) 16.01%,rgb(226,206,117) 16.40%,rgb(225,205,115) 16.40%,rgb(225,205,115) 16.79%,rgb(224,205,113) 16.79%,rgb(224,205,113) 17.18%,rgb(223,204,110) 17.18%,rgb(223,204,110) 17.57%,rgb(222,203,108) 17.57%,rgb(222,203,108) 17.96%,rgb(221,202,106) 17.96%,rgb(221,202,106) 18.35%,rgb(220,201,104) 18.35%,rgb(220,201,104) 18.75%,rgb(219,200,102) 18.75%,rgb(219,200,102) 19.14%,rgb(218,199,100) 19.14%,rgb(218,199,100) 19.53%,rgb(217,198,97) 19.53%,rgb(217,198,97) 19.92%,rgb(216,197,95) 19.92%,rgb(216,197,95) 20.31%,rgb(215,196,93) 20.31%,rgb(215,196,93) 20.70%,rgb(214,195,91) 20.70%,rgb(214,195,91) 21.09%,rgb(213,194,89) 21.09%,rgb(213,194,89) 21.48%,rgb(212,193,87) 21.48%,rgb(212,193,87) 21.87%,rgb(211,193,85) 21.87%,rgb(211,193,85) 22.26%,rgb(210,192,83) 22.26%,rgb(210,192,83) 22.65%,rgb(209,191,81) 22.65%,rgb(209,191,81) 23.04%,rgb(208,190,79) 23.04%,rgb(208,190,79) 23.43%,rgb(206,189,76) 23.43%,rgb(206,189,76) 23.82%,rgb(205,189,74) 23.82%,rgb(205,189,74) 24.21%,rgb(204,188,72) 24.21%,rgb(204,188,72) 24.60%,rgb(203,187,70) 24.60%,rgb(203,187,70) 25%,rgb(201,186,69) 25%,rgb(201,186,69) 25.39%,rgb(200,185,67) 25.39%,rgb(200,185,67) 25.78%,rgb(199,185,65) 25.78%,rgb(199,185,65) 26.17%,rgb(197,184,63) 26.17%,rgb(197,184,63) 26.56%,rgb(196,183,61) 26.56%,rgb(196,183,61) 26.95%,rgb(195,183,59) 26.95%,rgb(195,183,59) 27.34%,rgb(193,182,57) 27.34%,rgb(193,182,57) 27.73%,rgb(192,181,55) 27.73%,rgb(192,181,55) 28.12%,rgb(190,180,54) 28.12%,rgb(190,180,54) 28.51%,rgb(189,180,52) 28.51%,rgb(189,180,52) 28.90%,rgb(187,179,50) 28.90%,rgb(187,179,50) 29.29%,rgb(186,178,48) 29.29%,rgb(186,178,48) 29.68%,rgb(184,178,47) 29.68%,rgb(184,178,47) 30.07%,rgb(183,177,45) 30.07%,rgb(183,177,45) 30.46%,rgb(181,176,43) 30.46%,rgb(181,176,43) 30.85%,rgb(180,176,42) 30.85%,rgb(180,176,42) 31.25%,rgb(178,175,40) 31.25%,rgb(178,175,40) 31.64%,rgb(177,174,39) 31.64%,rgb(177,174,39) 32.03%,rgb(175,174,37) 32.03%,rgb(175,174,37) 32.42%,rgb(173,173,35) 32.42%,rgb(173,173,35) 32.81%,rgb(172,173,34) 32.81%,rgb(172,173,34) 33.20%,rgb(170,172,32) 33.20%,rgb(170,172,32) 33.59%,rgb(169,171,31) 33.59%,rgb(169,171,31) 33.98%,rgb(167,171,30) 33.98%,rgb(167,171,30) 34.37%,rgb(165,170,28) 34.37%,rgb(165,170,28) 34.76%,rgb(164,169,27) 34.76%,rgb(164,169,27) 35.15%,rgb(162,169,25) 35.15%,rgb(162,169,25) 35.54%,rgb(160,168,24) 35.54%,rgb(160,168,24) 35.93%,rgb(159,168,23) 35.93%,rgb(159,168,23) 36.32%,rgb(157,167,21) 36.32%,rgb(157,167,21) 36.71%,rgb(155,166,20) 36.71%,rgb(155,166,20) 37.10%,rgb(154,166,19) 37.10%,rgb(154,166,19) 37.5%,rgb(152,165,18) 37.5%,rgb(152,165,18) 37.89%,rgb(150,165,16) 37.89%,rgb(150,165,16) 38.28%,rgb(149,164,15) 38.28%,rgb(149,164,15) 38.67%,rgb(147,163,14) 38.67%,rgb(147,163,14) 39.06%,rgb(145,163,13) 39.06%,rgb(145,163,13) 39.45%,rgb(143,162,12) 39.45%,rgb(143,162,12) 39.84%,rgb(142,162,11) 39.84%,rgb(142,162,11) 40.23%,rgb(140,161,10) 40.23%,rgb(140,161,10) 40.62%,rgb(138,160,9) 40.62%,rgb(138,160,9) 41.01%,rgb(136,160,8) 41.01%,rgb(136,160,8) 41.40%,rgb(135,159,8) 41.40%,rgb(135,159,8) 41.79%,rgb(133,159,7) 41.79%,rgb(133,159,7) 42.18%,rgb(131,158,7) 42.18%,rgb(131,158,7) 42.57%,rgb(129,157,6) 42.57%,rgb(129,157,6) 42.96%,rgb(128,157,6) 42.96%,rgb(128,157,6) 43.35%,rgb(126,156,6) 43.35%,rgb(126,156,6) 43.75%,rgb(124,156,6) 43.75%,rgb(124,156,6) 44.14%,rgb(122,155,6) 44.14%,rgb(122,155,6) 44.53%,rgb(121,154,6) 44.53%,rgb(121,154,6) 44.92%,rgb(119,154,6) 44.92%,rgb(119,154,6) 45.31%,rgb(117,153,6) 45.31%,rgb(117,153,6) 45.70%,rgb(115,153,6) 45.70%,rgb(115,153,6) 46.09%,rgb(113,152,6) 46.09%,rgb(113,152,6) 46.48%,rgb(112,151,7) 46.48%,rgb(112,151,7) 46.87%,rgb(110,151,7) 46.87%,rgb(110,151,7) 47.26%,rgb(108,150,7) 47.26%,rgb(108,150,7) 47.65%,rgb(106,149,8) 47.65%,rgb(106,149,8) 48.04%,rgb(104,149,9) 48.04%,rgb(104,149,9) 48.43%,rgb(102,148,9) 48.43%,rgb(102,148,9) 48.82%,rgb(101,148,10) 48.82%,rgb(101,148,10) 49.21%,rgb(99,147,11) 49.21%,rgb(99,147,11) 49.60%,rgb(97,146,11) 49.60%,rgb(97,146,11) 50%,rgb(95,146,12) 50%,rgb(95,146,12) 50.39%,rgb(93,145,13) 50.39%,rgb(93,145,13) 50.78%,rgb(92,144,14) 50.78%,rgb(92,144,14) 51.17%,rgb(90,144,15) 51.17%,rgb(90,144,15) 51.56%,rgb(88,143,15) 51.56%,rgb(88,143,15) 51.95%,rgb(86,142,16) 51.95%,rgb(86,142,16) 52.34%,rgb(84,142,17) 52.34%,rgb(84,142,17) 52.73%,rgb(82,141,18) 52.73%,rgb(82,141,18) 53.12%,rgb(81,140,18) 53.12%,rgb(81,140,18) 53.51%,rgb(79,140,19) 53.51%,rgb(79,140,19) 53.90%,rgb(77,139,20) 53.90%,rgb(77,139,20) 54.29%,rgb(75,138,21) 54.29%,rgb(75,138,21) 54.68%,rgb(73,138,22) 54.68%,rgb(73,138,22) 55.07%,rgb(72,137,22) 55.07%,rgb(72,137,22) 55.46%,rgb(70,136,23) 55.46%,rgb(70,136,23) 55.85%,rgb(68,136,24) 55.85%,rgb(68,136,24) 56.25%,rgb(66,135,25) 56.25%,rgb(66,135,25) 56.64%,rgb(64,134,25) 56.64%,rgb(64,134,25) 57.03%,rgb(63,133,26) 57.03%,rgb(63,133,26) 57.42%,rgb(61,133,27) 57.42%,rgb(61,133,27) 57.81%,rgb(59,132,28) 57.81%,rgb(59,132,28) 58.20%,rgb(57,131,28) 58.20%,rgb(57,131,28) 58.59%,rgb(56,131,29) 58.59%,rgb(56,131,29) 58.98%,rgb(54,130,30) 58.98%,rgb(54,130,30) 59.37%,rgb(52,129,30) 59.37%,rgb(52,129,30) 59.76%,rgb(50,128,31) 59.76%,rgb(50,128,31) 60.15%,rgb(49,127,32) 60.15%,rgb(49,127,32) 60.54%,rgb(47,127,32) 60.54%,rgb(47,127,32) 60.93%,rgb(45,126,33) 60.93%,rgb(45,126,33) 61.32%,rgb(44,125,33) 61.32%,rgb(44,125,33) 61.71%,rgb(42,124,34) 61.71%,rgb(42,124,34) 62.10%,rgb(40,124,35) 62.10%,rgb(40,124,35) 62.5%,rgb(39,123,35) 62.5%,rgb(39,123,35) 62.89%,rgb(37,122,36) 62.89%,rgb(37,122,36) 63.28%,rgb(36,121,36) 63.28%,rgb(36,121,36) 63.67%,rgb(34,120,37) 63.67%,rgb(34,120,37) 64.06%,rgb(33,120,37) 64.06%,rgb(33,120,37) 64.45%,rgb(31,119,38) 64.45%,rgb(31,119,38) 64.84%,rgb(30,118,38) 64.84%,rgb(30,118,38) 65.23%,rgb(28,117,39) 65.23%,rgb(28,117,39) 65.62%,rgb(27,116,39) 65.62%,rgb(27,116,39) 66.01%,rgb(26,115,39) 66.01%,rgb(26,115,39) 66.40%,rgb(24,115,40) 66.40%,rgb(24,115,40) 66.79%,rgb(23,114,40) 66.79%,rgb(23,114,40) 67.18%,rgb(22,113,41) 67.18%,rgb(22,113,41) 67.57%,rgb(21,112,41) 67.57%,rgb(21,112,41) 67.96%,rgb(19,111,41) 67.96%,rgb(19,111,41) 68.35%,rgb(18,110,42) 68.35%,rgb(18,110,42) 68.75%,rgb(17,109,42) 68.75%,rgb(17,109,42) 69.14%,rgb(16,108,42) 69.14%,rgb(16,108,42) 69.53%,rgb(15,108,43) 69.53%,rgb(15,108,43) 69.92%,rgb(15,107,43) 69.92%,rgb(15,107,43) 70.31%,rgb(14,106,43) 70.31%,rgb(14,106,43) 70.70%,rgb(13,105,43) 70.70%,rgb(13,105,43) 71.09%,rgb(13,104,43) 71.09%,rgb(13,104,43) 71.48%,rgb(12,103,44) 71.48%,rgb(12,103,44) 71.87%,rgb(12,102,44) 71.87%,rgb(12,102,44) 72.26%,rgb(11,101,44) 72.26%,rgb(11,101,44) 72.65%,rgb(11,100,44) 72.65%,rgb(11,100,44) 73.04%,rgb(11,99,44) 73.04%,rgb(11,99,44) 73.43%,rgb(11,99,44) 73.43%,rgb(11,99,44) 73.82%,rgb(11,98,45) 73.82%,rgb(11,98,45) 74.21%,rgb(11,97,45) 74.21%,rgb(11,97,45) 74.60%,rgb(11,96,45) 74.60%,rgb(11,96,45) 75%,rgb(11,95,45) 75%,rgb(11,95,45) 75.39%,rgb(11,94,45) 75.39%,rgb(11,94,45) 75.78%,rgb(12,93,45) 75.78%,rgb(12,93,45) 76.17%,rgb(12,92,45) 76.17%,rgb(12,92,45) 76.56%,rgb(12,91,45) 76.56%,rgb(12,91,45) 76.95%,rgb(13,90,45) 76.95%,rgb(13,90,45) 77.34%,rgb(13,89,45) 77.34%,rgb(13,89,45) 77.73%,rgb(14,88,45) 77.73%,rgb(14,88,45) 78.12%,rgb(14,87,45) 78.12%,rgb(14,87,45) 78.51%,rgb(15,86,44) 78.51%,rgb(15,86,44) 78.90%,rgb(15,85,44) 78.90%,rgb(15,85,44) 79.29%,rgb(16,84,44) 79.29%,rgb(16,84,44) 79.68%,rgb(16,84,44) 79.68%,rgb(16,84,44) 80.07%,rgb(16,83,44) 80.07%,rgb(16,83,44) 80.46%,rgb(17,82,44) 80.46%,rgb(17,82,44) 80.85%,rgb(17,81,44) 80.85%,rgb(17,81,44) 81.25%,rgb(18,80,43) 81.25%,rgb(18,80,43) 81.64%,rgb(18,79,43) 81.64%,rgb(18,79,43) 82.03%,rgb(19,78,43) 82.03%,rgb(19,78,43) 82.42%,rgb(19,77,43) 82.42%,rgb(19,77,43) 82.81%,rgb(20,76,42) 82.81%,rgb(20,76,42) 83.20%,rgb(20,75,42) 83.20%,rgb(20,75,42) 83.59%,rgb(20,74,42) 83.59%,rgb(20,74,42) 83.98%,rgb(21,73,42) 83.98%,rgb(21,73,42) 84.37%,rgb(21,72,41) 84.37%,rgb(21,72,41) 84.76%,rgb(22,71,41) 84.76%,rgb(22,71,41) 85.15%,rgb(22,70,41) 85.15%,rgb(22,70,41) 85.54%,rgb(22,69,40) 85.54%,rgb(22,69,40) 85.93%,rgb(23,68,40) 85.93%,rgb(23,68,40) 86.32%,rgb(23,67,39) 86.32%,rgb(23,67,39) 86.71%,rgb(23,66,39) 86.71%,rgb(23,66,39) 87.10%,rgb(23,65,39) 87.10%,rgb(23,65,39) 87.5%,rgb(24,64,38) 87.5%,rgb(24,64,38) 87.89%,rgb(24,63,38) 87.89%,rgb(24,63,38) 88.28%,rgb(24,63,37) 88.28%,rgb(24,63,37) 88.67%,rgb(24,62,37) 88.67%,rgb(24,62,37) 89.06%,rgb(25,61,36) 89.06%,rgb(25,61,36) 89.45%,rgb(25,60,36) 89.45%,rgb(25,60,36) 89.84%,rgb(25,59,35) 89.84%,rgb(25,59,35) 90.23%,rgb(25,58,35) 90.23%,rgb(25,58,35) 90.62%,rgb(25,57,34) 90.62%,rgb(25,57,34) 91.01%,rgb(25,56,34) 91.01%,rgb(25,56,34) 91.40%,rgb(25,55,33) 91.40%,rgb(25,55,33) 91.79%,rgb(25,54,33) 91.79%,rgb(25,54,33) 92.18%,rgb(25,53,32) 92.18%,rgb(25,53,32) 92.57%,rgb(25,52,31) 92.57%,rgb(25,52,31) 92.96%,rgb(25,51,31) 92.96%,rgb(25,51,31) 93.35%,rgb(25,50,30) 93.35%,rgb(25,50,30) 93.75%,rgb(25,49,30) 93.75%,rgb(25,49,30) 94.14%,rgb(25,48,29) 94.14%,rgb(25,48,29) 94.53%,rgb(25,47,28) 94.53%,rgb(25,47,28) 94.92%,rgb(25,46,28) 94.92%,rgb(25,46,28) 95.31%,rgb(25,45,27) 95.31%,rgb(25,45,27) 95.70%,rgb(25,44,26) 95.70%,rgb(25,44,26) 96.09%,rgb(25,44,25) 96.09%,rgb(25,44,25) 96.48%,rgb(25,43,25) 96.48%,rgb(25,43,25) 96.87%,rgb(25,42,24) 96.87%,rgb(25,42,24) 97.26%,rgb(24,41,23) 97.26%,rgb(24,41,23) 97.65%,rgb(24,40,23) 97.65%,rgb(24,40,23) 98.04%,rgb(24,39,22) 98.04%,rgb(24,39,22) 98.43%,rgb(24,38,21) 98.43%,rgb(24,38,21) 98.82%,rgb(24,37,20) 98.82%,rgb(24,37,20) 99.21%,rgb(23,36,19) 99.21%,rgb(23,36,19) 99.60%,rgb(23,35,19) 99.60%,rgb(23,35,19) 100%\",\n tex_buffer: new Uint8Array([255,253,205,254,252,203,254,250,201,253,249,199,252,248,197,252,247,194,251,246,192,250,244,190,249,243,188,249,242,186,248,241,184,247,240,182,247,238,180,246,237,177,246,236,175,245,235,173,244,234,171,243,233,169,243,231,167,242,230,165,241,229,162,241,228,160,240,227,158,239,226,156,239,225,154,238,223,152,237,222,150,237,221,147,236,220,145,235,219,143,234,218,141,234,217,139,233,216,137,232,215,134,231,214,132,231,213,130,230,212,128,229,211,126,228,210,123,227,208,121,227,207,119,226,206,117,225,205,115,224,205,113,223,204,110,222,203,108,221,202,106,220,201,104,219,200,102,218,199,100,217,198,97,216,197,95,215,196,93,214,195,91,213,194,89,212,193,87,211,193,85,210,192,83,209,191,81,208,190,79,206,189,76,205,189,74,204,188,72,203,187,70,201,186,69,200,185,67,199,185,65,197,184,63,196,183,61,195,183,59,193,182,57,192,181,55,190,180,54,189,180,52,187,179,50,186,178,48,184,178,47,183,177,45,181,176,43,180,176,42,178,175,40,177,174,39,175,174,37,173,173,35,172,173,34,170,172,32,169,171,31,167,171,30,165,170,28,164,169,27,162,169,25,160,168,24,159,168,23,157,167,21,155,166,20,154,166,19,152,165,18,150,165,16,149,164,15,147,163,14,145,163,13,143,162,12,142,162,11,140,161,10,138,160,9,136,160,8,135,159,8,133,159,7,131,158,7,129,157,6,128,157,6,126,156,6,124,156,6,122,155,6,121,154,6,119,154,6,117,153,6,115,153,6,113,152,6,112,151,7,110,151,7,108,150,7,106,149,8,104,149,9,102,148,9,101,148,10,99,147,11,97,146,11,95,146,12,93,145,13,92,144,14,90,144,15,88,143,15,86,142,16,84,142,17,82,141,18,81,140,18,79,140,19,77,139,20,75,138,21,73,138,22,72,137,22,70,136,23,68,136,24,66,135,25,64,134,25,63,133,26,61,133,27,59,132,28,57,131,28,56,131,29,54,130,30,52,129,30,50,128,31,49,127,32,47,127,32,45,126,33,44,125,33,42,124,34,40,124,35,39,123,35,37,122,36,36,121,36,34,120,37,33,120,37,31,119,38,30,118,38,28,117,39,27,116,39,26,115,39,24,115,40,23,114,40,22,113,41,21,112,41,19,111,41,18,110,42,17,109,42,16,108,42,15,108,43,15,107,43,14,106,43,13,105,43,13,104,43,12,103,44,12,102,44,11,101,44,11,100,44,11,99,44,11,99,44,11,98,45,11,97,45,11,96,45,11,95,45,11,94,45,12,93,45,12,92,45,12,91,45,13,90,45,13,89,45,14,88,45,14,87,45,15,86,44,15,85,44,16,84,44,16,84,44,16,83,44,17,82,44,17,81,44,18,80,43,18,79,43,19,78,43,19,77,43,20,76,42,20,75,42,20,74,42,21,73,42,21,72,41,22,71,41,22,70,41,22,69,40,23,68,40,23,67,39,23,66,39,23,65,39,24,64,38,24,63,38,24,63,37,24,62,37,25,61,36,25,60,36,25,59,35,25,58,35,25,57,34,25,56,34,25,55,33,25,54,33,25,53,32,25,52,31,25,51,31,25,50,30,25,49,30,25,48,29,25,47,28,25,46,28,25,45,27,25,44,26,25,44,25,25,43,25,25,42,24,24,41,23,24,40,23,24,39,22,24,38,21,24,37,20,23,36,19,23,35,19]),\n linear_interpolation: false\n},\n{\n name: \"spring\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(255,0,255) 0%,rgb(255,1,253) 0.781%,rgb(255,3,251) 1.562%,rgb(255,5,249) 2.343%,rgb(255,7,247) 3.125%,rgb(255,9,245) 3.906%,rgb(255,11,243) 4.687%,rgb(255,13,241) 5.468%,rgb(255,15,239) 6.25%,rgb(255,17,237) 7.031%,rgb(255,19,235) 7.812%,rgb(255,21,233) 8.593%,rgb(255,23,231) 9.375%,rgb(255,25,229) 10.15%,rgb(255,27,227) 10.93%,rgb(255,29,225) 11.71%,rgb(255,31,223) 12.5%,rgb(255,33,221) 13.28%,rgb(255,35,219) 14.06%,rgb(255,37,217) 14.84%,rgb(255,39,215) 15.62%,rgb(255,41,213) 16.40%,rgb(255,43,211) 17.18%,rgb(255,45,209) 17.96%,rgb(255,47,207) 18.75%,rgb(255,49,205) 19.53%,rgb(255,51,203) 20.31%,rgb(255,53,201) 21.09%,rgb(255,55,199) 21.87%,rgb(255,57,197) 22.65%,rgb(255,59,195) 23.43%,rgb(255,61,193) 24.21%,rgb(255,63,191) 25%,rgb(255,65,189) 25.78%,rgb(255,67,187) 26.56%,rgb(255,69,185) 27.34%,rgb(255,71,183) 28.12%,rgb(255,73,181) 28.90%,rgb(255,75,179) 29.68%,rgb(255,77,177) 30.46%,rgb(255,79,175) 31.25%,rgb(255,81,173) 32.03%,rgb(255,83,171) 32.81%,rgb(255,85,169) 33.59%,rgb(255,87,167) 34.37%,rgb(255,89,165) 35.15%,rgb(255,91,163) 35.93%,rgb(255,93,161) 36.71%,rgb(255,95,159) 37.5%,rgb(255,97,157) 38.28%,rgb(255,99,155) 39.06%,rgb(255,101,153) 39.84%,rgb(255,103,151) 40.62%,rgb(255,105,149) 41.40%,rgb(255,107,147) 42.18%,rgb(255,109,145) 42.96%,rgb(255,111,143) 43.75%,rgb(255,113,141) 44.53%,rgb(255,115,139) 45.31%,rgb(255,117,137) 46.09%,rgb(255,119,135) 46.87%,rgb(255,121,133) 47.65%,rgb(255,123,131) 48.43%,rgb(255,125,129) 49.21%,rgb(255,127,127) 50%,rgb(255,129,125) 50.78%,rgb(255,131,123) 51.56%,rgb(255,133,121) 52.34%,rgb(255,135,119) 53.12%,rgb(255,137,117) 53.90%,rgb(255,139,115) 54.68%,rgb(255,141,113) 55.46%,rgb(255,143,111) 56.25%,rgb(255,145,109) 57.03%,rgb(255,147,107) 57.81%,rgb(255,149,105) 58.59%,rgb(255,151,103) 59.37%,rgb(255,153,101) 60.15%,rgb(255,155,99) 60.93%,rgb(255,157,97) 61.71%,rgb(255,159,95) 62.5%,rgb(255,161,93) 63.28%,rgb(255,163,91) 64.06%,rgb(255,165,89) 64.84%,rgb(255,167,87) 65.62%,rgb(255,169,85) 66.40%,rgb(255,171,83) 67.18%,rgb(255,173,81) 67.96%,rgb(255,175,79) 68.75%,rgb(255,177,77) 69.53%,rgb(255,179,75) 70.31%,rgb(255,181,73) 71.09%,rgb(255,183,71) 71.87%,rgb(255,185,69) 72.65%,rgb(255,187,67) 73.43%,rgb(255,189,65) 74.21%,rgb(255,191,63) 75%,rgb(255,193,61) 75.78%,rgb(255,195,59) 76.56%,rgb(255,197,57) 77.34%,rgb(255,199,55) 78.12%,rgb(255,201,53) 78.90%,rgb(255,203,51) 79.68%,rgb(255,205,49) 80.46%,rgb(255,207,47) 81.25%,rgb(255,209,45) 82.03%,rgb(255,211,43) 82.81%,rgb(255,213,41) 83.59%,rgb(255,215,39) 84.37%,rgb(255,217,37) 85.15%,rgb(255,219,35) 85.93%,rgb(255,221,33) 86.71%,rgb(255,223,31) 87.5%,rgb(255,225,29) 88.28%,rgb(255,227,27) 89.06%,rgb(255,229,25) 89.84%,rgb(255,231,23) 90.62%,rgb(255,233,21) 91.40%,rgb(255,235,19) 92.18%,rgb(255,237,17) 92.96%,rgb(255,239,15) 93.75%,rgb(255,241,13) 94.53%,rgb(255,243,11) 95.31%,rgb(255,245,9) 96.09%,rgb(255,247,7) 96.87%,rgb(255,249,5) 97.65%,rgb(255,251,3) 98.43%,rgb(255,253,1) 99.21%,rgb(255,255,0) 100%\",\n tex_buffer: new Uint8Array([255,0,255,255,1,253,255,3,251,255,5,249,255,7,247,255,9,245,255,11,243,255,13,241,255,15,239,255,17,237,255,19,235,255,21,233,255,23,231,255,25,229,255,27,227,255,29,225,255,31,223,255,33,221,255,35,219,255,37,217,255,39,215,255,41,213,255,43,211,255,45,209,255,47,207,255,49,205,255,51,203,255,53,201,255,55,199,255,57,197,255,59,195,255,61,193,255,63,191,255,65,189,255,67,187,255,69,185,255,71,183,255,73,181,255,75,179,255,77,177,255,79,175,255,81,173,255,83,171,255,85,169,255,87,167,255,89,165,255,91,163,255,93,161,255,95,159,255,97,157,255,99,155,255,101,153,255,103,151,255,105,149,255,107,147,255,109,145,255,111,143,255,113,141,255,115,139,255,117,137,255,119,135,255,121,133,255,123,131,255,125,129,255,127,127,255,129,125,255,131,123,255,133,121,255,135,119,255,137,117,255,139,115,255,141,113,255,143,111,255,145,109,255,147,107,255,149,105,255,151,103,255,153,101,255,155,99,255,157,97,255,159,95,255,161,93,255,163,91,255,165,89,255,167,87,255,169,85,255,171,83,255,173,81,255,175,79,255,177,77,255,179,75,255,181,73,255,183,71,255,185,69,255,187,67,255,189,65,255,191,63,255,193,61,255,195,59,255,197,57,255,199,55,255,201,53,255,203,51,255,205,49,255,207,47,255,209,45,255,211,43,255,213,41,255,215,39,255,217,37,255,219,35,255,221,33,255,223,31,255,225,29,255,227,27,255,229,25,255,231,23,255,233,21,255,235,19,255,237,17,255,239,15,255,241,13,255,243,11,255,245,9,255,247,7,255,249,5,255,251,3,255,253,1,255,255,0]),\n linear_interpolation: true\n},\n{\n name: \"summer\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,127,102) 0%,rgb(1,128,102) 0.781%,rgb(3,129,102) 1.562%,rgb(5,130,102) 2.343%,rgb(7,131,102) 3.125%,rgb(9,132,102) 3.906%,rgb(11,133,102) 4.687%,rgb(13,134,102) 5.468%,rgb(15,135,102) 6.25%,rgb(17,136,102) 7.031%,rgb(19,137,102) 7.812%,rgb(21,138,102) 8.593%,rgb(23,139,102) 9.375%,rgb(25,140,102) 10.15%,rgb(27,141,102) 10.93%,rgb(29,142,102) 11.71%,rgb(31,143,102) 12.5%,rgb(33,144,102) 13.28%,rgb(35,145,102) 14.06%,rgb(37,146,102) 14.84%,rgb(39,147,102) 15.62%,rgb(41,148,102) 16.40%,rgb(43,149,102) 17.18%,rgb(45,150,102) 17.96%,rgb(47,151,102) 18.75%,rgb(49,152,102) 19.53%,rgb(51,153,102) 20.31%,rgb(53,154,102) 21.09%,rgb(55,155,102) 21.87%,rgb(57,156,102) 22.65%,rgb(59,157,102) 23.43%,rgb(61,158,102) 24.21%,rgb(63,159,102) 25%,rgb(65,160,102) 25.78%,rgb(67,161,102) 26.56%,rgb(69,162,102) 27.34%,rgb(71,163,102) 28.12%,rgb(73,164,102) 28.90%,rgb(75,165,102) 29.68%,rgb(77,166,102) 30.46%,rgb(79,167,102) 31.25%,rgb(81,168,102) 32.03%,rgb(83,169,102) 32.81%,rgb(85,170,102) 33.59%,rgb(87,171,102) 34.37%,rgb(89,172,102) 35.15%,rgb(91,173,102) 35.93%,rgb(93,174,102) 36.71%,rgb(95,175,102) 37.5%,rgb(97,176,102) 38.28%,rgb(99,177,102) 39.06%,rgb(101,178,102) 39.84%,rgb(103,179,102) 40.62%,rgb(105,180,102) 41.40%,rgb(107,181,102) 42.18%,rgb(109,182,102) 42.96%,rgb(111,183,102) 43.75%,rgb(113,184,102) 44.53%,rgb(115,185,102) 45.31%,rgb(117,186,102) 46.09%,rgb(119,187,102) 46.87%,rgb(121,188,102) 47.65%,rgb(123,189,102) 48.43%,rgb(125,190,102) 49.21%,rgb(127,191,102) 50%,rgb(129,192,102) 50.78%,rgb(131,193,102) 51.56%,rgb(133,194,102) 52.34%,rgb(135,195,102) 53.12%,rgb(137,196,102) 53.90%,rgb(139,197,102) 54.68%,rgb(141,198,102) 55.46%,rgb(143,199,102) 56.25%,rgb(145,200,102) 57.03%,rgb(147,201,102) 57.81%,rgb(149,202,102) 58.59%,rgb(151,203,102) 59.37%,rgb(153,204,102) 60.15%,rgb(155,205,102) 60.93%,rgb(157,206,102) 61.71%,rgb(159,207,102) 62.5%,rgb(161,208,102) 63.28%,rgb(163,209,102) 64.06%,rgb(165,210,102) 64.84%,rgb(167,211,102) 65.62%,rgb(169,212,102) 66.40%,rgb(171,213,102) 67.18%,rgb(173,214,102) 67.96%,rgb(175,215,102) 68.75%,rgb(177,216,102) 69.53%,rgb(179,217,102) 70.31%,rgb(181,218,102) 71.09%,rgb(183,219,102) 71.87%,rgb(185,220,102) 72.65%,rgb(187,221,102) 73.43%,rgb(189,222,102) 74.21%,rgb(191,223,102) 75%,rgb(193,224,102) 75.78%,rgb(195,225,102) 76.56%,rgb(197,226,102) 77.34%,rgb(199,227,102) 78.12%,rgb(201,228,102) 78.90%,rgb(203,229,102) 79.68%,rgb(205,230,102) 80.46%,rgb(207,231,102) 81.25%,rgb(209,232,102) 82.03%,rgb(211,233,102) 82.81%,rgb(213,234,102) 83.59%,rgb(215,235,102) 84.37%,rgb(217,236,102) 85.15%,rgb(219,237,102) 85.93%,rgb(221,238,102) 86.71%,rgb(223,239,102) 87.5%,rgb(225,240,102) 88.28%,rgb(227,241,102) 89.06%,rgb(229,242,102) 89.84%,rgb(231,243,102) 90.62%,rgb(233,244,102) 91.40%,rgb(235,245,102) 92.18%,rgb(237,246,102) 92.96%,rgb(239,247,102) 93.75%,rgb(241,248,102) 94.53%,rgb(243,249,102) 95.31%,rgb(245,250,102) 96.09%,rgb(247,251,102) 96.87%,rgb(249,252,102) 97.65%,rgb(251,253,102) 98.43%,rgb(253,254,102) 99.21%,rgb(255,255,102) 100%\",\n tex_buffer: new Uint8Array([0,127,102,1,128,102,3,129,102,5,130,102,7,131,102,9,132,102,11,133,102,13,134,102,15,135,102,17,136,102,19,137,102,21,138,102,23,139,102,25,140,102,27,141,102,29,142,102,31,143,102,33,144,102,35,145,102,37,146,102,39,147,102,41,148,102,43,149,102,45,150,102,47,151,102,49,152,102,51,153,102,53,154,102,55,155,102,57,156,102,59,157,102,61,158,102,63,159,102,65,160,102,67,161,102,69,162,102,71,163,102,73,164,102,75,165,102,77,166,102,79,167,102,81,168,102,83,169,102,85,170,102,87,171,102,89,172,102,91,173,102,93,174,102,95,175,102,97,176,102,99,177,102,101,178,102,103,179,102,105,180,102,107,181,102,109,182,102,111,183,102,113,184,102,115,185,102,117,186,102,119,187,102,121,188,102,123,189,102,125,190,102,127,191,102,129,192,102,131,193,102,133,194,102,135,195,102,137,196,102,139,197,102,141,198,102,143,199,102,145,200,102,147,201,102,149,202,102,151,203,102,153,204,102,155,205,102,157,206,102,159,207,102,161,208,102,163,209,102,165,210,102,167,211,102,169,212,102,171,213,102,173,214,102,175,215,102,177,216,102,179,217,102,181,218,102,183,219,102,185,220,102,187,221,102,189,222,102,191,223,102,193,224,102,195,225,102,197,226,102,199,227,102,201,228,102,203,229,102,205,230,102,207,231,102,209,232,102,211,233,102,213,234,102,215,235,102,217,236,102,219,237,102,221,238,102,223,239,102,225,240,102,227,241,102,229,242,102,231,243,102,233,244,102,235,245,102,237,246,102,239,247,102,241,248,102,243,249,102,245,250,102,247,251,102,249,252,102,251,253,102,253,254,102,255,255,102]),\n linear_interpolation: true\n},\n{\n name: \"tab10\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 10],\n symmetric: false,\n c3g_string: \"rgb(31,119,180) 0%,rgb(31,119,180) 10%,rgb(255,127,14) 10%,rgb(255,127,14) 20%,rgb(44,160,44) 20%,rgb(44,160,44) 30%,rgb(214,39,40) 30%,rgb(214,39,40) 40%,rgb(148,103,189) 40%,rgb(148,103,189) 50%,rgb(140,86,75) 50%,rgb(140,86,75) 60%,rgb(227,119,194) 60%,rgb(227,119,194) 70%,rgb(127,127,127) 70%,rgb(127,127,127) 80%,rgb(188,189,34) 80%,rgb(188,189,34) 90%,rgb(23,190,207) 90%,rgb(23,190,207) 100%\",\n tex_buffer: new Uint8Array([31,119,180,255,127,14,44,160,44,214,39,40,148,103,189,140,86,75,227,119,194,127,127,127,188,189,34,23,190,207]),\n linear_interpolation: false\n},\n{\n name: \"tab20\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 20],\n symmetric: false,\n c3g_string: \"rgb(31,119,180) 0%,rgb(31,119,180) 5%,rgb(174,199,232) 5%,rgb(174,199,232) 10%,rgb(255,127,14) 10%,rgb(255,127,14) 15%,rgb(255,187,120) 15%,rgb(255,187,120) 20%,rgb(44,160,44) 20%,rgb(44,160,44) 25%,rgb(152,223,138) 25%,rgb(152,223,138) 30%,rgb(214,39,40) 30%,rgb(214,39,40) 35%,rgb(255,152,150) 35%,rgb(255,152,150) 40%,rgb(148,103,189) 40%,rgb(148,103,189) 45%,rgb(197,176,213) 45%,rgb(197,176,213) 50%,rgb(140,86,75) 50%,rgb(140,86,75) 55.00%,rgb(196,156,148) 55.00%,rgb(196,156,148) 60%,rgb(227,119,194) 60%,rgb(227,119,194) 65%,rgb(247,182,210) 65%,rgb(247,182,210) 70%,rgb(127,127,127) 70%,rgb(127,127,127) 75%,rgb(199,199,199) 75%,rgb(199,199,199) 80%,rgb(188,189,34) 80%,rgb(188,189,34) 85%,rgb(219,219,141) 85%,rgb(219,219,141) 90%,rgb(23,190,207) 90%,rgb(23,190,207) 95%,rgb(158,218,229) 95%,rgb(158,218,229) 100%\",\n tex_buffer: new Uint8Array([31,119,180,174,199,232,255,127,14,255,187,120,44,160,44,152,223,138,214,39,40,255,152,150,148,103,189,197,176,213,140,86,75,196,156,148,227,119,194,247,182,210,127,127,127,199,199,199,188,189,34,219,219,141,23,190,207,158,218,229]),\n linear_interpolation: false\n},\n{\n name: \"tab20b\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 20],\n symmetric: false,\n c3g_string: \"rgb(57,59,121) 0%,rgb(57,59,121) 5%,rgb(82,84,163) 5%,rgb(82,84,163) 10%,rgb(107,110,207) 10%,rgb(107,110,207) 15%,rgb(156,158,222) 15%,rgb(156,158,222) 20%,rgb(99,121,57) 20%,rgb(99,121,57) 25%,rgb(140,162,82) 25%,rgb(140,162,82) 30%,rgb(181,207,107) 30%,rgb(181,207,107) 35%,rgb(206,219,156) 35%,rgb(206,219,156) 40%,rgb(140,109,49) 40%,rgb(140,109,49) 45%,rgb(189,158,57) 45%,rgb(189,158,57) 50%,rgb(231,186,82) 50%,rgb(231,186,82) 55.00%,rgb(231,203,148) 55.00%,rgb(231,203,148) 60%,rgb(132,60,57) 60%,rgb(132,60,57) 65%,rgb(173,73,74) 65%,rgb(173,73,74) 70%,rgb(214,97,107) 70%,rgb(214,97,107) 75%,rgb(231,150,156) 75%,rgb(231,150,156) 80%,rgb(123,65,115) 80%,rgb(123,65,115) 85%,rgb(165,81,148) 85%,rgb(165,81,148) 90%,rgb(206,109,189) 90%,rgb(206,109,189) 95%,rgb(222,158,214) 95%,rgb(222,158,214) 100%\",\n tex_buffer: new Uint8Array([57,59,121,82,84,163,107,110,207,156,158,222,99,121,57,140,162,82,181,207,107,206,219,156,140,109,49,189,158,57,231,186,82,231,203,148,132,60,57,173,73,74,214,97,107,231,150,156,123,65,115,165,81,148,206,109,189,222,158,214]),\n linear_interpolation: false\n},\n{\n name: \"tab20c\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 20],\n symmetric: false,\n c3g_string: \"rgb(49,130,189) 0%,rgb(49,130,189) 5%,rgb(107,174,214) 5%,rgb(107,174,214) 10%,rgb(158,202,225) 10%,rgb(158,202,225) 15%,rgb(198,219,239) 15%,rgb(198,219,239) 20%,rgb(230,85,13) 20%,rgb(230,85,13) 25%,rgb(253,141,60) 25%,rgb(253,141,60) 30%,rgb(253,174,107) 30%,rgb(253,174,107) 35%,rgb(253,208,162) 35%,rgb(253,208,162) 40%,rgb(49,163,84) 40%,rgb(49,163,84) 45%,rgb(116,196,118) 45%,rgb(116,196,118) 50%,rgb(161,217,155) 50%,rgb(161,217,155) 55.00%,rgb(199,233,192) 55.00%,rgb(199,233,192) 60%,rgb(117,107,177) 60%,rgb(117,107,177) 65%,rgb(158,154,200) 65%,rgb(158,154,200) 70%,rgb(188,189,220) 70%,rgb(188,189,220) 75%,rgb(218,218,235) 75%,rgb(218,218,235) 80%,rgb(99,99,99) 80%,rgb(99,99,99) 85%,rgb(150,150,150) 85%,rgb(150,150,150) 90%,rgb(189,189,189) 90%,rgb(189,189,189) 95%,rgb(217,217,217) 95%,rgb(217,217,217) 100%\",\n tex_buffer: new Uint8Array([49,130,189,107,174,214,158,202,225,198,219,239,230,85,13,253,141,60,253,174,107,253,208,162,49,163,84,116,196,118,161,217,155,199,233,192,117,107,177,158,154,200,188,189,220,218,218,235,99,99,99,150,150,150,189,189,189,217,217,217]),\n linear_interpolation: false\n},\n{\n name: \"tarn\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: true,\n c3g_string: \"rgb(23,35,14) 0%,rgb(23,35,14) 0.390%,rgb(24,37,14) 0.390%,rgb(24,37,14) 0.781%,rgb(25,39,14) 0.781%,rgb(25,39,14) 1.171%,rgb(27,41,15) 1.171%,rgb(27,41,15) 1.562%,rgb(28,42,15) 1.562%,rgb(28,42,15) 1.953%,rgb(29,44,15) 1.953%,rgb(29,44,15) 2.343%,rgb(31,46,16) 2.343%,rgb(31,46,16) 2.734%,rgb(32,48,16) 2.734%,rgb(32,48,16) 3.125%,rgb(33,49,16) 3.125%,rgb(33,49,16) 3.515%,rgb(34,51,16) 3.515%,rgb(34,51,16) 3.906%,rgb(35,53,16) 3.906%,rgb(35,53,16) 4.296%,rgb(37,55,16) 4.296%,rgb(37,55,16) 4.687%,rgb(38,56,16) 4.687%,rgb(38,56,16) 5.078%,rgb(39,58,16) 5.078%,rgb(39,58,16) 5.468%,rgb(40,60,16) 5.468%,rgb(40,60,16) 5.859%,rgb(42,61,16) 5.859%,rgb(42,61,16) 6.25%,rgb(43,63,15) 6.25%,rgb(43,63,15) 6.640%,rgb(44,65,15) 6.640%,rgb(44,65,15) 7.031%,rgb(46,66,15) 7.031%,rgb(46,66,15) 7.421%,rgb(47,68,14) 7.421%,rgb(47,68,14) 7.812%,rgb(48,70,14) 7.812%,rgb(48,70,14) 8.203%,rgb(50,71,13) 8.203%,rgb(50,71,13) 8.593%,rgb(52,73,12) 8.593%,rgb(52,73,12) 8.984%,rgb(54,74,12) 8.984%,rgb(54,74,12) 9.375%,rgb(57,75,12) 9.375%,rgb(57,75,12) 9.765%,rgb(60,77,13) 9.765%,rgb(60,77,13) 10.15%,rgb(63,78,14) 10.15%,rgb(63,78,14) 10.54%,rgb(66,79,15) 10.54%,rgb(66,79,15) 10.93%,rgb(68,80,16) 10.93%,rgb(68,80,16) 11.32%,rgb(71,81,17) 11.32%,rgb(71,81,17) 11.71%,rgb(74,83,18) 11.71%,rgb(74,83,18) 12.10%,rgb(77,84,19) 12.10%,rgb(77,84,19) 12.5%,rgb(79,85,20) 12.5%,rgb(79,85,20) 12.89%,rgb(82,86,21) 12.89%,rgb(82,86,21) 13.28%,rgb(85,87,22) 13.28%,rgb(85,87,22) 13.67%,rgb(87,88,23) 13.67%,rgb(87,88,23) 14.06%,rgb(90,89,24) 14.06%,rgb(90,89,24) 14.45%,rgb(93,91,25) 14.45%,rgb(93,91,25) 14.84%,rgb(96,92,26) 14.84%,rgb(96,92,26) 15.23%,rgb(98,93,26) 15.23%,rgb(98,93,26) 15.62%,rgb(101,94,27) 15.62%,rgb(101,94,27) 16.01%,rgb(104,95,28) 16.01%,rgb(104,95,28) 16.40%,rgb(107,96,29) 16.40%,rgb(107,96,29) 16.79%,rgb(109,97,30) 16.79%,rgb(109,97,30) 17.18%,rgb(112,98,31) 17.18%,rgb(112,98,31) 17.57%,rgb(115,99,32) 17.57%,rgb(115,99,32) 17.96%,rgb(118,100,33) 17.96%,rgb(118,100,33) 18.35%,rgb(120,102,33) 18.35%,rgb(120,102,33) 18.75%,rgb(123,103,34) 18.75%,rgb(123,103,34) 19.14%,rgb(126,104,35) 19.14%,rgb(126,104,35) 19.53%,rgb(129,105,36) 19.53%,rgb(129,105,36) 19.92%,rgb(132,106,37) 19.92%,rgb(132,106,37) 20.31%,rgb(134,107,38) 20.31%,rgb(134,107,38) 20.70%,rgb(137,108,39) 20.70%,rgb(137,108,39) 21.09%,rgb(140,109,39) 21.09%,rgb(140,109,39) 21.48%,rgb(143,110,40) 21.48%,rgb(143,110,40) 21.87%,rgb(146,111,41) 21.87%,rgb(146,111,41) 22.26%,rgb(149,112,42) 22.26%,rgb(149,112,42) 22.65%,rgb(152,113,43) 22.65%,rgb(152,113,43) 23.04%,rgb(155,114,44) 23.04%,rgb(155,114,44) 23.43%,rgb(158,115,45) 23.43%,rgb(158,115,45) 23.82%,rgb(160,116,46) 23.82%,rgb(160,116,46) 24.21%,rgb(163,117,47) 24.21%,rgb(163,117,47) 24.60%,rgb(166,118,48) 24.60%,rgb(166,118,48) 25%,rgb(169,119,49) 25%,rgb(169,119,49) 25.39%,rgb(172,120,50) 25.39%,rgb(172,120,50) 25.78%,rgb(175,121,51) 25.78%,rgb(175,121,51) 26.17%,rgb(178,122,53) 26.17%,rgb(178,122,53) 26.56%,rgb(181,123,54) 26.56%,rgb(181,123,54) 26.95%,rgb(184,124,55) 26.95%,rgb(184,124,55) 27.34%,rgb(187,125,57) 27.34%,rgb(187,125,57) 27.73%,rgb(190,126,58) 27.73%,rgb(190,126,58) 28.12%,rgb(193,127,60) 28.12%,rgb(193,127,60) 28.51%,rgb(196,128,62) 28.51%,rgb(196,128,62) 28.90%,rgb(198,129,65) 28.90%,rgb(198,129,65) 29.29%,rgb(201,130,68) 29.29%,rgb(201,130,68) 29.68%,rgb(203,132,72) 29.68%,rgb(203,132,72) 30.07%,rgb(204,134,76) 30.07%,rgb(204,134,76) 30.46%,rgb(205,136,79) 30.46%,rgb(205,136,79) 30.85%,rgb(206,138,83) 30.85%,rgb(206,138,83) 31.25%,rgb(207,140,87) 31.25%,rgb(207,140,87) 31.64%,rgb(208,143,90) 31.64%,rgb(208,143,90) 32.03%,rgb(209,145,93) 32.03%,rgb(209,145,93) 32.42%,rgb(210,147,97) 32.42%,rgb(210,147,97) 32.81%,rgb(210,150,100) 32.81%,rgb(210,150,100) 33.20%,rgb(211,152,104) 33.20%,rgb(211,152,104) 33.59%,rgb(212,154,107) 33.59%,rgb(212,154,107) 33.98%,rgb(213,156,111) 33.98%,rgb(213,156,111) 34.37%,rgb(214,159,114) 34.37%,rgb(214,159,114) 34.76%,rgb(215,161,117) 34.76%,rgb(215,161,117) 35.15%,rgb(216,163,121) 35.15%,rgb(216,163,121) 35.54%,rgb(217,166,124) 35.54%,rgb(217,166,124) 35.93%,rgb(218,168,128) 35.93%,rgb(218,168,128) 36.32%,rgb(219,170,131) 36.32%,rgb(219,170,131) 36.71%,rgb(219,173,135) 36.71%,rgb(219,173,135) 37.10%,rgb(220,175,138) 37.10%,rgb(220,175,138) 37.5%,rgb(221,177,142) 37.5%,rgb(221,177,142) 37.89%,rgb(222,179,145) 37.89%,rgb(222,179,145) 38.28%,rgb(223,182,149) 38.28%,rgb(223,182,149) 38.67%,rgb(224,184,152) 38.67%,rgb(224,184,152) 39.06%,rgb(225,186,156) 39.06%,rgb(225,186,156) 39.45%,rgb(226,189,159) 39.45%,rgb(226,189,159) 39.84%,rgb(227,191,163) 39.84%,rgb(227,191,163) 40.23%,rgb(228,193,166) 40.23%,rgb(228,193,166) 40.62%,rgb(229,196,170) 40.62%,rgb(229,196,170) 41.01%,rgb(230,198,173) 41.01%,rgb(230,198,173) 41.40%,rgb(231,200,177) 41.40%,rgb(231,200,177) 41.79%,rgb(232,203,180) 41.79%,rgb(232,203,180) 42.18%,rgb(233,205,184) 42.18%,rgb(233,205,184) 42.57%,rgb(234,208,187) 42.57%,rgb(234,208,187) 42.96%,rgb(235,210,191) 42.96%,rgb(235,210,191) 43.35%,rgb(236,212,194) 43.35%,rgb(236,212,194) 43.75%,rgb(237,215,198) 43.75%,rgb(237,215,198) 44.14%,rgb(239,217,201) 44.14%,rgb(239,217,201) 44.53%,rgb(240,219,205) 44.53%,rgb(240,219,205) 44.92%,rgb(241,222,209) 44.92%,rgb(241,222,209) 45.31%,rgb(242,224,212) 45.31%,rgb(242,224,212) 45.70%,rgb(243,227,216) 45.70%,rgb(243,227,216) 46.09%,rgb(244,229,219) 46.09%,rgb(244,229,219) 46.48%,rgb(246,232,223) 46.48%,rgb(246,232,223) 46.87%,rgb(247,234,226) 46.87%,rgb(247,234,226) 47.26%,rgb(248,236,229) 47.26%,rgb(248,236,229) 47.65%,rgb(249,239,233) 47.65%,rgb(249,239,233) 48.04%,rgb(250,241,236) 48.04%,rgb(250,241,236) 48.43%,rgb(251,243,239) 48.43%,rgb(251,243,239) 48.82%,rgb(252,245,242) 48.82%,rgb(252,245,242) 49.21%,rgb(252,246,244) 49.21%,rgb(252,246,244) 49.60%,rgb(252,247,246) 49.60%,rgb(252,247,246) 50%,rgb(252,247,246) 50%,rgb(252,247,246) 50.39%,rgb(252,247,245) 50.39%,rgb(252,247,245) 50.78%,rgb(251,246,243) 50.78%,rgb(251,246,243) 51.17%,rgb(251,245,240) 51.17%,rgb(251,245,240) 51.56%,rgb(249,244,237) 51.56%,rgb(249,244,237) 51.95%,rgb(248,242,234) 51.95%,rgb(248,242,234) 52.34%,rgb(246,240,231) 52.34%,rgb(246,240,231) 52.73%,rgb(244,238,227) 52.73%,rgb(244,238,227) 53.12%,rgb(242,236,224) 53.12%,rgb(242,236,224) 53.51%,rgb(240,234,220) 53.51%,rgb(240,234,220) 53.90%,rgb(239,232,216) 53.90%,rgb(239,232,216) 54.29%,rgb(237,230,213) 54.29%,rgb(237,230,213) 54.68%,rgb(235,228,209) 54.68%,rgb(235,228,209) 55.07%,rgb(233,226,205) 55.07%,rgb(233,226,205) 55.46%,rgb(231,223,202) 55.46%,rgb(231,223,202) 55.85%,rgb(229,221,198) 55.85%,rgb(229,221,198) 56.25%,rgb(227,219,194) 56.25%,rgb(227,219,194) 56.64%,rgb(225,217,191) 56.64%,rgb(225,217,191) 57.03%,rgb(223,215,187) 57.03%,rgb(223,215,187) 57.42%,rgb(221,214,184) 57.42%,rgb(221,214,184) 57.81%,rgb(218,212,180) 57.81%,rgb(218,212,180) 58.20%,rgb(215,210,178) 58.20%,rgb(215,210,178) 58.59%,rgb(212,209,175) 58.59%,rgb(212,209,175) 58.98%,rgb(209,207,173) 58.98%,rgb(209,207,173) 59.37%,rgb(206,206,171) 59.37%,rgb(206,206,171) 59.76%,rgb(203,204,170) 59.76%,rgb(203,204,170) 60.15%,rgb(199,203,168) 60.15%,rgb(199,203,168) 60.54%,rgb(196,201,167) 60.54%,rgb(196,201,167) 60.93%,rgb(193,200,166) 60.93%,rgb(193,200,166) 61.32%,rgb(190,198,165) 61.32%,rgb(190,198,165) 61.71%,rgb(186,196,164) 61.71%,rgb(186,196,164) 62.10%,rgb(183,195,163) 62.10%,rgb(183,195,163) 62.5%,rgb(180,193,162) 62.5%,rgb(180,193,162) 62.89%,rgb(177,192,161) 62.89%,rgb(177,192,161) 63.28%,rgb(174,190,160) 63.28%,rgb(174,190,160) 63.67%,rgb(171,189,159) 63.67%,rgb(171,189,159) 64.06%,rgb(168,187,158) 64.06%,rgb(168,187,158) 64.45%,rgb(165,185,157) 64.45%,rgb(165,185,157) 64.84%,rgb(162,184,156) 64.84%,rgb(162,184,156) 65.23%,rgb(159,182,155) 65.23%,rgb(159,182,155) 65.62%,rgb(156,181,154) 65.62%,rgb(156,181,154) 66.01%,rgb(153,179,153) 66.01%,rgb(153,179,153) 66.40%,rgb(151,178,152) 66.40%,rgb(151,178,152) 66.79%,rgb(148,176,151) 66.79%,rgb(148,176,151) 67.18%,rgb(145,174,150) 67.18%,rgb(145,174,150) 67.57%,rgb(142,173,149) 67.57%,rgb(142,173,149) 67.96%,rgb(139,171,148) 67.96%,rgb(139,171,148) 68.35%,rgb(136,170,147) 68.35%,rgb(136,170,147) 68.75%,rgb(133,168,146) 68.75%,rgb(133,168,146) 69.14%,rgb(130,167,146) 69.14%,rgb(130,167,146) 69.53%,rgb(127,165,145) 69.53%,rgb(127,165,145) 69.92%,rgb(124,164,144) 69.92%,rgb(124,164,144) 70.31%,rgb(121,162,143) 70.31%,rgb(121,162,143) 70.70%,rgb(118,161,142) 70.70%,rgb(118,161,142) 71.09%,rgb(115,159,141) 71.09%,rgb(115,159,141) 71.48%,rgb(112,158,140) 71.48%,rgb(112,158,140) 71.87%,rgb(109,156,139) 71.87%,rgb(109,156,139) 72.26%,rgb(106,155,138) 72.26%,rgb(106,155,138) 72.65%,rgb(103,154,137) 72.65%,rgb(103,154,137) 73.04%,rgb(100,152,137) 73.04%,rgb(100,152,137) 73.43%,rgb(97,151,136) 73.43%,rgb(97,151,136) 73.82%,rgb(94,149,135) 73.82%,rgb(94,149,135) 74.21%,rgb(90,148,134) 74.21%,rgb(90,148,134) 74.60%,rgb(87,146,133) 74.60%,rgb(87,146,133) 75%,rgb(84,145,133) 75%,rgb(84,145,133) 75.39%,rgb(81,143,132) 75.39%,rgb(81,143,132) 75.78%,rgb(78,142,131) 75.78%,rgb(78,142,131) 76.17%,rgb(74,140,131) 76.17%,rgb(74,140,131) 76.56%,rgb(71,139,130) 76.56%,rgb(71,139,130) 76.95%,rgb(68,137,130) 76.95%,rgb(68,137,130) 77.34%,rgb(65,136,129) 77.34%,rgb(65,136,129) 77.73%,rgb(61,134,128) 77.73%,rgb(61,134,128) 78.12%,rgb(58,133,128) 78.12%,rgb(58,133,128) 78.51%,rgb(55,131,127) 78.51%,rgb(55,131,127) 78.90%,rgb(52,129,127) 78.90%,rgb(52,129,127) 79.29%,rgb(49,128,126) 79.29%,rgb(49,128,126) 79.68%,rgb(46,126,126) 79.68%,rgb(46,126,126) 80.07%,rgb(44,124,125) 80.07%,rgb(44,124,125) 80.46%,rgb(42,123,125) 80.46%,rgb(42,123,125) 80.85%,rgb(39,121,124) 80.85%,rgb(39,121,124) 81.25%,rgb(37,119,124) 81.25%,rgb(37,119,124) 81.64%,rgb(36,117,123) 81.64%,rgb(36,117,123) 82.03%,rgb(34,116,122) 82.03%,rgb(34,116,122) 82.42%,rgb(33,114,122) 82.42%,rgb(33,114,122) 82.81%,rgb(32,112,121) 82.81%,rgb(32,112,121) 83.20%,rgb(32,110,120) 83.20%,rgb(32,110,120) 83.59%,rgb(31,108,119) 83.59%,rgb(31,108,119) 83.98%,rgb(31,106,118) 83.98%,rgb(31,106,118) 84.37%,rgb(30,105,118) 84.37%,rgb(30,105,118) 84.76%,rgb(30,103,117) 84.76%,rgb(30,103,117) 85.15%,rgb(29,101,116) 85.15%,rgb(29,101,116) 85.54%,rgb(29,99,115) 85.54%,rgb(29,99,115) 85.93%,rgb(28,97,114) 85.93%,rgb(28,97,114) 86.32%,rgb(28,95,113) 86.32%,rgb(28,95,113) 86.71%,rgb(27,93,112) 86.71%,rgb(27,93,112) 87.10%,rgb(26,92,111) 87.10%,rgb(26,92,111) 87.5%,rgb(26,90,111) 87.5%,rgb(26,90,111) 87.89%,rgb(25,88,110) 87.89%,rgb(25,88,110) 88.28%,rgb(24,86,109) 88.28%,rgb(24,86,109) 88.67%,rgb(24,84,108) 88.67%,rgb(24,84,108) 89.06%,rgb(23,83,107) 89.06%,rgb(23,83,107) 89.45%,rgb(22,81,107) 89.45%,rgb(22,81,107) 89.84%,rgb(21,79,106) 89.84%,rgb(21,79,106) 90.23%,rgb(20,77,105) 90.23%,rgb(20,77,105) 90.62%,rgb(19,75,104) 90.62%,rgb(19,75,104) 91.01%,rgb(18,73,104) 91.01%,rgb(18,73,104) 91.40%,rgb(17,72,103) 91.40%,rgb(17,72,103) 91.79%,rgb(16,70,102) 91.79%,rgb(16,70,102) 92.18%,rgb(16,68,101) 92.18%,rgb(16,68,101) 92.57%,rgb(15,66,101) 92.57%,rgb(15,66,101) 92.96%,rgb(14,64,100) 92.96%,rgb(14,64,100) 93.35%,rgb(13,62,99) 93.35%,rgb(13,62,99) 93.75%,rgb(12,60,99) 93.75%,rgb(12,60,99) 94.14%,rgb(11,59,98) 94.14%,rgb(11,59,98) 94.53%,rgb(10,57,98) 94.53%,rgb(10,57,98) 94.92%,rgb(9,55,97) 94.92%,rgb(9,55,97) 95.31%,rgb(9,53,96) 95.31%,rgb(9,53,96) 95.70%,rgb(9,51,96) 95.70%,rgb(9,51,96) 96.09%,rgb(9,49,95) 96.09%,rgb(9,49,95) 96.48%,rgb(10,47,94) 96.48%,rgb(10,47,94) 96.87%,rgb(11,45,93) 96.87%,rgb(11,45,93) 97.26%,rgb(12,42,91) 97.26%,rgb(12,42,91) 97.65%,rgb(13,40,89) 97.65%,rgb(13,40,89) 98.04%,rgb(14,38,88) 98.04%,rgb(14,38,88) 98.43%,rgb(14,36,86) 98.43%,rgb(14,36,86) 98.82%,rgb(15,34,84) 98.82%,rgb(15,34,84) 99.21%,rgb(15,32,82) 99.21%,rgb(15,32,82) 99.60%,rgb(16,30,79) 99.60%,rgb(16,30,79) 100%\",\n tex_buffer: new Uint8Array([23,35,14,24,37,14,25,39,14,27,41,15,28,42,15,29,44,15,31,46,16,32,48,16,33,49,16,34,51,16,35,53,16,37,55,16,38,56,16,39,58,16,40,60,16,42,61,16,43,63,15,44,65,15,46,66,15,47,68,14,48,70,14,50,71,13,52,73,12,54,74,12,57,75,12,60,77,13,63,78,14,66,79,15,68,80,16,71,81,17,74,83,18,77,84,19,79,85,20,82,86,21,85,87,22,87,88,23,90,89,24,93,91,25,96,92,26,98,93,26,101,94,27,104,95,28,107,96,29,109,97,30,112,98,31,115,99,32,118,100,33,120,102,33,123,103,34,126,104,35,129,105,36,132,106,37,134,107,38,137,108,39,140,109,39,143,110,40,146,111,41,149,112,42,152,113,43,155,114,44,158,115,45,160,116,46,163,117,47,166,118,48,169,119,49,172,120,50,175,121,51,178,122,53,181,123,54,184,124,55,187,125,57,190,126,58,193,127,60,196,128,62,198,129,65,201,130,68,203,132,72,204,134,76,205,136,79,206,138,83,207,140,87,208,143,90,209,145,93,210,147,97,210,150,100,211,152,104,212,154,107,213,156,111,214,159,114,215,161,117,216,163,121,217,166,124,218,168,128,219,170,131,219,173,135,220,175,138,221,177,142,222,179,145,223,182,149,224,184,152,225,186,156,226,189,159,227,191,163,228,193,166,229,196,170,230,198,173,231,200,177,232,203,180,233,205,184,234,208,187,235,210,191,236,212,194,237,215,198,239,217,201,240,219,205,241,222,209,242,224,212,243,227,216,244,229,219,246,232,223,247,234,226,248,236,229,249,239,233,250,241,236,251,243,239,252,245,242,252,246,244,252,247,246,252,247,246,252,247,245,251,246,243,251,245,240,249,244,237,248,242,234,246,240,231,244,238,227,242,236,224,240,234,220,239,232,216,237,230,213,235,228,209,233,226,205,231,223,202,229,221,198,227,219,194,225,217,191,223,215,187,221,214,184,218,212,180,215,210,178,212,209,175,209,207,173,206,206,171,203,204,170,199,203,168,196,201,167,193,200,166,190,198,165,186,196,164,183,195,163,180,193,162,177,192,161,174,190,160,171,189,159,168,187,158,165,185,157,162,184,156,159,182,155,156,181,154,153,179,153,151,178,152,148,176,151,145,174,150,142,173,149,139,171,148,136,170,147,133,168,146,130,167,146,127,165,145,124,164,144,121,162,143,118,161,142,115,159,141,112,158,140,109,156,139,106,155,138,103,154,137,100,152,137,97,151,136,94,149,135,90,148,134,87,146,133,84,145,133,81,143,132,78,142,131,74,140,131,71,139,130,68,137,130,65,136,129,61,134,128,58,133,128,55,131,127,52,129,127,49,128,126,46,126,126,44,124,125,42,123,125,39,121,124,37,119,124,36,117,123,34,116,122,33,114,122,32,112,121,32,110,120,31,108,119,31,106,118,30,105,118,30,103,117,29,101,116,29,99,115,28,97,114,28,95,113,27,93,112,26,92,111,26,90,111,25,88,110,24,86,109,24,84,108,23,83,107,22,81,107,21,79,106,20,77,105,19,75,104,18,73,104,17,72,103,16,70,102,16,68,101,15,66,101,14,64,100,13,62,99,12,60,99,11,59,98,10,57,98,9,55,97,9,53,96,9,51,96,9,49,95,10,47,94,11,45,93,12,42,91,13,40,89,14,38,88,14,36,86,15,34,84,15,32,82,16,30,79]),\n linear_interpolation: false\n},\n{\n name: \"tempo\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(255,246,244) 0%,rgb(255,246,244) 0.390%,rgb(253,245,243) 0.390%,rgb(253,245,243) 0.781%,rgb(252,244,241) 0.781%,rgb(252,244,241) 1.171%,rgb(251,243,240) 1.171%,rgb(251,243,240) 1.562%,rgb(249,242,238) 1.562%,rgb(249,242,238) 1.953%,rgb(248,241,237) 1.953%,rgb(248,241,237) 2.343%,rgb(247,240,235) 2.343%,rgb(247,240,235) 2.734%,rgb(245,239,234) 2.734%,rgb(245,239,234) 3.125%,rgb(244,238,232) 3.125%,rgb(244,238,232) 3.515%,rgb(242,237,231) 3.515%,rgb(242,237,231) 3.906%,rgb(241,236,229) 3.906%,rgb(241,236,229) 4.296%,rgb(240,235,228) 4.296%,rgb(240,235,228) 4.687%,rgb(238,234,226) 4.687%,rgb(238,234,226) 5.078%,rgb(237,234,225) 5.078%,rgb(237,234,225) 5.468%,rgb(235,233,223) 5.468%,rgb(235,233,223) 5.859%,rgb(234,232,222) 5.859%,rgb(234,232,222) 6.25%,rgb(233,231,221) 6.25%,rgb(233,231,221) 6.640%,rgb(231,230,219) 6.640%,rgb(231,230,219) 7.031%,rgb(230,229,218) 7.031%,rgb(230,229,218) 7.421%,rgb(228,228,216) 7.421%,rgb(228,228,216) 7.812%,rgb(227,227,215) 7.812%,rgb(227,227,215) 8.203%,rgb(226,226,214) 8.203%,rgb(226,226,214) 8.593%,rgb(224,226,212) 8.593%,rgb(224,226,212) 8.984%,rgb(223,225,211) 8.984%,rgb(223,225,211) 9.375%,rgb(221,224,209) 9.375%,rgb(221,224,209) 9.765%,rgb(220,223,208) 9.765%,rgb(220,223,208) 10.15%,rgb(219,222,207) 10.15%,rgb(219,222,207) 10.54%,rgb(217,221,205) 10.54%,rgb(217,221,205) 10.93%,rgb(216,221,204) 10.93%,rgb(216,221,204) 11.32%,rgb(214,220,203) 11.32%,rgb(214,220,203) 11.71%,rgb(213,219,201) 11.71%,rgb(213,219,201) 12.10%,rgb(211,218,200) 12.10%,rgb(211,218,200) 12.5%,rgb(210,217,199) 12.5%,rgb(210,217,199) 12.89%,rgb(209,216,197) 12.89%,rgb(209,216,197) 13.28%,rgb(207,216,196) 13.28%,rgb(207,216,196) 13.67%,rgb(206,215,195) 13.67%,rgb(206,215,195) 14.06%,rgb(204,214,193) 14.06%,rgb(204,214,193) 14.45%,rgb(203,213,192) 14.45%,rgb(203,213,192) 14.84%,rgb(201,212,191) 14.84%,rgb(201,212,191) 15.23%,rgb(200,212,190) 15.23%,rgb(200,212,190) 15.62%,rgb(198,211,188) 15.62%,rgb(198,211,188) 16.01%,rgb(197,210,187) 16.01%,rgb(197,210,187) 16.40%,rgb(195,209,186) 16.40%,rgb(195,209,186) 16.79%,rgb(194,209,185) 16.79%,rgb(194,209,185) 17.18%,rgb(192,208,183) 17.18%,rgb(192,208,183) 17.57%,rgb(191,207,182) 17.57%,rgb(191,207,182) 17.96%,rgb(189,206,181) 17.96%,rgb(189,206,181) 18.35%,rgb(188,206,180) 18.35%,rgb(188,206,180) 18.75%,rgb(186,205,179) 18.75%,rgb(186,205,179) 19.14%,rgb(185,204,178) 19.14%,rgb(185,204,178) 19.53%,rgb(183,203,176) 19.53%,rgb(183,203,176) 19.92%,rgb(182,203,175) 19.92%,rgb(182,203,175) 20.31%,rgb(180,202,174) 20.31%,rgb(180,202,174) 20.70%,rgb(179,201,173) 20.70%,rgb(179,201,173) 21.09%,rgb(177,200,172) 21.09%,rgb(177,200,172) 21.48%,rgb(176,200,171) 21.48%,rgb(176,200,171) 21.87%,rgb(174,199,170) 21.87%,rgb(174,199,170) 22.26%,rgb(172,198,169) 22.26%,rgb(172,198,169) 22.65%,rgb(171,197,168) 22.65%,rgb(171,197,168) 23.04%,rgb(169,197,166) 23.04%,rgb(169,197,166) 23.43%,rgb(168,196,165) 23.43%,rgb(168,196,165) 23.82%,rgb(166,195,164) 23.82%,rgb(166,195,164) 24.21%,rgb(164,195,163) 24.21%,rgb(164,195,163) 24.60%,rgb(163,194,162) 24.60%,rgb(163,194,162) 25%,rgb(161,193,161) 25%,rgb(161,193,161) 25.39%,rgb(160,192,160) 25.39%,rgb(160,192,160) 25.78%,rgb(158,192,159) 25.78%,rgb(158,192,159) 26.17%,rgb(156,191,159) 26.17%,rgb(156,191,159) 26.56%,rgb(155,190,158) 26.56%,rgb(155,190,158) 26.95%,rgb(153,190,157) 26.95%,rgb(153,190,157) 27.34%,rgb(151,189,156) 27.34%,rgb(151,189,156) 27.73%,rgb(150,188,155) 27.73%,rgb(150,188,155) 28.12%,rgb(148,188,154) 28.12%,rgb(148,188,154) 28.51%,rgb(146,187,153) 28.51%,rgb(146,187,153) 28.90%,rgb(145,186,152) 28.90%,rgb(145,186,152) 29.29%,rgb(143,186,151) 29.29%,rgb(143,186,151) 29.68%,rgb(141,185,151) 29.68%,rgb(141,185,151) 30.07%,rgb(139,184,150) 30.07%,rgb(139,184,150) 30.46%,rgb(138,183,149) 30.46%,rgb(138,183,149) 30.85%,rgb(136,183,148) 30.85%,rgb(136,183,148) 31.25%,rgb(134,182,147) 31.25%,rgb(134,182,147) 31.64%,rgb(133,181,147) 31.64%,rgb(133,181,147) 32.03%,rgb(131,181,146) 32.03%,rgb(131,181,146) 32.42%,rgb(129,180,145) 32.42%,rgb(129,180,145) 32.81%,rgb(127,179,144) 32.81%,rgb(127,179,144) 33.20%,rgb(125,179,144) 33.20%,rgb(125,179,144) 33.59%,rgb(124,178,143) 33.59%,rgb(124,178,143) 33.98%,rgb(122,177,142) 33.98%,rgb(122,177,142) 34.37%,rgb(120,177,142) 34.37%,rgb(120,177,142) 34.76%,rgb(118,176,141) 34.76%,rgb(118,176,141) 35.15%,rgb(116,175,141) 35.15%,rgb(116,175,141) 35.54%,rgb(114,175,140) 35.54%,rgb(114,175,140) 35.93%,rgb(113,174,139) 35.93%,rgb(113,174,139) 36.32%,rgb(111,173,139) 36.32%,rgb(111,173,139) 36.71%,rgb(109,173,138) 36.71%,rgb(109,173,138) 37.10%,rgb(107,172,138) 37.10%,rgb(107,172,138) 37.5%,rgb(105,171,137) 37.5%,rgb(105,171,137) 37.89%,rgb(103,171,137) 37.89%,rgb(103,171,137) 38.28%,rgb(101,170,136) 38.28%,rgb(101,170,136) 38.67%,rgb(99,169,136) 38.67%,rgb(99,169,136) 39.06%,rgb(97,169,135) 39.06%,rgb(97,169,135) 39.45%,rgb(95,168,135) 39.45%,rgb(95,168,135) 39.84%,rgb(93,167,134) 39.84%,rgb(93,167,134) 40.23%,rgb(91,166,134) 40.23%,rgb(91,166,134) 40.62%,rgb(89,166,133) 40.62%,rgb(89,166,133) 41.01%,rgb(87,165,133) 41.01%,rgb(87,165,133) 41.40%,rgb(86,164,133) 41.40%,rgb(86,164,133) 41.79%,rgb(84,164,132) 41.79%,rgb(84,164,132) 42.18%,rgb(82,163,132) 42.18%,rgb(82,163,132) 42.57%,rgb(80,162,132) 42.57%,rgb(80,162,132) 42.96%,rgb(78,161,131) 42.96%,rgb(78,161,131) 43.35%,rgb(75,161,131) 43.35%,rgb(75,161,131) 43.75%,rgb(73,160,131) 43.75%,rgb(73,160,131) 44.14%,rgb(71,159,130) 44.14%,rgb(71,159,130) 44.53%,rgb(69,159,130) 44.53%,rgb(69,159,130) 44.92%,rgb(67,158,130) 44.92%,rgb(67,158,130) 45.31%,rgb(65,157,130) 45.31%,rgb(65,157,130) 45.70%,rgb(63,156,129) 45.70%,rgb(63,156,129) 46.09%,rgb(61,156,129) 46.09%,rgb(61,156,129) 46.48%,rgb(59,155,129) 46.48%,rgb(59,155,129) 46.87%,rgb(58,154,129) 46.87%,rgb(58,154,129) 47.26%,rgb(56,153,129) 47.26%,rgb(56,153,129) 47.65%,rgb(54,152,128) 47.65%,rgb(54,152,128) 48.04%,rgb(52,152,128) 48.04%,rgb(52,152,128) 48.43%,rgb(50,151,128) 48.43%,rgb(50,151,128) 48.82%,rgb(48,150,128) 48.82%,rgb(48,150,128) 49.21%,rgb(46,149,128) 49.21%,rgb(46,149,128) 49.60%,rgb(44,148,127) 49.60%,rgb(44,148,127) 50%,rgb(42,147,127) 50%,rgb(42,147,127) 50.39%,rgb(41,147,127) 50.39%,rgb(41,147,127) 50.78%,rgb(39,146,127) 50.78%,rgb(39,146,127) 51.17%,rgb(37,145,127) 51.17%,rgb(37,145,127) 51.56%,rgb(36,144,127) 51.56%,rgb(36,144,127) 51.95%,rgb(34,143,126) 51.95%,rgb(34,143,126) 52.34%,rgb(33,142,126) 52.34%,rgb(33,142,126) 52.73%,rgb(31,141,126) 52.73%,rgb(31,141,126) 53.12%,rgb(30,141,126) 53.12%,rgb(30,141,126) 53.51%,rgb(28,140,126) 53.51%,rgb(28,140,126) 53.90%,rgb(27,139,125) 53.90%,rgb(27,139,125) 54.29%,rgb(26,138,125) 54.29%,rgb(26,138,125) 54.68%,rgb(25,137,125) 54.68%,rgb(25,137,125) 55.07%,rgb(23,136,125) 55.07%,rgb(23,136,125) 55.46%,rgb(22,135,124) 55.46%,rgb(22,135,124) 55.85%,rgb(22,134,124) 55.85%,rgb(22,134,124) 56.25%,rgb(21,133,124) 56.25%,rgb(21,133,124) 56.64%,rgb(20,132,124) 56.64%,rgb(20,132,124) 57.03%,rgb(19,132,123) 57.03%,rgb(19,132,123) 57.42%,rgb(19,131,123) 57.42%,rgb(19,131,123) 57.81%,rgb(18,130,123) 57.81%,rgb(18,130,123) 58.20%,rgb(18,129,123) 58.20%,rgb(18,129,123) 58.59%,rgb(17,128,122) 58.59%,rgb(17,128,122) 58.98%,rgb(17,127,122) 58.98%,rgb(17,127,122) 59.37%,rgb(17,126,122) 59.37%,rgb(17,126,122) 59.76%,rgb(17,125,121) 59.76%,rgb(17,125,121) 60.15%,rgb(17,124,121) 60.15%,rgb(17,124,121) 60.54%,rgb(17,123,121) 60.54%,rgb(17,123,121) 60.93%,rgb(17,122,120) 60.93%,rgb(17,122,120) 61.32%,rgb(17,121,120) 61.32%,rgb(17,121,120) 61.71%,rgb(17,120,120) 61.71%,rgb(17,120,120) 62.10%,rgb(17,119,119) 62.10%,rgb(17,119,119) 62.5%,rgb(17,118,119) 62.5%,rgb(17,118,119) 62.89%,rgb(18,118,118) 62.89%,rgb(18,118,118) 63.28%,rgb(18,117,118) 63.28%,rgb(18,117,118) 63.67%,rgb(18,116,118) 63.67%,rgb(18,116,118) 64.06%,rgb(19,115,117) 64.06%,rgb(19,115,117) 64.45%,rgb(19,114,117) 64.45%,rgb(19,114,117) 64.84%,rgb(19,113,116) 64.84%,rgb(19,113,116) 65.23%,rgb(20,112,116) 65.23%,rgb(20,112,116) 65.62%,rgb(20,111,115) 65.62%,rgb(20,111,115) 66.01%,rgb(20,110,115) 66.01%,rgb(20,110,115) 66.40%,rgb(21,109,115) 66.40%,rgb(21,109,115) 66.79%,rgb(21,108,114) 66.79%,rgb(21,108,114) 67.18%,rgb(22,107,114) 67.18%,rgb(22,107,114) 67.57%,rgb(22,106,113) 67.57%,rgb(22,106,113) 67.96%,rgb(22,105,113) 67.96%,rgb(22,105,113) 68.35%,rgb(23,104,112) 68.35%,rgb(23,104,112) 68.75%,rgb(23,103,112) 68.75%,rgb(23,103,112) 69.14%,rgb(23,102,111) 69.14%,rgb(23,102,111) 69.53%,rgb(24,101,111) 69.53%,rgb(24,101,111) 69.92%,rgb(24,101,110) 69.92%,rgb(24,101,110) 70.31%,rgb(24,100,110) 70.31%,rgb(24,100,110) 70.70%,rgb(25,99,109) 70.70%,rgb(25,99,109) 71.09%,rgb(25,98,109) 71.09%,rgb(25,98,109) 71.48%,rgb(25,97,108) 71.48%,rgb(25,97,108) 71.87%,rgb(25,96,108) 71.87%,rgb(25,96,108) 72.26%,rgb(26,95,107) 72.26%,rgb(26,95,107) 72.65%,rgb(26,94,107) 72.65%,rgb(26,94,107) 73.04%,rgb(26,93,106) 73.04%,rgb(26,93,106) 73.43%,rgb(26,92,106) 73.43%,rgb(26,92,106) 73.82%,rgb(26,91,105) 73.82%,rgb(26,91,105) 74.21%,rgb(27,90,104) 74.21%,rgb(27,90,104) 74.60%,rgb(27,89,104) 74.60%,rgb(27,89,104) 75%,rgb(27,88,103) 75%,rgb(27,88,103) 75.39%,rgb(27,88,103) 75.39%,rgb(27,88,103) 75.78%,rgb(27,87,102) 75.78%,rgb(27,87,102) 76.17%,rgb(27,86,102) 76.17%,rgb(27,86,102) 76.56%,rgb(28,85,101) 76.56%,rgb(28,85,101) 76.95%,rgb(28,84,101) 76.95%,rgb(28,84,101) 77.34%,rgb(28,83,100) 77.34%,rgb(28,83,100) 77.73%,rgb(28,82,99) 77.73%,rgb(28,82,99) 78.12%,rgb(28,81,99) 78.12%,rgb(28,81,99) 78.51%,rgb(28,80,98) 78.51%,rgb(28,80,98) 78.90%,rgb(28,79,98) 78.90%,rgb(28,79,98) 79.29%,rgb(28,78,97) 79.29%,rgb(28,78,97) 79.68%,rgb(28,77,97) 79.68%,rgb(28,77,97) 80.07%,rgb(28,76,96) 80.07%,rgb(28,76,96) 80.46%,rgb(28,76,95) 80.46%,rgb(28,76,95) 80.85%,rgb(28,75,95) 80.85%,rgb(28,75,95) 81.25%,rgb(28,74,94) 81.25%,rgb(28,74,94) 81.64%,rgb(28,73,94) 81.64%,rgb(28,73,94) 82.03%,rgb(28,72,93) 82.03%,rgb(28,72,93) 82.42%,rgb(28,71,93) 82.42%,rgb(28,71,93) 82.81%,rgb(28,70,92) 82.81%,rgb(28,70,92) 83.20%,rgb(28,69,91) 83.20%,rgb(28,69,91) 83.59%,rgb(28,68,91) 83.59%,rgb(28,68,91) 83.98%,rgb(28,67,90) 83.98%,rgb(28,67,90) 84.37%,rgb(28,66,90) 84.37%,rgb(28,66,90) 84.76%,rgb(28,66,89) 84.76%,rgb(28,66,89) 85.15%,rgb(28,65,88) 85.15%,rgb(28,65,88) 85.54%,rgb(28,64,88) 85.54%,rgb(28,64,88) 85.93%,rgb(27,63,87) 85.93%,rgb(27,63,87) 86.32%,rgb(27,62,87) 86.32%,rgb(27,62,87) 86.71%,rgb(27,61,86) 86.71%,rgb(27,61,86) 87.10%,rgb(27,60,86) 87.10%,rgb(27,60,86) 87.5%,rgb(27,59,85) 87.5%,rgb(27,59,85) 87.89%,rgb(27,58,84) 87.89%,rgb(27,58,84) 88.28%,rgb(27,57,84) 88.28%,rgb(27,57,84) 88.67%,rgb(27,56,83) 88.67%,rgb(27,56,83) 89.06%,rgb(26,55,83) 89.06%,rgb(26,55,83) 89.45%,rgb(26,54,82) 89.45%,rgb(26,54,82) 89.84%,rgb(26,54,81) 89.84%,rgb(26,54,81) 90.23%,rgb(26,53,81) 90.23%,rgb(26,53,81) 90.62%,rgb(26,52,80) 90.62%,rgb(26,52,80) 91.01%,rgb(26,51,80) 91.01%,rgb(26,51,80) 91.40%,rgb(25,50,79) 91.40%,rgb(25,50,79) 91.79%,rgb(25,49,79) 91.79%,rgb(25,49,79) 92.18%,rgb(25,48,78) 92.18%,rgb(25,48,78) 92.57%,rgb(25,47,77) 92.57%,rgb(25,47,77) 92.96%,rgb(25,46,77) 92.96%,rgb(25,46,77) 93.35%,rgb(24,45,76) 93.35%,rgb(24,45,76) 93.75%,rgb(24,44,76) 93.75%,rgb(24,44,76) 94.14%,rgb(24,43,75) 94.14%,rgb(24,43,75) 94.53%,rgb(24,42,75) 94.53%,rgb(24,42,75) 94.92%,rgb(24,41,74) 94.92%,rgb(24,41,74) 95.31%,rgb(23,40,74) 95.31%,rgb(23,40,74) 95.70%,rgb(23,39,73) 95.70%,rgb(23,39,73) 96.09%,rgb(23,38,72) 96.09%,rgb(23,38,72) 96.48%,rgb(23,37,72) 96.48%,rgb(23,37,72) 96.87%,rgb(23,36,71) 96.87%,rgb(23,36,71) 97.26%,rgb(22,35,71) 97.26%,rgb(22,35,71) 97.65%,rgb(22,34,70) 97.65%,rgb(22,34,70) 98.04%,rgb(22,33,70) 98.04%,rgb(22,33,70) 98.43%,rgb(22,32,69) 98.43%,rgb(22,32,69) 98.82%,rgb(21,31,69) 98.82%,rgb(21,31,69) 99.21%,rgb(21,30,68) 99.21%,rgb(21,30,68) 99.60%,rgb(21,29,68) 99.60%,rgb(21,29,68) 100%\",\n tex_buffer: new Uint8Array([255,246,244,253,245,243,252,244,241,251,243,240,249,242,238,248,241,237,247,240,235,245,239,234,244,238,232,242,237,231,241,236,229,240,235,228,238,234,226,237,234,225,235,233,223,234,232,222,233,231,221,231,230,219,230,229,218,228,228,216,227,227,215,226,226,214,224,226,212,223,225,211,221,224,209,220,223,208,219,222,207,217,221,205,216,221,204,214,220,203,213,219,201,211,218,200,210,217,199,209,216,197,207,216,196,206,215,195,204,214,193,203,213,192,201,212,191,200,212,190,198,211,188,197,210,187,195,209,186,194,209,185,192,208,183,191,207,182,189,206,181,188,206,180,186,205,179,185,204,178,183,203,176,182,203,175,180,202,174,179,201,173,177,200,172,176,200,171,174,199,170,172,198,169,171,197,168,169,197,166,168,196,165,166,195,164,164,195,163,163,194,162,161,193,161,160,192,160,158,192,159,156,191,159,155,190,158,153,190,157,151,189,156,150,188,155,148,188,154,146,187,153,145,186,152,143,186,151,141,185,151,139,184,150,138,183,149,136,183,148,134,182,147,133,181,147,131,181,146,129,180,145,127,179,144,125,179,144,124,178,143,122,177,142,120,177,142,118,176,141,116,175,141,114,175,140,113,174,139,111,173,139,109,173,138,107,172,138,105,171,137,103,171,137,101,170,136,99,169,136,97,169,135,95,168,135,93,167,134,91,166,134,89,166,133,87,165,133,86,164,133,84,164,132,82,163,132,80,162,132,78,161,131,75,161,131,73,160,131,71,159,130,69,159,130,67,158,130,65,157,130,63,156,129,61,156,129,59,155,129,58,154,129,56,153,129,54,152,128,52,152,128,50,151,128,48,150,128,46,149,128,44,148,127,42,147,127,41,147,127,39,146,127,37,145,127,36,144,127,34,143,126,33,142,126,31,141,126,30,141,126,28,140,126,27,139,125,26,138,125,25,137,125,23,136,125,22,135,124,22,134,124,21,133,124,20,132,124,19,132,123,19,131,123,18,130,123,18,129,123,17,128,122,17,127,122,17,126,122,17,125,121,17,124,121,17,123,121,17,122,120,17,121,120,17,120,120,17,119,119,17,118,119,18,118,118,18,117,118,18,116,118,19,115,117,19,114,117,19,113,116,20,112,116,20,111,115,20,110,115,21,109,115,21,108,114,22,107,114,22,106,113,22,105,113,23,104,112,23,103,112,23,102,111,24,101,111,24,101,110,24,100,110,25,99,109,25,98,109,25,97,108,25,96,108,26,95,107,26,94,107,26,93,106,26,92,106,26,91,105,27,90,104,27,89,104,27,88,103,27,88,103,27,87,102,27,86,102,28,85,101,28,84,101,28,83,100,28,82,99,28,81,99,28,80,98,28,79,98,28,78,97,28,77,97,28,76,96,28,76,95,28,75,95,28,74,94,28,73,94,28,72,93,28,71,93,28,70,92,28,69,91,28,68,91,28,67,90,28,66,90,28,66,89,28,65,88,28,64,88,27,63,87,27,62,87,27,61,86,27,60,86,27,59,85,27,58,84,27,57,84,27,56,83,26,55,83,26,54,82,26,54,81,26,53,81,26,52,80,26,51,80,25,50,79,25,49,79,25,48,78,25,47,77,25,46,77,24,45,76,24,44,76,24,43,75,24,42,75,24,41,74,23,40,74,23,39,73,23,38,72,23,37,72,23,36,71,22,35,71,22,34,70,22,33,70,22,32,69,21,31,69,21,30,68,21,29,68]),\n linear_interpolation: false\n},\n{\n name: \"terrain\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(51,51,153) 0%,rgb(49,53,155) 0.781%,rgb(46,59,161) 1.562%,rgb(44,64,166) 2.343%,rgb(41,69,171) 3.125%,rgb(38,75,177) 3.906%,rgb(36,80,182) 4.687%,rgb(33,85,187) 5.468%,rgb(30,91,193) 6.25%,rgb(28,96,198) 7.031%,rgb(25,101,203) 7.812%,rgb(22,107,209) 8.593%,rgb(20,112,214) 9.375%,rgb(17,117,219) 10.15%,rgb(14,123,225) 10.93%,rgb(12,128,230) 11.71%,rgb(9,133,235) 12.5%,rgb(6,139,241) 13.28%,rgb(4,144,246) 14.06%,rgb(1,150,252) 14.84%,rgb(0,154,249) 15.62%,rgb(0,158,237) 16.40%,rgb(0,162,225) 17.18%,rgb(0,166,213) 17.96%,rgb(0,170,201) 18.75%,rgb(0,174,189) 19.53%,rgb(0,178,177) 20.31%,rgb(0,182,165) 21.09%,rgb(0,186,153) 21.87%,rgb(0,190,141) 22.65%,rgb(0,194,129) 23.43%,rgb(0,198,117) 24.21%,rgb(0,202,105) 25%,rgb(6,205,103) 25.78%,rgb(14,206,104) 26.56%,rgb(22,208,106) 27.34%,rgb(30,210,108) 28.12%,rgb(38,211,109) 28.90%,rgb(46,213,111) 29.68%,rgb(54,214,112) 30.46%,rgb(62,216,114) 31.25%,rgb(70,218,116) 32.03%,rgb(78,219,117) 32.81%,rgb(86,221,119) 33.59%,rgb(94,222,120) 34.37%,rgb(102,224,122) 35.15%,rgb(110,226,124) 35.93%,rgb(118,227,125) 36.71%,rgb(126,229,127) 37.5%,rgb(134,230,128) 38.28%,rgb(142,232,130) 39.06%,rgb(150,234,132) 39.84%,rgb(158,235,133) 40.62%,rgb(166,237,135) 41.40%,rgb(174,238,136) 42.18%,rgb(182,240,138) 42.96%,rgb(190,242,140) 43.75%,rgb(198,243,141) 44.53%,rgb(206,245,143) 45.31%,rgb(214,246,144) 46.09%,rgb(222,248,146) 46.87%,rgb(230,250,148) 47.65%,rgb(238,251,149) 48.43%,rgb(246,253,151) 49.21%,rgb(255,255,153) 50%,rgb(250,249,150) 50.78%,rgb(246,244,148) 51.56%,rgb(242,239,146) 52.34%,rgb(238,234,144) 53.12%,rgb(234,229,142) 53.90%,rgb(230,224,139) 54.68%,rgb(226,219,137) 55.46%,rgb(222,213,135) 56.25%,rgb(218,208,133) 57.03%,rgb(214,203,131) 57.81%,rgb(210,198,129) 58.59%,rgb(206,193,126) 59.37%,rgb(202,188,124) 60.15%,rgb(198,183,122) 60.93%,rgb(194,177,120) 61.71%,rgb(190,172,118) 62.5%,rgb(186,167,116) 63.28%,rgb(182,162,113) 64.06%,rgb(178,157,111) 64.84%,rgb(174,152,109) 65.62%,rgb(170,147,107) 66.40%,rgb(166,141,105) 67.18%,rgb(162,136,103) 67.96%,rgb(158,131,100) 68.75%,rgb(154,126,98) 69.53%,rgb(150,121,96) 70.31%,rgb(146,116,94) 71.09%,rgb(142,111,92) 71.87%,rgb(138,105,90) 72.65%,rgb(134,100,87) 73.43%,rgb(130,95,85) 74.21%,rgb(128,93,85) 75%,rgb(132,98,90) 75.78%,rgb(136,103,96) 76.56%,rgb(140,108,101) 77.34%,rgb(144,113,107) 78.12%,rgb(148,118,112) 78.90%,rgb(152,123,117) 79.68%,rgb(156,129,123) 80.46%,rgb(160,134,128) 81.25%,rgb(164,139,133) 82.03%,rgb(168,144,139) 82.81%,rgb(172,149,144) 83.59%,rgb(176,154,150) 84.37%,rgb(180,159,155) 85.15%,rgb(184,165,160) 85.93%,rgb(188,170,166) 86.71%,rgb(192,175,171) 87.5%,rgb(196,180,176) 88.28%,rgb(200,185,182) 89.06%,rgb(204,190,187) 89.84%,rgb(208,195,193) 90.62%,rgb(212,201,198) 91.40%,rgb(216,206,203) 92.18%,rgb(220,211,209) 92.96%,rgb(224,216,214) 93.75%,rgb(228,221,220) 94.53%,rgb(232,226,225) 95.31%,rgb(236,231,230) 96.09%,rgb(240,237,236) 96.87%,rgb(244,242,241) 97.65%,rgb(248,247,246) 98.43%,rgb(252,252,252) 99.21%,rgb(255,255,255) 100%\",\n tex_buffer: new Uint8Array([51,51,153,49,53,155,46,59,161,44,64,166,41,69,171,38,75,177,36,80,182,33,85,187,30,91,193,28,96,198,25,101,203,22,107,209,20,112,214,17,117,219,14,123,225,12,128,230,9,133,235,6,139,241,4,144,246,1,150,252,0,154,249,0,158,237,0,162,225,0,166,213,0,170,201,0,174,189,0,178,177,0,182,165,0,186,153,0,190,141,0,194,129,0,198,117,0,202,105,6,205,103,14,206,104,22,208,106,30,210,108,38,211,109,46,213,111,54,214,112,62,216,114,70,218,116,78,219,117,86,221,119,94,222,120,102,224,122,110,226,124,118,227,125,126,229,127,134,230,128,142,232,130,150,234,132,158,235,133,166,237,135,174,238,136,182,240,138,190,242,140,198,243,141,206,245,143,214,246,144,222,248,146,230,250,148,238,251,149,246,253,151,255,255,153,250,249,150,246,244,148,242,239,146,238,234,144,234,229,142,230,224,139,226,219,137,222,213,135,218,208,133,214,203,131,210,198,129,206,193,126,202,188,124,198,183,122,194,177,120,190,172,118,186,167,116,182,162,113,178,157,111,174,152,109,170,147,107,166,141,105,162,136,103,158,131,100,154,126,98,150,121,96,146,116,94,142,111,92,138,105,90,134,100,87,130,95,85,128,93,85,132,98,90,136,103,96,140,108,101,144,113,107,148,118,112,152,123,117,156,129,123,160,134,128,164,139,133,168,144,139,172,149,144,176,154,150,180,159,155,184,165,160,188,170,166,192,175,171,196,180,176,200,185,182,204,190,187,208,195,193,212,201,198,216,206,203,220,211,209,224,216,214,228,221,220,232,226,225,236,231,230,240,237,236,244,242,241,248,247,246,252,252,252,255,255,255]),\n linear_interpolation: true\n},\n{\n name: \"thermal\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(4,35,51) 0%,rgb(4,35,51) 0.390%,rgb(4,36,53) 0.390%,rgb(4,36,53) 0.781%,rgb(4,37,55) 0.781%,rgb(4,37,55) 1.171%,rgb(4,37,57) 1.171%,rgb(4,37,57) 1.562%,rgb(5,38,59) 1.562%,rgb(5,38,59) 1.953%,rgb(5,39,61) 1.953%,rgb(5,39,61) 2.343%,rgb(5,39,63) 2.343%,rgb(5,39,63) 2.734%,rgb(5,40,65) 2.734%,rgb(5,40,65) 3.125%,rgb(5,41,67) 3.125%,rgb(5,41,67) 3.515%,rgb(6,41,69) 3.515%,rgb(6,41,69) 3.906%,rgb(6,42,71) 3.906%,rgb(6,42,71) 4.296%,rgb(6,43,73) 4.296%,rgb(6,43,73) 4.687%,rgb(7,43,75) 4.687%,rgb(7,43,75) 5.078%,rgb(7,44,77) 5.078%,rgb(7,44,77) 5.468%,rgb(7,44,80) 5.468%,rgb(7,44,80) 5.859%,rgb(8,45,82) 5.859%,rgb(8,45,82) 6.25%,rgb(8,46,84) 6.25%,rgb(8,46,84) 6.640%,rgb(9,46,86) 6.640%,rgb(9,46,86) 7.031%,rgb(9,47,89) 7.031%,rgb(9,47,89) 7.421%,rgb(10,47,91) 7.421%,rgb(10,47,91) 7.812%,rgb(11,48,93) 7.812%,rgb(11,48,93) 8.203%,rgb(12,48,96) 8.203%,rgb(12,48,96) 8.593%,rgb(12,48,98) 8.593%,rgb(12,48,98) 8.984%,rgb(13,49,101) 8.984%,rgb(13,49,101) 9.375%,rgb(14,49,103) 9.375%,rgb(14,49,103) 9.765%,rgb(15,50,106) 9.765%,rgb(15,50,106) 10.15%,rgb(16,50,108) 10.15%,rgb(16,50,108) 10.54%,rgb(18,50,111) 10.54%,rgb(18,50,111) 10.93%,rgb(19,51,114) 10.93%,rgb(19,51,114) 11.32%,rgb(20,51,116) 11.32%,rgb(20,51,116) 11.71%,rgb(22,51,119) 11.71%,rgb(22,51,119) 12.10%,rgb(23,51,122) 12.10%,rgb(23,51,122) 12.5%,rgb(25,51,124) 12.5%,rgb(25,51,124) 12.89%,rgb(26,52,127) 12.89%,rgb(26,52,127) 13.28%,rgb(28,52,130) 13.28%,rgb(28,52,130) 13.67%,rgb(30,52,132) 13.67%,rgb(30,52,132) 14.06%,rgb(31,52,135) 14.06%,rgb(31,52,135) 14.45%,rgb(33,52,138) 14.45%,rgb(33,52,138) 14.84%,rgb(35,52,140) 14.84%,rgb(35,52,140) 15.23%,rgb(37,52,143) 15.23%,rgb(37,52,143) 15.62%,rgb(39,52,145) 15.62%,rgb(39,52,145) 16.01%,rgb(42,51,147) 16.01%,rgb(42,51,147) 16.40%,rgb(44,51,149) 16.40%,rgb(44,51,149) 16.79%,rgb(46,51,151) 16.79%,rgb(46,51,151) 17.18%,rgb(48,51,153) 17.18%,rgb(48,51,153) 17.57%,rgb(51,51,155) 17.57%,rgb(51,51,155) 17.96%,rgb(53,51,156) 17.96%,rgb(53,51,156) 18.35%,rgb(55,51,157) 18.35%,rgb(55,51,157) 18.75%,rgb(57,51,158) 18.75%,rgb(57,51,158) 19.14%,rgb(60,51,159) 19.14%,rgb(60,51,159) 19.53%,rgb(62,52,159) 19.53%,rgb(62,52,159) 19.92%,rgb(64,52,159) 19.92%,rgb(64,52,159) 20.31%,rgb(66,52,160) 20.31%,rgb(66,52,160) 20.70%,rgb(68,53,160) 20.70%,rgb(68,53,160) 21.09%,rgb(70,53,160) 21.09%,rgb(70,53,160) 21.48%,rgb(71,54,160) 21.48%,rgb(71,54,160) 21.87%,rgb(73,54,159) 21.87%,rgb(73,54,159) 22.26%,rgb(75,55,159) 22.26%,rgb(75,55,159) 22.65%,rgb(77,55,159) 22.65%,rgb(77,55,159) 23.04%,rgb(78,56,158) 23.04%,rgb(78,56,158) 23.43%,rgb(80,57,158) 23.43%,rgb(80,57,158) 23.82%,rgb(82,57,157) 23.82%,rgb(82,57,157) 24.21%,rgb(83,58,157) 24.21%,rgb(83,58,157) 24.60%,rgb(85,59,157) 24.60%,rgb(85,59,157) 25%,rgb(86,59,156) 25%,rgb(86,59,156) 25.39%,rgb(88,60,156) 25.39%,rgb(88,60,156) 25.78%,rgb(89,61,155) 25.78%,rgb(89,61,155) 26.17%,rgb(91,61,155) 26.17%,rgb(91,61,155) 26.56%,rgb(92,62,154) 26.56%,rgb(92,62,154) 26.95%,rgb(94,63,154) 26.95%,rgb(94,63,154) 27.34%,rgb(95,63,153) 27.34%,rgb(95,63,153) 27.73%,rgb(96,64,153) 27.73%,rgb(96,64,153) 28.12%,rgb(98,65,152) 28.12%,rgb(98,65,152) 28.51%,rgb(99,65,152) 28.51%,rgb(99,65,152) 28.90%,rgb(101,66,151) 28.90%,rgb(101,66,151) 29.29%,rgb(102,67,151) 29.29%,rgb(102,67,151) 29.68%,rgb(103,67,150) 29.68%,rgb(103,67,150) 30.07%,rgb(105,68,150) 30.07%,rgb(105,68,150) 30.46%,rgb(106,69,149) 30.46%,rgb(106,69,149) 30.85%,rgb(108,69,149) 30.85%,rgb(108,69,149) 31.25%,rgb(109,70,148) 31.25%,rgb(109,70,148) 31.64%,rgb(110,71,148) 31.64%,rgb(110,71,148) 32.03%,rgb(112,71,148) 32.03%,rgb(112,71,148) 32.42%,rgb(113,72,147) 32.42%,rgb(113,72,147) 32.81%,rgb(114,72,147) 32.81%,rgb(114,72,147) 33.20%,rgb(116,73,146) 33.20%,rgb(116,73,146) 33.59%,rgb(117,74,146) 33.59%,rgb(117,74,146) 33.98%,rgb(118,74,146) 33.98%,rgb(118,74,146) 34.37%,rgb(120,75,145) 34.37%,rgb(120,75,145) 34.76%,rgb(121,75,145) 34.76%,rgb(121,75,145) 35.15%,rgb(122,76,145) 35.15%,rgb(122,76,145) 35.54%,rgb(124,77,144) 35.54%,rgb(124,77,144) 35.93%,rgb(125,77,144) 35.93%,rgb(125,77,144) 36.32%,rgb(126,78,144) 36.32%,rgb(126,78,144) 36.71%,rgb(128,78,143) 36.71%,rgb(128,78,143) 37.10%,rgb(129,79,143) 37.10%,rgb(129,79,143) 37.5%,rgb(131,80,143) 37.5%,rgb(131,80,143) 37.89%,rgb(132,80,142) 37.89%,rgb(132,80,142) 38.28%,rgb(133,81,142) 38.28%,rgb(133,81,142) 38.67%,rgb(135,81,142) 38.67%,rgb(135,81,142) 39.06%,rgb(136,82,141) 39.06%,rgb(136,82,141) 39.45%,rgb(137,82,141) 39.45%,rgb(137,82,141) 39.84%,rgb(139,83,141) 39.84%,rgb(139,83,141) 40.23%,rgb(140,83,140) 40.23%,rgb(140,83,140) 40.62%,rgb(142,84,140) 40.62%,rgb(142,84,140) 41.01%,rgb(143,84,140) 41.01%,rgb(143,84,140) 41.40%,rgb(144,85,139) 41.40%,rgb(144,85,139) 41.79%,rgb(146,85,139) 41.79%,rgb(146,85,139) 42.18%,rgb(147,86,139) 42.18%,rgb(147,86,139) 42.57%,rgb(149,86,138) 42.57%,rgb(149,86,138) 42.96%,rgb(150,87,138) 42.96%,rgb(150,87,138) 43.35%,rgb(151,87,138) 43.35%,rgb(151,87,138) 43.75%,rgb(153,88,137) 43.75%,rgb(153,88,137) 44.14%,rgb(154,88,137) 44.14%,rgb(154,88,137) 44.53%,rgb(156,89,137) 44.53%,rgb(156,89,137) 44.92%,rgb(157,89,136) 44.92%,rgb(157,89,136) 45.31%,rgb(159,90,136) 45.31%,rgb(159,90,136) 45.70%,rgb(160,90,135) 45.70%,rgb(160,90,135) 46.09%,rgb(162,91,135) 46.09%,rgb(162,91,135) 46.48%,rgb(163,91,134) 46.48%,rgb(163,91,134) 46.87%,rgb(165,92,134) 46.87%,rgb(165,92,134) 47.26%,rgb(166,92,134) 47.26%,rgb(166,92,134) 47.65%,rgb(168,93,133) 47.65%,rgb(168,93,133) 48.04%,rgb(169,93,132) 48.04%,rgb(169,93,132) 48.43%,rgb(171,93,132) 48.43%,rgb(171,93,132) 48.82%,rgb(172,94,131) 48.82%,rgb(172,94,131) 49.21%,rgb(174,94,131) 49.21%,rgb(174,94,131) 49.60%,rgb(175,95,130) 49.60%,rgb(175,95,130) 50%,rgb(177,95,130) 50%,rgb(177,95,130) 50.39%,rgb(178,96,129) 50.39%,rgb(178,96,129) 50.78%,rgb(180,96,128) 50.78%,rgb(180,96,128) 51.17%,rgb(181,97,128) 51.17%,rgb(181,97,128) 51.56%,rgb(183,97,127) 51.56%,rgb(183,97,127) 51.95%,rgb(184,98,126) 51.95%,rgb(184,98,126) 52.34%,rgb(186,98,126) 52.34%,rgb(186,98,126) 52.73%,rgb(187,98,125) 52.73%,rgb(187,98,125) 53.12%,rgb(189,99,124) 53.12%,rgb(189,99,124) 53.51%,rgb(190,99,123) 53.51%,rgb(190,99,123) 53.90%,rgb(192,100,123) 53.90%,rgb(192,100,123) 54.29%,rgb(193,100,122) 54.29%,rgb(193,100,122) 54.68%,rgb(195,101,121) 54.68%,rgb(195,101,121) 55.07%,rgb(196,101,120) 55.07%,rgb(196,101,120) 55.46%,rgb(198,102,119) 55.46%,rgb(198,102,119) 55.85%,rgb(199,102,118) 55.85%,rgb(199,102,118) 56.25%,rgb(201,103,117) 56.25%,rgb(201,103,117) 56.64%,rgb(202,103,116) 56.64%,rgb(202,103,116) 57.03%,rgb(204,104,115) 57.03%,rgb(204,104,115) 57.42%,rgb(205,104,114) 57.42%,rgb(205,104,114) 57.81%,rgb(206,105,113) 57.81%,rgb(206,105,113) 58.20%,rgb(208,105,112) 58.20%,rgb(208,105,112) 58.59%,rgb(209,106,111) 58.59%,rgb(209,106,111) 58.98%,rgb(211,106,110) 58.98%,rgb(211,106,110) 59.37%,rgb(212,107,109) 59.37%,rgb(212,107,109) 59.76%,rgb(214,108,108) 59.76%,rgb(214,108,108) 60.15%,rgb(215,108,107) 60.15%,rgb(215,108,107) 60.54%,rgb(216,109,106) 60.54%,rgb(216,109,106) 60.93%,rgb(218,110,105) 60.93%,rgb(218,110,105) 61.32%,rgb(219,110,104) 61.32%,rgb(219,110,104) 61.71%,rgb(220,111,102) 61.71%,rgb(220,111,102) 62.10%,rgb(222,112,101) 62.10%,rgb(222,112,101) 62.5%,rgb(223,112,100) 62.5%,rgb(223,112,100) 62.89%,rgb(224,113,99) 62.89%,rgb(224,113,99) 63.28%,rgb(225,114,98) 63.28%,rgb(225,114,98) 63.67%,rgb(227,114,96) 63.67%,rgb(227,114,96) 64.06%,rgb(228,115,95) 64.06%,rgb(228,115,95) 64.45%,rgb(229,116,94) 64.45%,rgb(229,116,94) 64.84%,rgb(230,117,93) 64.84%,rgb(230,117,93) 65.23%,rgb(231,118,91) 65.23%,rgb(231,118,91) 65.62%,rgb(232,119,90) 65.62%,rgb(232,119,90) 66.01%,rgb(234,120,89) 66.01%,rgb(234,120,89) 66.40%,rgb(235,121,88) 66.40%,rgb(235,121,88) 66.79%,rgb(236,121,86) 66.79%,rgb(236,121,86) 67.18%,rgb(237,122,85) 67.18%,rgb(237,122,85) 67.57%,rgb(238,123,84) 67.57%,rgb(238,123,84) 67.96%,rgb(238,125,83) 67.96%,rgb(238,125,83) 68.35%,rgb(239,126,82) 68.35%,rgb(239,126,82) 68.75%,rgb(240,127,80) 68.75%,rgb(240,127,80) 69.14%,rgb(241,128,79) 69.14%,rgb(241,128,79) 69.53%,rgb(242,129,78) 69.53%,rgb(242,129,78) 69.92%,rgb(243,130,77) 69.92%,rgb(243,130,77) 70.31%,rgb(243,131,76) 70.31%,rgb(243,131,76) 70.70%,rgb(244,133,75) 70.70%,rgb(244,133,75) 71.09%,rgb(245,134,74) 71.09%,rgb(245,134,74) 71.48%,rgb(245,135,73) 71.48%,rgb(245,135,73) 71.87%,rgb(246,136,72) 71.87%,rgb(246,136,72) 72.26%,rgb(246,138,71) 72.26%,rgb(246,138,71) 72.65%,rgb(247,139,70) 72.65%,rgb(247,139,70) 73.04%,rgb(247,140,69) 73.04%,rgb(247,140,69) 73.43%,rgb(248,142,68) 73.43%,rgb(248,142,68) 73.82%,rgb(248,143,67) 73.82%,rgb(248,143,67) 74.21%,rgb(249,145,67) 74.21%,rgb(249,145,67) 74.60%,rgb(249,146,66) 74.60%,rgb(249,146,66) 75%,rgb(249,147,65) 75%,rgb(249,147,65) 75.39%,rgb(250,149,65) 75.39%,rgb(250,149,65) 75.78%,rgb(250,150,64) 75.78%,rgb(250,150,64) 76.17%,rgb(250,152,63) 76.17%,rgb(250,152,63) 76.56%,rgb(251,153,63) 76.56%,rgb(251,153,63) 76.95%,rgb(251,155,62) 76.95%,rgb(251,155,62) 77.34%,rgb(251,156,62) 77.34%,rgb(251,156,62) 77.73%,rgb(251,158,62) 77.73%,rgb(251,158,62) 78.12%,rgb(251,159,61) 78.12%,rgb(251,159,61) 78.51%,rgb(251,161,61) 78.51%,rgb(251,161,61) 78.90%,rgb(252,163,61) 78.90%,rgb(252,163,61) 79.29%,rgb(252,164,61) 79.29%,rgb(252,164,61) 79.68%,rgb(252,166,60) 79.68%,rgb(252,166,60) 80.07%,rgb(252,167,60) 80.07%,rgb(252,167,60) 80.46%,rgb(252,169,60) 80.46%,rgb(252,169,60) 80.85%,rgb(252,170,60) 80.85%,rgb(252,170,60) 81.25%,rgb(252,172,60) 81.25%,rgb(252,172,60) 81.64%,rgb(252,174,60) 81.64%,rgb(252,174,60) 82.03%,rgb(252,175,60) 82.03%,rgb(252,175,60) 82.42%,rgb(252,177,60) 82.42%,rgb(252,177,60) 82.81%,rgb(251,178,61) 82.81%,rgb(251,178,61) 83.20%,rgb(251,180,61) 83.20%,rgb(251,180,61) 83.59%,rgb(251,182,61) 83.59%,rgb(251,182,61) 83.98%,rgb(251,183,61) 83.98%,rgb(251,183,61) 84.37%,rgb(251,185,62) 84.37%,rgb(251,185,62) 84.76%,rgb(251,187,62) 84.76%,rgb(251,187,62) 85.15%,rgb(251,188,62) 85.15%,rgb(251,188,62) 85.54%,rgb(250,190,63) 85.54%,rgb(250,190,63) 85.93%,rgb(250,191,63) 85.93%,rgb(250,191,63) 86.32%,rgb(250,193,64) 86.32%,rgb(250,193,64) 86.71%,rgb(250,195,64) 86.71%,rgb(250,195,64) 87.10%,rgb(249,196,65) 87.10%,rgb(249,196,65) 87.5%,rgb(249,198,65) 87.5%,rgb(249,198,65) 87.89%,rgb(249,200,66) 87.89%,rgb(249,200,66) 88.28%,rgb(248,201,67) 88.28%,rgb(248,201,67) 88.67%,rgb(248,203,67) 88.67%,rgb(248,203,67) 89.06%,rgb(248,205,68) 89.06%,rgb(248,205,68) 89.45%,rgb(247,206,69) 89.45%,rgb(247,206,69) 89.84%,rgb(247,208,69) 89.84%,rgb(247,208,69) 90.23%,rgb(247,210,70) 90.23%,rgb(247,210,70) 90.62%,rgb(246,211,71) 90.62%,rgb(246,211,71) 91.01%,rgb(246,213,71) 91.01%,rgb(246,213,71) 91.40%,rgb(245,215,72) 91.40%,rgb(245,215,72) 91.79%,rgb(245,216,73) 91.79%,rgb(245,216,73) 92.18%,rgb(244,218,74) 92.18%,rgb(244,218,74) 92.57%,rgb(244,220,75) 92.57%,rgb(244,220,75) 92.96%,rgb(243,221,75) 92.96%,rgb(243,221,75) 93.35%,rgb(243,223,76) 93.35%,rgb(243,223,76) 93.75%,rgb(242,225,77) 93.75%,rgb(242,225,77) 94.14%,rgb(242,226,78) 94.14%,rgb(242,226,78) 94.53%,rgb(241,228,79) 94.53%,rgb(241,228,79) 94.92%,rgb(241,230,80) 94.92%,rgb(241,230,80) 95.31%,rgb(240,232,81) 95.31%,rgb(240,232,81) 95.70%,rgb(239,233,81) 95.70%,rgb(239,233,81) 96.09%,rgb(239,235,82) 96.09%,rgb(239,235,82) 96.48%,rgb(238,237,83) 96.48%,rgb(238,237,83) 96.87%,rgb(237,238,84) 96.87%,rgb(237,238,84) 97.26%,rgb(237,240,85) 97.26%,rgb(237,240,85) 97.65%,rgb(236,242,86) 97.65%,rgb(236,242,86) 98.04%,rgb(235,244,87) 98.04%,rgb(235,244,87) 98.43%,rgb(234,245,88) 98.43%,rgb(234,245,88) 98.82%,rgb(234,247,89) 98.82%,rgb(234,247,89) 99.21%,rgb(233,249,90) 99.21%,rgb(233,249,90) 99.60%,rgb(232,250,91) 99.60%,rgb(232,250,91) 100%\",\n tex_buffer: new Uint8Array([4,35,51,4,36,53,4,37,55,4,37,57,5,38,59,5,39,61,5,39,63,5,40,65,5,41,67,6,41,69,6,42,71,6,43,73,7,43,75,7,44,77,7,44,80,8,45,82,8,46,84,9,46,86,9,47,89,10,47,91,11,48,93,12,48,96,12,48,98,13,49,101,14,49,103,15,50,106,16,50,108,18,50,111,19,51,114,20,51,116,22,51,119,23,51,122,25,51,124,26,52,127,28,52,130,30,52,132,31,52,135,33,52,138,35,52,140,37,52,143,39,52,145,42,51,147,44,51,149,46,51,151,48,51,153,51,51,155,53,51,156,55,51,157,57,51,158,60,51,159,62,52,159,64,52,159,66,52,160,68,53,160,70,53,160,71,54,160,73,54,159,75,55,159,77,55,159,78,56,158,80,57,158,82,57,157,83,58,157,85,59,157,86,59,156,88,60,156,89,61,155,91,61,155,92,62,154,94,63,154,95,63,153,96,64,153,98,65,152,99,65,152,101,66,151,102,67,151,103,67,150,105,68,150,106,69,149,108,69,149,109,70,148,110,71,148,112,71,148,113,72,147,114,72,147,116,73,146,117,74,146,118,74,146,120,75,145,121,75,145,122,76,145,124,77,144,125,77,144,126,78,144,128,78,143,129,79,143,131,80,143,132,80,142,133,81,142,135,81,142,136,82,141,137,82,141,139,83,141,140,83,140,142,84,140,143,84,140,144,85,139,146,85,139,147,86,139,149,86,138,150,87,138,151,87,138,153,88,137,154,88,137,156,89,137,157,89,136,159,90,136,160,90,135,162,91,135,163,91,134,165,92,134,166,92,134,168,93,133,169,93,132,171,93,132,172,94,131,174,94,131,175,95,130,177,95,130,178,96,129,180,96,128,181,97,128,183,97,127,184,98,126,186,98,126,187,98,125,189,99,124,190,99,123,192,100,123,193,100,122,195,101,121,196,101,120,198,102,119,199,102,118,201,103,117,202,103,116,204,104,115,205,104,114,206,105,113,208,105,112,209,106,111,211,106,110,212,107,109,214,108,108,215,108,107,216,109,106,218,110,105,219,110,104,220,111,102,222,112,101,223,112,100,224,113,99,225,114,98,227,114,96,228,115,95,229,116,94,230,117,93,231,118,91,232,119,90,234,120,89,235,121,88,236,121,86,237,122,85,238,123,84,238,125,83,239,126,82,240,127,80,241,128,79,242,129,78,243,130,77,243,131,76,244,133,75,245,134,74,245,135,73,246,136,72,246,138,71,247,139,70,247,140,69,248,142,68,248,143,67,249,145,67,249,146,66,249,147,65,250,149,65,250,150,64,250,152,63,251,153,63,251,155,62,251,156,62,251,158,62,251,159,61,251,161,61,252,163,61,252,164,61,252,166,60,252,167,60,252,169,60,252,170,60,252,172,60,252,174,60,252,175,60,252,177,60,251,178,61,251,180,61,251,182,61,251,183,61,251,185,62,251,187,62,251,188,62,250,190,63,250,191,63,250,193,64,250,195,64,249,196,65,249,198,65,249,200,66,248,201,67,248,203,67,248,205,68,247,206,69,247,208,69,247,210,70,246,211,71,246,213,71,245,215,72,245,216,73,244,218,74,244,220,75,243,221,75,243,223,76,242,225,77,242,226,78,241,228,79,241,230,80,240,232,81,239,233,81,239,235,82,238,237,83,237,238,84,237,240,85,236,242,86,235,244,87,234,245,88,234,247,89,233,249,90,232,250,91]),\n linear_interpolation: false\n},\n{\n name: \"topo\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: true,\n c3g_string: \"rgb(40,26,44) 0%,rgb(40,26,44) 0.390%,rgb(41,28,47) 0.390%,rgb(41,28,47) 0.781%,rgb(43,29,50) 0.781%,rgb(43,29,50) 1.171%,rgb(44,31,52) 1.171%,rgb(44,31,52) 1.562%,rgb(45,32,55) 1.562%,rgb(45,32,55) 1.953%,rgb(47,34,58) 1.953%,rgb(47,34,58) 2.343%,rgb(48,35,61) 2.343%,rgb(48,35,61) 2.734%,rgb(49,37,64) 2.734%,rgb(49,37,64) 3.125%,rgb(50,38,67) 3.125%,rgb(50,38,67) 3.515%,rgb(52,40,70) 3.515%,rgb(52,40,70) 3.906%,rgb(53,41,73) 3.906%,rgb(53,41,73) 4.296%,rgb(54,42,76) 4.296%,rgb(54,42,76) 4.687%,rgb(55,44,79) 4.687%,rgb(55,44,79) 5.078%,rgb(56,45,82) 5.078%,rgb(56,45,82) 5.468%,rgb(57,47,85) 5.468%,rgb(57,47,85) 5.859%,rgb(58,48,88) 5.859%,rgb(58,48,88) 6.25%,rgb(59,50,92) 6.25%,rgb(59,50,92) 6.640%,rgb(60,51,95) 6.640%,rgb(60,51,95) 7.031%,rgb(61,53,98) 7.031%,rgb(61,53,98) 7.421%,rgb(62,54,102) 7.421%,rgb(62,54,102) 7.812%,rgb(63,56,105) 7.812%,rgb(63,56,105) 8.203%,rgb(63,57,108) 8.203%,rgb(63,57,108) 8.593%,rgb(64,59,112) 8.593%,rgb(64,59,112) 8.984%,rgb(64,60,115) 8.984%,rgb(64,60,115) 9.375%,rgb(65,62,118) 9.375%,rgb(65,62,118) 9.765%,rgb(65,64,122) 9.765%,rgb(65,64,122) 10.15%,rgb(65,65,125) 10.15%,rgb(65,65,125) 10.54%,rgb(66,67,128) 10.54%,rgb(66,67,128) 10.93%,rgb(65,69,131) 10.93%,rgb(65,69,131) 11.32%,rgb(65,71,133) 11.32%,rgb(65,71,133) 11.71%,rgb(65,73,136) 11.71%,rgb(65,73,136) 12.10%,rgb(65,75,138) 12.10%,rgb(65,75,138) 12.5%,rgb(64,77,140) 12.5%,rgb(64,77,140) 12.89%,rgb(64,79,141) 12.89%,rgb(64,79,141) 13.28%,rgb(63,82,143) 13.28%,rgb(63,82,143) 13.67%,rgb(63,84,144) 13.67%,rgb(63,84,144) 14.06%,rgb(62,86,145) 14.06%,rgb(62,86,145) 14.45%,rgb(62,88,146) 14.45%,rgb(62,88,146) 14.84%,rgb(62,90,146) 14.84%,rgb(62,90,146) 15.23%,rgb(62,92,147) 15.23%,rgb(62,92,147) 15.62%,rgb(62,95,147) 15.62%,rgb(62,95,147) 16.01%,rgb(62,97,148) 16.01%,rgb(62,97,148) 16.40%,rgb(62,99,148) 16.40%,rgb(62,99,148) 16.79%,rgb(62,101,149) 16.79%,rgb(62,101,149) 17.18%,rgb(62,103,149) 17.18%,rgb(62,103,149) 17.57%,rgb(62,105,150) 17.57%,rgb(62,105,150) 17.96%,rgb(62,107,150) 17.96%,rgb(62,107,150) 18.35%,rgb(63,109,151) 18.35%,rgb(63,109,151) 18.75%,rgb(63,111,151) 18.75%,rgb(63,111,151) 19.14%,rgb(64,113,151) 19.14%,rgb(64,113,151) 19.53%,rgb(64,115,152) 19.53%,rgb(64,115,152) 19.92%,rgb(64,117,152) 19.92%,rgb(64,117,152) 20.31%,rgb(65,119,153) 20.31%,rgb(65,119,153) 20.70%,rgb(66,121,153) 20.70%,rgb(66,121,153) 21.09%,rgb(66,123,153) 21.09%,rgb(66,123,153) 21.48%,rgb(67,125,154) 21.48%,rgb(67,125,154) 21.87%,rgb(67,127,154) 21.87%,rgb(67,127,154) 22.26%,rgb(68,129,155) 22.26%,rgb(68,129,155) 22.65%,rgb(68,131,155) 22.65%,rgb(68,131,155) 23.04%,rgb(69,133,156) 23.04%,rgb(69,133,156) 23.43%,rgb(70,135,156) 23.43%,rgb(70,135,156) 23.82%,rgb(70,137,157) 23.82%,rgb(70,137,157) 24.21%,rgb(71,139,157) 24.21%,rgb(71,139,157) 24.60%,rgb(72,141,157) 24.60%,rgb(72,141,157) 25%,rgb(72,143,158) 25%,rgb(72,143,158) 25.39%,rgb(73,145,158) 25.39%,rgb(73,145,158) 25.78%,rgb(74,147,159) 25.78%,rgb(74,147,159) 26.17%,rgb(74,149,159) 26.17%,rgb(74,149,159) 26.56%,rgb(75,151,160) 26.56%,rgb(75,151,160) 26.95%,rgb(76,153,160) 26.95%,rgb(76,153,160) 27.34%,rgb(77,155,161) 27.34%,rgb(77,155,161) 27.73%,rgb(77,157,161) 27.73%,rgb(77,157,161) 28.12%,rgb(78,159,161) 28.12%,rgb(78,159,161) 28.51%,rgb(79,161,162) 28.51%,rgb(79,161,162) 28.90%,rgb(80,163,162) 28.90%,rgb(80,163,162) 29.29%,rgb(81,165,162) 29.29%,rgb(81,165,162) 29.68%,rgb(81,167,163) 29.68%,rgb(81,167,163) 30.07%,rgb(82,169,163) 30.07%,rgb(82,169,163) 30.46%,rgb(83,171,163) 30.46%,rgb(83,171,163) 30.85%,rgb(85,173,163) 30.85%,rgb(85,173,163) 31.25%,rgb(86,175,164) 31.25%,rgb(86,175,164) 31.64%,rgb(87,177,164) 31.64%,rgb(87,177,164) 32.03%,rgb(88,179,164) 32.03%,rgb(88,179,164) 32.42%,rgb(90,182,164) 32.42%,rgb(90,182,164) 32.81%,rgb(91,184,164) 32.81%,rgb(91,184,164) 33.20%,rgb(93,186,164) 33.20%,rgb(93,186,164) 33.59%,rgb(95,188,164) 33.59%,rgb(95,188,164) 33.98%,rgb(97,190,164) 33.98%,rgb(97,190,164) 34.37%,rgb(99,192,164) 34.37%,rgb(99,192,164) 34.76%,rgb(101,194,164) 34.76%,rgb(101,194,164) 35.15%,rgb(103,195,164) 35.15%,rgb(103,195,164) 35.54%,rgb(106,197,164) 35.54%,rgb(106,197,164) 35.93%,rgb(109,199,163) 35.93%,rgb(109,199,163) 36.32%,rgb(112,201,163) 36.32%,rgb(112,201,163) 36.71%,rgb(115,203,163) 36.71%,rgb(115,203,163) 37.10%,rgb(118,205,163) 37.10%,rgb(118,205,163) 37.5%,rgb(122,206,163) 37.5%,rgb(122,206,163) 37.89%,rgb(125,208,163) 37.89%,rgb(125,208,163) 38.28%,rgb(129,210,163) 38.28%,rgb(129,210,163) 38.67%,rgb(133,211,163) 38.67%,rgb(133,211,163) 39.06%,rgb(137,213,163) 39.06%,rgb(137,213,163) 39.45%,rgb(141,215,163) 39.45%,rgb(141,215,163) 39.84%,rgb(146,216,164) 39.84%,rgb(146,216,164) 40.23%,rgb(150,218,164) 40.23%,rgb(150,218,164) 40.62%,rgb(154,219,165) 40.62%,rgb(154,219,165) 41.01%,rgb(159,221,165) 41.01%,rgb(159,221,165) 41.40%,rgb(163,222,166) 41.40%,rgb(163,222,166) 41.79%,rgb(167,224,167) 41.79%,rgb(167,224,167) 42.18%,rgb(172,225,168) 42.18%,rgb(172,225,168) 42.57%,rgb(176,226,169) 42.57%,rgb(176,226,169) 42.96%,rgb(181,228,170) 42.96%,rgb(181,228,170) 43.35%,rgb(185,229,172) 43.35%,rgb(185,229,172) 43.75%,rgb(189,231,173) 43.75%,rgb(189,231,173) 44.14%,rgb(193,232,175) 44.14%,rgb(193,232,175) 44.53%,rgb(198,234,176) 44.53%,rgb(198,234,176) 44.92%,rgb(202,235,178) 44.92%,rgb(202,235,178) 45.31%,rgb(206,236,179) 45.31%,rgb(206,236,179) 45.70%,rgb(210,238,181) 45.70%,rgb(210,238,181) 46.09%,rgb(215,239,183) 46.09%,rgb(215,239,183) 46.48%,rgb(219,241,185) 46.48%,rgb(219,241,185) 46.87%,rgb(223,242,187) 46.87%,rgb(223,242,187) 47.26%,rgb(227,244,189) 47.26%,rgb(227,244,189) 47.65%,rgb(231,245,191) 47.65%,rgb(231,245,191) 48.04%,rgb(235,247,193) 48.04%,rgb(235,247,193) 48.43%,rgb(239,248,196) 48.43%,rgb(239,248,196) 48.82%,rgb(243,250,198) 48.82%,rgb(243,250,198) 49.21%,rgb(247,251,200) 49.21%,rgb(247,251,200) 49.60%,rgb(251,253,203) 49.60%,rgb(251,253,203) 50%,rgb(13,37,20) 50%,rgb(13,37,20) 50.39%,rgb(14,39,21) 50.39%,rgb(14,39,21) 50.78%,rgb(15,41,21) 50.78%,rgb(15,41,21) 51.17%,rgb(16,42,22) 51.17%,rgb(16,42,22) 51.56%,rgb(17,44,23) 51.56%,rgb(17,44,23) 51.95%,rgb(18,46,23) 51.95%,rgb(18,46,23) 52.34%,rgb(19,48,24) 52.34%,rgb(19,48,24) 52.73%,rgb(20,50,24) 52.73%,rgb(20,50,24) 53.12%,rgb(21,51,25) 53.12%,rgb(21,51,25) 53.51%,rgb(22,53,26) 53.51%,rgb(22,53,26) 53.90%,rgb(23,55,26) 53.90%,rgb(23,55,26) 54.29%,rgb(23,57,27) 54.29%,rgb(23,57,27) 54.68%,rgb(24,58,27) 54.68%,rgb(24,58,27) 55.07%,rgb(25,60,28) 55.07%,rgb(25,60,28) 55.46%,rgb(26,62,28) 55.46%,rgb(26,62,28) 55.85%,rgb(27,64,28) 55.85%,rgb(27,64,28) 56.25%,rgb(27,65,29) 56.25%,rgb(27,65,29) 56.64%,rgb(28,67,29) 56.64%,rgb(28,67,29) 57.03%,rgb(29,69,29) 57.03%,rgb(29,69,29) 57.42%,rgb(30,71,30) 57.42%,rgb(30,71,30) 57.81%,rgb(31,72,30) 57.81%,rgb(31,72,30) 58.20%,rgb(32,74,30) 58.20%,rgb(32,74,30) 58.59%,rgb(33,76,30) 58.59%,rgb(33,76,30) 58.98%,rgb(35,78,30) 58.98%,rgb(35,78,30) 59.37%,rgb(37,79,30) 59.37%,rgb(37,79,30) 59.76%,rgb(39,81,30) 59.76%,rgb(39,81,30) 60.15%,rgb(42,82,30) 60.15%,rgb(42,82,30) 60.54%,rgb(45,83,31) 60.54%,rgb(45,83,31) 60.93%,rgb(48,85,32) 60.93%,rgb(48,85,32) 61.32%,rgb(51,86,34) 61.32%,rgb(51,86,34) 61.71%,rgb(54,87,35) 61.71%,rgb(54,87,35) 62.10%,rgb(57,88,37) 62.10%,rgb(57,88,37) 62.5%,rgb(60,90,38) 62.5%,rgb(60,90,38) 62.89%,rgb(63,91,40) 62.89%,rgb(63,91,40) 63.28%,rgb(65,92,42) 63.28%,rgb(65,92,42) 63.67%,rgb(68,93,43) 63.67%,rgb(68,93,43) 64.06%,rgb(71,95,45) 64.06%,rgb(71,95,45) 64.45%,rgb(73,96,47) 64.45%,rgb(73,96,47) 64.84%,rgb(76,97,48) 64.84%,rgb(76,97,48) 65.23%,rgb(78,98,49) 65.23%,rgb(78,98,49) 65.62%,rgb(81,99,51) 65.62%,rgb(81,99,51) 66.01%,rgb(84,101,52) 66.01%,rgb(84,101,52) 66.40%,rgb(86,102,53) 66.40%,rgb(86,102,53) 66.79%,rgb(89,103,54) 66.79%,rgb(89,103,54) 67.18%,rgb(92,104,55) 67.18%,rgb(92,104,55) 67.57%,rgb(94,106,56) 67.57%,rgb(94,106,56) 67.96%,rgb(97,107,57) 67.96%,rgb(97,107,57) 68.35%,rgb(100,108,58) 68.35%,rgb(100,108,58) 68.75%,rgb(102,109,58) 68.75%,rgb(102,109,58) 69.14%,rgb(105,111,59) 69.14%,rgb(105,111,59) 69.53%,rgb(107,112,60) 69.53%,rgb(107,112,60) 69.92%,rgb(110,113,60) 69.92%,rgb(110,113,60) 70.31%,rgb(113,114,61) 70.31%,rgb(113,114,61) 70.70%,rgb(115,116,61) 70.70%,rgb(115,116,61) 71.09%,rgb(118,117,62) 71.09%,rgb(118,117,62) 71.48%,rgb(121,118,62) 71.48%,rgb(121,118,62) 71.87%,rgb(123,119,62) 71.87%,rgb(123,119,62) 72.26%,rgb(126,121,63) 72.26%,rgb(126,121,63) 72.65%,rgb(129,122,63) 72.65%,rgb(129,122,63) 73.04%,rgb(131,123,63) 73.04%,rgb(131,123,63) 73.43%,rgb(134,124,63) 73.43%,rgb(134,124,63) 73.82%,rgb(137,126,64) 73.82%,rgb(137,126,64) 74.21%,rgb(140,127,64) 74.21%,rgb(140,127,64) 74.60%,rgb(142,128,64) 74.60%,rgb(142,128,64) 75%,rgb(145,129,64) 75%,rgb(145,129,64) 75.39%,rgb(148,131,64) 75.39%,rgb(148,131,64) 75.78%,rgb(150,132,64) 75.78%,rgb(150,132,64) 76.17%,rgb(153,133,64) 76.17%,rgb(153,133,64) 76.56%,rgb(156,134,64) 76.56%,rgb(156,134,64) 76.95%,rgb(159,136,64) 76.95%,rgb(159,136,64) 77.34%,rgb(161,137,64) 77.34%,rgb(161,137,64) 77.73%,rgb(164,138,63) 77.73%,rgb(164,138,63) 78.12%,rgb(167,140,63) 78.12%,rgb(167,140,63) 78.51%,rgb(170,141,63) 78.51%,rgb(170,141,63) 78.90%,rgb(173,142,63) 78.90%,rgb(173,142,63) 79.29%,rgb(176,143,63) 79.29%,rgb(176,143,63) 79.68%,rgb(179,145,63) 79.68%,rgb(179,145,63) 80.07%,rgb(182,146,63) 80.07%,rgb(182,146,63) 80.46%,rgb(185,147,62) 80.46%,rgb(185,147,62) 80.85%,rgb(188,148,62) 80.85%,rgb(188,148,62) 81.25%,rgb(191,149,63) 81.25%,rgb(191,149,63) 81.64%,rgb(193,151,65) 81.64%,rgb(193,151,65) 82.03%,rgb(195,153,69) 82.03%,rgb(195,153,69) 82.42%,rgb(196,155,72) 82.42%,rgb(196,155,72) 82.81%,rgb(197,157,76) 82.81%,rgb(197,157,76) 83.20%,rgb(198,159,80) 83.20%,rgb(198,159,80) 83.59%,rgb(199,161,83) 83.59%,rgb(199,161,83) 83.98%,rgb(200,163,87) 83.98%,rgb(200,163,87) 84.37%,rgb(202,165,90) 84.37%,rgb(202,165,90) 84.76%,rgb(203,167,94) 84.76%,rgb(203,167,94) 85.15%,rgb(204,169,97) 85.15%,rgb(204,169,97) 85.54%,rgb(205,171,101) 85.54%,rgb(205,171,101) 85.93%,rgb(206,173,104) 85.93%,rgb(206,173,104) 86.32%,rgb(207,176,108) 86.32%,rgb(207,176,108) 86.71%,rgb(208,178,111) 86.71%,rgb(208,178,111) 87.10%,rgb(209,180,115) 87.10%,rgb(209,180,115) 87.5%,rgb(210,182,118) 87.5%,rgb(210,182,118) 87.89%,rgb(211,184,122) 87.89%,rgb(211,184,122) 88.28%,rgb(212,187,125) 88.28%,rgb(212,187,125) 88.67%,rgb(213,189,129) 88.67%,rgb(213,189,129) 89.06%,rgb(214,191,132) 89.06%,rgb(214,191,132) 89.45%,rgb(215,193,136) 89.45%,rgb(215,193,136) 89.84%,rgb(216,195,139) 89.84%,rgb(216,195,139) 90.23%,rgb(218,198,143) 90.23%,rgb(218,198,143) 90.62%,rgb(219,200,146) 90.62%,rgb(219,200,146) 91.01%,rgb(220,202,150) 91.01%,rgb(220,202,150) 91.40%,rgb(221,204,153) 91.40%,rgb(221,204,153) 91.79%,rgb(222,207,157) 91.79%,rgb(222,207,157) 92.18%,rgb(223,209,160) 92.18%,rgb(223,209,160) 92.57%,rgb(224,211,164) 92.57%,rgb(224,211,164) 92.96%,rgb(226,213,167) 92.96%,rgb(226,213,167) 93.35%,rgb(227,216,171) 93.35%,rgb(227,216,171) 93.75%,rgb(228,218,174) 93.75%,rgb(228,218,174) 94.14%,rgb(229,220,178) 94.14%,rgb(229,220,178) 94.53%,rgb(230,223,182) 94.53%,rgb(230,223,182) 94.92%,rgb(232,225,185) 94.92%,rgb(232,225,185) 95.31%,rgb(233,227,189) 95.31%,rgb(233,227,189) 95.70%,rgb(234,230,192) 95.70%,rgb(234,230,192) 96.09%,rgb(236,232,196) 96.09%,rgb(236,232,196) 96.48%,rgb(237,234,199) 96.48%,rgb(237,234,199) 96.87%,rgb(238,237,203) 96.87%,rgb(238,237,203) 97.26%,rgb(240,239,207) 97.26%,rgb(240,239,207) 97.65%,rgb(241,241,210) 97.65%,rgb(241,241,210) 98.04%,rgb(242,244,214) 98.04%,rgb(242,244,214) 98.43%,rgb(244,246,217) 98.43%,rgb(244,246,217) 98.82%,rgb(245,249,221) 98.82%,rgb(245,249,221) 99.21%,rgb(247,251,225) 99.21%,rgb(247,251,225) 99.60%,rgb(249,253,228) 99.60%,rgb(249,253,228) 100%\",\n tex_buffer: new Uint8Array([40,26,44,41,28,47,43,29,50,44,31,52,45,32,55,47,34,58,48,35,61,49,37,64,50,38,67,52,40,70,53,41,73,54,42,76,55,44,79,56,45,82,57,47,85,58,48,88,59,50,92,60,51,95,61,53,98,62,54,102,63,56,105,63,57,108,64,59,112,64,60,115,65,62,118,65,64,122,65,65,125,66,67,128,65,69,131,65,71,133,65,73,136,65,75,138,64,77,140,64,79,141,63,82,143,63,84,144,62,86,145,62,88,146,62,90,146,62,92,147,62,95,147,62,97,148,62,99,148,62,101,149,62,103,149,62,105,150,62,107,150,63,109,151,63,111,151,64,113,151,64,115,152,64,117,152,65,119,153,66,121,153,66,123,153,67,125,154,67,127,154,68,129,155,68,131,155,69,133,156,70,135,156,70,137,157,71,139,157,72,141,157,72,143,158,73,145,158,74,147,159,74,149,159,75,151,160,76,153,160,77,155,161,77,157,161,78,159,161,79,161,162,80,163,162,81,165,162,81,167,163,82,169,163,83,171,163,85,173,163,86,175,164,87,177,164,88,179,164,90,182,164,91,184,164,93,186,164,95,188,164,97,190,164,99,192,164,101,194,164,103,195,164,106,197,164,109,199,163,112,201,163,115,203,163,118,205,163,122,206,163,125,208,163,129,210,163,133,211,163,137,213,163,141,215,163,146,216,164,150,218,164,154,219,165,159,221,165,163,222,166,167,224,167,172,225,168,176,226,169,181,228,170,185,229,172,189,231,173,193,232,175,198,234,176,202,235,178,206,236,179,210,238,181,215,239,183,219,241,185,223,242,187,227,244,189,231,245,191,235,247,193,239,248,196,243,250,198,247,251,200,251,253,203,13,37,20,14,39,21,15,41,21,16,42,22,17,44,23,18,46,23,19,48,24,20,50,24,21,51,25,22,53,26,23,55,26,23,57,27,24,58,27,25,60,28,26,62,28,27,64,28,27,65,29,28,67,29,29,69,29,30,71,30,31,72,30,32,74,30,33,76,30,35,78,30,37,79,30,39,81,30,42,82,30,45,83,31,48,85,32,51,86,34,54,87,35,57,88,37,60,90,38,63,91,40,65,92,42,68,93,43,71,95,45,73,96,47,76,97,48,78,98,49,81,99,51,84,101,52,86,102,53,89,103,54,92,104,55,94,106,56,97,107,57,100,108,58,102,109,58,105,111,59,107,112,60,110,113,60,113,114,61,115,116,61,118,117,62,121,118,62,123,119,62,126,121,63,129,122,63,131,123,63,134,124,63,137,126,64,140,127,64,142,128,64,145,129,64,148,131,64,150,132,64,153,133,64,156,134,64,159,136,64,161,137,64,164,138,63,167,140,63,170,141,63,173,142,63,176,143,63,179,145,63,182,146,63,185,147,62,188,148,62,191,149,63,193,151,65,195,153,69,196,155,72,197,157,76,198,159,80,199,161,83,200,163,87,202,165,90,203,167,94,204,169,97,205,171,101,206,173,104,207,176,108,208,178,111,209,180,115,210,182,118,211,184,122,212,187,125,213,189,129,214,191,132,215,193,136,216,195,139,218,198,143,219,200,146,220,202,150,221,204,153,222,207,157,223,209,160,224,211,164,226,213,167,227,216,171,228,218,174,229,220,178,230,223,182,232,225,185,233,227,189,234,230,192,236,232,196,237,234,199,238,237,203,240,239,207,241,241,210,242,244,214,244,246,217,245,249,221,247,251,225,249,253,228]),\n linear_interpolation: false\n},\n{\n name: \"turbid\",\n author: {\n name: \"Kristen M. Thyng \",\n url: \"http://kristenthyng.com/\"\n },\n license: {\n name: \"MIT License\",\n url: \"http://soliton.vm.bytemark.co.uk/pub/cpt-city/cmocean/copying.html\"\n },\n range: [1, 257],\n symmetric: false,\n c3g_string: \"rgb(233,246,171) 0%,rgb(233,246,171) 0.390%,rgb(232,245,170) 0.390%,rgb(232,245,170) 0.781%,rgb(232,243,168) 0.781%,rgb(232,243,168) 1.171%,rgb(231,242,167) 1.171%,rgb(231,242,167) 1.562%,rgb(230,241,165) 1.562%,rgb(230,241,165) 1.953%,rgb(230,240,164) 1.953%,rgb(230,240,164) 2.343%,rgb(229,239,162) 2.343%,rgb(229,239,162) 2.734%,rgb(229,238,161) 2.734%,rgb(229,238,161) 3.125%,rgb(228,236,159) 3.125%,rgb(228,236,159) 3.515%,rgb(228,235,158) 3.515%,rgb(228,235,158) 3.906%,rgb(227,234,156) 3.906%,rgb(227,234,156) 4.296%,rgb(227,233,155) 4.296%,rgb(227,233,155) 4.687%,rgb(226,232,154) 4.687%,rgb(226,232,154) 5.078%,rgb(226,231,152) 5.078%,rgb(226,231,152) 5.468%,rgb(225,229,151) 5.468%,rgb(225,229,151) 5.859%,rgb(224,228,149) 5.859%,rgb(224,228,149) 6.25%,rgb(224,227,148) 6.25%,rgb(224,227,148) 6.640%,rgb(223,226,146) 6.640%,rgb(223,226,146) 7.031%,rgb(223,225,145) 7.031%,rgb(223,225,145) 7.421%,rgb(222,224,143) 7.421%,rgb(222,224,143) 7.812%,rgb(222,223,142) 7.812%,rgb(222,223,142) 8.203%,rgb(221,221,141) 8.203%,rgb(221,221,141) 8.593%,rgb(221,220,139) 8.593%,rgb(221,220,139) 8.984%,rgb(220,219,138) 8.984%,rgb(220,219,138) 9.375%,rgb(220,218,136) 9.375%,rgb(220,218,136) 9.765%,rgb(219,217,135) 9.765%,rgb(219,217,135) 10.15%,rgb(219,216,134) 10.15%,rgb(219,216,134) 10.54%,rgb(218,215,132) 10.54%,rgb(218,215,132) 10.93%,rgb(218,213,131) 10.93%,rgb(218,213,131) 11.32%,rgb(217,212,130) 11.32%,rgb(217,212,130) 11.71%,rgb(217,211,128) 11.71%,rgb(217,211,128) 12.10%,rgb(217,210,127) 12.10%,rgb(217,210,127) 12.5%,rgb(216,209,126) 12.5%,rgb(216,209,126) 12.89%,rgb(216,208,124) 12.89%,rgb(216,208,124) 13.28%,rgb(215,207,123) 13.28%,rgb(215,207,123) 13.67%,rgb(215,206,122) 13.67%,rgb(215,206,122) 14.06%,rgb(214,204,120) 14.06%,rgb(214,204,120) 14.45%,rgb(214,203,119) 14.45%,rgb(214,203,119) 14.84%,rgb(213,202,118) 14.84%,rgb(213,202,118) 15.23%,rgb(213,201,116) 15.23%,rgb(213,201,116) 15.62%,rgb(212,200,115) 15.62%,rgb(212,200,115) 16.01%,rgb(212,199,114) 16.01%,rgb(212,199,114) 16.40%,rgb(211,198,113) 16.40%,rgb(211,198,113) 16.79%,rgb(211,197,111) 16.79%,rgb(211,197,111) 17.18%,rgb(211,195,110) 17.18%,rgb(211,195,110) 17.57%,rgb(210,194,109) 17.57%,rgb(210,194,109) 17.96%,rgb(210,193,108) 17.96%,rgb(210,193,108) 18.35%,rgb(209,192,107) 18.35%,rgb(209,192,107) 18.75%,rgb(209,191,105) 18.75%,rgb(209,191,105) 19.14%,rgb(208,190,104) 19.14%,rgb(208,190,104) 19.53%,rgb(208,189,103) 19.53%,rgb(208,189,103) 19.92%,rgb(207,188,102) 19.92%,rgb(207,188,102) 20.31%,rgb(207,187,101) 20.31%,rgb(207,187,101) 20.70%,rgb(207,186,100) 20.70%,rgb(207,186,100) 21.09%,rgb(206,184,98) 21.09%,rgb(206,184,98) 21.48%,rgb(206,183,97) 21.48%,rgb(206,183,97) 21.87%,rgb(205,182,96) 21.87%,rgb(205,182,96) 22.26%,rgb(205,181,95) 22.26%,rgb(205,181,95) 22.65%,rgb(204,180,94) 22.65%,rgb(204,180,94) 23.04%,rgb(204,179,93) 23.04%,rgb(204,179,93) 23.43%,rgb(203,178,92) 23.43%,rgb(203,178,92) 23.82%,rgb(203,177,91) 23.82%,rgb(203,177,91) 24.21%,rgb(202,176,90) 24.21%,rgb(202,176,90) 24.60%,rgb(202,175,89) 24.60%,rgb(202,175,89) 25%,rgb(202,174,88) 25%,rgb(202,174,88) 25.39%,rgb(201,172,87) 25.39%,rgb(201,172,87) 25.78%,rgb(201,171,86) 25.78%,rgb(201,171,86) 26.17%,rgb(200,170,85) 26.17%,rgb(200,170,85) 26.56%,rgb(200,169,84) 26.56%,rgb(200,169,84) 26.95%,rgb(199,168,83) 26.95%,rgb(199,168,83) 27.34%,rgb(199,167,82) 27.34%,rgb(199,167,82) 27.73%,rgb(198,166,81) 27.73%,rgb(198,166,81) 28.12%,rgb(198,165,81) 28.12%,rgb(198,165,81) 28.51%,rgb(197,164,80) 28.51%,rgb(197,164,80) 28.90%,rgb(197,163,79) 28.90%,rgb(197,163,79) 29.29%,rgb(196,162,78) 29.29%,rgb(196,162,78) 29.68%,rgb(196,161,77) 29.68%,rgb(196,161,77) 30.07%,rgb(195,160,77) 30.07%,rgb(195,160,77) 30.46%,rgb(195,159,76) 30.46%,rgb(195,159,76) 30.85%,rgb(194,158,75) 30.85%,rgb(194,158,75) 31.25%,rgb(194,156,74) 31.25%,rgb(194,156,74) 31.64%,rgb(193,155,74) 31.64%,rgb(193,155,74) 32.03%,rgb(193,154,73) 32.03%,rgb(193,154,73) 32.42%,rgb(192,153,72) 32.42%,rgb(192,153,72) 32.81%,rgb(192,152,72) 32.81%,rgb(192,152,72) 33.20%,rgb(191,151,71) 33.20%,rgb(191,151,71) 33.59%,rgb(191,150,71) 33.59%,rgb(191,150,71) 33.98%,rgb(190,149,70) 33.98%,rgb(190,149,70) 34.37%,rgb(189,148,69) 34.37%,rgb(189,148,69) 34.76%,rgb(189,147,69) 34.76%,rgb(189,147,69) 35.15%,rgb(188,146,68) 35.15%,rgb(188,146,68) 35.54%,rgb(188,145,68) 35.54%,rgb(188,145,68) 35.93%,rgb(187,144,67) 35.93%,rgb(187,144,67) 36.32%,rgb(187,143,67) 36.32%,rgb(187,143,67) 36.71%,rgb(186,142,66) 36.71%,rgb(186,142,66) 37.10%,rgb(185,141,66) 37.10%,rgb(185,141,66) 37.5%,rgb(185,140,66) 37.5%,rgb(185,140,66) 37.89%,rgb(184,139,65) 37.89%,rgb(184,139,65) 38.28%,rgb(183,138,65) 38.28%,rgb(183,138,65) 38.67%,rgb(183,137,64) 38.67%,rgb(183,137,64) 39.06%,rgb(182,137,64) 39.06%,rgb(182,137,64) 39.45%,rgb(182,136,64) 39.45%,rgb(182,136,64) 39.84%,rgb(181,135,64) 39.84%,rgb(181,135,64) 40.23%,rgb(180,134,63) 40.23%,rgb(180,134,63) 40.62%,rgb(179,133,63) 40.62%,rgb(179,133,63) 41.01%,rgb(179,132,63) 41.01%,rgb(179,132,63) 41.40%,rgb(178,131,62) 41.40%,rgb(178,131,62) 41.79%,rgb(177,130,62) 41.79%,rgb(177,130,62) 42.18%,rgb(177,129,62) 42.18%,rgb(177,129,62) 42.57%,rgb(176,128,62) 42.57%,rgb(176,128,62) 42.96%,rgb(175,127,61) 42.96%,rgb(175,127,61) 43.35%,rgb(175,126,61) 43.35%,rgb(175,126,61) 43.75%,rgb(174,125,61) 43.75%,rgb(174,125,61) 44.14%,rgb(173,125,61) 44.14%,rgb(173,125,61) 44.53%,rgb(172,124,61) 44.53%,rgb(172,124,61) 44.92%,rgb(172,123,61) 44.92%,rgb(172,123,61) 45.31%,rgb(171,122,60) 45.31%,rgb(171,122,60) 45.70%,rgb(170,121,60) 45.70%,rgb(170,121,60) 46.09%,rgb(169,120,60) 46.09%,rgb(169,120,60) 46.48%,rgb(168,119,60) 46.48%,rgb(168,119,60) 46.87%,rgb(168,119,60) 46.87%,rgb(168,119,60) 47.26%,rgb(167,118,60) 47.26%,rgb(167,118,60) 47.65%,rgb(166,117,60) 47.65%,rgb(166,117,60) 48.04%,rgb(165,116,60) 48.04%,rgb(165,116,60) 48.43%,rgb(164,115,59) 48.43%,rgb(164,115,59) 48.82%,rgb(164,114,59) 48.82%,rgb(164,114,59) 49.21%,rgb(163,114,59) 49.21%,rgb(163,114,59) 49.60%,rgb(162,113,59) 49.60%,rgb(162,113,59) 50%,rgb(161,112,59) 50%,rgb(161,112,59) 50.39%,rgb(160,111,59) 50.39%,rgb(160,111,59) 50.78%,rgb(159,110,59) 50.78%,rgb(159,110,59) 51.17%,rgb(158,110,59) 51.17%,rgb(158,110,59) 51.56%,rgb(158,109,59) 51.56%,rgb(158,109,59) 51.95%,rgb(157,108,59) 51.95%,rgb(157,108,59) 52.34%,rgb(156,107,59) 52.34%,rgb(156,107,59) 52.73%,rgb(155,107,59) 52.73%,rgb(155,107,59) 53.12%,rgb(154,106,59) 53.12%,rgb(154,106,59) 53.51%,rgb(153,105,59) 53.51%,rgb(153,105,59) 53.90%,rgb(152,104,59) 53.90%,rgb(152,104,59) 54.29%,rgb(151,104,58) 54.29%,rgb(151,104,58) 54.68%,rgb(150,103,58) 54.68%,rgb(150,103,58) 55.07%,rgb(150,102,58) 55.07%,rgb(150,102,58) 55.46%,rgb(149,101,58) 55.46%,rgb(149,101,58) 55.85%,rgb(148,101,58) 55.85%,rgb(148,101,58) 56.25%,rgb(147,100,58) 56.25%,rgb(147,100,58) 56.64%,rgb(146,99,58) 56.64%,rgb(146,99,58) 57.03%,rgb(145,98,58) 57.03%,rgb(145,98,58) 57.42%,rgb(144,98,58) 57.42%,rgb(144,98,58) 57.81%,rgb(143,97,58) 57.81%,rgb(143,97,58) 58.20%,rgb(142,96,58) 58.20%,rgb(142,96,58) 58.59%,rgb(141,96,58) 58.59%,rgb(141,96,58) 58.98%,rgb(140,95,58) 58.98%,rgb(140,95,58) 59.37%,rgb(139,94,58) 59.37%,rgb(139,94,58) 59.76%,rgb(138,94,58) 59.76%,rgb(138,94,58) 60.15%,rgb(137,93,58) 60.15%,rgb(137,93,58) 60.54%,rgb(136,92,58) 60.54%,rgb(136,92,58) 60.93%,rgb(135,92,57) 60.93%,rgb(135,92,57) 61.32%,rgb(134,91,57) 61.32%,rgb(134,91,57) 61.71%,rgb(133,90,57) 61.71%,rgb(133,90,57) 62.10%,rgb(132,90,57) 62.10%,rgb(132,90,57) 62.5%,rgb(131,89,57) 62.5%,rgb(131,89,57) 62.89%,rgb(130,88,57) 62.89%,rgb(130,88,57) 63.28%,rgb(129,88,57) 63.28%,rgb(129,88,57) 63.67%,rgb(128,87,57) 63.67%,rgb(128,87,57) 64.06%,rgb(127,86,57) 64.06%,rgb(127,86,57) 64.45%,rgb(126,86,57) 64.45%,rgb(126,86,57) 64.84%,rgb(125,85,56) 64.84%,rgb(125,85,56) 65.23%,rgb(124,84,56) 65.23%,rgb(124,84,56) 65.62%,rgb(123,84,56) 65.62%,rgb(123,84,56) 66.01%,rgb(122,83,56) 66.01%,rgb(122,83,56) 66.40%,rgb(121,83,56) 66.40%,rgb(121,83,56) 66.79%,rgb(120,82,56) 66.79%,rgb(120,82,56) 67.18%,rgb(119,81,56) 67.18%,rgb(119,81,56) 67.57%,rgb(118,81,56) 67.57%,rgb(118,81,56) 67.96%,rgb(117,80,55) 67.96%,rgb(117,80,55) 68.35%,rgb(116,79,55) 68.35%,rgb(116,79,55) 68.75%,rgb(115,79,55) 68.75%,rgb(115,79,55) 69.14%,rgb(114,78,55) 69.14%,rgb(114,78,55) 69.53%,rgb(113,78,55) 69.53%,rgb(113,78,55) 69.92%,rgb(112,77,55) 69.92%,rgb(112,77,55) 70.31%,rgb(111,76,54) 70.31%,rgb(111,76,54) 70.70%,rgb(110,76,54) 70.70%,rgb(110,76,54) 71.09%,rgb(109,75,54) 71.09%,rgb(109,75,54) 71.48%,rgb(108,75,54) 71.48%,rgb(108,75,54) 71.87%,rgb(107,74,53) 71.87%,rgb(107,74,53) 72.26%,rgb(106,73,53) 72.26%,rgb(106,73,53) 72.65%,rgb(105,73,53) 72.65%,rgb(105,73,53) 73.04%,rgb(103,72,53) 73.04%,rgb(103,72,53) 73.43%,rgb(102,72,53) 73.43%,rgb(102,72,53) 73.82%,rgb(101,71,52) 73.82%,rgb(101,71,52) 74.21%,rgb(100,70,52) 74.21%,rgb(100,70,52) 74.60%,rgb(99,70,52) 74.60%,rgb(99,70,52) 75%,rgb(98,69,52) 75%,rgb(98,69,52) 75.39%,rgb(97,69,51) 75.39%,rgb(97,69,51) 75.78%,rgb(96,68,51) 75.78%,rgb(96,68,51) 76.17%,rgb(95,67,51) 76.17%,rgb(95,67,51) 76.56%,rgb(94,67,51) 76.56%,rgb(94,67,51) 76.95%,rgb(93,66,50) 76.95%,rgb(93,66,50) 77.34%,rgb(92,66,50) 77.34%,rgb(92,66,50) 77.73%,rgb(91,65,50) 77.73%,rgb(91,65,50) 78.12%,rgb(90,65,49) 78.12%,rgb(90,65,49) 78.51%,rgb(89,64,49) 78.51%,rgb(89,64,49) 78.90%,rgb(88,63,49) 78.90%,rgb(88,63,49) 79.29%,rgb(87,63,48) 79.29%,rgb(87,63,48) 79.68%,rgb(86,62,48) 79.68%,rgb(86,62,48) 80.07%,rgb(85,62,48) 80.07%,rgb(85,62,48) 80.46%,rgb(84,61,48) 80.46%,rgb(84,61,48) 80.85%,rgb(83,60,47) 80.85%,rgb(83,60,47) 81.25%,rgb(82,60,47) 81.25%,rgb(82,60,47) 81.64%,rgb(81,59,47) 81.64%,rgb(81,59,47) 82.03%,rgb(80,59,46) 82.03%,rgb(80,59,46) 82.42%,rgb(79,58,46) 82.42%,rgb(79,58,46) 82.81%,rgb(78,57,46) 82.81%,rgb(78,57,46) 83.20%,rgb(77,57,45) 83.20%,rgb(77,57,45) 83.59%,rgb(75,56,45) 83.59%,rgb(75,56,45) 83.98%,rgb(74,56,44) 83.98%,rgb(74,56,44) 84.37%,rgb(73,55,44) 84.37%,rgb(73,55,44) 84.76%,rgb(72,54,44) 84.76%,rgb(72,54,44) 85.15%,rgb(71,54,43) 85.15%,rgb(71,54,43) 85.54%,rgb(70,53,43) 85.54%,rgb(70,53,43) 85.93%,rgb(69,53,43) 85.93%,rgb(69,53,43) 86.32%,rgb(68,52,42) 86.32%,rgb(68,52,42) 86.71%,rgb(67,51,42) 86.71%,rgb(67,51,42) 87.10%,rgb(66,51,41) 87.10%,rgb(66,51,41) 87.5%,rgb(65,50,41) 87.5%,rgb(65,50,41) 87.89%,rgb(64,50,41) 87.89%,rgb(64,50,41) 88.28%,rgb(63,49,40) 88.28%,rgb(63,49,40) 88.67%,rgb(62,48,40) 88.67%,rgb(62,48,40) 89.06%,rgb(61,48,39) 89.06%,rgb(61,48,39) 89.45%,rgb(60,47,39) 89.45%,rgb(60,47,39) 89.84%,rgb(59,47,39) 89.84%,rgb(59,47,39) 90.23%,rgb(58,46,38) 90.23%,rgb(58,46,38) 90.62%,rgb(57,45,38) 90.62%,rgb(57,45,38) 91.01%,rgb(56,45,37) 91.01%,rgb(56,45,37) 91.40%,rgb(55,44,37) 91.40%,rgb(55,44,37) 91.79%,rgb(54,43,36) 91.79%,rgb(54,43,36) 92.18%,rgb(53,43,36) 92.18%,rgb(53,43,36) 92.57%,rgb(52,42,36) 92.57%,rgb(52,42,36) 92.96%,rgb(51,42,35) 92.96%,rgb(51,42,35) 93.35%,rgb(50,41,35) 93.35%,rgb(50,41,35) 93.75%,rgb(49,40,34) 93.75%,rgb(49,40,34) 94.14%,rgb(48,40,34) 94.14%,rgb(48,40,34) 94.53%,rgb(47,39,33) 94.53%,rgb(47,39,33) 94.92%,rgb(46,38,33) 94.92%,rgb(46,38,33) 95.31%,rgb(45,38,32) 95.31%,rgb(45,38,32) 95.70%,rgb(44,37,32) 95.70%,rgb(44,37,32) 96.09%,rgb(43,36,31) 96.09%,rgb(43,36,31) 96.48%,rgb(42,36,31) 96.48%,rgb(42,36,31) 96.87%,rgb(41,35,31) 96.87%,rgb(41,35,31) 97.26%,rgb(40,35,30) 97.26%,rgb(40,35,30) 97.65%,rgb(39,34,30) 97.65%,rgb(39,34,30) 98.04%,rgb(38,33,29) 98.04%,rgb(38,33,29) 98.43%,rgb(37,33,29) 98.43%,rgb(37,33,29) 98.82%,rgb(36,32,28) 98.82%,rgb(36,32,28) 99.21%,rgb(35,31,28) 99.21%,rgb(35,31,28) 99.60%,rgb(34,31,27) 99.60%,rgb(34,31,27) 100%\",\n tex_buffer: new Uint8Array([233,246,171,232,245,170,232,243,168,231,242,167,230,241,165,230,240,164,229,239,162,229,238,161,228,236,159,228,235,158,227,234,156,227,233,155,226,232,154,226,231,152,225,229,151,224,228,149,224,227,148,223,226,146,223,225,145,222,224,143,222,223,142,221,221,141,221,220,139,220,219,138,220,218,136,219,217,135,219,216,134,218,215,132,218,213,131,217,212,130,217,211,128,217,210,127,216,209,126,216,208,124,215,207,123,215,206,122,214,204,120,214,203,119,213,202,118,213,201,116,212,200,115,212,199,114,211,198,113,211,197,111,211,195,110,210,194,109,210,193,108,209,192,107,209,191,105,208,190,104,208,189,103,207,188,102,207,187,101,207,186,100,206,184,98,206,183,97,205,182,96,205,181,95,204,180,94,204,179,93,203,178,92,203,177,91,202,176,90,202,175,89,202,174,88,201,172,87,201,171,86,200,170,85,200,169,84,199,168,83,199,167,82,198,166,81,198,165,81,197,164,80,197,163,79,196,162,78,196,161,77,195,160,77,195,159,76,194,158,75,194,156,74,193,155,74,193,154,73,192,153,72,192,152,72,191,151,71,191,150,71,190,149,70,189,148,69,189,147,69,188,146,68,188,145,68,187,144,67,187,143,67,186,142,66,185,141,66,185,140,66,184,139,65,183,138,65,183,137,64,182,137,64,182,136,64,181,135,64,180,134,63,179,133,63,179,132,63,178,131,62,177,130,62,177,129,62,176,128,62,175,127,61,175,126,61,174,125,61,173,125,61,172,124,61,172,123,61,171,122,60,170,121,60,169,120,60,168,119,60,168,119,60,167,118,60,166,117,60,165,116,60,164,115,59,164,114,59,163,114,59,162,113,59,161,112,59,160,111,59,159,110,59,158,110,59,158,109,59,157,108,59,156,107,59,155,107,59,154,106,59,153,105,59,152,104,59,151,104,58,150,103,58,150,102,58,149,101,58,148,101,58,147,100,58,146,99,58,145,98,58,144,98,58,143,97,58,142,96,58,141,96,58,140,95,58,139,94,58,138,94,58,137,93,58,136,92,58,135,92,57,134,91,57,133,90,57,132,90,57,131,89,57,130,88,57,129,88,57,128,87,57,127,86,57,126,86,57,125,85,56,124,84,56,123,84,56,122,83,56,121,83,56,120,82,56,119,81,56,118,81,56,117,80,55,116,79,55,115,79,55,114,78,55,113,78,55,112,77,55,111,76,54,110,76,54,109,75,54,108,75,54,107,74,53,106,73,53,105,73,53,103,72,53,102,72,53,101,71,52,100,70,52,99,70,52,98,69,52,97,69,51,96,68,51,95,67,51,94,67,51,93,66,50,92,66,50,91,65,50,90,65,49,89,64,49,88,63,49,87,63,48,86,62,48,85,62,48,84,61,48,83,60,47,82,60,47,81,59,47,80,59,46,79,58,46,78,57,46,77,57,45,75,56,45,74,56,44,73,55,44,72,54,44,71,54,43,70,53,43,69,53,43,68,52,42,67,51,42,66,51,41,65,50,41,64,50,41,63,49,40,62,48,40,61,48,39,60,47,39,59,47,39,58,46,38,57,45,38,56,45,37,55,44,37,54,43,36,53,43,36,52,42,36,51,42,35,50,41,35,49,40,34,48,40,34,47,39,33,46,38,33,45,38,32,44,37,32,43,36,31,42,36,31,41,35,31,40,35,30,39,34,30,38,33,29,37,33,29,36,32,28,35,31,28,34,31,27]),\n linear_interpolation: false\n},\n{\n name: \"turbo\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(48,18,59) 0%,rgb(49,21,66) 0.781%,rgb(52,27,81) 1.562%,rgb(54,33,95) 2.343%,rgb(56,38,108) 3.125%,rgb(58,44,121) 3.906%,rgb(60,50,133) 4.687%,rgb(61,55,145) 5.468%,rgb(63,61,156) 6.25%,rgb(64,67,166) 7.031%,rgb(65,72,176) 7.812%,rgb(67,78,186) 8.593%,rgb(67,83,194) 9.375%,rgb(68,88,203) 10.15%,rgb(69,94,210) 10.93%,rgb(69,99,217) 11.71%,rgb(70,104,224) 12.5%,rgb(70,109,230) 13.28%,rgb(70,115,235) 14.06%,rgb(70,120,240) 14.84%,rgb(70,125,244) 15.62%,rgb(70,130,248) 16.40%,rgb(69,135,251) 17.18%,rgb(68,140,253) 17.96%,rgb(66,145,254) 18.75%,rgb(64,150,254) 19.53%,rgb(62,155,254) 20.31%,rgb(59,160,252) 21.09%,rgb(56,165,251) 21.87%,rgb(52,170,248) 22.65%,rgb(49,175,245) 23.43%,rgb(45,180,241) 24.21%,rgb(42,185,237) 25%,rgb(38,189,233) 25.78%,rgb(35,194,228) 26.56%,rgb(32,198,223) 27.34%,rgb(29,203,218) 28.12%,rgb(27,207,212) 28.90%,rgb(25,211,207) 29.68%,rgb(24,215,202) 30.46%,rgb(23,218,196) 31.25%,rgb(23,222,191) 32.03%,rgb(24,225,186) 32.81%,rgb(26,228,182) 33.59%,rgb(29,231,177) 34.37%,rgb(32,233,172) 35.15%,rgb(36,236,166) 35.93%,rgb(41,238,160) 36.71%,rgb(47,240,154) 37.5%,rgb(53,243,148) 38.28%,rgb(59,244,141) 39.06%,rgb(66,246,135) 39.84%,rgb(74,248,128) 40.62%,rgb(81,249,121) 41.40%,rgb(89,251,114) 42.18%,rgb(97,252,108) 42.96%,rgb(105,253,101) 43.75%,rgb(113,253,95) 44.53%,rgb(120,254,89) 45.31%,rgb(128,254,83) 46.09%,rgb(135,254,77) 46.87%,rgb(142,254,72) 47.65%,rgb(149,254,68) 48.43%,rgb(155,253,64) 49.21%,rgb(164,252,59) 50%,rgb(169,251,57) 50.78%,rgb(174,249,55) 51.56%,rgb(179,248,53) 52.34%,rgb(185,245,52) 53.12%,rgb(190,243,52) 53.90%,rgb(195,241,51) 54.68%,rgb(200,238,51) 55.46%,rgb(205,235,52) 56.25%,rgb(209,232,52) 57.03%,rgb(214,229,53) 57.81%,rgb(218,226,54) 58.59%,rgb(223,222,54) 59.37%,rgb(227,218,55) 60.15%,rgb(231,215,56) 60.93%,rgb(234,211,57) 61.71%,rgb(237,207,57) 62.5%,rgb(240,203,58) 63.28%,rgb(243,198,58) 64.06%,rgb(246,194,58) 64.84%,rgb(248,190,57) 65.62%,rgb(249,186,56) 66.40%,rgb(251,181,55) 67.18%,rgb(252,176,53) 67.96%,rgb(253,171,51) 68.75%,rgb(253,166,49) 69.53%,rgb(254,161,47) 70.31%,rgb(254,155,45) 71.09%,rgb(253,149,43) 71.87%,rgb(253,143,40) 72.65%,rgb(252,137,38) 73.43%,rgb(251,131,35) 74.21%,rgb(250,125,32) 75%,rgb(249,119,30) 75.78%,rgb(247,113,27) 76.56%,rgb(246,107,24) 77.34%,rgb(244,101,22) 78.12%,rgb(242,96,20) 78.90%,rgb(239,90,17) 79.68%,rgb(237,85,15) 80.46%,rgb(234,80,13) 81.25%,rgb(232,75,12) 82.03%,rgb(229,70,10) 82.81%,rgb(226,66,9) 83.59%,rgb(222,62,8) 84.37%,rgb(219,58,7) 85.15%,rgb(215,54,6) 85.93%,rgb(212,50,5) 86.71%,rgb(208,47,4) 87.5%,rgb(203,43,3) 88.28%,rgb(199,40,3) 89.06%,rgb(195,36,2) 89.84%,rgb(190,33,2) 90.62%,rgb(185,30,1) 91.40%,rgb(180,27,1) 92.18%,rgb(174,24,1) 92.96%,rgb(169,21,1) 93.75%,rgb(163,18,1) 94.53%,rgb(157,16,1) 95.31%,rgb(151,13,1) 96.09%,rgb(145,11,1) 96.87%,rgb(139,9,1) 97.65%,rgb(132,7,1) 98.43%,rgb(125,5,2) 99.21%,rgb(122,4,2) 100%\",\n tex_buffer: new Uint8Array([48,18,59,49,21,66,52,27,81,54,33,95,56,38,108,58,44,121,60,50,133,61,55,145,63,61,156,64,67,166,65,72,176,67,78,186,67,83,194,68,88,203,69,94,210,69,99,217,70,104,224,70,109,230,70,115,235,70,120,240,70,125,244,70,130,248,69,135,251,68,140,253,66,145,254,64,150,254,62,155,254,59,160,252,56,165,251,52,170,248,49,175,245,45,180,241,42,185,237,38,189,233,35,194,228,32,198,223,29,203,218,27,207,212,25,211,207,24,215,202,23,218,196,23,222,191,24,225,186,26,228,182,29,231,177,32,233,172,36,236,166,41,238,160,47,240,154,53,243,148,59,244,141,66,246,135,74,248,128,81,249,121,89,251,114,97,252,108,105,253,101,113,253,95,120,254,89,128,254,83,135,254,77,142,254,72,149,254,68,155,253,64,164,252,59,169,251,57,174,249,55,179,248,53,185,245,52,190,243,52,195,241,51,200,238,51,205,235,52,209,232,52,214,229,53,218,226,54,223,222,54,227,218,55,231,215,56,234,211,57,237,207,57,240,203,58,243,198,58,246,194,58,248,190,57,249,186,56,251,181,55,252,176,53,253,171,51,253,166,49,254,161,47,254,155,45,253,149,43,253,143,40,252,137,38,251,131,35,250,125,32,249,119,30,247,113,27,246,107,24,244,101,22,242,96,20,239,90,17,237,85,15,234,80,13,232,75,12,229,70,10,226,66,9,222,62,8,219,58,7,215,54,6,212,50,5,208,47,4,203,43,3,199,40,3,195,36,2,190,33,2,185,30,1,180,27,1,174,24,1,169,21,1,163,18,1,157,16,1,151,13,1,145,11,1,139,9,1,132,7,1,125,5,2,122,4,2]),\n linear_interpolation: true\n},\n{\n name: \"twilight\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(225,216,226) 0%,rgb(224,217,226) 0.781%,rgb(222,217,224) 1.562%,rgb(219,216,223) 2.343%,rgb(216,215,221) 3.125%,rgb(212,214,219) 3.906%,rgb(207,212,217) 4.687%,rgb(202,209,215) 5.468%,rgb(197,207,212) 6.25%,rgb(191,204,210) 7.031%,rgb(185,201,208) 7.812%,rgb(179,198,206) 8.593%,rgb(173,195,204) 9.375%,rgb(167,192,202) 10.15%,rgb(161,188,201) 10.93%,rgb(155,185,200) 11.71%,rgb(150,181,198) 12.5%,rgb(144,178,197) 13.28%,rgb(139,174,197) 14.06%,rgb(134,171,196) 14.84%,rgb(130,167,195) 15.62%,rgb(126,163,194) 16.40%,rgb(122,159,194) 17.18%,rgb(118,155,193) 17.96%,rgb(115,152,192) 18.75%,rgb(111,148,192) 19.53%,rgb(109,144,191) 20.31%,rgb(106,139,190) 21.09%,rgb(104,135,190) 21.87%,rgb(102,131,189) 22.65%,rgb(100,127,188) 23.43%,rgb(99,123,187) 24.21%,rgb(98,118,186) 25%,rgb(97,114,185) 25.78%,rgb(96,109,184) 26.56%,rgb(95,105,182) 27.34%,rgb(95,100,181) 28.12%,rgb(95,96,179) 28.90%,rgb(94,91,177) 29.68%,rgb(94,86,175) 30.46%,rgb(94,81,173) 31.25%,rgb(94,77,170) 32.03%,rgb(93,72,167) 32.81%,rgb(93,67,164) 33.59%,rgb(93,62,161) 34.37%,rgb(92,57,157) 35.15%,rgb(91,52,153) 35.93%,rgb(90,48,149) 36.71%,rgb(89,43,144) 37.5%,rgb(88,39,139) 38.28%,rgb(86,34,133) 39.06%,rgb(84,31,127) 39.84%,rgb(82,27,120) 40.62%,rgb(79,25,114) 41.40%,rgb(76,22,107) 42.18%,rgb(73,21,100) 42.96%,rgb(69,19,93) 43.75%,rgb(66,18,87) 44.53%,rgb(62,17,81) 45.31%,rgb(59,17,75) 46.09%,rgb(56,16,70) 46.87%,rgb(54,16,65) 47.65%,rgb(51,17,61) 48.43%,rgb(50,17,58) 49.21%,rgb(47,20,54) 50%,rgb(49,18,55) 50.78%,rgb(52,17,55) 51.56%,rgb(55,17,56) 52.34%,rgb(58,17,58) 53.12%,rgb(62,17,60) 53.90%,rgb(66,17,61) 54.68%,rgb(70,18,64) 55.46%,rgb(75,19,66) 56.25%,rgb(80,20,68) 57.03%,rgb(85,21,70) 57.81%,rgb(90,22,72) 58.59%,rgb(95,23,74) 59.37%,rgb(101,25,75) 60.15%,rgb(106,26,77) 60.93%,rgb(111,28,78) 61.71%,rgb(117,30,79) 62.5%,rgb(122,32,79) 63.28%,rgb(127,34,80) 64.06%,rgb(131,37,80) 64.84%,rgb(136,40,80) 65.62%,rgb(140,43,80) 66.40%,rgb(145,46,80) 67.18%,rgb(149,50,79) 67.96%,rgb(153,53,79) 68.75%,rgb(156,57,79) 69.53%,rgb(160,61,79) 70.31%,rgb(163,65,79) 71.09%,rgb(167,69,79) 71.87%,rgb(170,74,80) 72.65%,rgb(173,78,80) 73.43%,rgb(175,82,81) 74.21%,rgb(178,87,82) 75%,rgb(181,91,83) 75.78%,rgb(183,96,84) 76.56%,rgb(185,101,86) 77.34%,rgb(187,106,88) 78.12%,rgb(189,110,90) 78.90%,rgb(191,115,93) 79.68%,rgb(193,120,96) 80.46%,rgb(194,125,99) 81.25%,rgb(196,130,103) 82.03%,rgb(197,135,107) 82.81%,rgb(198,140,111) 83.59%,rgb(199,145,116) 84.37%,rgb(201,150,121) 85.15%,rgb(202,155,126) 85.93%,rgb(203,159,132) 86.71%,rgb(204,164,138) 87.5%,rgb(205,169,144) 88.28%,rgb(206,174,151) 89.06%,rgb(208,178,158) 89.84%,rgb(209,183,164) 90.62%,rgb(211,187,171) 91.40%,rgb(213,191,178) 92.18%,rgb(215,195,185) 92.96%,rgb(216,199,192) 93.75%,rgb(218,203,198) 94.53%,rgb(220,206,204) 95.31%,rgb(221,209,209) 96.09%,rgb(223,212,214) 96.87%,rgb(224,214,218) 97.65%,rgb(225,215,221) 98.43%,rgb(225,216,224) 99.21%,rgb(225,216,225) 100%\",\n tex_buffer: new Uint8Array([225,216,226,224,217,226,222,217,224,219,216,223,216,215,221,212,214,219,207,212,217,202,209,215,197,207,212,191,204,210,185,201,208,179,198,206,173,195,204,167,192,202,161,188,201,155,185,200,150,181,198,144,178,197,139,174,197,134,171,196,130,167,195,126,163,194,122,159,194,118,155,193,115,152,192,111,148,192,109,144,191,106,139,190,104,135,190,102,131,189,100,127,188,99,123,187,98,118,186,97,114,185,96,109,184,95,105,182,95,100,181,95,96,179,94,91,177,94,86,175,94,81,173,94,77,170,93,72,167,93,67,164,93,62,161,92,57,157,91,52,153,90,48,149,89,43,144,88,39,139,86,34,133,84,31,127,82,27,120,79,25,114,76,22,107,73,21,100,69,19,93,66,18,87,62,17,81,59,17,75,56,16,70,54,16,65,51,17,61,50,17,58,47,20,54,49,18,55,52,17,55,55,17,56,58,17,58,62,17,60,66,17,61,70,18,64,75,19,66,80,20,68,85,21,70,90,22,72,95,23,74,101,25,75,106,26,77,111,28,78,117,30,79,122,32,79,127,34,80,131,37,80,136,40,80,140,43,80,145,46,80,149,50,79,153,53,79,156,57,79,160,61,79,163,65,79,167,69,79,170,74,80,173,78,80,175,82,81,178,87,82,181,91,83,183,96,84,185,101,86,187,106,88,189,110,90,191,115,93,193,120,96,194,125,99,196,130,103,197,135,107,198,140,111,199,145,116,201,150,121,202,155,126,203,159,132,204,164,138,205,169,144,206,174,151,208,178,158,209,183,164,211,187,171,213,191,178,215,195,185,216,199,192,218,203,198,220,206,204,221,209,209,223,212,214,224,214,218,225,215,221,225,216,224,225,216,225]),\n linear_interpolation: true\n},\n{\n name: \"twilight_shifted\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(47,19,55) 0%,rgb(48,18,56) 0.781%,rgb(50,17,59) 1.562%,rgb(52,16,63) 2.343%,rgb(55,16,67) 3.125%,rgb(58,16,72) 3.906%,rgb(61,17,78) 4.687%,rgb(64,17,84) 5.468%,rgb(68,18,90) 6.25%,rgb(71,20,96) 7.031%,rgb(74,21,103) 7.812%,rgb(77,23,110) 8.593%,rgb(80,26,117) 9.375%,rgb(83,29,124) 10.15%,rgb(85,33,130) 10.93%,rgb(87,36,136) 11.71%,rgb(89,41,141) 12.5%,rgb(90,45,146) 13.28%,rgb(91,50,151) 14.06%,rgb(92,55,155) 14.84%,rgb(92,60,159) 15.62%,rgb(93,64,163) 16.40%,rgb(93,69,166) 17.18%,rgb(94,74,169) 17.96%,rgb(94,79,172) 18.75%,rgb(94,84,174) 19.53%,rgb(94,89,176) 20.31%,rgb(94,93,178) 21.09%,rgb(95,98,180) 21.87%,rgb(95,103,182) 22.65%,rgb(96,107,183) 23.43%,rgb(96,112,184) 24.21%,rgb(97,116,186) 25%,rgb(98,120,187) 25.78%,rgb(100,125,188) 26.56%,rgb(101,129,189) 27.34%,rgb(103,133,189) 28.12%,rgb(105,137,190) 28.90%,rgb(107,142,191) 29.68%,rgb(110,146,191) 30.46%,rgb(113,150,192) 31.25%,rgb(116,154,193) 32.03%,rgb(120,157,193) 32.81%,rgb(124,161,194) 33.59%,rgb(128,165,195) 34.37%,rgb(132,169,195) 35.15%,rgb(137,172,196) 35.93%,rgb(142,176,197) 36.71%,rgb(147,180,198) 37.5%,rgb(152,183,199) 38.28%,rgb(158,187,200) 39.06%,rgb(164,190,202) 39.84%,rgb(170,193,203) 40.62%,rgb(176,196,205) 41.40%,rgb(182,199,207) 42.18%,rgb(188,202,209) 42.96%,rgb(194,205,211) 43.75%,rgb(199,208,214) 44.53%,rgb(205,210,216) 45.31%,rgb(210,213,218) 46.09%,rgb(214,214,220) 46.87%,rgb(217,216,222) 47.65%,rgb(221,217,224) 48.43%,rgb(223,217,225) 49.21%,rgb(225,216,225) 50%,rgb(225,216,223) 50.78%,rgb(224,215,220) 51.56%,rgb(223,213,216) 52.34%,rgb(222,211,212) 53.12%,rgb(221,208,207) 53.90%,rgb(219,205,201) 54.68%,rgb(217,201,195) 55.46%,rgb(216,197,188) 56.25%,rgb(214,193,181) 57.03%,rgb(212,189,175) 57.81%,rgb(210,185,168) 58.59%,rgb(209,180,161) 59.37%,rgb(207,176,154) 60.15%,rgb(206,171,148) 60.93%,rgb(204,167,141) 61.71%,rgb(203,162,135) 62.5%,rgb(202,157,129) 63.28%,rgb(201,152,123) 64.06%,rgb(200,147,118) 64.84%,rgb(199,142,113) 65.62%,rgb(198,137,109) 66.40%,rgb(196,132,105) 67.18%,rgb(195,127,101) 67.96%,rgb(194,123,97) 68.75%,rgb(192,118,94) 69.53%,rgb(190,113,91) 70.31%,rgb(188,108,89) 71.09%,rgb(186,103,87) 71.87%,rgb(184,98,85) 72.65%,rgb(182,94,84) 73.43%,rgb(179,89,82) 74.21%,rgb(177,85,81) 75%,rgb(174,80,81) 75.78%,rgb(171,76,80) 76.56%,rgb(168,71,80) 77.34%,rgb(165,67,79) 78.12%,rgb(162,63,79) 78.90%,rgb(158,59,79) 79.68%,rgb(154,55,79) 80.46%,rgb(151,51,79) 81.25%,rgb(147,48,79) 82.03%,rgb(143,44,80) 82.81%,rgb(138,41,80) 83.59%,rgb(134,38,80) 84.37%,rgb(129,35,80) 85.15%,rgb(124,33,79) 85.93%,rgb(119,31,79) 86.71%,rgb(114,29,78) 87.5%,rgb(109,27,77) 88.28%,rgb(103,25,76) 89.06%,rgb(98,24,75) 89.84%,rgb(93,23,73) 90.62%,rgb(88,21,71) 91.40%,rgb(82,20,69) 92.18%,rgb(77,19,67) 92.96%,rgb(73,18,65) 93.75%,rgb(68,18,63) 94.53%,rgb(64,17,60) 95.31%,rgb(60,17,59) 96.09%,rgb(56,17,57) 96.87%,rgb(53,17,56) 97.65%,rgb(51,17,55) 98.43%,rgb(48,19,54) 99.21%,rgb(47,20,54) 100%\",\n tex_buffer: new Uint8Array([47,19,55,48,18,56,50,17,59,52,16,63,55,16,67,58,16,72,61,17,78,64,17,84,68,18,90,71,20,96,74,21,103,77,23,110,80,26,117,83,29,124,85,33,130,87,36,136,89,41,141,90,45,146,91,50,151,92,55,155,92,60,159,93,64,163,93,69,166,94,74,169,94,79,172,94,84,174,94,89,176,94,93,178,95,98,180,95,103,182,96,107,183,96,112,184,97,116,186,98,120,187,100,125,188,101,129,189,103,133,189,105,137,190,107,142,191,110,146,191,113,150,192,116,154,193,120,157,193,124,161,194,128,165,195,132,169,195,137,172,196,142,176,197,147,180,198,152,183,199,158,187,200,164,190,202,170,193,203,176,196,205,182,199,207,188,202,209,194,205,211,199,208,214,205,210,216,210,213,218,214,214,220,217,216,222,221,217,224,223,217,225,225,216,225,225,216,223,224,215,220,223,213,216,222,211,212,221,208,207,219,205,201,217,201,195,216,197,188,214,193,181,212,189,175,210,185,168,209,180,161,207,176,154,206,171,148,204,167,141,203,162,135,202,157,129,201,152,123,200,147,118,199,142,113,198,137,109,196,132,105,195,127,101,194,123,97,192,118,94,190,113,91,188,108,89,186,103,87,184,98,85,182,94,84,179,89,82,177,85,81,174,80,81,171,76,80,168,71,80,165,67,79,162,63,79,158,59,79,154,55,79,151,51,79,147,48,79,143,44,80,138,41,80,134,38,80,129,35,80,124,33,79,119,31,79,114,29,78,109,27,77,103,25,76,98,24,75,93,23,73,88,21,71,82,20,69,77,19,67,73,18,65,68,18,63,64,17,60,60,17,59,56,17,57,53,17,56,51,17,55,48,19,54,47,20,54]),\n linear_interpolation: true\n},\n{\n name: \"viridis\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(68,1,84) 0%,rgb(68,2,85) 0.781%,rgb(69,5,88) 1.562%,rgb(69,8,91) 2.343%,rgb(70,11,94) 3.125%,rgb(70,14,97) 3.906%,rgb(71,17,99) 4.687%,rgb(71,20,102) 5.468%,rgb(71,22,105) 6.25%,rgb(72,25,107) 7.031%,rgb(72,28,110) 7.812%,rgb(72,30,112) 8.593%,rgb(72,33,114) 9.375%,rgb(72,35,116) 10.15%,rgb(71,38,118) 10.93%,rgb(71,40,120) 11.71%,rgb(71,43,122) 12.5%,rgb(70,45,124) 13.28%,rgb(70,48,125) 14.06%,rgb(69,50,127) 14.84%,rgb(69,53,128) 15.62%,rgb(68,55,129) 16.40%,rgb(67,58,131) 17.18%,rgb(67,60,132) 17.96%,rgb(66,62,133) 18.75%,rgb(65,65,134) 19.53%,rgb(64,67,135) 20.31%,rgb(63,69,135) 21.09%,rgb(62,72,136) 21.87%,rgb(61,74,137) 22.65%,rgb(61,76,137) 23.43%,rgb(60,78,138) 24.21%,rgb(59,81,138) 25%,rgb(58,83,139) 25.78%,rgb(57,85,139) 26.56%,rgb(56,87,140) 27.34%,rgb(55,89,140) 28.12%,rgb(54,91,140) 28.90%,rgb(53,93,140) 29.68%,rgb(52,95,141) 30.46%,rgb(51,97,141) 31.25%,rgb(50,99,141) 32.03%,rgb(49,101,141) 32.81%,rgb(48,103,141) 33.59%,rgb(47,105,141) 34.37%,rgb(46,107,142) 35.15%,rgb(46,109,142) 35.93%,rgb(45,111,142) 36.71%,rgb(44,113,142) 37.5%,rgb(43,115,142) 38.28%,rgb(42,117,142) 39.06%,rgb(42,119,142) 39.84%,rgb(41,121,142) 40.62%,rgb(40,122,142) 41.40%,rgb(39,124,142) 42.18%,rgb(39,126,142) 42.96%,rgb(38,128,142) 43.75%,rgb(37,130,142) 44.53%,rgb(36,132,141) 45.31%,rgb(36,134,141) 46.09%,rgb(35,136,141) 46.87%,rgb(34,137,141) 47.65%,rgb(34,139,141) 48.43%,rgb(33,141,140) 49.21%,rgb(32,144,140) 50%,rgb(31,146,140) 50.78%,rgb(31,148,139) 51.56%,rgb(31,150,139) 52.34%,rgb(30,152,138) 53.12%,rgb(30,153,138) 53.90%,rgb(30,155,137) 54.68%,rgb(30,157,136) 55.46%,rgb(30,159,136) 56.25%,rgb(31,161,135) 57.03%,rgb(31,163,134) 57.81%,rgb(32,165,133) 58.59%,rgb(33,167,132) 59.37%,rgb(35,168,131) 60.15%,rgb(36,170,130) 60.93%,rgb(38,172,129) 61.71%,rgb(40,174,127) 62.5%,rgb(42,176,126) 63.28%,rgb(44,177,125) 64.06%,rgb(47,179,123) 64.84%,rgb(50,181,122) 65.62%,rgb(53,183,120) 66.40%,rgb(56,185,118) 67.18%,rgb(59,186,117) 67.96%,rgb(62,188,115) 68.75%,rgb(66,190,113) 69.53%,rgb(69,191,111) 70.31%,rgb(73,193,109) 71.09%,rgb(77,194,107) 71.87%,rgb(81,196,104) 72.65%,rgb(85,198,102) 73.43%,rgb(89,199,100) 74.21%,rgb(94,201,97) 75%,rgb(98,202,95) 75.78%,rgb(103,204,92) 76.56%,rgb(107,205,89) 77.34%,rgb(112,206,86) 78.12%,rgb(116,208,84) 78.90%,rgb(121,209,81) 79.68%,rgb(126,210,78) 80.46%,rgb(131,211,75) 81.25%,rgb(136,213,71) 82.03%,rgb(141,214,68) 82.81%,rgb(146,215,65) 83.59%,rgb(151,216,62) 84.37%,rgb(157,217,58) 85.15%,rgb(162,218,55) 85.93%,rgb(167,219,51) 86.71%,rgb(173,220,48) 87.5%,rgb(178,221,44) 88.28%,rgb(183,221,41) 89.06%,rgb(189,222,38) 89.84%,rgb(194,223,34) 90.62%,rgb(199,224,31) 91.40%,rgb(205,224,29) 92.18%,rgb(210,225,27) 92.96%,rgb(215,226,25) 93.75%,rgb(220,226,24) 94.53%,rgb(225,227,24) 95.31%,rgb(231,228,25) 96.09%,rgb(236,228,26) 96.87%,rgb(241,229,28) 97.65%,rgb(246,230,31) 98.43%,rgb(250,230,34) 99.21%,rgb(253,231,36) 100%\",\n tex_buffer: new Uint8Array([68,1,84,68,2,85,69,5,88,69,8,91,70,11,94,70,14,97,71,17,99,71,20,102,71,22,105,72,25,107,72,28,110,72,30,112,72,33,114,72,35,116,71,38,118,71,40,120,71,43,122,70,45,124,70,48,125,69,50,127,69,53,128,68,55,129,67,58,131,67,60,132,66,62,133,65,65,134,64,67,135,63,69,135,62,72,136,61,74,137,61,76,137,60,78,138,59,81,138,58,83,139,57,85,139,56,87,140,55,89,140,54,91,140,53,93,140,52,95,141,51,97,141,50,99,141,49,101,141,48,103,141,47,105,141,46,107,142,46,109,142,45,111,142,44,113,142,43,115,142,42,117,142,42,119,142,41,121,142,40,122,142,39,124,142,39,126,142,38,128,142,37,130,142,36,132,141,36,134,141,35,136,141,34,137,141,34,139,141,33,141,140,32,144,140,31,146,140,31,148,139,31,150,139,30,152,138,30,153,138,30,155,137,30,157,136,30,159,136,31,161,135,31,163,134,32,165,133,33,167,132,35,168,131,36,170,130,38,172,129,40,174,127,42,176,126,44,177,125,47,179,123,50,181,122,53,183,120,56,185,118,59,186,117,62,188,115,66,190,113,69,191,111,73,193,109,77,194,107,81,196,104,85,198,102,89,199,100,94,201,97,98,202,95,103,204,92,107,205,89,112,206,86,116,208,84,121,209,81,126,210,78,131,211,75,136,213,71,141,214,68,146,215,65,151,216,62,157,217,58,162,218,55,167,219,51,173,220,48,178,221,44,183,221,41,189,222,38,194,223,34,199,224,31,205,224,29,210,225,27,215,226,25,220,226,24,225,227,24,231,228,25,236,228,26,241,229,28,246,230,31,250,230,34,253,231,36]),\n linear_interpolation: true\n},\n{\n name: \"Wiki-2.0\",\n author: {\n name: \"Eric Gaba\",\n url: \"http://commons.wikimedia.org/wiki/User:Sting\"\n },\n license: {\n name: \"Public Domain\",\n url: null\n },\n range: [-10, 19],\n symmetric: false,\n c3g_string: \"rgb(113,171,216) 0%,rgb(113,171,216) 3.448%,rgb(121,178,222) 3.448%,rgb(121,178,222) 6.896%,rgb(132,185,227) 6.896%,rgb(132,185,227) 10.34%,rgb(141,193,234) 10.34%,rgb(141,193,234) 13.79%,rgb(150,201,240) 13.79%,rgb(150,201,240) 17.24%,rgb(161,210,247) 17.24%,rgb(161,210,247) 20.68%,rgb(172,219,251) 20.68%,rgb(172,219,251) 24.13%,rgb(185,227,255) 24.13%,rgb(185,227,255) 27.58%,rgb(198,236,255) 27.58%,rgb(198,236,255) 31.03%,rgb(216,242,254) 31.03%,rgb(216,242,254) 34.48%,rgb(172,208,165) 34.48%,rgb(172,208,165) 37.93%,rgb(148,191,139) 37.93%,rgb(148,191,139) 41.37%,rgb(168,198,143) 41.37%,rgb(168,198,143) 44.82%,rgb(189,204,150) 44.82%,rgb(189,204,150) 48.27%,rgb(209,215,171) 48.27%,rgb(209,215,171) 51.72%,rgb(225,228,181) 51.72%,rgb(225,228,181) 55.17%,rgb(239,235,192) 55.17%,rgb(239,235,192) 58.62%,rgb(232,225,182) 58.62%,rgb(232,225,182) 62.06%,rgb(222,214,163) 62.06%,rgb(222,214,163) 65.51%,rgb(211,202,157) 65.51%,rgb(211,202,157) 68.96%,rgb(202,185,130) 68.96%,rgb(202,185,130) 72.41%,rgb(195,167,107) 72.41%,rgb(195,167,107) 75.86%,rgb(185,152,90) 75.86%,rgb(185,152,90) 79.31%,rgb(170,135,83) 79.31%,rgb(170,135,83) 82.75%,rgb(172,154,124) 82.75%,rgb(172,154,124) 86.20%,rgb(186,174,154) 86.20%,rgb(186,174,154) 89.65%,rgb(202,195,184) 89.65%,rgb(202,195,184) 93.10%,rgb(224,222,216) 93.10%,rgb(224,222,216) 96.55%,rgb(245,244,242) 96.55%,rgb(245,244,242) 100%\",\n tex_buffer: new Uint8Array([113,171,216,121,178,222,132,185,227,141,193,234,150,201,240,161,210,247,172,219,251,185,227,255,198,236,255,216,242,254,172,208,165,148,191,139,168,198,143,189,204,150,209,215,171,225,228,181,239,235,192,232,225,182,222,214,163,211,202,157,202,185,130,195,167,107,185,152,90,170,135,83,172,154,124,186,174,154,202,195,184,224,222,216,245,244,242]),\n linear_interpolation: false\n},\n{\n name: \"winter\",\n author: {\n name: \"Matplotlib Contributors\",\n url: \"https://matplotlib.org\"\n },\n license: {\n name: \"Matplotlib License\",\n url: \"https://matplotlib.org/stable/users/license.html\"\n },\n range: [0, 1],\n symmetric: false,\n c3g_string: \"rgb(0,0,255) 0%,rgb(0,1,254) 0.781%,rgb(0,3,253) 1.562%,rgb(0,5,252) 2.343%,rgb(0,7,251) 3.125%,rgb(0,9,250) 3.906%,rgb(0,11,249) 4.687%,rgb(0,13,248) 5.468%,rgb(0,15,247) 6.25%,rgb(0,17,246) 7.031%,rgb(0,19,245) 7.812%,rgb(0,21,244) 8.593%,rgb(0,23,243) 9.375%,rgb(0,25,242) 10.15%,rgb(0,27,241) 10.93%,rgb(0,29,240) 11.71%,rgb(0,31,239) 12.5%,rgb(0,33,238) 13.28%,rgb(0,35,237) 14.06%,rgb(0,37,236) 14.84%,rgb(0,39,235) 15.62%,rgb(0,41,234) 16.40%,rgb(0,43,233) 17.18%,rgb(0,45,232) 17.96%,rgb(0,47,231) 18.75%,rgb(0,49,230) 19.53%,rgb(0,51,229) 20.31%,rgb(0,53,228) 21.09%,rgb(0,55,227) 21.87%,rgb(0,57,226) 22.65%,rgb(0,59,225) 23.43%,rgb(0,61,224) 24.21%,rgb(0,63,223) 25%,rgb(0,65,222) 25.78%,rgb(0,67,221) 26.56%,rgb(0,69,220) 27.34%,rgb(0,71,219) 28.12%,rgb(0,73,218) 28.90%,rgb(0,75,217) 29.68%,rgb(0,77,216) 30.46%,rgb(0,79,215) 31.25%,rgb(0,81,214) 32.03%,rgb(0,83,213) 32.81%,rgb(0,85,212) 33.59%,rgb(0,87,211) 34.37%,rgb(0,89,210) 35.15%,rgb(0,91,209) 35.93%,rgb(0,93,208) 36.71%,rgb(0,95,207) 37.5%,rgb(0,97,206) 38.28%,rgb(0,99,205) 39.06%,rgb(0,101,204) 39.84%,rgb(0,103,203) 40.62%,rgb(0,105,202) 41.40%,rgb(0,107,201) 42.18%,rgb(0,109,200) 42.96%,rgb(0,111,199) 43.75%,rgb(0,113,198) 44.53%,rgb(0,115,197) 45.31%,rgb(0,117,196) 46.09%,rgb(0,119,195) 46.87%,rgb(0,121,194) 47.65%,rgb(0,123,193) 48.43%,rgb(0,125,192) 49.21%,rgb(0,127,191) 50%,rgb(0,129,190) 50.78%,rgb(0,131,189) 51.56%,rgb(0,133,188) 52.34%,rgb(0,135,187) 53.12%,rgb(0,137,186) 53.90%,rgb(0,139,185) 54.68%,rgb(0,141,184) 55.46%,rgb(0,143,183) 56.25%,rgb(0,145,182) 57.03%,rgb(0,147,181) 57.81%,rgb(0,149,180) 58.59%,rgb(0,151,179) 59.37%,rgb(0,153,178) 60.15%,rgb(0,155,177) 60.93%,rgb(0,157,176) 61.71%,rgb(0,159,175) 62.5%,rgb(0,161,174) 63.28%,rgb(0,163,173) 64.06%,rgb(0,165,172) 64.84%,rgb(0,167,171) 65.62%,rgb(0,169,170) 66.40%,rgb(0,171,169) 67.18%,rgb(0,173,168) 67.96%,rgb(0,175,167) 68.75%,rgb(0,177,166) 69.53%,rgb(0,179,165) 70.31%,rgb(0,181,164) 71.09%,rgb(0,183,163) 71.87%,rgb(0,185,162) 72.65%,rgb(0,187,161) 73.43%,rgb(0,189,160) 74.21%,rgb(0,191,159) 75%,rgb(0,193,158) 75.78%,rgb(0,195,157) 76.56%,rgb(0,197,156) 77.34%,rgb(0,199,155) 78.12%,rgb(0,201,154) 78.90%,rgb(0,203,153) 79.68%,rgb(0,205,152) 80.46%,rgb(0,207,151) 81.25%,rgb(0,209,150) 82.03%,rgb(0,211,149) 82.81%,rgb(0,213,148) 83.59%,rgb(0,215,147) 84.37%,rgb(0,217,146) 85.15%,rgb(0,219,145) 85.93%,rgb(0,221,144) 86.71%,rgb(0,223,143) 87.5%,rgb(0,225,142) 88.28%,rgb(0,227,141) 89.06%,rgb(0,229,140) 89.84%,rgb(0,231,139) 90.62%,rgb(0,233,138) 91.40%,rgb(0,235,137) 92.18%,rgb(0,237,136) 92.96%,rgb(0,239,135) 93.75%,rgb(0,241,134) 94.53%,rgb(0,243,133) 95.31%,rgb(0,245,132) 96.09%,rgb(0,247,131) 96.87%,rgb(0,249,130) 97.65%,rgb(0,251,129) 98.43%,rgb(0,253,128) 99.21%,rgb(0,255,127) 100%\",\n tex_buffer: new Uint8Array([0,0,255,0,1,254,0,3,253,0,5,252,0,7,251,0,9,250,0,11,249,0,13,248,0,15,247,0,17,246,0,19,245,0,21,244,0,23,243,0,25,242,0,27,241,0,29,240,0,31,239,0,33,238,0,35,237,0,37,236,0,39,235,0,41,234,0,43,233,0,45,232,0,47,231,0,49,230,0,51,229,0,53,228,0,55,227,0,57,226,0,59,225,0,61,224,0,63,223,0,65,222,0,67,221,0,69,220,0,71,219,0,73,218,0,75,217,0,77,216,0,79,215,0,81,214,0,83,213,0,85,212,0,87,211,0,89,210,0,91,209,0,93,208,0,95,207,0,97,206,0,99,205,0,101,204,0,103,203,0,105,202,0,107,201,0,109,200,0,111,199,0,113,198,0,115,197,0,117,196,0,119,195,0,121,194,0,123,193,0,125,192,0,127,191,0,129,190,0,131,189,0,133,188,0,135,187,0,137,186,0,139,185,0,141,184,0,143,183,0,145,182,0,147,181,0,149,180,0,151,179,0,153,178,0,155,177,0,157,176,0,159,175,0,161,174,0,163,173,0,165,172,0,167,171,0,169,170,0,171,169,0,173,168,0,175,167,0,177,166,0,179,165,0,181,164,0,183,163,0,185,162,0,187,161,0,189,160,0,191,159,0,193,158,0,195,157,0,197,156,0,199,155,0,201,154,0,203,153,0,205,152,0,207,151,0,209,150,0,211,149,0,213,148,0,215,147,0,217,146,0,219,145,0,221,144,0,223,143,0,225,142,0,227,141,0,229,140,0,231,139,0,233,138,0,235,137,0,237,136,0,239,135,0,241,134,0,243,133,0,245,132,0,247,131,0,249,130,0,251,129,0,253,128,0,255,127]),\n linear_interpolation: true\n}\n];","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\n/*\r\nThis service loads and distributes the colormaps that have been aggregated into the colormap file.\r\n*/\r\nimport {colormaps as maps} from '../colormaps/colormap';\r\n\r\nexport class Colormap {\r\n \r\n}\r\n\r\nexport class ColormapService{\r\n constructor(gl: WebGLRenderingContext){\r\n this.initColormaps(gl);\r\n }\r\n\r\n //Colormaps get stored internally as WebGLTextures, so the samplers can easily use them\r\n private colormaps: {[s: string]: WebGLTexture} = {};\r\n private precomputed_gradients = {};\r\n\r\n\r\n //Get the names of all colormaps as an array of string\r\n getColormapNames(): string[]{\r\n return Object.keys(this.colormaps);\r\n }\r\n\r\n //Get the webgl texture for a certain colormap by it's name (from the list from getColormapNames())\r\n getColormapByName(name: string): WebGLTexture{\r\n return this.colormaps[name];\r\n }\r\n\r\n //Upload the colormaps from the maps object to the GPU as textures\r\n private initColormaps(gl: WebGLRenderingContext){\r\n this.colormaps = {};\r\n maps.forEach(m => {\r\n let t = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, t);\r\n gl.texImage2D(\r\n gl.TEXTURE_2D,\r\n 0,\r\n gl.RGB,\r\n m.tex_buffer.length / 3,\r\n 1,\r\n 0,\r\n gl.RGB,\r\n gl.UNSIGNED_BYTE,\r\n m.tex_buffer);\r\n if(m.linear_interpolation){\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n }else{\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\r\n }\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.bindTexture(gl.TEXTURE_2D, null);\r\n this.colormaps[m.name] = t;\r\n this.precomputed_gradients[m.name] = m.c3g_string;\r\n });\r\n }\r\n\r\n\r\n\r\n //Create a CSS gradient (i.e. for the colormap picker) from one of the maps. The direction can also be given and defaults to \"right\"\r\n //If the name doesn't match any colormaps, it defaults to a black background\r\n get_CSSGradient(name: string, direction=\"right\"): string{\r\n if(this.precomputed_gradients[name]){\r\n return `linear-gradient(to ${direction}, ${this.precomputed_gradients[name]})`;\r\n }else{\r\n return \"black\"\r\n }\r\n }\r\n\r\n getNextColormap(currentName: string): string{\r\n let keys = this.getColormapNames();\r\n let index = keys.indexOf(currentName);\r\n if(index >= keys.length - 1){\r\n return keys[0];\r\n } else {\r\n return keys[index + 1];\r\n }\r\n }\r\n \r\n getPreviousColormap(currentName: string): string{\r\n let keys = this.getColormapNames();\r\n let index = keys.indexOf(currentName);\r\n if(index <= 1){\r\n return keys[keys.length - 1];\r\n } else {\r\n return keys[index - 1];\r\n }\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport { SourceLayerInfo } from './SourceInfoService';\r\nimport { Services } from './Services';\r\nimport { LRUMap } from 'lru_map';\r\nimport { Tile, UEC, UECArea } from '../modules/tile';\r\nimport { Barrier } from \"../modules/barrier\";\r\n\r\nconst PRELOAD_STEPS = 5;\r\n//Exchange class for TileData that is already on the GPU. Be careful with this one and call dispose() once you don't need it anymore\r\nexport class TileData {\r\n public path: string;\r\n public texture: WebGLTexture;\r\n public coord_offset: [number, number];\r\n public coord_scale: [number, number];\r\n public value_range: [number, number];\r\n\r\n dispose(gl: WebGLRenderingContext){\r\n if(this.texture && gl.isTexture(this.texture)){\r\n gl.deleteTexture(this.texture);\r\n }else{\r\n console.error(\"texture could not be deleted:\", gl, this.texture);\r\n }\r\n }\r\n\r\n}\r\nexport class ArrayData {\r\n public path: string;\r\n public buffer: WebGLBuffer;\r\n public bounds: UECArea;\r\n public coord_scale: [number, number];\r\n public elements: number;\r\n public referencePoint: UEC;\r\n\r\n dispose(gl: WebGLRenderingContext){\r\n if(this.buffer && gl.isBuffer(this.buffer))\r\n gl.deleteBuffer(this.buffer);\r\n }\r\n}\r\n\r\n\r\nclass TileRequest{\r\n source: SourceLayerInfo;\r\n expirationFrame: number;\r\n tilePath: string;\r\n height: number;\r\n heightIndex: number;\r\n time: number;\r\n timeIndex: number;\r\n\r\n constructor(source: SourceLayerInfo, expirationFrame: number, tilePath: string, heightIndex: number, timeIndex: number) {\r\n this.source = source;\r\n this.expirationFrame = expirationFrame;\r\n this.tilePath = tilePath;\r\n this.heightIndex = heightIndex;\r\n if(source.layer.zsteps)\r\n this.height = source.layer.zsteps[heightIndex];\r\n this.timeIndex = timeIndex;\r\n if(source.layer.timesteps)\r\n this.time = source.layer.timesteps[timeIndex];\r\n }\r\n}\r\n\r\nclass ArrayRequest{\r\n source: SourceLayerInfo;\r\n expirationFrame: number;\r\n time: number;\r\n timeIndex: number;\r\n tilepath: string;\r\n\r\n constructor(source: SourceLayerInfo, expirationFrame: number, timeIndex: number, tilepath: string) {\r\n this.source = source;\r\n this.expirationFrame = expirationFrame;\r\n this.timeIndex = timeIndex;\r\n this.tilepath = tilepath;\r\n if(source.layer.timesteps)\r\n this.time = source.layer.timesteps[timeIndex];\r\n }\r\n}\r\n\r\nclass FailedRequest{\r\n code: number;\r\n private time: number;\r\n attempts: number;\r\n\r\n should_retry(): boolean {\r\n return Date.now() > (this.time + 1000 * Math.pow(2, Math.min(5, this.attempts)));\r\n }\r\n\r\n new_attempt() {\r\n this.attempts += 1;\r\n this.time = Date.now();\r\n }\r\n\r\n constructor(attempt: number, code: number = 0) {\r\n this.code = code;\r\n this.time = Date.now();\r\n this.attempts = attempt;\r\n }\r\n}\r\n\r\n\r\nexport class TileCacheService extends EventTarget{\r\n allow_preload: boolean = true;\r\n\r\n gl: WebGLRenderingContext;\r\n\r\n dataDB: IDBDatabase;\r\n dataDB_Barrier: Barrier;\r\n\r\n frameCounter: number = 0;\r\n\r\n timing_mode: \"previous\";\r\n\r\n detailedData: LRUMap;\r\n \r\n array_queries: Map;\r\n arrays_loading: Set;\r\n\r\n tile_queries: Map;\r\n tiles_loading: Set;\r\n\r\n failed_paths: Map;\r\n\r\n empty_paths: Set;\r\n\r\n maximum_loading = 8;\r\n drop_after = 0.5 * 60;\r\n\r\n ratio = [0.0, 0.0];\r\n available_queried_elements: Set;\r\n get loading(): boolean{\r\n return this.ratio[0] < this.ratio[1] && this.ratio[1] != 0;\r\n }\r\n\r\n constructor(gl: WebGLRenderingContext){\r\n super();\r\n this.gl = gl;\r\n this.dataDB_Barrier = new Barrier();\r\n var DBOpenRequest = indexedDB.open(\"data\");\r\n //Report errors\r\n DBOpenRequest.onerror = (ev) => {console.error(ev);}\r\n //On success resolve the Barrier\r\n DBOpenRequest.onsuccess = (ev) => {\r\n this.dataDB = DBOpenRequest.result;\r\n this.dataDB_Barrier.resolve();\r\n };\r\n //When a new database needs to be created, also create a new object store\r\n DBOpenRequest.onupgradeneeded = (ev) => {\r\n DBOpenRequest.result.createObjectStore(\"data\");\r\n };\r\n\r\n this.detailedData = new LRUMap(1000);\r\n\r\n this.array_queries = new Map();\r\n this.arrays_loading = new Set();\r\n this.tile_queries = new Map();\r\n this.tiles_loading = new Set();\r\n\r\n this.empty_paths = new Set();\r\n\r\n this.available_queried_elements = new Set();\r\n\r\n this.failed_paths = new Map();\r\n let get_gl = () => {return this.gl};\r\n this.detailedData.shift = function(){\r\n let [key, texture] = LRUMap.prototype.shift.call(this);\r\n texture.dispose(get_gl());\r\n return [key, null];\r\n }\r\n\r\n }\r\n\r\n\r\n get_perf_stats(){\r\n return {\r\n \"lrumap\": {\r\n \"size\": this.detailedData.size,\r\n \"limit\": this.detailedData.limit\r\n },\r\n \"loading\": {\r\n \"arrays\": this.arrays_loading.size,\r\n \"tiles\": this.tiles_loading.size,\r\n \"queued arrays\": this.array_queries.size,\r\n \"queued tiles\": this.tile_queries.size\r\n },\r\n };\r\n }\r\n\r\n //todo: move this further upstream.\r\n tile_path(source: SourceLayerInfo, tile: Tile, heightindex: number, timeindex: number): string{\r\n return \"tiles/\" + encodeURIComponent(source.instance_name) + \"/\" + encodeURIComponent(source.layer_name) + \"/\" + tile.path + \"/\" + timeindex + \"/\" + heightindex;\r\n }\r\n\r\n array_path(source: SourceLayerInfo, timeindex: number, tilepath: string = \"W\"): string {\r\n return \"array/\" + encodeURIComponent(source.instance_name) + \"/\" + encodeURIComponent(source.layer_name) + \"/\" + tilepath + \"/\" + timeindex;\r\n }\r\n\r\n store_arraybuffer_db(path: string, data: ArrayBuffer) {\r\n let t = this.dataDB.transaction([\"data\"], \"readwrite\");\r\n let db_request = t.objectStore(\"data\").put(data,path);\r\n db_request.onsuccess = (ev) => {\r\n };\r\n db_request.onerror = (ev) => {\r\n console.error(ev);\r\n }\r\n //@ts-ignore\r\n t.commit(); //Yes it does, see https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction\r\n }\r\n\r\n load_arraybuffer(path: string, cb: (a: ArrayBuffer)=>void, cbe: (e: any)=>void){\r\n let http_get = () => {\r\n let r = new XMLHttpRequest();\r\n r.open(\"GET\", path);\r\n r.responseType = \"arraybuffer\";\r\n r.onprogress = (e) => {\r\n\r\n };\r\n r.onload = (e) => {\r\n if(r.status >= 200 && r.status < 300){\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n cb(r.response);\r\n if(this.dataDB_Barrier.isResolved())\r\n this.store_arraybuffer_db(path, r.response);\r\n }else{\r\n cbe(r.statusText);\r\n }\r\n };\r\n r.onabort = (e) => {\r\n cbe(e);\r\n };\r\n r.onerror = (e) => {\r\n cbe(e);\r\n };\r\n r.send();\r\n }\r\n if (this.dataDB_Barrier.isResolved()){\r\n let t = this.dataDB.transaction([\"data\"], \"readonly\");\r\n let db_request = t.objectStore(\"data\").get(path);\r\n db_request.onsuccess = (ev) => {\r\n if(db_request.result){\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n cb(db_request.result);\r\n } else {\r\n http_get();\r\n }\r\n };\r\n }else{\r\n http_get();\r\n }\r\n }\r\n\r\n load_tile_data_for(source: SourceLayerInfo, tile: Tile, timeindex: number, heightindex: number){\r\n let type = source.layer.layer_type;\r\n let p = this.tile_path(source, tile, heightindex, timeindex);\r\n this.tile_queries.set(p, new TileRequest(source, this.frameCounter, tile.path, heightindex, timeindex));\r\n }\r\n\r\n load_array_data_for(source: SourceLayerInfo, timeindex: number, tilepath: string = \"W\") {\r\n let p = this.array_path(source, timeindex, tilepath);\r\n this.array_queries.set(p, new ArrayRequest(source, this.frameCounter, timeindex, tilepath));\r\n }\r\n\r\n //TODO: add z level selection\r\n get_tile_data(source: SourceLayerInfo, tile: Tile, time: number, height: number): TileData {\r\n if(!source)return;\r\n let hindex = source.resolve_height(height);\r\n let tindex = source.resolve_time(time, time)[0];\r\n return this.get_tile_data_direct(source, tile, tindex, hindex);\r\n }\r\n\r\n get_tile_data_direct(source: SourceLayerInfo, tile: Tile, tindex: number, hindex: number): TileData {\r\n if(!source)return;\r\n if(source.layer.timesteps && this.allow_preload)for(var t = Math.max(tindex - PRELOAD_STEPS, 0); t < Math.min(tindex + PRELOAD_STEPS + 1, source.layer.timesteps.length - 1); t++){\r\n if(t != tindex)this.get_tile_data_internal(source, tile.copy(), t, hindex);\r\n }\r\n return this.get_tile_data_internal(source, tile.copy(), tindex, hindex);\r\n }\r\n\r\n get_tile_data_range(source: SourceLayerInfo, tile: Tile, time: number, height: number): [number, number] {\r\n if(!source)return;\r\n let copied_tile = tile.copy();\r\n let hindex = source.resolve_height(height);\r\n let tindex = source.resolve_time(time, time)[0];\r\n if(copied_tile.path.length > source.layer.max_zoom_level){ \r\n copied_tile = Tile.from_tilepath(copied_tile.path.substr(0, Math.max(1, source.layer.max_zoom_level))); //Shrink down tilepath to max zoomlevel\r\n }\r\n let range;\r\n while(copied_tile.path.length >= 1 && !range){\r\n let tile = this.detailedData.get(this.tile_path(source,copied_tile,hindex,tindex)) as TileData;\r\n range = tile?.value_range;\r\n if(copied_tile.path.length == 1) break;\r\n if(!range) copied_tile = copied_tile.parent()\r\n }\r\n return range;\r\n }\r\n\r\n get_tile_data_internal(source: SourceLayerInfo, tile: Tile, timeindex: number, heightindex: number): TileData {\r\n let req_tile = tile.copy();\r\n if(tile.path.length > source.layer.max_zoom_level){ \r\n tile = Tile.from_tilepath(tile.path.substr(0, Math.max(1, source.layer.max_zoom_level))); //Shrink down tilepath to max zoomlevel\r\n }\r\n let first = true;\r\n while(tile.path.length >= 1){\r\n let path = this.tile_path(source,tile,heightindex,timeindex);\r\n if(this.empty_paths.has(path)){\r\n this.available_queried_elements.add(path);\r\n return;\r\n }\r\n if(this.detailedData.has(path)){\r\n let t = this.detailedData.get(path) as TileData;\r\n let offset = req_tile.posInTile(tile);\r\n t.coord_offset = [offset[0], offset[1]];\r\n t.coord_scale = [offset[2], offset[3]];\r\n if(first)this.available_queried_elements.add(path);\r\n return t;\r\n }else{\r\n if(first || tile.path.length == 1){\r\n this.load_tile_data_for(source, tile.copy(), timeindex, heightindex);\r\n first = false;\r\n } \r\n if(tile.path.length == 1){\r\n break;\r\n }\r\n tile = tile.parent();\r\n }\r\n }\r\n }\r\n\r\n get_array_data_tiled_internal(source: SourceLayerInfo, timeIndex: number, tile: Tile){\r\n if(!source)return;\r\n let req_tile = tile.copy();\r\n let first = true;\r\n if(tile.path.length > source.layer.max_zoom_level){ \r\n tile = Tile.from_tilepath(tile.path.substr(0, Math.max(1, source.layer.max_zoom_level))); //Shrink down tilepath to max zoomlevel\r\n }\r\n while(tile.path.length >= 1){\r\n let path = this.array_path(source, timeIndex, tile.path);\r\n if(this.empty_paths.has(path)){\r\n this.available_queried_elements.add(path);\r\n return;\r\n }\r\n if(this.detailedData.has(path)){\r\n let a = this.detailedData.get(path) as ArrayData;\r\n a.bounds = req_tile.area();\r\n let offset = req_tile.posInTile(tile);\r\n a.coord_scale = [offset[2], offset[3]];\r\n if(first)this.available_queried_elements.add(path);\r\n return a;\r\n }else{\r\n if(first ||tile.path.length == 1){\r\n this.load_array_data_for(source, timeIndex, tile.path);\r\n first= false;\r\n }\r\n if(tile.path.length == 1){\r\n break;\r\n }\r\n tile = tile.parent();\r\n }\r\n }\r\n }\r\n\r\n //TODO: add range finding??\r\n get_array_data_tiled(source: SourceLayerInfo, timeStart: number, timeEnd: number, tile: Tile): ArrayData[] {\r\n //let times = source.resolve_time(timeStart, timeEnd);\r\n let times = Services.TimeService.getTimeTileForLayer([timeStart, timeEnd], source);\r\n let result = []\r\n for(let t of times){\r\n result.push(this.get_array_data_tiled_internal(source, t, tile));\r\n }\r\n return result;\r\n }\r\n\r\n //TODO: add range finding??\r\n get_array_data(source: SourceLayerInfo, timeStart: number, timeEnd: number): ArrayData[] {\r\n let times = source.resolve_time(timeStart, timeEnd);\r\n let result = []\r\n for(var t = times[0]; t <= times[1]; t++){\r\n result.push(this.get_array_data_internal(source, t));\r\n }\r\n return result;\r\n }\r\n\r\n get_array_data_internal(source: SourceLayerInfo, timeindex: number): ArrayData {\r\n if(!source)return;\r\n let path = this.array_path(source, timeindex);\r\n if(this.empty_paths.has(path)){\r\n this.available_queried_elements.add(path);\r\n return;\r\n }\r\n if(this.detailedData.has(path)){\r\n let a = this.detailedData.get(path) as ArrayData;\r\n this.available_queried_elements.add(path);\r\n return a;\r\n }else{\r\n this.load_array_data_for(source, timeindex);\r\n }\r\n }\r\n\r\n //reset the list of queried tiles before drawing a frame, to \r\n reset_queried() {\r\n this.available_queried_elements.clear();\r\n }\r\n\r\n is_complete() {\r\n //this does not cover failures!\r\n return this.tile_queries.size == 0 && this.array_queries.size == 0;\r\n }\r\n\r\n private retrying_independently = false;\r\n load_queried() {\r\n if(this.failed_paths.size > 0 && !this.retrying_independently){\r\n this.retrying_independently = true;\r\n setTimeout(()=>{\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n this.retrying_independently = false;}, 1000);\r\n }\r\n if(this.tiles_loading.size + this.arrays_loading.size >= this.maximum_loading)return;\r\n if(this.available_queried_elements.size + this.tile_queries.size + this.array_queries.size == 0){\r\n this.ratio = [0, 0];\r\n } else {\r\n this.ratio = [this.available_queried_elements.size, (this.available_queried_elements.size + this.tile_queries.size + this.array_queries.size)];\r\n }\r\n let now = this.frameCounter;\r\n let display_time = Services.TimeService.getMeanTime();\r\n let tqs_sorted_local: [string, TileRequest][] = [];\r\n this.tile_queries.forEach((v, k) => {\r\n if(now - v.expirationFrame > this.drop_after || (this.failed_paths.has(k) && !this.failed_paths.get(k).should_retry()) || this.tiles_loading.has(k)){\r\n this.tile_queries.delete(k);\r\n } else {\r\n tqs_sorted_local.push([k, v]);\r\n }\r\n });\r\n tqs_sorted_local = tqs_sorted_local.sort((a, b) => {\r\n let a_: TileRequest = a[1];\r\n let b_: TileRequest = b[1];\r\n let r = b_.tilePath.length - a_.tilePath.length;\r\n if (r == 0)\r\n return Math.abs(b_.time - display_time) - Math.abs(a_.time - display_time)\r\n else\r\n return r;\r\n }); //sort by tile path length, shortest gets queried first (taken from back of list) TODO make easily adjustable\r\n let aqs_sorted_local: [string, ArrayRequest][] = []; \r\n this.array_queries.forEach((v, k) => {\r\n if(now - v.expirationFrame > this.drop_after || (this.failed_paths.has(k) && !this.failed_paths.get(k).should_retry()) || this.arrays_loading.has(k)){\r\n this.array_queries.delete(k);\r\n } else {\r\n aqs_sorted_local.push([k, v]);\r\n }\r\n });\r\n aqs_sorted_local = aqs_sorted_local.sort((a, b) => \r\n Math.abs(b[1].time - display_time) - Math.abs(a[1].time - display_time)\r\n ); //sort by request time, earliest gets queried first.\r\n while (this.tiles_loading.size + this.arrays_loading.size < this.maximum_loading && (tqs_sorted_local.length > 0 || aqs_sorted_local.length > 0)) {\r\n let free_space = this.maximum_loading - this.arrays_loading.size - this.tiles_loading.size;\r\n //start loading an array if there is one to be loaded and there are less than 4 arrays loading or there is more free loading space left than tiles may be requested\r\n if(aqs_sorted_local.length > 0 && (this.arrays_loading.size < 4 || tqs_sorted_local.length < Math.min(4, free_space)))\r\n {\r\n let q = aqs_sorted_local.pop();\r\n this.arrays_loading.add(q[0]);\r\n this.array_queries.delete(q[0]);\r\n this.load_arraybuffer(q[0], (a) => {\r\n let data = new ArrayData();\r\n if(a.byteLength > 0){\r\n let gl = this.gl;\r\n let b = gl.createBuffer();\r\n let a_view = new DataView(a, 0);\r\n data.referencePoint = new UEC(a_view.getFloat64(0, true), a_view.getFloat64(8, true))\r\n gl.bindBuffer(gl.ARRAY_BUFFER, b);\r\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(a, 16), gl.STATIC_DRAW);\r\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\r\n if(q[1].source.layer.layer_type == \"Vector2DPoints\")\r\n data.elements = (a.byteLength - 16) / 24;\r\n else\r\n data.elements = (a.byteLength - 16) / 20;\r\n data.buffer = b;\r\n this.detailedData.set(q[0], data);\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n } else {\r\n this.empty_paths.add(q[0]);\r\n }\r\n this.arrays_loading.delete(q[0]);\r\n this.failed_paths.delete(q[0]);\r\n this.load_queried();\r\n }, \r\n (e) => {\r\n this.arrays_loading.delete(q[0])\r\n if (this.failed_paths.has(q[0]))\r\n this.failed_paths.get(q[0]).new_attempt();\r\n else\r\n this.failed_paths.set(q[0], new FailedRequest(0));\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n this.load_queried();\r\n });\r\n }\r\n //start loading a tile if there is one to be loaded and there are less than 4 tiles loading or there is more free loading space left than arrays may be requested\r\n else if(tqs_sorted_local.length > 0 && (this.tiles_loading.size < 4 || aqs_sorted_local.length < Math.min(4, free_space)))\r\n {\r\n let q = tqs_sorted_local.pop();\r\n this.tiles_loading.add(q[0]);\r\n this.tile_queries.delete(q[0]);\r\n this.load_arraybuffer(q[0], (a) => {\r\n var td = new TileData();\r\n if(a.byteLength > 0){\r\n var gl = this.gl;\r\n var texture = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, texture);\r\n let min = Infinity;\r\n let max = -Infinity;\r\n if(q[1].source.layer.layer_type == \"ColorTiles\"){\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, Services.InitializationService.getTileWidth(), Services.InitializationService.getTileHeight(), 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array(a));\r\n }else{\r\n let floats = new Float32Array(a);\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, Services.InitializationService.getTileWidth(), Services.InitializationService.getTileHeight(), 0, gl.LUMINANCE, gl.FLOAT, floats);\r\n const STEP = 32;\r\n for(var i = 0; i < floats.length; i++){\r\n if(floats[i] < min){\r\n min = floats[i];\r\n }\r\n if(floats[i] > max){\r\n max = floats[i];\r\n }\r\n }\r\n }\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.bindTexture(gl.TEXTURE_2D, null);\r\n td.path = q[0];\r\n td.coord_offset = [0,0];\r\n td.coord_scale = [1,1];\r\n td.texture = texture;\r\n if(min != Infinity && max != -Infinity){\r\n td.value_range = [min, max];\r\n }\r\n this.detailedData.set(q[0], td);\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n } else {\r\n this.empty_paths.add(q[0]);\r\n }\r\n this.tiles_loading.delete(q[0]);\r\n this.failed_paths.delete(q[0]);\r\n this.load_queried();\r\n },\r\n (e) => {\r\n this.tiles_loading.delete(q[0]);\r\n if (this.failed_paths.has(q[0]))\r\n this.failed_paths.get(q[0]).new_attempt();\r\n else\r\n this.failed_paths.set(q[0], new FailedRequest(0)); \r\n Services.AdaptivePerformanceService.RequestRerender();\r\n this.load_queried();\r\n });\r\n }\r\n }\r\n //reset frame counter when no queries are pending, to keep the counter from getting too big.\r\n if(this.array_queries.size + this.tile_queries.size <= 0)this.frameCounter = 0;\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport { Services, ServiceBarrier } from './Services';\r\nimport { LayersChangedEvent } from './RenderLayerService';\r\nimport { KeyDownEvent } from './InteractionService';\r\nimport { SourceLayerInfo } from './SourceInfoService';\r\nimport { map } from '@/d3';\r\n\r\nexport class GlobalTimeRangeChangedEvent extends Event{\r\n public globalMin: number;\r\n public globalMax: number;\r\n public renderLayerRanges: {name: string, min: number, max: number}[];\r\n constructor(min: number, max: number, rlr: {name: string, min: number, max: number}[]){\r\n super(\"GlobalTimeRangeChanged\");\r\n this.globalMin = min;\r\n this.globalMax = max;\r\n this.renderLayerRanges = rlr;\r\n }\r\n}\r\n\r\nexport class CurrentTimeChangedEvent extends Event{\r\n public time_min: number;\r\n public time_max: number;\r\n /** True if the time change came from outside the application (via sync) */\r\n public external: boolean;\r\n /** True if the time change was a result of a drag of the timeslider */\r\n public secondary: boolean;\r\n constructor(min: number, max: number, secondary = false, external = false){\r\n super(\"CurrentTimeChanged\");\r\n this.time_min = min;\r\n this.time_max = max;\r\n this.external = external;\r\n this.secondary = secondary;\r\n }\r\n}\r\n\r\nconst TIMESTEP_COUNT = 1024;\r\n\r\nexport class TimeService extends EventTarget{\r\n\r\n render_layer_ranges: {name: string, min: number, max: number}[] = [];\r\n overall_range: [number, number] = [Infinity, -Infinity];\r\n value_min: number = 0;\r\n value_max: number = 0;\r\n\r\n constructor(){\r\n super();\r\n ServiceBarrier.wait().then(() => {\r\n Services.RenderLayerService.addEventListener(\"LayersChanged\", (e: LayersChangedEvent) => {\r\n this.render_layer_ranges = Services.RenderLayerService.get_visible_renderlayers().map((l) => {\r\n let range = l.getTimeRange();\r\n if(!range) range = [Infinity, -Infinity];\r\n return {name: l.name, min: range[0], max: range[1], layer: l};\r\n });\r\n this.overall_range = this.render_layer_ranges.reduce((a, v) => [Math.min(v.min, a[0]), Math.max(v.max, a[1])], [Infinity, -Infinity]);\r\n if(!isFinite(this.overall_range[0]) || !isFinite(this.overall_range[1]))this.overall_range = [0, 0];\r\n this.value_min = Math.max(this.overall_range[0], this.value_min);\r\n this.value_max = Math.max(this.overall_range[0], this.value_max);\r\n this.value_min = Math.min(this.overall_range[1], this.value_min);\r\n this.value_max = Math.min(this.overall_range[1], this.value_max);\r\n this.dispatchEvent(new GlobalTimeRangeChangedEvent(this.overall_range[0], this.overall_range[1], this.render_layer_ranges));\r\n });\r\n Services.InteractionService.keyDownHandlers.set(\"threedee\", (e: KeyboardEvent) => {\r\n switch(e.key){\r\n case \"Home\":\r\n Services.PlaybackService.stop_playing();\r\n this.moveTimeStart();\r\n Services.PlaybackService.begin_playing();\r\n break;\r\n case \"ArrowLeft\":\r\n this.moveTimeEarlier();\r\n break;\r\n case \"ArrowRight\":\r\n this.moveTimeLater();\r\n break;\r\n case \"End\":\r\n Services.PlaybackService.stop_playing();\r\n this.moveTimeEnd();\r\n break;\r\n case \"ArrowUp\":\r\n Services.PlaybackService.stop_playing();\r\n this.increaseTimeRange();\r\n Services.PlaybackService.begin_playing();\r\n break;\r\n case \"ArrowDown\":\r\n Services.PlaybackService.stop_playing();\r\n this.reduceTimeRange();\r\n Services.PlaybackService.begin_playing();\r\n break;\r\n case \"Space\":\r\n Services.PlaybackService.togglePlaying();\r\n break;\r\n }\r\n });\r\n });\r\n }\r\n\r\n reset(){\r\n this.setCurrentTimeRange(this.overall_range[0], this.overall_range[0]);\r\n }\r\n\r\n moveTimeEarlier(){\r\n let time_distance = this.value_max - this.value_min;\r\n let time_range_step_amount = (this.overall_range[1] - this.overall_range[0]) / TIMESTEP_COUNT;\r\n let time_step_min_new = Math.max((this.value_min - time_range_step_amount), this.overall_range[0]);\r\n let time_step_max_new = time_step_min_new + time_distance;\r\n this.setCurrentTimeRange(time_step_min_new, time_step_max_new);\r\n }\r\n\r\n moveTimeLater(){\r\n let time_distance = this.value_max - this.value_min;\r\n let time_range_step_amount = (this.overall_range[1] - this.overall_range[0]) / TIMESTEP_COUNT;\r\n let time_step_max_new = Math.min((this.value_max + time_range_step_amount), this.overall_range[1]);\r\n let time_step_min_new = time_step_max_new - time_distance;\r\n this.setCurrentTimeRange(time_step_min_new, time_step_max_new);\r\n }\r\n\r\n moveTimeStart(){\r\n let time_distance = this.value_max - this.value_min;\r\n this.setCurrentTimeRange(this.overall_range[0], this.overall_range[0] + time_distance);\r\n }\r\n\r\n moveTimeEnd(){\r\n let time_distance = this.value_max - this.value_min;\r\n this.setCurrentTimeRange(this.overall_range[1] - time_distance, this.overall_range[1]);\r\n }\r\n\r\n increaseTimeRange(){\r\n let time_distance = this.value_max - this.value_min;\r\n let time_range_step_amount = (this.overall_range[1] - this.overall_range[0]) / TIMESTEP_COUNT;\r\n let time_distance_new = Math.min(time_distance + time_range_step_amount, this.overall_range[1] - this.overall_range[0]);\r\n let time_center = this.getMeanTime();\r\n let time_min_new = time_center - (time_distance_new / 2);\r\n let time_max_new = time_center + (time_distance_new / 2);\r\n if(time_min_new < this.overall_range[0]){\r\n let distance = this.overall_range[0] - time_min_new;\r\n time_min_new += distance;\r\n time_max_new += distance;\r\n }\r\n if(time_max_new > this.overall_range[1]){\r\n let distance = time_max_new - this.overall_range[1];\r\n time_max_new -= distance;\r\n time_min_new -= distance;\r\n }\r\n this.setCurrentTimeRange(time_min_new, time_max_new);\r\n }\r\n\r\n reduceTimeRange(){\r\n let time_distance = this.value_max - this.value_min;\r\n let time_range_step_amount = (this.overall_range[1] - this.overall_range[0]) / TIMESTEP_COUNT;\r\n let time_distance_new = Math.max(time_distance - time_range_step_amount, 0);\r\n let time_center = this.getMeanTime();\r\n this.setCurrentTimeRange(time_center - (time_distance_new / 2), time_center + (time_distance_new / 2));\r\n }\r\n\r\n getMeanTime(): number{\r\n return (this.value_max + this.value_min) / 2;\r\n }\r\n\r\n setCurrentTimeRange(min: number, max: number, secondary = false, external = false){\r\n let real_min = Math.min(min, max);\r\n let real_max = Math.max(min, max);\r\n this.value_min = real_min;\r\n this.value_max = real_max;\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n this.dispatchEvent(new CurrentTimeChangedEvent(this.value_min, this.value_max, secondary, external));\r\n //this.dispatchEvent(new GlobalTimeRangeChangedEvent(this.overall_range[0], this.overall_range[1], this.render_layer_ranges));\r\n }\r\n\r\n getOverallTimeRange(): [number, number]{\r\n return [this.overall_range[0], this.overall_range[1]];\r\n }\r\n\r\n getCurrentTimeRange(): [number, number]{\r\n return [this.value_min, this.value_max];\r\n }\r\n\r\n getTimeTileForLayer(selection: [number, number], layer: SourceLayerInfo): number[]{\r\n if(!selection || layer.layer.timerange == null){\r\n return [0];\r\n }\r\n\r\n selection[1] = Math.min(selection[1], layer.layer.timerange[1]);\r\n selection[0] = Math.max(selection[0], layer.layer.timerange[0]);\r\n\r\n function split_3(time: [number, number]): [[number, number],[number, number],[number, number]] {\r\n let range = time[1] - time[0];\r\n let one_third = range / 3;\r\n let first:[number, number] = [time[0], time[0] + one_third];\r\n let second:[number, number] = [first[1], first[1] + one_third];\r\n let third:[number, number] = [second[1], time[1]];\r\n return [first, second, third]\r\n }\r\n\r\n function range_len(range: [number, number]): number{\r\n return range[1] - range[0];\r\n }\r\n\r\n function range_contains(outer: [number, number], inner: [number, number]): boolean{\r\n return outer[0] <= inner[0] && outer[1] >= inner[1];\r\n }\r\n\r\n function range_intersects(a: [number, number], b: [number, number]): boolean{\r\n return (a[1] > b[0]) && (a[0] < b[1])\r\n }\r\n\r\n function encode_timetile(selection: [number, number], total: [number, number], iteration_limit: number): number{\r\n let selected_range = total;\r\n let path = 0;\r\n for(let i = 0; i < iteration_limit; i++){\r\n if(range_len(selected_range) < 3){\r\n return path;\r\n }\r\n let ranges = split_3(selected_range)\r\n let index = ranges.findIndex((subrange, index) => range_contains(subrange, selection));\r\n let range = ranges[index];\r\n if(index != -1){\r\n selected_range = range;\r\n path += (index + 1) * Math.pow(4,i);\r\n }else{\r\n return path;\r\n }\r\n }\r\n return path\r\n }\r\n\r\n function get_timetiles_by_limit(selection: [number, number], total: [number, number], iteration_limit: number, tilecount_limit: number): number[]{\r\n let ranges: {range: [number, number], path: number}[] = [{range: total, path: 0}];\r\n for(let i = 0; i < iteration_limit; i++){\r\n let new_ranges = ranges.map(r => {\r\n let split = split_3(r.range).map((range, index) => ({range, index}));\r\n split = split.filter(sr => range_len(sr.range) > 3 && range_intersects(selection, sr.range));\r\n let mapped = split.map(sr => ({range: sr.range, path: r.path + (sr.index + 1 * Math.pow(4,i))}));\r\n return mapped;\r\n }).flat();\r\n \r\n if(new_ranges.length == 0){//No ranges fit\r\n break;\r\n }else if(new_ranges.length > tilecount_limit){ //More ranges than we want\r\n //console.log(\"new ranges too much\", new_ranges);\r\n break;\r\n }else{\r\n ranges = new_ranges;\r\n }\r\n }\r\n return ranges.map(r => r.path);\r\n }\r\n\r\n let max_time_level = layer.layer.get_parameter_int(\"max_time_level\") || 1;\r\n\r\n //let path = encode_timetile(selection, layer.layer.timerange, max_time_level);\r\n /*if(path != 0){\r\n console.log(\"Path: \", path);\r\n }*/\r\n //return [path];\r\n let paths = get_timetiles_by_limit(selection, layer.layer.timerange, max_time_level, 2);\r\n //console.log(\"Paths\", paths);\r\n if(paths.length == 0){\r\n return [0];\r\n }else{\r\n return paths;\r\n }\r\n }\r\n}","import { Services } from \"@/services/Services\";\r\nimport { RenderLayer } from \"./RenderLayer\";\r\nimport { UECArea } from \"./tile\";\r\n\r\nexport type SerializedRenderGroup = {\r\n name: string,\r\n id: number,\r\n children: number[],\r\n}\r\n\r\nexport class RenderGroup{\r\n public name: string;\r\n public id: number;\r\n public children: number[];\r\n\r\n constructor(name: string, id?: number){\r\n this.name = name;\r\n this.children = [];\r\n if(id){\r\n this.id = id;\r\n }else{\r\n this.id = Services.UIDService.getNextTopicId(\"layers\");\r\n }\r\n }\r\n\r\n add(id: number){\r\n this.children.push(id);\r\n }\r\n\r\n remove(id: number){\r\n this.children = this.children.filter(l => l != id);\r\n }\r\n\r\n setVisibility(visible: boolean){\r\n this.children.forEach(l => {\r\n if(Services.RenderLayerService.isGroup(l))\r\n Services.RenderLayerService.getGroupById(l).setVisibility(visible);\r\n else if(Services.RenderLayerService.isLayer(l))\r\n Services.RenderLayerService.getLayerById(l).visible = visible;\r\n });\r\n }\r\n\r\n getAnyVisible(): boolean {\r\n return this.children.reduce((v, l) => {\r\n if(Services.RenderLayerService.isGroup(l))\r\n return v || Services.RenderLayerService.getGroupById(l).getAnyVisible();\r\n else if(Services.RenderLayerService.isLayer(l))\r\n return v || Services.RenderLayerService.getLayerById(l).visible;\r\n }, false);\r\n }\r\n\r\n getAllVisible(): boolean {\r\n return this.children.reduce((v, l) => {\r\n if(Services.RenderLayerService.isGroup(l))\r\n return v && Services.RenderLayerService.getGroupById(l).getAllVisible();\r\n else if(Services.RenderLayerService.isLayer(l))\r\n return v && Services.RenderLayerService.getLayerById(l).visible;\r\n }, true);\r\n }\r\n\r\n getLayerInstances(): RenderLayer[]{\r\n return this.children.filter(l => Services.RenderLayerService.isLayer(l)).map(l => Services.RenderLayerService.getLayerById(l));\r\n }\r\n\r\n getGroupInstances(): RenderGroup[]{\r\n return this.children.filter(g => Services.RenderLayerService.isGroup(g)).map(g => Services.RenderLayerService.getGroupById(g));\r\n }\r\n\r\n hasChild(id: number): Boolean {\r\n return this.children.some(c => {\r\n if(c == id)return true;\r\n if(Services.RenderLayerService.isGroup(c))\r\n return Services.RenderLayerService.getGroupById(c).hasChild(id);\r\n return false;\r\n })\r\n }\r\n\r\n getExtent(): UECArea{\r\n let extents: UECArea[] = [];\r\n for(let l of this.getLayerInstances()){\r\n let e = l.getExtent();\r\n if(e != null){\r\n extents.push(e);\r\n }\r\n }\r\n for(let g of this.getGroupInstances()){\r\n let e = g.getExtent();\r\n if(e != null){\r\n extents.push(e);\r\n }\r\n }\r\n if(extents.length > 0){\r\n let base_extent = extents[0];\r\n for(let i = 1; i < extents.length; i++){\r\n base_extent = UECArea.fromPoints([base_extent.topLeft(), base_extent.bottomRight(), extents[i].topLeft(), extents[i].bottomRight()]);\r\n }\r\n console.log(\"base_extent\", base_extent);\r\n return base_extent;\r\n }else{\r\n return null;\r\n }\r\n }\r\n\r\n getVerticalBoundsWorldspace(): [number, number]{\r\n let bounds: [number, number][] = [];\r\n for(let l of this.getLayerInstances()){\r\n let b = l.getVerticalBoundsWorldspace();\r\n if(b != null){\r\n bounds.push(b);\r\n }\r\n }\r\n for(let g of this.getGroupInstances()){\r\n let b = g.getVerticalBoundsWorldspace();\r\n if(b != null){\r\n bounds.push(b);\r\n }\r\n }\r\n if(bounds.length > 0){\r\n let base_bounds = bounds[0];\r\n for(let i = 1; i < bounds.length; i++){\r\n base_bounds[0] = Math.min(base_bounds[0], bounds[i][0]);\r\n base_bounds[1] = Math.max(base_bounds[1], bounds[i][1]);\r\n }\r\n console.log(\"vertical_bounds\", base_bounds);\r\n return base_bounds;\r\n }else{\r\n return null;\r\n }\r\n }\r\n\r\n getVerticalBoundsNative(): [number, number]{\r\n let bounds: [number, number][] = [];\r\n for(let l of this.getLayerInstances()){\r\n let b = l.getVerticalBoundsNative();\r\n if(b != null){\r\n bounds.push(b);\r\n }\r\n }\r\n for(let g of this.getGroupInstances()){\r\n let b = g.getVerticalBoundsNative();\r\n if(b != null){\r\n bounds.push(b);\r\n }\r\n }\r\n if(bounds.length > 0){\r\n let base_bounds = bounds[0];\r\n for(let i = 1; i < bounds.length; i++){\r\n base_bounds[0] = Math.min(base_bounds[0], bounds[i][0]);\r\n base_bounds[1] = Math.max(base_bounds[1], bounds[i][1]);\r\n }\r\n console.log(\"vertical_bounds_native\", base_bounds);\r\n return base_bounds;\r\n }else{\r\n return null;\r\n }\r\n }\r\n\r\n index(id){\r\n return this.children.indexOf(id);\r\n }\r\n\r\n down(id: number){\r\n let index = this.index(id);\r\n if(index != this.children.length -1){\r\n let next_elem = this.children[index + 1];\r\n this.children[index + 1] = id;\r\n this.children[index] = next_elem;\r\n }\r\n Services.RenderLayerService.raiseLayersChanged();\r\n }\r\n\r\n up(layer_id: number){\r\n let index = this.index(layer_id);\r\n if(index != 0){\r\n let prev_elem = this.children[index - 1];\r\n this.children[index - 1] = layer_id;\r\n this.children[index] = prev_elem;\r\n }\r\n Services.RenderLayerService.raiseLayersChanged();\r\n }\r\n \r\n isFirstLayer(layer_id: number){\r\n return this.index(layer_id) == 0;\r\n }\r\n\r\n isLastLayer(layer_id: number){\r\n return this.index(layer_id) == (this.children.length - 1);\r\n }\r\n\r\n serialize(): SerializedRenderGroup{\r\n return ({\r\n \"name\": this.name,\r\n \"id\": this.id,\r\n \"children\": this.children,\r\n });\r\n }\r\n\r\n static deserialize(serialized : SerializedRenderGroup): RenderGroup{\r\n let rg = new RenderGroup(serialized.name);\r\n rg.id = serialized.id;\r\n for(let id of serialized.children){\r\n rg.add(id);\r\n }\r\n return rg;\r\n }\r\n\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport { RenderGroup } from '@/modules/RenderGroup';\r\nimport { UEC, UECArea } from '@/modules/tile';\r\nimport {RenderLayer, RenderLayerFactory} from '../modules/RenderLayer';\r\nimport { ServiceBarrier, Services } from './Services';\r\nimport { SourceLayerInfo } from './SourceInfoService';\r\n\r\nexport class SelectedLayerChangedEvent extends Event{\r\n selectedLayer: RenderLayer;\r\n constructor(layer: RenderLayer){\r\n super(\"SelectedLayerChanged\");\r\n this.selectedLayer = layer;\r\n }\r\n}\r\n\r\nexport class LayersChangedEvent extends Event{\r\n layers: RenderLayer[];\r\n new_layer: RenderLayer;\r\n changed_layer: RenderLayer;\r\n deleted_layer: RenderLayer;\r\n constructor(layers: RenderLayer[]){\r\n super(\"LayersChanged\");\r\n this.layers = layers;\r\n }\r\n}\r\n\r\nexport class RenderLayerService extends EventTarget{\r\n public layers: Map = new Map();\r\n public groups: Map = new Map();\r\n public default_group: RenderGroup;\r\n public selected_group: RenderGroup;\r\n public selected_layer_id: number = null;\r\n public selected_layer: RenderLayer = null;\r\n\r\n private vertical_bounds_world_space: [number, number] = [1, 1];\r\n\r\n constructor(){\r\n super();\r\n this.default_group = new RenderGroup(\"Default\", -1);\r\n this.selected_group = this.default_group;\r\n this.groups.set(this.default_group.id, this.default_group);\r\n }\r\n\r\n public addLayer(layer: RenderLayer, group?: RenderGroup){\r\n if(!group){\r\n group = this.selected_group;\r\n }\r\n if(layer.id == null){\r\n layer.id = Services.UIDService.getNextTopicId(\"layers\");\r\n }\r\n this.layers.set(layer.id, layer);\r\n group.add(layer.id);\r\n this.raiseLayersChanged();\r\n }\r\n\r\n public addGroup(group: RenderGroup, parentGroupId?: number){\r\n this.groups.set(group.id, group);\r\n let parent_group = this.selected_group;\r\n if(parentGroupId){\r\n parent_group = this.groups.get(parentGroupId) || this.selected_group;\r\n }\r\n parent_group.add(group.id);\r\n this.raiseLayersChanged();\r\n }\r\n\r\n public replaceLayer(oldLayer: RenderLayer, newLayer: RenderLayer){\r\n newLayer.id = oldLayer.id;\r\n this.layers.set(oldLayer.id, newLayer);\r\n let is_selected = this.getSelectedLayer() == oldLayer;\r\n this.raiseLayersChanged();\r\n if(is_selected){\r\n this.selectLayer(newLayer);\r\n }\r\n }\r\n\r\n public selectLayer(layer: RenderLayer){\r\n this.selected_layer = layer;\r\n this.selected_layer_id = layer.id;\r\n this.dispatchEvent(new SelectedLayerChangedEvent(this.selected_layer));\r\n }\r\n \r\n public selectGroup(group: RenderGroup){\r\n this.selected_group = group;\r\n }\r\n\r\n public isGroup(id: number): boolean{\r\n return this.groups.has(id);\r\n }\r\n\r\n public isLayer(id: number): boolean{\r\n return this.layers.has(id);\r\n }\r\n\r\n public getGroups(): RenderGroup[]{\r\n return [...this.groups.values()];\r\n }\r\n\r\n public getLayers(): RenderLayer[]{\r\n return [...this.layers.values()];\r\n }\r\n\r\n //TODO: calculate actual world space peaks from all layers, ideally only on layer updates\r\n get_euclidian_global_height_range(): [number, number]{\r\n let r: [number, number] = this.getLayers().reduce((c, l) => {\r\n if(l.visible){\r\n let r = l.getVerticalBoundsWorldspace();\r\n return[Math.min(c[0], r[0]), Math.max(c[1], r[1])];\r\n }\r\n return c;\r\n }, [Infinity, -Infinity]);\r\n if(!isFinite(r[0]) || !isFinite(r[1]))return [0.9, 1.1];\r\n return r;\r\n }\r\n\r\n getGlobalHeightRanges(): [number, number]{\r\n let ranges: [number, number] = [Infinity, -Infinity];\r\n for(let l of this.getLayers()){\r\n if(l.source.slots.hasOwnProperty(\"displacement\")){\r\n let slot = l.source.slots[\"displacement\"];\r\n if(slot && slot.source && slot.source.layer && slot.source.layer.datarange){\r\n let slot_zrange = slot.source.layer.datarange;\r\n ranges[0] = Math.min(ranges[0], slot_zrange[0]);\r\n ranges[1] = Math.max(ranges[1], slot_zrange[1]);\r\n }\r\n }else{\r\n for(let slot of Object.values(l.source.slots)){\r\n if(slot && slot.source && slot.source.layer && slot.source.layer.zrange){\r\n let slot_zrange = slot.source.layer.zrange;\r\n ranges[0] = Math.min(ranges[0], slot_zrange[0]);\r\n ranges[1] = Math.max(ranges[1], slot_zrange[1]);\r\n }\r\n }\r\n }\r\n }\r\n return ranges;\r\n /*let r: [number, number] = this.layers.reduce((c, l) => {\r\n if(l.visible){\r\n let r = l.getVerticalBoundsNative();\r\n return[Math.min(c[0], r[0]), Math.max(c[1], r[1])];\r\n }\r\n return c;\r\n }, [Infinity, -Infinity]);\r\n if(!isFinite(r[0]) || !isFinite(r[1]))return [0.9, 1.1];\r\n return r;*/\r\n }\r\n\r\n getGlobalExtent(): UECArea{\r\n //let area = new UECArea(new UEC(0,0), new UEC(0,0));\r\n let area = this.selected_layer.getExtent();\r\n for(let l of this.getLayers()){\r\n if(l.getExtent() != null){\r\n area = UECArea.fromPoints([\r\n area.topLeft(),\r\n area.bottomRight(),\r\n l.getExtent().topLeft(),\r\n l.getExtent().bottomRight()\r\n ]);\r\n }\r\n }\r\n return area;\r\n }\r\n\r\n get_visible_renderlayers(): RenderLayer[] {\r\n return this.getLayers().filter(x => x.visible);\r\n }\r\n\r\n\r\n layerDown(layer: RenderLayer){\r\n this.groupForLayer(layer).down(layer.id);\r\n }\r\n\r\n layerUp(layer: RenderLayer){\r\n this.groupForLayer(layer).up(layer.id);\r\n }\r\n \r\n isFirstLayer(layer: RenderLayer){\r\n return this.groupForLayer(layer).isFirstLayer(layer.id);\r\n }\r\n\r\n isLastLayer(layer: RenderLayer){\r\n return this.groupForLayer(layer).isLastLayer(layer.id);\r\n }\r\n\r\n isSelectedLayer(layer: RenderLayer){\r\n return layer == this.selected_layer;\r\n }\r\n\r\n getSelectedLayer(): RenderLayer{\r\n return this.selected_layer;\r\n }\r\n\r\n setSourceOnLayer(layer: RenderLayer, source_slot_name: string, source: SourceLayerInfo){\r\n if(!layer)return;\r\n //Todo: Serialize layer, change slot path to what is in source, replace layer with deserialized layer.\r\n let serialized = Services.SerializationService.serializeRenderLayer(layer);\r\n let slot_index = serialized.slots.findIndex(s => s.slot == source_slot_name);\r\n if(slot_index >= 0){\r\n if(!!source){\r\n serialized.slots[slot_index].path = source.getPath();\r\n }else{\r\n serialized.slots.splice(slot_index,1); //Otherwise remove slot from serialized layer\r\n }\r\n let deserialized = Services.SerializationService.deserializeRenderLayer(serialized);\r\n //Reset colormap scaling if unit different\r\n for(let slot of serialized.slots){\r\n if(deserialized.source.slots[slot.slot].source?.layer?.unit != layer.source.slots[slot.slot].source?.layer?.unit){\r\n let colormapfilter = deserialized.filterPipeline.find(f => f.name == \"colormap\");\r\n if(colormapfilter){\r\n colormapfilter.parameters[\"colormap\"].executeAction(\"Reset\");\r\n }\r\n }\r\n }\r\n this.replaceLayer(layer, deserialized);\r\n }else{\r\n //console.log(`Slot ${source_slot_name} does not exist on layer ${layer.name}, options are`, serialized.slots.map(s => s.slot));\r\n }\r\n }\r\n\r\n deleteLayer(layer: RenderLayer){\r\n this.layers.delete(layer.id);\r\n if(this.layers.size == 0){\r\n this.selected_layer = null;\r\n this.selected_layer_id = null;\r\n this.dispatchEvent(new SelectedLayerChangedEvent(null));\r\n } else if(this.selected_layer.id == layer.id){\r\n this.selected_layer = this.layers[0];\r\n this.selected_layer_id = 0;\r\n this.dispatchEvent(new SelectedLayerChangedEvent(this.selected_layer));\r\n }\r\n this.groupForLayer(layer)?.remove(layer.id);\r\n this.raiseLayersChanged();\r\n }\r\n\r\n deleteGroup(group: RenderGroup, deleteContents: boolean = false){\r\n let parent = this.groupForId(group.id);\r\n if(!deleteContents){\r\n parent.remove(group.id);\r\n for(let id of group.children){\r\n parent.add(id);\r\n }\r\n this.groups.delete(group.id);\r\n }else{\r\n parent.remove(group.id);\r\n for(let g of group.getGroupInstances()){\r\n this.deleteGroup(g, true);\r\n }\r\n for(let l of group.getLayerInstances()){\r\n this.deleteLayer(l);\r\n }\r\n this.groups.delete(group.id);\r\n }\r\n this.raiseLayersChanged();\r\n }\r\n\r\n groupForLayer(layer: RenderLayer): RenderGroup{\r\n return this.getGroups().find(g => g.children.some(l => l == layer.id));\r\n }\r\n\r\n groupForId(id: number): RenderGroup{\r\n return this.getGroups().find(g => g.children.some(l => l == id));\r\n }\r\n\r\n getLayerById(id){\r\n return this.layers.get(id);\r\n }\r\n\r\n getGroupById(id){\r\n return this.groups.get(id);\r\n }\r\n\r\n raiseLayersChanged(){\r\n this.dispatchEvent(new LayersChangedEvent([...this.layers.values()]));\r\n }\r\n}\r\n","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport {Services} from './Services';\r\nimport { Barrier } from '../modules/barrier';\r\nimport { UEC, UECArea } from '../modules/tile';\r\nimport { AwaitableDelay } from '@/modules/awaitable_delay';\r\n\r\nexport class Source {\r\n public instance_name: string;\r\n public layers: SourceLayer[];\r\n public category: string;\r\n public attribution: string;\r\n}\r\n\r\nexport class SourceLayer{\r\n public name: string;\r\n public long_name: string;\r\n public unit: string;\r\n public layer_type: string;\r\n public timesteps: number[];\r\n public timerange: [number, number];\r\n public zsteps: number[];\r\n public zrange: [number, number];\r\n public datarange: [number, number];\r\n public max_zoom_level: number;\r\n public extent: UECArea;\r\n public default_overlay: string;\r\n public parameters: {[parameter_name: string]: {[type_name: string]: any}};\r\n\r\n get_time_limits(): [number, number] {\r\n return this.timerange\r\n }\r\n\r\n get_parameter_int(name: string):any{\r\n let param = this.parameters[name];\r\n if(param)\r\n return param[\"Int\"];\r\n }\r\n\r\n get_parameter(name: string): any{\r\n let param = this.parameters[name];\r\n if(param){\r\n param[Object.keys(param)[0]]\r\n }\r\n }\r\n}\r\n\r\n\r\nexport class SourceLayerInfo{\r\n public instance_name: string;\r\n public layer_name: string;\r\n public layer: SourceLayer;\r\n public source: Source;\r\n\r\n constructor(source: Source, layer: SourceLayer){\r\n this.instance_name = source.instance_name;\r\n this.layer_name = layer.name;\r\n this.layer = layer;\r\n this.source = source;\r\n }\r\n\r\n resolve_time(start: number, end: number): [number, number]{\r\n if(!this.layer.timerange || !this.layer.timesteps)return [0, 0];\r\n if(end < this.layer.timerange[0])[0, 0]\r\n if(start > this.layer.timerange[1])return[this.layer.timesteps.length - 1, this.layer.timesteps.length - 1];\r\n let starti = this.layer.timesteps.findIndex(v => v >= start);\r\n if(starti == -1){\r\n return [this.layer.timesteps.length - 1, this.layer.timesteps.length - 1];\r\n }else{\r\n let endi = this.layer.timesteps.findIndex(v => v >= end);\r\n if(endi == -1){\r\n endi = this.layer.timesteps.length - 1;\r\n }\r\n if(starti > 0)starti -= 1;\r\n return [starti, endi];\r\n }\r\n }\r\n\r\n resolve_height(h: number): number {\r\n if(!this.layer.zrange || !this.layer.zsteps)return 0;\r\n if(h < this.layer.zrange[0])return 0;\r\n if(h > this.layer.zrange[1])return this.layer.zsteps.length - 1;\r\n let zi = this.layer.zsteps.findIndex(v => v >= h);\r\n if(zi == -1) return this.layer.zsteps.length - 1;\r\n return zi;\r\n }\r\n\r\n getPath(): string {\r\n return this.instance_name + \"/\" + this.layer_name;\r\n }\r\n\r\n public static pathForSourceAndLayer(source: Source, layer: SourceLayer){\r\n return source.instance_name + \"/\" + layer.layer_type;\r\n }\r\n}\r\n\r\nexport class SourceStatus{\r\n public name: string;\r\n public status: \"Loading\" | \"Loaded\" | \"Error\";\r\n public error_message: string;\r\n\r\n static fromJSONObject(jobj: any): SourceStatus{\r\n let status = new SourceStatus();\r\n status.name = jobj[0];\r\n let status_entry = jobj[1];\r\n if(status_entry){\r\n if(status_entry == \"Loaded\"){\r\n status.status = \"Loaded\";\r\n }else if(status_entry == \"Loading\"){\r\n status.status = \"Loading\";\r\n }else if(status_entry[\"Error\"]){\r\n status.status = \"Error\";\r\n status.error_message = status_entry[\"Error\"];\r\n }else{\r\n status.status = \"Error\";\r\n status.error_message = \"Received incompatible status type \" + JSON.stringify(status_entry);\r\n }\r\n }else{\r\n status.status = \"Error\";\r\n status.error_message = \"No status received for source\";\r\n }\r\n return status;\r\n }\r\n\r\n public getError(){\r\n return this.error_message;\r\n }\r\n}\r\n\r\nexport class SourceInfoService{\r\n private status_entries: Map = new Map();\r\n private everything_loaded: boolean = false;\r\n\r\n private source_layer_infos: SourceLayerInfo[] = [];\r\n private source_list: Source[] = [];\r\n public source_barrier: Barrier;\r\n\r\n private loading_interval_handle = null;\r\n\r\n constructor(){\r\n this.source_barrier = new Barrier();\r\n //Load the source list just now\r\n setTimeout(() => this.refresh_status_entries().then(() => {}),50);\r\n //And every 10 seconds until everything is loaded\r\n this.loading_interval_handle = setInterval(() => {\r\n this.refresh_status_entries().then(() => {});\r\n if(this.everythingLoaded()){\r\n clearInterval(this.loading_interval_handle);\r\n }\r\n }, 10 * 1000);\r\n }\r\n\r\n everythingLoaded(): boolean{\r\n return this.everything_loaded;\r\n }\r\n\r\n async wait_for_layers_to_be_available(paths: string[]){\r\n while(paths.some(p => !Services.SourceInfoService.get_source_layer_info_by_path(p))){\r\n //console.log(\"Still waiting for layers: \", paths.filter(p => !Services.SourceInfoService.get_source_layer_info_by_path(p)));\r\n await AwaitableDelay(1000);\r\n await Services.SourceInfoService.refresh_status_entries();\r\n }\r\n }\r\n\r\n async refresh_status_entries(){\r\n let statuslist: any[] = await fetch(Services.InitializationService.SERVER_URL + \"/\" + Services.InitializationService.STATUSLIST_URL).then(r => r.json());\r\n let everything_loaded = true;\r\n for(let statusproto of statuslist){\r\n let status = SourceStatus.fromJSONObject(statusproto);\r\n if(this.status_entries.has(status.name)){\r\n let old_status = this.status_entries.get(status.name);\r\n if(old_status.status == \"Loading\" && status.status == \"Loaded\"){\r\n await this.load_source_info(status.name);\r\n }\r\n }else{\r\n if(status.status == \"Loaded\"){\r\n await this.load_source_info(status.name);\r\n }\r\n }\r\n this.status_entries.set(status.name, status);\r\n if(status.status == \"Loading\"){\r\n everything_loaded = false;\r\n }\r\n };\r\n this.everything_loaded = everything_loaded;\r\n }\r\n\r\n async load_source_info(sourcename: string){\r\n let source_info_proto = await fetch(Services.InitializationService.SERVER_URL + \"/\" + Services.InitializationService.SOURCEINFO_URL + \"/\" + sourcename).then(r => r.json());\r\n let source: Source = Object.assign(new Source(), source_info_proto);\r\n source.layers = source.layers.map((layer: SourceLayer) => {\r\n layer = Object.assign(new SourceLayer(), layer);\r\n if(layer.extent){\r\n layer.extent.position = UEC.from_ueclike(layer.extent.position);\r\n layer.extent.extent = UEC.from_ueclike(layer.extent.extent);\r\n layer.extent = new UECArea(layer.extent.position, layer.extent.extent);\r\n }\r\n return layer;\r\n });\r\n source.layers.sort((a,b) => a.name.localeCompare(b.name));\r\n this.source_list.push(source);\r\n this.source_list.sort((a,b) => a.instance_name.localeCompare(b.instance_name));\r\n for(let layer of source.layers){\r\n this.source_layer_infos.push(new SourceLayerInfo(source, layer));\r\n }\r\n this.source_layer_infos.sort((a,b) => a.getPath().localeCompare(b.getPath()));\r\n this.source_barrier.resolve();\r\n }\r\n\r\n getBarrier(): Barrier{\r\n return this.source_barrier;\r\n }\r\n\r\n get_source_layer_info_by_path(path: string){\r\n return this.source_layer_infos.find(sli => sli.getPath() == path);\r\n }\r\n\r\n get_all_source_layer_infos(){\r\n return this.source_layer_infos;\r\n }\r\n\r\n get_all_status_infos(){\r\n return [... this.status_entries.values()];\r\n }\r\n\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { UEC } from '../modules/tile';\r\nimport { RenderLayer } from '../modules/RenderLayer';\r\nimport { Vec3 } from '../modules/vecmat';\r\nimport { ServiceBarrier, Services } from './Services';\r\nimport { SourceLayerInfo } from './SourceInfoService';\r\nimport { LayersChangedEvent } from './RenderLayerService';\r\n\r\nexport class SerializedOverlay {\r\n location: [number, number, number];\r\n information: [number, number, number, number];\r\n}\r\n\r\nexport class Overlay{\r\n public location: UEC;\r\n public height: number;\r\n public screen_position: Vec3;\r\n public layer: RenderLayer;\r\n public information: [number, number, number, number];\r\n public id: number;\r\n public unit: string;\r\n public hovered: boolean;\r\n public component: string;\r\n public get sourcelayerinfo():SourceLayerInfo{\r\n if(this.layer.source){\r\n return (this.layer.source.slots[\"data0\"] || this.layer.source.slots[\"points\"]).source;\r\n }else{\r\n return null;\r\n }\r\n }\r\n\r\n constructor(location: UEC, height: number, layer: RenderLayer, information: [number, number, number, number], id: number){\r\n this.location = location;\r\n this.height = height;\r\n this.layer = layer;\r\n this.information = information;\r\n this.unit = layer.unit;\r\n this.id = id;\r\n this.component = layer.overlayHint;\r\n this.updateScreenPosition();\r\n Services.GLService.addEventListener(\"FrameDone\", () => this.updateScreenPosition());\r\n }\r\n\r\n public updateScreenPosition(){\r\n this.screen_position = Services.PositionService.UECHeightToScreenPixels(\r\n this.location,\r\n this.layer.source.applyScaling(this.height)\r\n ).toVec3();\r\n }\r\n\r\n public createOverlay() {\r\n\r\n }\r\n\r\n serialize(): SerializedOverlay{\r\n let r = new SerializedOverlay();\r\n r.location = [this.location.x, this.location.y, this.height];\r\n r.information = this.information;\r\n return r;\r\n }\r\n}\r\n\r\nexport class OverlaysChangedEvent extends Event{\r\n public overlays: Overlay[] = [];\r\n constructor(overlays: Overlay[]){\r\n super(\"OverlaysChanged\");\r\n this.overlays = overlays;\r\n }\r\n}\r\n\r\nexport class OverlayService extends EventTarget{\r\n\r\n constructor(){\r\n super();\r\n ServiceBarrier.wait().then(() => {\r\n Services.RenderLayerService.addEventListener(\"LayersChanged\", (e: LayersChangedEvent) => {\r\n let to_delete = [];\r\n for(let overlay of this.overlays){\r\n if(e.layers.indexOf(overlay.layer) == -1){\r\n to_delete.push(overlay);\r\n }\r\n } \r\n for(let overlay of to_delete){\r\n this.removeOverlay(overlay);\r\n }\r\n });\r\n });\r\n }\r\n\r\n public overlays: Overlay[] = [];\r\n private next_overlay_id = 1;\r\n\r\n public addOverlay(location: UEC, height: number, layer: RenderLayer, information: [number, number, number, number]): number{\r\n let overlay_id = this.next_overlay_id++;\r\n this.overlays.push(new Overlay(location,height,layer,information, overlay_id));\r\n this.dispatchEvent(new OverlaysChangedEvent(this.overlays));\r\n return overlay_id;\r\n }\r\n \r\n public addCurrentLayerOverlay(): number{ \r\n if(!Services.LayerMetadataService.isUpToDate)return;\r\n let overlay_id = this.next_overlay_id++;\r\n this.overlays.push(new Overlay(\r\n Services.LayerMetadataService.coord,\r\n Services.LayerMetadataService.z,\r\n Services.RenderLayerService.getSelectedLayer(),\r\n [\r\n Services.LayerMetadataService.value.x1,\r\n Services.LayerMetadataService.value.x2,\r\n Services.LayerMetadataService.value.x3,\r\n Services.LayerMetadataService.value.x4\r\n ],\r\n overlay_id\r\n ));\r\n this.dispatchEvent(new OverlaysChangedEvent(this.overlays));\r\n return overlay_id;\r\n }\r\n\r\n public removeOverlay(overlay: Overlay){\r\n var index = this.overlays.indexOf(overlay);\r\n if (index !== -1) this.overlays.splice(index, 1);\r\n this.dispatchEvent(new OverlaysChangedEvent(this.overlays));\r\n }\r\n\r\n public getOverlayById(id: number){\r\n return this.overlays.find(overlay => overlay.id == id);\r\n }\r\n\r\n public getOverlaysByLayer(layer: RenderLayer){\r\n return this.overlays.filter(overlay => overlay.layer.id == layer.id);\r\n }\r\n\r\n public getOverlays(): Overlay[]{\r\n return this.overlays;\r\n }\r\n}\r\n","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nexport class DialogBoxEvent extends Event{\r\n public eventType: \"open\" | \"close\";\r\n public box: DialogBox;\r\n public arguments: any;\r\n public id: string;\r\n constructor(mode, id, popup, args?){\r\n super({\r\n \"open\": \"DialogBoxOpen\",\r\n \"close\": \"DialogBoxClose\",\r\n \"focus\": \"DialogBoxFocus\"\r\n }[mode]);\r\n this.eventType = mode;\r\n this.box = popup;\r\n this.arguments = args;\r\n this.id = id;\r\n }\r\n}\r\n\r\nexport class SerializedDialog{\r\n name: String;\r\n\r\n pos_x: number;\r\n pos_y: number;\r\n pos_z: number;\r\n\r\n contained_component: string;\r\n reference_transform: string;\r\n \r\n title: string;\r\n size_x: number;\r\n size_y: number;\r\n}\r\n\r\nexport class DialogBox {\r\n public pos_x: number;\r\n public pos_y: number;\r\n public pos_z: number;\r\n\r\n public containedComponent: string;\r\n public referenceTransform: string;\r\n\r\n public title: string;\r\n\r\n public size_x: number;\r\n public size_y: number;\r\n\r\n public data: Object;\r\n\r\n constructor(component: string, x: number, y: number, h: number = 32, w: number = 32, title: string, anchor?: string, data?: Object) {\r\n this.referenceTransform = anchor || \"translate(0%, 0%)\";\r\n this.pos_x = x / window.innerWidth * 100;\r\n this.pos_y = y / window.innerHeight * 100;\r\n this.pos_z = 0;\r\n this.containedComponent = component;\r\n this.title = title;\r\n this.data = data;\r\n this.size_x = w;\r\n this.size_y = h;\r\n }\r\n\r\n static centered(component: string, title, data?: Object): DialogBox {\r\n return new DialogBox(component, window.innerWidth / 2, window.innerHeight / 2, 32, 32, title, \"translate(-50%, -50%)\", data);\r\n }\r\n\r\n static fromSerialized(s: SerializedDialog): DialogBox {\r\n return Object.assign(DialogBox.centered(\"\", \"\"), {\r\n pos_x: s.pos_x,\r\n pos_y: s.pos_y,\r\n pos_z: s.pos_z,\r\n\r\n containedComponent: s.contained_component,\r\n referenceTransform: s.reference_transform,\r\n\r\n title: s.title,\r\n\r\n size_x: s.size_x,\r\n size_y: s.size_y\r\n });\r\n\r\n }\r\n\r\n serialize(): SerializedDialog {\r\n let s = new SerializedDialog();\r\n s.pos_x = this.pos_x;\r\n s.pos_y = this.pos_y;\r\n s.pos_z = this.pos_z;\r\n s.contained_component = this.containedComponent;\r\n s.reference_transform = this.referenceTransform;\r\n s.title = this.title;\r\n s.size_x = this.size_x;\r\n s.size_y = this.size_y;\r\n if(this.data){\r\n console.warn(`Not serializing data field for Dialog: ${this.title}`);\r\n console.warn(this.data);\r\n }\r\n return s;\r\n }\r\n}\r\n\r\nexport enum DraggingOrientation {\r\n Left = 1,\r\n Right = 2,\r\n Up = 4,\r\n Down = 8,\r\n}\r\n\r\nexport class DialogBoxService extends EventTarget{\r\n public dialogBoxes: Map;\r\n\r\n constructor(){\r\n super();\r\n this.dialogBoxes = new Map();\r\n }\r\n\r\n insert(id: String, box: DialogBox, eventArgs?: any): boolean {\r\n box.pos_z = this.dialogBoxes.size;\r\n if(this.dialogBoxes.has(id)){\r\n let r = this.dialogBoxes.get(id);\r\n this.dialogBoxes.set(id, box);\r\n this.dispatchEvent(new DialogBoxEvent(\"close\", id, r));\r\n this.dispatchEvent(new DialogBoxEvent(\"open\", id, box, eventArgs));\r\n } else {\r\n this.dialogBoxes.set(id, box);\r\n this.dispatchEvent(new DialogBoxEvent(\"open\", id, box, eventArgs));\r\n }\r\n return true;\r\n }\r\n \r\n try_insert(id: String, box: DialogBox, eventArgs?: any): boolean {\r\n if(this.dialogBoxes.has(id)){\r\n return false;\r\n }\r\n box.pos_z = this.dialogBoxes.size;\r\n this.dialogBoxes.set(id, box);\r\n this.dispatchEvent(new DialogBoxEvent(\"open\", id, box, eventArgs));\r\n return true;\r\n }\r\n\r\n remove(id: String, eventArgs?: any): boolean {\r\n if(this.dialogBoxes.has(id)){\r\n let r = this.dialogBoxes.get(id);\r\n for(let b of this.dialogBoxes.values()) {\r\n if(b.pos_z > r.pos_z)\r\n b.pos_z -= 1;\r\n }\r\n this.dialogBoxes.delete(id);\r\n this.dispatchEvent(new DialogBoxEvent(\"close\", id, r, eventArgs));\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n focus(id: String, eventArgs?: any): boolean {\r\n if(this.dialogBoxes.has(id)){\r\n let update_above = this.dialogBoxes.get(id).pos_z;\r\n for (let b of this.dialogBoxes.values()) {\r\n if(b.pos_z > update_above)\r\n b.pos_z -= 1;\r\n }\r\n this.dialogBoxes.get(id).pos_z = this.dialogBoxes.size - 1;\r\n this.dispatchEvent(new DialogBoxEvent(\"focus\", id, this.dialogBoxes.get(id), eventArgs));\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n serialize(): SerializedDialog[] {\r\n let r = []\r\n this.dialogBoxes.forEach((box, name) => {\r\n if(name==\"Settings\")return;\r\n let tmp = box.serialize();\r\n tmp.name = name;\r\n r.push(tmp);\r\n });\r\n return r;\r\n }\r\n\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\n/*\r\nThe adaptive performance service offers facilities to measure FPS and based on the measurement, suggest a new render size.\r\nThis was initially though to improve performance on lower end devices, but ended up jumping around wildly from resolution to resolution.\r\nThe new version of this service (as seen below) just takes as input one of the values from RESOLUTION_SCALES and recommends the scaled down canvas size.\r\n*/\r\n\r\n\r\nimport { Parameter } from \"../modules/Parameter\";\r\nimport { Services, ServiceBarrier } from \"./Services\";\r\n\r\nexport class AdaptivePerformanceService{\r\n //Old constants\r\n FPS_LOWER_BOUND: number = 20; // Reduce resolution if FPS drops below this value\r\n FPS_UPPER_BOUND: number = 50; // Increase resolution if FPS rises above this value\r\n FPS_MEASUREMENTS: number = 1000; //Amout of measurements which are integrated\r\n MIN_HEIGHT: number = 360; //Do not go below this number of pixels for height\r\n\r\n LOADING_TIMEOUT: number = 2100; //Do not resize in the fist LOADING_TIMEOUT ms\r\n RESOLUTION_SCALES = [1, 0.75, 0.66, 0.5, 0.33, 0.25]; //The scaling values allowed for the canvas\r\n FORCED_RERENDER_INTERVAL = 500; //How often to render a frame regardless of whether we would need to. This helps with tile loading\r\n\r\n //Internal flag, this is false for the LOADING_TIMEOUT so the application can spool up the graphics system without interruption\r\n private mayResize: boolean = false;\r\n\r\n //The actual size of the canvas element\r\n private clientWidth: number = 1;\r\n private clientHeight: number = 1;\r\n\r\n //The render size of the canvas element\r\n private currentWidth: number = 1;\r\n private currentHeight: number = 1;\r\n private aspectRatio: number = 1;\r\n\r\n //A series of measurements to be averaged together\r\n private measurements: number[] = [];\r\n //The current measurement timekeeping slot\r\n private current_measurement: number = performance.now();\r\n private currently_measuring: boolean = false;\r\n //The current FPS measurement, updated on EndMeasurement\r\n private currentFPS: number = (this.FPS_LOWER_BOUND + this.FPS_UPPER_BOUND) / 2;\r\n\r\n private currentFPSLowWarningSent: boolean = false;\r\n\r\n private needsRerender: boolean = true;\r\n\r\n private is_firefox = navigator.userAgent.indexOf(\"Firefox\") != - 1;\r\n\r\n public constructor(){\r\n setTimeout(() => this.mayResize = true, this.LOADING_TIMEOUT);\r\n ServiceBarrier.wait().then(() => {\r\n Services.SettingsService.initializeSetting(new Parameter(\"AlwaysRerender\", false, \"boolean\"));\r\n Services.SettingsService.initializeSetting(new Parameter(\"ScalingFactor\", 1.0, \"number\"));\r\n window.addEventListener(\"resize\", () => {this.RequestRerender()});\r\n Services.RenderLayerService.addEventListener(\"LayersChanged\", () => {\r\n this.RequestRerender();\r\n })});\r\n }\r\n\r\n private recommendSize(){\r\n this.currentHeight = this.clientHeight * Services.SettingsService.getSetting(\"ScalingFactor\").value;\r\n this.currentWidth = this.clientWidth * Services.SettingsService.getSetting(\"ScalingFactor\").value;\r\n }\r\n\r\n //Call this to start a FPS measurement\r\n public StartMeasurement(){\r\n this.current_measurement = performance.now();\r\n this.currently_measuring = true;\r\n }\r\n\r\n //Call this to end a FPS measurement\r\n public EndMeasurement(){\r\n if(!this.currently_measuring){\r\n return;\r\n }\r\n this.currently_measuring = false;\r\n let time = performance.now() - this.current_measurement;\r\n this.measurements.push(time);\r\n while(this.measurements.length > this.FPS_MEASUREMENTS){\r\n this.measurements.shift();\r\n }\r\n let time_sum = this.measurements.reduce((a,b) => a + b);\r\n let time_average = time_sum / this.measurements.length;\r\n this.currentFPS = 1000 / time_average;\r\n if(this.mayResize){\r\n this.recommendSize();\r\n }\r\n }\r\n\r\n //Call this if the canvas size changes\r\n public SetClientDimensions(width: number, height: number){\r\n if(this.clientHeight < 10){ //Set initial dimensions\r\n this.currentHeight = height;\r\n this.currentWidth = width;\r\n }\r\n //Set client bounds\r\n this.clientHeight = height;\r\n this.clientWidth = width;\r\n //Set aspect ratio\r\n this.aspectRatio = width / height;\r\n //Resize the viewport if new client bounds are smaller than viewport\r\n this.currentHeight = Math.min(this.clientHeight, this.currentHeight);\r\n this.currentWidth = this.currentHeight * this.aspectRatio;\r\n }\r\n\r\n // Returns a good size for the canvas\r\n public GetRecommendedDimensions(): [number, number]{\r\n return [this.currentWidth, this.currentHeight];\r\n }\r\n\r\n //Returns the last FPS measurement\r\n public GetFPS(){\r\n return this.currentFPS;\r\n }\r\n\r\n //Sets the rerender flag\r\n public RequestRerender(){\r\n this.needsRerender = true;\r\n }\r\n\r\n // This returns true if the canvas needs to be rerendererd (or always in the first couple of seconds) and resets the rerender flag\r\n public NeedsRerender(){\r\n let needsRerender = this.needsRerender;\r\n this.needsRerender = false;\r\n return needsRerender || (!this.mayResize) || Services.SettingsService.getSetting(\"AlwaysRerender\").value;\r\n }\r\n\r\n public isFirefox(){\r\n return this.is_firefox;\r\n }\r\n\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport {ServiceBarrier, Services} from './Services';\r\nimport {Vec4, AaBb, Vec3} from '../modules/vecmat';\r\nimport {Tile, UEC, UECArea} from '../modules/tile';\r\nimport { SourceLayerInfo } from './SourceInfoService';\r\nimport { Parameter } from '../modules/Parameter';\r\n\r\nexport class RequiredTilesChangedEvent extends Event{\r\n public required_tiles: Tile[]; //The current set of tiles needed to render the screen\r\n public new_tiles: Tile[]; //Which of the current tiles are new as compared to the last frame\r\n public obsolete_tiles: Tile[]; //Which of the tiles from last frame are now obsolete?\r\n constructor(required_tiles: Tile[], new_tiles: Tile[], obsolete_tiles: Tile[]){\r\n super(\"RequiredTilesChanged\");\r\n this.required_tiles = required_tiles;\r\n this.new_tiles = new_tiles;\r\n this.obsolete_tiles = obsolete_tiles;\r\n }\r\n}\r\n\r\nexport class RequiredTilesService extends EventTarget{\r\n\r\n constructor(){\r\n super();\r\n this.required_tiles = new Map();\r\n ServiceBarrier.wait().then(() => {\r\n Services.SettingsService.initializeSetting(new Parameter(\"TargetTileCount\", 8, \"number\"));\r\n });\r\n }\r\n\r\n private required_tiles: Map; //The currently required set of tiles\r\n private last_required_tiles: Tile[] = []; //The last required set of tiles, for diffing\r\n\r\n private planesets: Vec4[][] = [];\r\n\r\n public clearRequiredTiles(){\r\n this.last_required_tiles = this.required_tiles.get(\"default\") || [];\r\n this.required_tiles.clear();\r\n this.planesets = [];\r\n }\r\n\r\n public addRequiredTiles(){\r\n let matrix_world_inverse = Services.PositionService.world_transform.transpose();\r\n let projection_matrix = Services.PositionService.camera_transform.transpose();\r\n var mvcols = matrix_world_inverse.mul_mat4(projection_matrix).as_cols();\r\n this.planesets.push([\r\n mvcols[3].add(mvcols[0]), //left plane\r\n mvcols[3].sub(mvcols[0]), //right plane\r\n mvcols[3].add(mvcols[1]), //bottom plane\r\n mvcols[3].sub(mvcols[1]), //top plane\r\n mvcols[3].add(mvcols[2]), //near plane\r\n mvcols[3].sub(mvcols[2]) //far plane\r\n ]);\r\n }\r\n\r\n public finalizeRequiredTiles(){\r\n let required_tiles = \r\n this.get_required_tiles_internal(\r\n this.planesets,\r\n new UECArea(new UEC(0, 0), new UEC(1, 1)),\r\n (tile) => {\r\n return Services.RenderLayerService.get_euclidian_global_height_range()\r\n },\r\n (x) => x,\r\n false\r\n );\r\n let new_tiles = required_tiles.filter(t => !this.last_required_tiles.some(t_ => t.path == t_.path));\r\n let obsolete_tiles = this.last_required_tiles.filter(t => !required_tiles.some(t_ => t.path == t_.path));\r\n if(new_tiles.length > 0 || obsolete_tiles.length > 0){\r\n this.dispatchEvent(new RequiredTilesChangedEvent(required_tiles, new_tiles, obsolete_tiles));\r\n }\r\n }\r\n\r\n public getRequiredTiles(): Tile[]{\r\n return this.required_tiles.get(\"default\");\r\n }\r\n\r\n public getTilespaceBounds(): UECArea{\r\n let r = this.required_tiles.get(\"default\").reduce((b, t) => [\r\n new UEC(Math.min(t.position.x, b[0].x), Math.min(t.position.y, b[0].y)),\r\n new UEC(Math.max(t.position.x + t.size.x, b[1].x), Math.max(t.position.y + t.size.y, b[1].y))\r\n ], [new UEC(1, 1), new UEC(0, 0)]);\r\n return new UECArea(r[0], new UEC(r[1].x - r[0].x, r[1].y - r[0].y));\r\n }\r\n\r\n private get_required_tiles_internal(\r\n planesets: Vec4[][],\r\n extent: UECArea,\r\n verticalRange: (tile: Tile) => [number, number],\r\n applyScaling: (value: number) => number,\r\n filter_again: boolean,\r\n tag: string = \"default\",\r\n ): Tile[] {\r\n let tiles;\r\n let is_clipping;\r\n if (extent.extent.x == 0 && extent.extent.y == 0) {\r\n extent = new UECArea(new UEC(0, 0), new UEC(1, 1));\r\n }\r\n switch (Services.PositionService.projection_mode) {\r\n case \"SPHERE\": {\r\n is_clipping = (tile: Tile) => {\r\n let heightrange = verticalRange(tile);\r\n let bb = tile.bounds(applyScaling(heightrange[0]), applyScaling(heightrange[1]));\r\n return planesets.some(clipplanes => clipplanes.every(c => !bb.check_for_all_corners(p => Vec4.from_vf(p, 1.0).dot(c) <= 0)) && tile.in_extent(extent));\r\n }\r\n break;\r\n }\r\n case \"EQUIRECT\": {\r\n is_clipping = (tile: Tile) => {\r\n let heightrange = verticalRange(tile);\r\n let bb = new AaBb(new Vec3(tile.position.x, tile.position.y, applyScaling(heightrange[0]) - 1), new Vec3(tile.position.x + tile.size.x, tile.position.y + tile.size.y, applyScaling(heightrange[1]) - 1));\r\n //if (t.position.x > 0.99){\r\n // return clipplanes.every(c => bb.corners().some(p => Vec4.from_vf(p, 1.0).dot(c) > 0 || Vec4.from_vf(p.sub(new Vec3(1, 0, 0)), 1.0).dot(c) > 0)) && t.in_extent(extent);\r\n //} else if (t.position.x < 0.01){\r\n // return clipplanes.every(c => bb.corners().some(p => Vec4.from_vf(p, 1.0).dot(c) > 0 || Vec4.from_vf(p.add(new Vec3(1, 0, 0)), 1.0).dot(c) > 0)) && t.in_extent(extent);\r\n //} else {\r\n return planesets.some(clipplanes => clipplanes.every(c => !bb.check_for_all_corners(p => Vec4.from_vf(p, 1.0).dot(c) <= 0)) && tile.in_extent(extent));\r\n //}\r\n }\r\n break;\r\n }\r\n }\r\n if(this.required_tiles.has(tag)){\r\n tiles = this.required_tiles.get(tag);\r\n }else{\r\n let targetcount = Services.SettingsService.getValueOrDefault(\"TargetTileCount\", 8)\r\n * Services.RenderService.width \r\n * Services.RenderService.height\r\n / Services.InitializationService.getTileWidth()\r\n / Services.InitializationService.getTileHeight();\r\n tiles = [Tile.from_tilepath(\"W\"), Tile.from_tilepath(\"E\")].filter(is_clipping);\r\n while (tiles.length > 0){\r\n let ntiles = tiles.flatMap(t => t.split()).filter(is_clipping);\r\n if(ntiles.length >= targetcount)break;\r\n tiles = ntiles;\r\n }\r\n this.required_tiles.set(tag, tiles);\r\n }\r\n if(filter_again){\r\n let matrix_world_inverse = Services.PositionService.world_transform.transpose();\r\n let projection_matrix = Services.PositionService.camera_transform.transpose();\r\n var mvcols = matrix_world_inverse.mul_mat4(projection_matrix).as_cols();\r\n planesets = [[\r\n mvcols[3].add(mvcols[0]), //left plane\r\n mvcols[3].sub(mvcols[0]), //right plane\r\n mvcols[3].add(mvcols[1]), //bottom plane\r\n mvcols[3].sub(mvcols[1]), //top plane\r\n mvcols[3].add(mvcols[2]), //near plane\r\n mvcols[3].sub(mvcols[2]) //far plane\r\n ]];\r\n return tiles.filter(is_clipping);\r\n }else{\r\n return tiles;\r\n }\r\n }\r\n\r\n public getRequiredTilesBoundedDisplaced(extent: UECArea, layer: SourceLayerInfo, time: number, height: number, applyScaling: (value: number) => number): Tile[] {\r\n return this.get_required_tiles_internal(\r\n this.planesets,\r\n extent,\r\n (tile) => {\r\n return Services.TileCacheService.get_tile_data_range(layer, tile, time, height) || layer.layer.datarange || [0, 0]\r\n },\r\n applyScaling,\r\n true,\r\n JSON.stringify([\r\n extent.topLeft().x,\r\n extent.topLeft().y,\r\n extent.bottomRight().x,\r\n extent.bottomRight().y,\r\n layer.getPath()\r\n ])\r\n )\r\n }\r\n\r\n public getRequiredTilesBounded(extent: UECArea, height_extent: [number, number] = null): Tile[] {\r\n return this.get_required_tiles_internal(\r\n this.planesets,\r\n extent,\r\n (tile) => {\r\n return height_extent || Services.RenderLayerService.get_euclidian_global_height_range()\r\n },\r\n (x) => x,\r\n true,\r\n JSON.stringify([\r\n extent.topLeft().x,\r\n extent.topLeft().y,\r\n extent.bottomRight().x,\r\n extent.bottomRight().y\r\n ])\r\n )\r\n\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { Parameter } from \"../Parameter\";\r\nimport { CompositionPipelineFramebuffer } from \"../PipelineFramebuffer\";\r\nimport { Services } from \"../../services/Services\";\r\nimport { Shader } from \"../../services/GLService\";\r\nimport { Vec2, Vec3 } from \"../vecmat\";\r\n\r\nexport class Filter {\r\n public name: string;\r\n public human_readable_name: string;\r\n shader: Shader;\r\n public parameters: {[name:string]: Parameter};\r\n \r\n constructor(shader: Shader, parameters: {[name:string]: Parameter} = {}){\r\n this.name = shader.name;\r\n this.human_readable_name = shader.name;\r\n this.shader = shader;\r\n this.parameters = parameters;\r\n }\r\n\r\n /*\r\n * Only put truly universal operations that are shared between ALL filters here.\r\n */\r\n preexecute(context: {[name: string]: WebGLRenderingContext | any}): number{\r\n let gl = context.gl;\r\n let tex_unit_index = 0;\r\n gl.useProgram(this.shader.program);\r\n Object.values(this.parameters).forEach(p => {\r\n let uloc = this.shader.uniforms[p.shader_name];\r\n if(!uloc)return;\r\n switch (p.type) {\r\n case \"boolean\": {\r\n gl.uniform1i(uloc, p.value);\r\n break;\r\n }\r\n case \"number\": {\r\n gl.uniform1f(uloc, p.value);\r\n break;\r\n }\r\n case \"colormap\": {\r\n let cm = Services.ColormapService.getColormapByName(p.value);\r\n if(cm){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, cm)\r\n gl.uniform1i(uloc, tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n break;\r\n }\r\n case \"vector2D\": {\r\n gl.uniform2f(uloc, p.value.x1, p.value.x2);\r\n break;\r\n }\r\n case \"vector3D\": {\r\n gl.uniform3f(uloc, p.value.x1, p.value.x2, p.value.x3);\r\n break;\r\n }\r\n case \"texture\": {\r\n let tex = p.value; //TODO make more resilient\r\n if(tex){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, tex);\r\n gl.uniform1i(uloc, tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n }\r\n }\r\n })\r\n return tex_unit_index;\r\n }\r\n}\r\n\r\nexport class LayerFilter extends Filter {\r\n\r\n execute(context: {[name: string]: WebGLRenderingContext | any}, source: any){ //TODO fix signature\r\n let tex_unit_index = super.preexecute(context);\r\n let gl = context.gl;\r\n\r\n gl.depthFunc(gl.ALWAYS);\r\n\r\n if(this.shader.uniforms[\"screen_resolution\"]){\r\n gl.uniform2f(this.shader.uniforms[\"screen_resolution\"], context.gl.canvas.width, context.gl.canvas.width);\r\n }\r\n if(this.shader.uniforms[\"value_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.value);\r\n gl.uniform1i(this.shader.uniforms[\"value_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n if(this.shader.uniforms[\"depth_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.depth);\r\n gl.uniform1i(this.shader.uniforms[\"depth_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n if(this.shader.uniforms[\"normal_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.normal);\r\n gl.uniform1i(this.shader.uniforms[\"normal_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n if(this.shader.uniforms[\"worldPosition_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.worldPos);\r\n gl.uniform1i(this.shader.uniforms[\"worldPosition_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n\r\n let geometry = Services.GLService.Geometries.quad;\r\n gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n gl.bindBuffer(gl.ARRAY_BUFFER, geometry.buffer);\r\n gl.vertexAttribPointer(this.shader.attributes[\"position\"], 2, gl.FLOAT, false, 0, 0);\r\n gl.drawArrays(gl.TRIANGLE_STRIP, geometry.start, geometry.length);\r\n gl.disableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n gl.depthFunc(gl.LESS);\r\n }\r\n}\r\n\r\nexport class CompositionFilter extends Filter {\r\n\r\n //TODO: fix signature\r\n execute(context: {[name: string]: WebGLRenderingContext | any}, layerSource: {value: WebGLTexture, normal: WebGLTexture, depth: WebGLTexture, worldPos: WebGLTexture}, source: CompositionPipelineFramebuffer, target: CompositionPipelineFramebuffer){\r\n let tex_unit_index = super.preexecute(context);\r\n let gl = context.gl;\r\n\r\n if(this.shader.uniforms[\"color_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.color);\r\n gl.uniform1i(this.shader.uniforms[\"color_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n if(this.shader.uniforms[\"depth_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.depth);\r\n gl.uniform1i(this.shader.uniforms[\"depth_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n /*\r\n if(this.shader.uniforms[\"normal_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.normal);\r\n gl.uniform1i(this.shader.uniforms[\"normal_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n */\r\n if(this.shader.uniforms[\"layer_value_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, layerSource.value);\r\n gl.uniform1i(this.shader.uniforms[\"layer_value_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n if(this.shader.uniforms[\"layer_depth_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, layerSource.depth);\r\n gl.uniform1i(this.shader.uniforms[\"layer_depth_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n if(this.shader.uniforms[\"layer_normal_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, layerSource.normal);\r\n gl.uniform1i(this.shader.uniforms[\"layer_normal_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n if(this.shader.uniforms[\"layer_worldPosition_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, layerSource.worldPos);\r\n gl.uniform1i(this.shader.uniforms[\"layer_worldPosition_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, target.framebuffer);\r\n target.assignDrawBuffers();\r\n let geometry = Services.GLService.Geometries.quad;\r\n gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n gl.bindBuffer(gl.ARRAY_BUFFER, geometry.buffer);\r\n gl.vertexAttribPointer(this.shader.attributes[\"position\"], 2, gl.FLOAT, false, 0, 0);\r\n gl.drawArrays(gl.TRIANGLE_STRIP, geometry.start, geometry.length);\r\n gl.disableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n }\r\n\r\n static Ocean(){\r\n let r = new CompositionFilter(Services.GLService.Modules.compositing.ocean);\r\n r.parameters[\"layer_opacity\"] = new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1);\r\n r.parameters[\"colormap\"] = new Parameter(\"Gradient\", \"deep\", \"colormap\", true).setShaderName(\"gradient\");\r\n r.parameters[\"optical_density\"] = new Parameter(\"Optical Density\", 0.333, \"number\", true).setShaderName(\"optical_density\").setRange(0,1);\r\n r.parameters[\"transmission\"] = new Parameter(\"Transmission\", 1.5, \"number\", true).setShaderName(\"transmission\").setRange(0,2);\r\n r.parameters[\"near_ratio\"] = new Parameter(\"near_ratio\", 0.025 / 3, \"number\", false).setShaderName(\"near_ratio\");\r\n return r;\r\n }\r\n\r\n static Atmosphere(){\r\n let r = new CompositionFilter(Services.GLService.Modules.compositing.atmosphere);\r\n r.parameters[\"layer_opacity\"] = new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1);\r\n r.parameters[\"colormap\"] = new Parameter(\"Gradient\", \"deep\", \"colormap\", true).setShaderName(\"gradient\");\r\n r.parameters[\"optical_density\"] = new Parameter(\"Optical Density\", 0.333, \"number\", true).setShaderName(\"optical_density\").setRange(0,1);\r\n r.parameters[\"transmission\"] = new Parameter(\"Transmission\", 1.5, \"number\", true).setShaderName(\"transmission\").setRange(0,2);\r\n r.parameters[\"near_ratio\"] = new Parameter(\"near_ratio\", 0.025 / 3, \"number\", false).setShaderName(\"near_ratio\");\r\n\r\n\r\n //r.parameters[\"camera_position\"] = new Parameter(\"camera_position\", ).setShaderName(\"camera_position\");\r\n return r;\r\n }\r\n}\r\n\r\nexport class ViewportFilter extends Filter {\r\n constructor(){\r\n super(Services.GLService.Modules.viewport.copy, {\r\n \"power\": new Parameter(\"power\", 0.5, \"number\", true).setShaderName(\"power\")\r\n });\r\n }\r\n\r\n static dome_top(){\r\n let r = new ViewportFilter;\r\n r.shader = Services.GLService.Modules.viewport[\"dome_top\"];\r\n r.parameters[\"section_size\"] = new Parameter(\"section_size\", new Vec2(0.8, 0.8), \"vector2D\", false).setShaderName(\"section_size\");\r\n r.parameters[\"section_position\"] = new Parameter(\"section_position\", new Vec2(0.2, 0), \"vector2D\", false).setShaderName(\"section_position\");\r\n r.parameters[\"section_scale\"] = new Parameter(\"section_scale\", new Vec2(1, 1), \"vector2D\", false).setShaderName(\"section_scale\");\r\n r.parameters[\"central_scale\"] = new Parameter(\"central_scale\", Math.PI / 2, \"number\", false).setShaderName(\"central_scale\");\r\n r.parameters[\"near_ratio\"] = new Parameter(\"near_ratio\", 0.025 / 3, \"number\", false).setShaderName(\"near_ratio\");\r\n return r;\r\n }\r\n\r\n static dome_side(direction: Vec2){\r\n let r = new ViewportFilter;\r\n r.shader = Services.GLService.Modules.viewport[\"dome_side\"];\r\n r.parameters[\"section_size\"] = new Parameter(\"section_size\", new Vec2(0.8, 0.8), \"vector2D\", false).setShaderName(\"section_size\");\r\n r.parameters[\"section_position\"] = new Parameter(\"section_position\", direction, \"vector2D\", false).setShaderName(\"section_position\");\r\n r.parameters[\"section_scale\"] = new Parameter(\"section_scale\", new Vec2(1, 1), \"vector2D\", false).setShaderName(\"section_scale\");\r\n r.parameters[\"central_scale\"] = new Parameter(\"central_scale\", Math.PI / 2, \"number\", false).setShaderName(\"central_scale\");\r\n r.parameters[\"azimuth_direction\"] = new Parameter(\"azimuth_direction\", direction, \"vector2D\", false).setShaderName(\"azimuth_direction\");\r\n r.parameters[\"overflow_texture\"] = new Parameter(\"overflow_texture\", direction.x2 != 0, \"boolean\", false).setShaderName(\"overflow_texture\");\r\n r.parameters[\"near_ratio\"] = new Parameter(\"near_ratio\", 0.025 / 3, \"number\", false).setShaderName(\"near_ratio\");\r\n return r;\r\n }\r\n\r\n static dyed(color: Vec3){\r\n let r = new ViewportFilter();\r\n r.shader = Services.GLService.Modules.viewport[\"dyed\"];\r\n r.parameters[\"color\"] = new Parameter(\"color\", color, \"vector3D\", false).setShaderName(\"dye_color\");\r\n return r;\r\n }\r\n\r\n static single_projector(frustum: {\r\n \"name\": string,\r\n \"fov\": {\r\n \"up\": number,\r\n \"down\": number,\r\n \"left\": number,\r\n \"right\": number\r\n },\r\n \"orientation\": {\r\n \"yaw\": number,\r\n \"pitch\": number,\r\n \"roll\": number\r\n }\r\n }){\r\n let r = new ViewportFilter();\r\n r.shader = Services.GLService.Modules.viewport[\"single_projector\"];\r\n r.parameters[\"frustum_up_left\"] = new Parameter(\"frustum_up_left\", new Vec2(\r\n -Math.tan(frustum.fov.left / 180 * Math.PI),\r\n -Math.tan(frustum.fov.up / 180 * Math.PI)\r\n ), \"vector2D\", false).setShaderName(\"frustum_up_left\");\r\n r.parameters[\"frustum_down_right\"] = new Parameter(\"frustum_down_right\", new Vec2(\r\n Math.tan(frustum.fov.right / 180 * Math.PI),\r\n Math.tan(frustum.fov.down / 180 * Math.PI)\r\n ), \"vector2D\", false).setShaderName(\"frustum_down_right\");\r\n r.parameters[\"blending_map\"] = new Parameter(\"blending_map\", null, \"texture\", false, false).setShaderName(\"blending_map\");\r\n r.parameters[\"warping_map\"] = new Parameter(\"warping_map\", null, \"texture\", false, false).setShaderName(\"warping_map\");\r\n r.parameters[\"gamma_sep\"] = new Parameter(\"gamma_sep\", 1.0, \"number\", false, false).setShaderName(\"gamma_sep\");\r\n r.parameters[\"near_ratio\"] = new Parameter(\"near_ratio\", 0.025 / 3, \"number\", false).setShaderName(\"near_ratio\");\r\n return r;\r\n }\r\n\r\n execute(context: {[name: string]: WebGLRenderingContext | any}, source: CompositionPipelineFramebuffer){\r\n let gl = context.gl;\r\n let tex_unit_index = super.preexecute(context);\r\n if(this.shader.uniforms[\"clear_color\"]){\r\n let clearcolor = Services.SettingsService.getValueOrDefault(\"ClearColor\", Vec3.empty());\r\n gl.uniform3f(this.shader.uniforms[\"clear_color\"], clearcolor.x1, clearcolor.x2, clearcolor.x3);\r\n }\r\n if(this.shader.uniforms[\"color_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.color);\r\n gl.uniform1i(this.shader.uniforms[\"color_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n if(this.shader.uniforms[\"depth_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.depth);\r\n gl.uniform1i(this.shader.uniforms[\"depth_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n let geometry = Services.GLService.Geometries.quad;\r\n gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n gl.bindBuffer(gl.ARRAY_BUFFER, geometry.buffer);\r\n gl.vertexAttribPointer(this.shader.attributes[\"position\"], 2, gl.FLOAT, false, 0, 0);\r\n gl.drawArrays(gl.TRIANGLE_STRIP, geometry.start, geometry.length);\r\n gl.disableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { glenv } from \"../services/RenderService\";\r\nimport { Coord, UEC } from \"../modules/tile\";\r\nimport { Vec3, Vec4 } from \"./vecmat\";\r\nimport { Services } from \"../services/Services\";\r\n\r\n//For easier use below, make sure that this does NOT unbind the texture.\r\nlet create_texture = (gl: glenv, w: number, h: number, format: number, type: number, filter: number, wrap: number) => {\r\n let t = gl.gl.createTexture();\r\n gl.gl.bindTexture(gl.gl.TEXTURE_2D, t);\r\n gl.gl.texImage2D(gl.gl.TEXTURE_2D, 0, format, w, h, 0, format, type, null);\r\n gl.gl.texParameteri(gl.gl.TEXTURE_2D, gl.gl.TEXTURE_MAG_FILTER, filter);\r\n gl.gl.texParameteri(gl.gl.TEXTURE_2D, gl.gl.TEXTURE_MIN_FILTER, filter);\r\n gl.gl.texParameteri(gl.gl.TEXTURE_2D, gl.gl.TEXTURE_WRAP_S, wrap);\r\n gl.gl.texParameteri(gl.gl.TEXTURE_2D, gl.gl.TEXTURE_WRAP_T, wrap);\r\n return t;\r\n};\r\n\r\nexport class LayerPipelineFramebuffer {\r\n context: glenv;\r\n value_1: WebGLTexture;\r\n value_2: WebGLTexture;\r\n depth_1: WebGLTexture;\r\n depth_2: WebGLTexture;\r\n normal: WebGLTexture;\r\n worldPos: WebGLTexture;\r\n input_framebuffer: WebGLFramebuffer;\r\n filter_framebuffer_1: WebGLFramebuffer;\r\n filter_framebuffer_2: WebGLFramebuffer;\r\n worldPosReadFramebuffer: WebGLFramebuffer;\r\n worldNormalReadFramebuffer: WebGLFramebuffer;\r\n flip_state: boolean = false;\r\n\r\n constructor(ctx: glenv, w: number, h: number) {\r\n this.context = ctx;\r\n let gl: WebGLRenderingContext = ctx.gl;\r\n let ext: WEBGL_draw_buffers = ctx.WEBGL_draw_buffers;\r\n\r\n this.input_framebuffer = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.input_framebuffer);\r\n\r\n this.value_1 = create_texture(ctx, w, h, gl.RGBA, gl.FLOAT, gl.LINEAR, gl.CLAMP_TO_EDGE);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, ext.COLOR_ATTACHMENT0_WEBGL, gl.TEXTURE_2D, this.value_1, 0);\r\n\r\n this.depth_1 = create_texture(ctx, w, h, gl.DEPTH_COMPONENT, gl.UNSIGNED_INT, gl.NEAREST, gl.CLAMP_TO_EDGE);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, this.depth_1, 0);\r\n\r\n this.normal = create_texture(ctx, w, h, gl.RGBA, gl.FLOAT, gl.LINEAR, gl.CLAMP_TO_EDGE);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, ext.COLOR_ATTACHMENT1_WEBGL, gl.TEXTURE_2D, this.normal, 0);\r\n\r\n this.worldPos = create_texture(ctx, w, h, gl.RGBA, gl.FLOAT, gl.LINEAR, gl.CLAMP_TO_EDGE);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, ext.COLOR_ATTACHMENT2_WEBGL, gl.TEXTURE_2D, this.worldPos, 0);\r\n\r\n this.worldPosReadFramebuffer = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.worldPosReadFramebuffer);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, ext.COLOR_ATTACHMENT0_WEBGL, gl.TEXTURE_2D, this.worldPos, 0);\r\n\r\n gl.bindTexture(gl.TEXTURE_2D, this.depth_1);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, this.depth_1, 0);\r\n\r\n this.worldNormalReadFramebuffer = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.worldNormalReadFramebuffer);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, this.depth_1, 0);\r\n\r\n gl.bindTexture(gl.TEXTURE_2D, this.normal);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, ext.COLOR_ATTACHMENT0_WEBGL, gl.TEXTURE_2D, this.normal, 0);\r\n\r\n this.filter_framebuffer_1 = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.filter_framebuffer_1);\r\n\r\n gl.bindTexture(gl.TEXTURE_2D, this.value_1);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.value_1, 0);\r\n\r\n gl.bindTexture(gl.TEXTURE_2D, this.depth_1);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, this.depth_1, 0);\r\n\r\n this.filter_framebuffer_2 = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.filter_framebuffer_2);\r\n\r\n this.value_2 = create_texture(ctx, w, h, gl.RGBA, gl.FLOAT, gl.LINEAR, gl.CLAMP_TO_EDGE);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.value_2, 0);\r\n \r\n this.depth_2 = create_texture(ctx, w, h, gl.DEPTH_COMPONENT, gl.UNSIGNED_INT, gl.NEAREST, gl.CLAMP_TO_EDGE);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, this.depth_2, 0);\r\n }\r\n\r\n /*\r\n * This function must be called directly after rendering a layer since it does not bind the required framebuffer\r\n * for the first readback.\r\n */\r\n readInputFramebuffer(x, y): {coord: UEC, z: number, meshZ: number, normal: Vec3, value: Vec4, exists: boolean} {\r\n let cam_pos = Services.PositionService.getCameraPositionFiltered();\r\n let cam_uec = UEC.from_Coord(new Coord(cam_pos.Latitude, cam_pos.Longitude));\r\n let gl = this.context.gl;\r\n let readPixelArray = new Float32Array(4);\r\n gl.readPixels(x, y, 1, 1, gl.RGBA, gl.FLOAT, readPixelArray);\r\n let result_value = new Vec4(readPixelArray[0], readPixelArray[1], readPixelArray[2], readPixelArray[3]);\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.worldPosReadFramebuffer);\r\n gl.readPixels(x, y, 1, 1, gl.RGBA, gl.FLOAT, readPixelArray);\r\n let result_coord = new UEC((readPixelArray[0] + cam_uec.x), readPixelArray[1] + cam_uec.y);\r\n let result_z = readPixelArray[2];\r\n let result_meshZ = readPixelArray[3];\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.worldNormalReadFramebuffer);\r\n gl.readPixels(x, y, 1, 1, gl.RGBA, gl.FLOAT, readPixelArray);\r\n let result_normal = new Vec3(readPixelArray[0], readPixelArray[1], readPixelArray[2]);\r\n let result_exists = readPixelArray[3] == 1.0;\r\n return {\r\n value: result_value,\r\n coord: result_coord,\r\n z: result_z,\r\n meshZ: result_meshZ,\r\n normal: result_normal,\r\n exists: result_exists\r\n };\r\n }\r\n\r\n assignDrawBuffers() {\r\n let ext = this.context.WEBGL_draw_buffers;\r\n ext.drawBuffersWEBGL([\r\n ext.COLOR_ATTACHMENT0_WEBGL,\r\n ext.COLOR_ATTACHMENT1_WEBGL,\r\n ext.COLOR_ATTACHMENT2_WEBGL\r\n ]);\r\n }\r\n\r\n //clears all framebuffers and sets the input framebuffer for multilayer rendering.\r\n setInputFramebuffer() {\r\n this.flip_state = false;\r\n let gl = this.context.gl;\r\n let ext = this.context.WEBGL_draw_buffers;\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.filter_framebuffer_1);\r\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.filter_framebuffer_2);\r\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.input_framebuffer);\r\n gl.clear(gl.COLOR_BUFFER_BIT);\r\n ext.drawBuffersWEBGL([\r\n ext.COLOR_ATTACHMENT0_WEBGL,\r\n ext.COLOR_ATTACHMENT1_WEBGL,\r\n ext.COLOR_ATTACHMENT2_WEBGL\r\n ]);\r\n }\r\n\r\n //sets the framebuffer for fx rendering and flips. call ONCE only for every fx call.\r\n setFxFramebufferAndGetTextures() {\r\n let gl = this.context.gl;\r\n this.flip_state = !this.flip_state;\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.flip_state ? this.filter_framebuffer_2 : this.filter_framebuffer_1);\r\n return this.flip_state ? {\r\n value: this.value_1,\r\n normal: this.normal,\r\n depth: this.depth_1,\r\n worldPos: this.worldPos\r\n } : {\r\n value: this.value_2,\r\n normal: this.normal,\r\n depth: this.depth_2,\r\n worldPos: this.worldPos\r\n }\r\n }\r\n\r\n //gets the output textures that would contain the results of an fx call that was set up with setFxFramebufferAndGetTextures\r\n getResultTextures() {\r\n return this.flip_state ? {\r\n value: this.value_2,\r\n normal: this.normal,\r\n depth: this.depth_2,\r\n worldPos: this.worldPos\r\n } : {\r\n value: this.value_1,\r\n normal: this.normal,\r\n depth: this.depth_1,\r\n worldPos: this.worldPos\r\n };\r\n }\r\n\r\n dispose() {\r\n this.context.gl.deleteTexture(this.value_1);\r\n this.context.gl.deleteTexture(this.value_2);\r\n this.context.gl.deleteTexture(this.depth_1);\r\n this.context.gl.deleteTexture(this.depth_2);\r\n this.context.gl.deleteTexture(this.normal);\r\n this.context.gl.deleteTexture(this.worldPos);\r\n this.context.gl.deleteFramebuffer(this.input_framebuffer);\r\n this.context.gl.deleteFramebuffer(this.filter_framebuffer_1);\r\n this.context.gl.deleteFramebuffer(this.filter_framebuffer_2);\r\n this.context.gl.deleteFramebuffer(this.worldPosReadFramebuffer);\r\n }\r\n}\r\n\r\nexport class CompositionPipelineFramebuffer{\r\n context: glenv;\r\n color: WebGLTexture;\r\n //normal: WebGLTexture;\r\n depth: WebGLTexture;\r\n framebuffer: WebGLFramebuffer;\r\n\r\n constructor(ctx: glenv, w: number, h: number){\r\n this.context = ctx;\r\n let gl = ctx.gl;\r\n let ext: WEBGL_draw_buffers = ctx.WEBGL_draw_buffers;\r\n this.color = gl.createTexture();\r\n //this.normal = gl.createTexture();\r\n this.depth = gl.createTexture();\r\n\r\n this.framebuffer = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer);\r\n\r\n gl.bindTexture(gl.TEXTURE_2D, this.color);\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, w, h, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, ext.COLOR_ATTACHMENT0_WEBGL, gl.TEXTURE_2D, this.color, 0);\r\n\r\n /*\r\n gl.bindTexture(gl.TEXTURE_2D, this.normal);\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, w, h, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, ext.COLOR_ATTACHMENT1_WEBGL, gl.TEXTURE_2D, this.normal, 0);\r\n */\r\n gl.bindTexture(gl.TEXTURE_2D, this.depth);\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, w, h, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_INT, null);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, this.depth, 0);\r\n }\r\n\r\n assignDrawBuffers(){\r\n /*let ext = this.context.WEBGL_draw_buffers;\r\n ext.drawBuffersWEBGL([\r\n ext.COLOR_ATTACHMENT0_WEBGL,\r\n ext.COLOR_ATTACHMENT1_WEBGL,\r\n ]);*/\r\n }\r\n\r\n dispose() {\r\n this.context.gl.deleteTexture(this.color);\r\n this.context.gl.deleteTexture(this.depth);\r\n //this.context.gl.deleteTexture(this.normal);\r\n this.context.gl.deleteFramebuffer(this.framebuffer);\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport { ViewportFilter} from \"../modules/renderfilters/RenderFilter\";\r\nimport { LayerPipelineFramebuffer, CompositionPipelineFramebuffer } from \"../modules/PipelineFramebuffer\";\r\nimport { Services } from \"./Services\";\r\nimport { RenderLayer } from '../modules/RenderLayer';\r\nimport { Vec2, Vec3, Mat4 } from \"../modules/vecmat\";\r\nimport { Parameter } from \"../modules/Parameter\";\r\n\r\nexport type glenv = {[name: string]: WebGLRenderingContext | any};\r\n\r\nclass DisplaySection {\r\n public cameraAdjustment: () => void;\r\n public viewportFilter: ViewportFilter;\r\n\r\n constructor(camAdjust: () => void, vFilter: ViewportFilter){\r\n this.cameraAdjustment = camAdjust;\r\n this.viewportFilter = vFilter;\r\n }\r\n}\r\n\r\nexport class RenderService{\r\n blob_submission_complete: boolean = true;\r\n context: glenv;\r\n\r\n force_dome_mode_update: boolean = true;\r\n\r\n layerPipeline: LayerPipelineFramebuffer;\r\n \r\n compositionPipelineFB1: CompositionPipelineFramebuffer;\r\n compositionPipelineFB2: CompositionPipelineFramebuffer;\r\n active_composition_pipeline: number = 1;\r\n\r\n viewportFilter: ViewportFilter;\r\n\r\n width: number;\r\n height: number;\r\n internalWidth: number;\r\n internalHeight: number;\r\n\r\n domeMode: string = \"normal\";\r\n\r\n sections: DisplaySection[] = [];\r\n\r\n is_complete_frame: boolean = false;\r\n\r\n constructor(gl: glenv){\r\n this.context = gl;\r\n let c = this.context.gl.canvas;\r\n this.width = c.width;\r\n this.height = c.height;\r\n this.internalHeight = c.height;\r\n this.internalWidth = c.width;\r\n this.domeMode = \"normal\";\r\n this.layerPipeline = new LayerPipelineFramebuffer(this.context, this.internalWidth, this.internalHeight);\r\n this.compositionPipelineFB1 = new CompositionPipelineFramebuffer(this.context, this.internalWidth, this.internalHeight);\r\n this.compositionPipelineFB2 = new CompositionPipelineFramebuffer(this.context, this.internalWidth, this.internalHeight);\r\n this.viewportFilter = new ViewportFilter();\r\n }\r\n\r\n resized(){\r\n let c = this.context.gl.canvas;\r\n this.width = c.width;\r\n this.height = c.height;\r\n if(this.layerPipeline && this.context.gl){\r\n this.layerPipeline.dispose();\r\n this.layerPipeline = new LayerPipelineFramebuffer(this.context, this.internalWidth, this.internalHeight);\r\n }\r\n if(this.compositionPipelineFB1 && this.context.gl){\r\n this.compositionPipelineFB1.dispose();\r\n this.compositionPipelineFB1 = new CompositionPipelineFramebuffer(this.context, this.internalWidth, this.internalHeight);\r\n }\r\n if(this.compositionPipelineFB2 && this.context.gl){\r\n this.compositionPipelineFB2.dispose();\r\n this.compositionPipelineFB2 = new CompositionPipelineFramebuffer(this.context, this.internalWidth, this.internalHeight);\r\n }\r\n }\r\n\r\n private get_write_composition_framebuffer(): CompositionPipelineFramebuffer{\r\n return this.active_composition_pipeline == 1 ? this.compositionPipelineFB1 : this.compositionPipelineFB2;\r\n }\r\n\r\n private get_read_composition_framebuffer(): CompositionPipelineFramebuffer{\r\n return this.active_composition_pipeline == 1 ? this.compositionPipelineFB2 : this.compositionPipelineFB1;\r\n }\r\n\r\n private flipComposition(){\r\n if(this.active_composition_pipeline == 1){\r\n this.active_composition_pipeline = 2;\r\n }else{\r\n this.active_composition_pipeline = 1;\r\n }\r\n }\r\n\r\n executeLayer(layer: RenderLayer) {\r\n this.layerPipeline.setInputFramebuffer();\r\n layer.source.execute(this.context);\r\n\r\n /*\r\n * Read current location\r\n */\r\n if(Services.RenderLayerService.isSelectedLayer(layer) && Services.SettingsService.getValueOrDefault(\"DomeMode\", \"normal\") != \"domemaster\"){\r\n let mc = Services.InteractionService.lastMousePosition;\r\n let layerMetaData = this.layerPipeline.readInputFramebuffer(\r\n mc.x * this.width / window.innerWidth,\r\n (1 - (mc.y / window.innerHeight)) * this.height \r\n );\r\n if(\r\n !layerMetaData.exists ||\r\n isNaN(layerMetaData.value.x1) ||\r\n isNaN(layerMetaData.value.x2) ||\r\n isNaN(layerMetaData.value.x3) ||\r\n isNaN(layerMetaData.value.x4)\r\n ){\r\n Services.LayerMetadataService.isUpToDate = false;\r\n }else{\r\n Services.LayerMetadataService.isUpToDate = true;\r\n Services.LayerMetadataService.coord = layerMetaData.coord;\r\n Services.LayerMetadataService.meshZ = layerMetaData.meshZ;\r\n Services.LayerMetadataService.normal = layerMetaData.normal;\r\n Services.LayerMetadataService.value = layerMetaData.value;\r\n Services.LayerMetadataService.z = layerMetaData.z;\r\n }\r\n }\r\n\r\n layer.filterPipeline.forEach(f => {\r\n let source_textures = this.layerPipeline.setFxFramebufferAndGetTextures()\r\n f.execute(this.context, source_textures);\r\n });\r\n\r\n let layer_source = this.layerPipeline.getResultTextures();\r\n let source = this.get_read_composition_framebuffer();\r\n let target = this.get_write_composition_framebuffer();\r\n if(layer.compositionFilter)\r\n layer.compositionFilter.execute(this.context, layer_source, source, target);\r\n else throw(\"Missing Composition Filter on layer \\\"\" + layer.name + \"\\\"\")\r\n this.flipComposition();\r\n }\r\n\r\n public forceDomeModeUpdate(){\r\n this.force_dome_mode_update = true;\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n }\r\n\r\n public loop(){\r\n Services.AdaptivePerformanceService.EndMeasurement();\r\n let needs_rerender = Services.AdaptivePerformanceService.NeedsRerender();\r\n\r\n Services.AdaptivePerformanceService.SetClientDimensions(this.context.gl.canvas.clientWidth, this.context.gl.canvas.clientHeight);\r\n let [recommended_width, recommended_height] = Services.AdaptivePerformanceService.GetRecommendedDimensions();\r\n if (this.width != recommended_width || this.height != recommended_height || this.force_dome_mode_update) {\r\n needs_rerender = true;\r\n this.force_dome_mode_update = false;\r\n this.domeMode = Services.SettingsService.getValueOrDefault(\"DomeMode\", \"normal\");\r\n this.width = recommended_width;\r\n this.height = recommended_height;\r\n if(this.domeMode == \"domemaster\"){\r\n let dome_backbuffer_side = Math.sqrt(Math.PI * Math.pow(Math.min(this.height, this.width) / 2, 2) / 5) | 0;\r\n this.internalWidth = dome_backbuffer_side;\r\n this.internalHeight = dome_backbuffer_side;\r\n } else {\r\n this.internalHeight = this.height;\r\n this.internalWidth = this.width;\r\n }\r\n this.context.gl.canvas.width = this.width;\r\n this.context.gl.canvas.height = this.height;\r\n this.context.gl.viewport(0, 0, this.width, this.height); \r\n let bb = this.context.gl.canvas.getBoundingClientRect();\r\n Services.PositionService.setScreenDimensions(bb.width, bb.height);\r\n Services.AdaptivePerformanceService.StartMeasurement();\r\n switch (this.domeMode) {\r\n case \"domemaster\":\r\n this.sections = [\r\n new DisplaySection(\r\n () => {\r\n Services.PositionService.recalculate_camera_transform_dome_side(\r\n Services.SettingsService.getValueOrDefault(\"DomeTilt\", 0),\r\n 3\r\n );\r\n },\r\n ViewportFilter.dome_side(new Vec2(0.0, 1.0))\r\n ),\r\n new DisplaySection(\r\n () => {\r\n Services.PositionService.recalculate_camera_transform_dome_side(\r\n Services.SettingsService.getValueOrDefault(\"DomeTilt\", 0),\r\n 1\r\n );\r\n },\r\n ViewportFilter.dome_side(new Vec2(0.0, -1.0))\r\n ),\r\n new DisplaySection(\r\n () => {\r\n Services.PositionService.recalculate_camera_transform_dome_top(\r\n Services.SettingsService.getValueOrDefault(\"DomeTilt\", 0) \r\n );\r\n },\r\n ViewportFilter.dome_top()\r\n ),\r\n new DisplaySection(\r\n () => {\r\n Services.PositionService.recalculate_camera_transform_dome_side(\r\n Services.SettingsService.getValueOrDefault(\"DomeTilt\", 0),\r\n 0\r\n );\r\n },\r\n ViewportFilter.dome_side(new Vec2(1.0, 0.0))\r\n ),\r\n\r\n new DisplaySection(\r\n () => {\r\n Services.PositionService.recalculate_camera_transform_dome_side(\r\n Services.SettingsService.getValueOrDefault(\"DomeTilt\", 0),\r\n 2\r\n );\r\n },\r\n ViewportFilter.dome_side(new Vec2(-1.0, 0.0))\r\n )\r\n ];\r\n break; \r\n case \"normal_red_blue\":\r\n this.sections = [\r\n new DisplaySection(\r\n () => {\r\n Services.PositionService.recalculate_camera_transform_stereo_offset(.01);\r\n },\r\n ViewportFilter.dyed(new Vec3(1.0, 0.2, 0.0))\r\n ),\r\n new DisplaySection(\r\n () => {\r\n Services.PositionService.recalculate_camera_transform_stereo_offset(-.01);\r\n },\r\n ViewportFilter.dyed(new Vec3(0.0, 0.8, 1.0))\r\n )\r\n ]\r\n break;\r\n case \"single_projector\":\r\n let fr_id = Services.ProjectorConfigurationService.getSelectedId();\r\n this.sections = Services.ProjectorConfigurationService.getConfigIds().map((id) => {\r\n let f = Services.ProjectorConfigurationService.getFrustumForId(id);\r\n if(id == fr_id) {\r\n let filter = ViewportFilter.single_projector(f);\r\n return new DisplaySection(\r\n () => {\r\n filter.parameters[\"blending_map\"].value = Services.ProjectorConfigurationService.getBlendMask();\r\n filter.parameters[\"warping_map\"].value = Services.ProjectorConfigurationService.getWarpTexture();\r\n filter.parameters[\"gamma_sep\"].value = Services.ProjectorConfigurationService.getBlendGamma();\r\n //Services.DebugService.putDebug(JSON.stringify(f, null, 2)); \r\n Services.PositionService.recalculate_camera_transform_single_frustum( \r\n Services.SettingsService.getValueOrDefault(\"DomeTilt\", 0),\r\n f\r\n );\r\n },\r\n filter\r\n )}\r\n else return new DisplaySection(\r\n () => {\r\n Services.PositionService.recalculate_camera_transform_single_frustum( \r\n Services.SettingsService.getValueOrDefault(\"DomeTilt\", 0),\r\n f\r\n );\r\n },\r\n null\r\n )\r\n })\r\n break;\r\n case \"normal\":\r\n default:\r\n this.sections = [\r\n new DisplaySection(\r\n ()=>{\r\n Services.PositionService.recalculate_camera_transform();\r\n },\r\n this.viewportFilter\r\n )\r\n ]\r\n }\r\n this.resized();\r\n } else if(needs_rerender){\r\n Services.AdaptivePerformanceService.StartMeasurement();\r\n }\r\n Services.RecordingService.handlePlayback();\r\n Services.PositionService.filterUpdate();\r\n Services.PlaybackService.update();\r\n if(needs_rerender){\r\n Services.LayerMetadataService.isUpToDate = false;\r\n Services.TileCacheService.reset_queried();\r\n Services.RequiredTilesService.clearRequiredTiles();\r\n this.sections.forEach((s) => {\r\n s.cameraAdjustment();\r\n Services.RequiredTilesService.addRequiredTiles();\r\n })\r\n Services.RequiredTilesService.finalizeRequiredTiles();\r\n Services.RenderLayerService.get_visible_renderlayers().forEach(l => {\r\n l.source?.requestStitchedTiles();\r\n })\r\n Services.StitchedTilesService.prepareStitchedTiles();\r\n if(this.is_complete_frame || !Services.RecordingService.acceptsFrames())\r\n Services.ParticlesService.prepareParticles();\r\n this.renderPipeline();\r\n this.is_complete_frame = Services.TileCacheService.is_complete() && this.blob_submission_complete;\r\n if(this.is_complete_frame && Services.RecordingService.acceptsFrames()){\r\n this.blob_submission_complete = false;\r\n this.context.gl.canvas.toBlob((blob) => {\r\n Services.RecordingService.submitFrameBlob(blob);\r\n this.blob_submission_complete = true;\r\n }, \"image/jpeg\", 0.9);\r\n }\r\n this.handleNextFrame();\r\n Services.GLService.raiseFrameDoneEvent();\r\n Services.TileCacheService.load_queried();\r\n }\r\n Services.FlexibleTimeBaseService.count_frame(this.is_complete_frame);\r\n Services.TileCacheService.frameCounter++;\r\n\r\n //if you just pass the function directly it loses its `this`, idk why it worked in threedee.vue but it doesn't here...\r\n requestAnimationFrame(() => {this.loop()});\r\n }\r\n\r\n renderPipeline(){\r\n this.context.gl.bindFramebuffer(this.context.gl.FRAMEBUFFER, null);\r\n let clearcolor = Services.SettingsService.getValueOrDefault(\"ClearColor\", Vec3.empty());\r\n this.context.gl.clearColor(clearcolor.x1, clearcolor.x2, clearcolor.x3, 1);\r\n this.context.gl.clear(this.context.gl.COLOR_BUFFER_BIT | this.context.gl.DEPTH_BUFFER_BIT);\r\n this.context.gl.clearColor(clearcolor.x1, clearcolor.x2, clearcolor.x3, 0);\r\n this.sections.forEach((section, i) => {\r\n if(!section.viewportFilter)return;\r\n this.context.gl.viewport(0, 0, this.internalWidth, this.internalHeight);\r\n let target_fb = this.get_write_composition_framebuffer();\r\n this.context.gl.bindFramebuffer(this.context.gl.FRAMEBUFFER, target_fb.framebuffer);\r\n target_fb.assignDrawBuffers();\r\n\r\n this.context.gl.clear(this.context.gl.COLOR_BUFFER_BIT | this.context.gl.DEPTH_BUFFER_BIT);\r\n this.flipComposition();\r\n\r\n target_fb = this.get_write_composition_framebuffer();\r\n this.context.gl.bindFramebuffer(this.context.gl.FRAMEBUFFER, target_fb.framebuffer);\r\n target_fb.assignDrawBuffers();\r\n this.context.gl.clear(this.context.gl.COLOR_BUFFER_BIT | this.context.gl.DEPTH_BUFFER_BIT);\r\n\r\n section.cameraAdjustment();\r\n //Services.DebugService.putDebug(JSON.stringify(Services.PositionService.camera_transform, null, 3));\r\n\r\n let has_transparency: (RenderLayer) => Boolean = (r: RenderLayer) => {\r\n return !!(r.compositionFilter.parameters[\"layer_opacity\"]?.value < 1)\r\n }\r\n Services.RenderLayerService.get_visible_renderlayers().filter((x) => !has_transparency(x)).forEach(l => {\r\n this.executeLayer(l);\r\n });\r\n Services.RenderLayerService.get_visible_renderlayers().filter(has_transparency).forEach(l => {\r\n this.executeLayer(l);\r\n });\r\n if(Services.ExtentVisualizationService.renderLayer){\r\n this.executeLayer(Services.ExtentVisualizationService.renderLayer);\r\n }\r\n this.context.gl.bindFramebuffer(this.context.gl.FRAMEBUFFER, null);\r\n //this.context.gl.clear(this.context.gl.COLOR_BUFFER_BIT | this.context.gl.DEPTH_BUFFER_BIT);\r\n if(i > 0 && this.domeMode == \"normal_red_blue\")this.context.gl.enable(this.context.gl.BLEND);\r\n this.context.gl.disable(this.context.gl.DEPTH_TEST);\r\n this.context.gl.blendFunc(this.context.gl.ONE, this.context.gl.ONE);\r\n this.context.gl.viewport(0, 0, this.width, this.height);\r\n section.viewportFilter.execute(this.context, this.get_read_composition_framebuffer());\r\n this.context.gl.disable(this.context.gl.BLEND);\r\n \r\n });\r\n }\r\n\r\n private nextFrameCallbacks: (()=>void)[] = [];\r\n public nextFrame(callback: () => void){\r\n this.nextFrameCallbacks.push(callback);\r\n }\r\n\r\n private handleNextFrame(){\r\n while(this.nextFrameCallbacks.length > 0){\r\n (this.nextFrameCallbacks.pop())();\r\n }\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nexport class UIDService {\r\n private nextUid: number = 0;\r\n private nextTopicId = {};\r\n\r\n getUid(): number {\r\n return this.nextUid++;\r\n }\r\n\r\n getNextTopicId(topic: string){\r\n if(this.nextTopicId.hasOwnProperty(topic)){\r\n this.nextTopicId[topic] = this.nextTopicId[topic] + 1;\r\n return this.nextTopicId[topic];\r\n }else{\r\n this.nextTopicId[topic] = 0;\r\n return 0;\r\n }\r\n }\r\n\r\n advanceTopicIdTo(topic: string, min_id: number){\r\n if(this.nextTopicId.hasOwnProperty(topic)){\r\n if(this.nextTopicId[topic] < min_id){\r\n this.nextTopicId[topic] = min_id;\r\n }\r\n }else{\r\n this.nextTopicId[topic] = min_id;\r\n }\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport { Services } from './Services';\r\nimport { SourceLayerInfo } from './SourceInfoService';\r\nimport { Tile, UECArea } from '../modules/tile';\r\nimport { glenv } from './RenderService';\r\nimport { Mat4 } from '@/modules/vecmat';\r\n\r\nexport class StitchedTileData {\r\n public origin: StitchedTileRequest; \r\n private float: boolean;\r\n public texture: WebGLTexture;\r\n public coord_offset: [number, number];\r\n public coord_scale: [number, number];\r\n public framesUnused: number = 0;\r\n public framebuffer: WebGLFramebuffer;\r\n\r\n constructor(env: glenv, origin: StitchedTileRequest, bounds: UECArea, float: boolean, size: number, depth_rb: WebGLRenderbuffer){\r\n let gl: WebGLRenderingContext = env.gl;\r\n this.origin = origin;\r\n this.float = float;\r\n this.texture = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, this.texture);\r\n if(float)\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, size, size, 0, gl.RGBA, gl.FLOAT, null);\r\n else\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, size, size, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n this.framebuffer = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.texture, 0);\r\n gl.bindRenderbuffer(gl.RENDERBUFFER, depth_rb);\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, depth_rb);\r\n this.updateBounds(bounds);\r\n this.framesUnused = 0;\r\n }\r\n\r\n updateBounds(bounds: UECArea){ \r\n this.coord_offset = [bounds.position.x, bounds.position.y];\r\n this.coord_scale = [bounds.extent.x, bounds.extent.y];\r\n\r\n this.origin.sources.filter(x => x.layer.extent).forEach(x => {\r\n let my_extent = x.layer.extent;\r\n let mbx0 = Math.max(bounds.position.x, my_extent.position.x);\r\n let mby0 = Math.max(bounds.position.y, my_extent.position.y);\r\n let mbx1 = Math.min(bounds.position.x + bounds.extent.x, my_extent.position.x + my_extent.extent.x);\r\n let mby1 = Math.min(bounds.position.y + bounds.extent.y, my_extent.position.y + my_extent.extent.y);\r\n this.coord_offset = [mbx0, mby0];\r\n this.coord_scale = [mbx1 - mbx0, mby1 - mby0];\r\n });\r\n }\r\n\r\n updateSize(env: glenv, size: number){\r\n let gl = env.gl;\r\n let float = this.float;\r\n gl.deleteTexture(this.texture);\r\n this.texture = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, this.texture);\r\n if(float)\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, size, size, 0, gl.RGBA, gl.FLOAT, null);\r\n else\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, size, size, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n }\r\n\r\n remove(env: glenv){\r\n env.gl.deleteTexture(this.texture);\r\n env.gl.deleteFramebuffer(this.framebuffer);\r\n }\r\n}\r\n\r\nclass StitchedTileRequest {\r\n sources: SourceLayerInfo[];\r\n time: number;\r\n height: number;\r\n stitched_type: string;\r\n\r\n constructor(sources: SourceLayerInfo[], time: number, height: number, type: string){\r\n this.sources = sources;\r\n this.time = time;\r\n this.height = height;\r\n this.stitched_type = type;\r\n }\r\n}\r\n\r\nexport class StitchedTilesService {\r\n\r\n private require_new_stitching: boolean = true;\r\n\r\n private stitched_textures: Map\r\n private requested_stitched_textures: StitchedTileRequest[] = [];\r\n \r\n private resolution: number = 1024;\r\n\r\n private shared_depth_buffer: WebGLRenderbuffer;\r\n\r\n private gl: glenv;\r\n\r\n constructor(gl: glenv){\r\n this.gl = gl;\r\n this.stitched_textures = new Map();\r\n\r\n Services.RequiredTilesService.addEventListener(\"RequiredTilesChanged\", (e) => {\r\n this.require_new_stitching = true;\r\n });\r\n Services.TimeService.addEventListener(\"CurrentTimeChanged\", (e) => {\r\n this.require_new_stitching = true;\r\n })\r\n let gl_: WebGLRenderingContext = gl.gl;\r\n this.shared_depth_buffer = gl_.createRenderbuffer();\r\n gl_.bindRenderbuffer(gl_.RENDERBUFFER, this.shared_depth_buffer);\r\n gl_.renderbufferStorage(gl_.RENDERBUFFER, gl_.DEPTH_COMPONENT16, this.resolution, this.resolution);\r\n }\r\n\r\n private get_gl(): WebGLRenderingContext{\r\n return this.gl.gl;\r\n }\r\n\r\n prepareStitchedTiles() {\r\n let bounds = Services.RequiredTilesService.getTilespaceBounds();\r\n let req_tiles = Services.RequiredTilesService.getRequiredTiles();\r\n this.stitched_textures.forEach((v, k) => {\r\n v.framesUnused += 1;\r\n if(v.framesUnused > 32){\r\n v.remove(this.gl);\r\n this.stitched_textures.delete(k);\r\n }\r\n });\r\n if(this.require_new_stitching){\r\n this.require_new_stitching = false;\r\n this.stitched_textures.forEach((v) => {\r\n v.updateBounds(bounds);\r\n this.renderStitchedTile(v, req_tiles);\r\n }); \r\n }\r\n this.requested_stitched_textures.forEach((r) => {\r\n let path = this.stitchedTilePath(r.sources, r.time, r.height);\r\n let s_tile = new StitchedTileData(this.gl, r, bounds, r.stitched_type != \"ColorTiles\", this.resolution, this.shared_depth_buffer);\r\n this.renderStitchedTile(s_tile, req_tiles);\r\n this.stitched_textures.set(path, s_tile);\r\n });\r\n this.requested_stitched_textures = [];\r\n }\r\n\r\n renderStitchedTile(target: StitchedTileData, tiles: Tile[]){\r\n let gl: WebGLRenderingContext = this.gl.gl;\r\n let shader = Services.GLService.Modules.stitching.stitching;\r\n let buff = Services.GLService.Geometries.stitching;\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, target.framebuffer);\r\n gl.enable(gl.DEPTH_TEST);\r\n gl.viewport(0, 0, this.resolution, this.resolution);\r\n gl.useProgram(shader.program);\r\n gl.enableVertexAttribArray(shader.attributes[\"position\"]);\r\n gl.bindBuffer(gl.ARRAY_BUFFER, buff.buffer);\r\n gl.vertexAttribPointer(shader.attributes[\"position\"], 3, gl.FLOAT, false, 0, 0);\r\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\r\n tiles.forEach(tile => {\r\n let texs = target.origin.sources.flatMap((x, i) => {\r\n let ts0 = x.resolve_time(target.origin.time, target.origin.time)[0];\r\n let ts1 = ts0 + 1;\r\n if(ts1 < x.layer?.timesteps?.length){\r\n let time0 = x.layer.timesteps[ts0];\r\n let time1 = x.layer.timesteps[ts1];\r\n let timedelta = time1 - time0;\r\n let fac1 = (target.origin.time - time0) / timedelta;\r\n let fac0 = 1 - fac1;\r\n let tmp_arr0 = new Float32Array(16);\r\n let tmp_arr1 = new Float32Array(16);\r\n tmp_arr0[i] = fac0;\r\n tmp_arr1[i] = fac1;\r\n return [ \r\n {\r\n tex: Services.TileCacheService.get_tile_data_direct(x, tile, ts0, x.resolve_height(target.origin.height)),\r\n mat: tmp_arr0\r\n },\r\n {\r\n tex: Services.TileCacheService.get_tile_data_direct(x, tile, ts1, x.resolve_height(target.origin.height)),\r\n mat: tmp_arr1\r\n }\r\n ];\r\n }else{\r\n let tmp_arr = new Float32Array(16);\r\n tmp_arr[i] = 1;\r\n return [\r\n {\r\n tex: Services.TileCacheService.get_tile_data_direct(x, tile, ts0, x.resolve_height(target.origin.height)),\r\n mat: tmp_arr\r\n }\r\n ];\r\n }\r\n });\r\n if(texs.some(x => !x.tex)){\r\n this.require_new_stitching = true;\r\n return;\r\n }\r\n gl.uniform2f(\r\n shader.uniforms[\"tile_coord\"],\r\n (tile.position.x - target.coord_offset[0]) / target.coord_scale[0],\r\n (tile.position.y - target.coord_offset[1]) / target.coord_scale[1]\r\n );\r\n gl.uniform2f(\r\n shader.uniforms[\"tile_size\"],\r\n tile.size.x / target.coord_scale[0],\r\n tile.size.y / target.coord_scale[1]\r\n );\r\n for(var i = 0; i < 4; i++){\r\n if(i < texs.length){\r\n gl.uniform1i(shader.uniforms[\"texture\" + i + \"_active\"], 1);\r\n gl.uniform2f(shader.uniforms[\"texture\" + i + \"_coord_offset\"], texs[i].tex.coord_offset[0], texs[i].tex.coord_offset[1]);\r\n gl.uniform2f(shader.uniforms[\"texture\" + i + \"_coord_scale\"], texs[i].tex.coord_scale[0], texs[i].tex.coord_scale[1]);\r\n if(target.origin.stitched_type == \"ColorTiles\"){\r\n gl.uniformMatrix4fv(shader.uniforms[\"texture\" + i + \"_mixing\"], false, (new Mat4(\r\n 1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, 0, 0, 1\r\n )).as_typed());\r\n } else {\r\n gl.uniformMatrix4fv(shader.uniforms[\"texture\" + i + \"_mixing\"], false, texs[i].mat);\r\n }\r\n gl.activeTexture(gl.TEXTURE0 + i);\r\n gl.bindTexture(gl.TEXTURE_2D, texs[i].tex.texture);\r\n gl.uniform1i(shader.uniforms[\"texture\" + i], i);\r\n } else {\r\n gl.uniform1i(shader.uniforms[\"texture\" + i + \"_active\"], 0);\r\n\r\n }\r\n }\r\n\r\n gl.drawArrays(buff.mode, buff.start, buff.length);\r\n });\r\n }\r\n\r\n stitchedTilePath(sources: SourceLayerInfo[], time: number, height: number): string {\r\n return sources.map(x => \r\n x.instance_name + \"/\" + \r\n x.layer_name + \"/\" + \r\n x.resolve_height(height)).join(\"/\");\r\n }\r\n\r\n getStitchedScalarTiles(source: SourceLayerInfo, time: number, height: number): StitchedTileData {\r\n if(!source)return;\r\n if(source.layer.layer_type != \"ScalarTiles\") return;\r\n let p = this.stitchedTilePath([source], time, height);\r\n if(this.stitched_textures.has(p)){\r\n let t = this.stitched_textures.get(p);\r\n t.origin.time = time;\r\n t.framesUnused = 0;\r\n return t;\r\n }\r\n this.requested_stitched_textures.push(new StitchedTileRequest([source], time, height, \"ScalarTiles\"));\r\n }\r\n\r\n getStitchedColorTiles(source: SourceLayerInfo, time: number, height: number): StitchedTileData {\r\n if(source.layer.layer_type != \"ColorTiles\") return;\r\n let p = this.stitchedTilePath([source], time, height);\r\n if(this.stitched_textures.has(p)){\r\n let t = this.stitched_textures.get(p);\r\n t.origin.time = time;\r\n t.framesUnused = 0;\r\n return t;\r\n }\r\n this.requested_stitched_textures.push(new StitchedTileRequest([source], time, height, \"ColorTiles\"));\r\n }\r\n\r\n\r\n getStitchedVector2Tiles(sourceu: SourceLayerInfo, sourcev: SourceLayerInfo, time: number, height: number): StitchedTileData {\r\n if(sourceu.layer.layer_type != \"ScalarTiles\" || sourcev.layer.layer_type != \"ScalarTiles\") return;\r\n let p = this.stitchedTilePath([sourceu, sourcev], time, height);\r\n if(this.stitched_textures.has(p)){\r\n let t = this.stitched_textures.get(p);\r\n t.origin.time = time;\r\n t.framesUnused = 0;\r\n return t;\r\n }\r\n this.requested_stitched_textures.push(new StitchedTileRequest([sourceu, sourcev], time, height, \"Vector2Tiles\"));\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { UEC } from \"../modules/tile\";\r\nimport { Vec3, Vec4 } from \"../modules/vecmat\";\r\n\r\nexport class LayerMetaDataService{\r\n coord: UEC = new UEC(0,0);\r\n z: number = 0;\r\n meshZ: number = 0;\r\n normal: Vec3 = new Vec3(0,0,0);\r\n value: Vec4 = new Vec4(0,0,0,0);\r\n isUpToDate: boolean = false;\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport { RenderLayer } from \"../modules/RenderLayer\";\r\nimport { UEC, UECArea } from \"../modules/tile\";\r\nimport { Services } from \"./Services\";\r\nimport { SourceLayerInfo } from \"./SourceInfoService\";\r\n\r\nexport class SamplePoint{\r\n public position: UEC;\r\n public height: number;\r\n public id: number;\r\n public time: number;\r\n public value: [number, number, number];\r\n constructor(position: UEC, height: number, id: number, time: number, value: [number, number, number]){\r\n this.position = position;\r\n this.height = height;\r\n this.id = id;\r\n this.time = time;\r\n this.value =value;\r\n }\r\n}\r\n\r\nexport class SamplePointData{\r\n data: ArrayBuffer;\r\n view: DataView;\r\n offset: UEC;\r\n length: number;\r\n private static FLOAT_LENGTH = 4;\r\n private static POSITION_LENGTH: number = 16;\r\n private static VEC3POINT_LENGTH: number = 28;\r\n private extent_buffer: UECArea = null;\r\n constructor(data: ArrayBuffer){\r\n this.data = data;\r\n this.view = new DataView(this.data);\r\n this.readOffsetPosition();\r\n this.length = (this.data.byteLength - SamplePointData.POSITION_LENGTH) / SamplePointData.VEC3POINT_LENGTH;\r\n }\r\n\r\n private readOffsetPosition(){\r\n let x = this.view.getFloat64(0, true);\r\n let y = this.view.getFloat64(8, true);\r\n this.offset = new UEC(x,y);\r\n }\r\n\r\n private anchor(index: number): number{\r\n return SamplePointData.POSITION_LENGTH + (SamplePointData.VEC3POINT_LENGTH * index);\r\n }\r\n\r\n readPosition(index: number): UEC{\r\n let anchor = this.anchor(index);\r\n let x = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 0), true);\r\n let y = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 1), true);\r\n let pos = new UEC(x,y).add(this.offset);\r\n return pos;\r\n }\r\n\r\n readTime(index: number): number{\r\n let anchor = this.anchor(index);\r\n let t = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 6), true);\r\n return t;\r\n }\r\n\r\n readPoint(index: number): SamplePoint{\r\n let anchor = this.anchor(index);\r\n let x = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 0), true);\r\n let y = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 1), true);\r\n let pos = new UEC(x,y).add(this.offset);\r\n let h = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 2), true);\r\n let v1 = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 3), true);\r\n let v2 = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 4), true);\r\n let v3 = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 5), true);\r\n let t = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 6), true);\r\n return new SamplePoint(pos, h, NaN, t, [v1,v2,v3]);\r\n }\r\n\r\n private writePoint(index: number, point: SamplePoint){\r\n let anchor = this.anchor(index);\r\n let pos = point.position.subtract(this.offset);\r\n this.view.setFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 0), pos.x, true);\r\n this.view.setFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 1), pos.y, true);\r\n this.view.setFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 2), point.height, true);\r\n this.view.setFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 3), point.value[0], true);\r\n this.view.setFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 4), point.value[1], true);\r\n this.view.setFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 5), point.value[2], true);\r\n this.view.setFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 6), point.time, true);\r\n }\r\n\r\n private setValue(index: number, value: [number, number, number]){\r\n let anchor = this.anchor(index);\r\n this.view.setFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 3), value[0], true);\r\n this.view.setFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 4), value[0], true);\r\n this.view.setFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 5), value[0], true);\r\n }\r\n\r\n public getValue(index: number): [number, number, number]{\r\n let anchor = this.anchor(index);\r\n let v1 = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 3), true);\r\n let v2 = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 4), true);\r\n let v3 = this.view.getFloat32(anchor + (SamplePointData.FLOAT_LENGTH * 5), true);\r\n return [v1, v2, v3];\r\n }\r\n\r\n *[Symbol.iterator](){\r\n for(let i = 0; i < this.length; i++){\r\n yield this.readPoint(i);\r\n }\r\n }\r\n\r\n extent(): UECArea{\r\n if(this.extent_buffer == null){\r\n let positions= [];\r\n for(let i = 0; i < this.length; i++){\r\n positions.push(this.readPosition(i));\r\n }\r\n this.extent_buffer = UECArea.fromPoints(positions);\r\n }\r\n return this.extent_buffer;\r\n }\r\n\r\n positionsToIdMap(): Object{\r\n let posmap = {};\r\n for(let i = 0; i < this.length; i++){\r\n let position = this.readPosition(i);\r\n let time = this.readTime(i);\r\n let obj_index: any = [time, position.x, position.y];\r\n posmap[obj_index] = i;\r\n }\r\n return posmap;\r\n }\r\n\r\n static Merged(data1: SamplePointData, data2: SamplePointData, merger: (v1: [number, number, number], v2: [number, number, number])=> [number, number, number]): SamplePointData{\r\n let longer = data1;\r\n let shorter = data2;\r\n if(data2.length > data1.length){\r\n longer = data2;\r\n shorter = data1;\r\n }\r\n\r\n //Copy longer array\r\n let result = new SamplePointData(\r\n longer.data.slice(0)\r\n );\r\n\r\n let shorter_objmap = shorter.positionsToIdMap();\r\n\r\n for(let i = 0; i < longer.length; i++){\r\n let pos = longer.readPosition(i);\r\n let time = longer.readTime(i);\r\n let pos_index: any = [time, pos.x, pos.y];\r\n let id_if_any: number = shorter_objmap[pos_index];\r\n //This discards any points not found in both arrays\r\n if(id_if_any){\r\n if(longer == data1){\r\n longer.setValue(i, \r\n merger(\r\n longer.getValue(i), \r\n shorter.getValue(id_if_any)\r\n )\r\n );\r\n }else{\r\n longer.setValue(i, \r\n merger(\r\n shorter.getValue(id_if_any),\r\n longer.getValue(i)\r\n )\r\n );\r\n }\r\n \r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public static Downsampled(data: SamplePointData, max_number_points: number): SamplePointData{\r\n if(data.length < max_number_points){\r\n return data;\r\n }\r\n let points_per_point = Math.floor(data.length / max_number_points);\r\n let new_data = new SamplePointData(data.data.slice(0, SamplePointData.POSITION_LENGTH + (max_number_points * SamplePointData.VEC3POINT_LENGTH)));\r\n for(let i = 0; i < max_number_points; i++){\r\n let point = data.readPoint(i * points_per_point);\r\n new_data.writePoint(i, point);\r\n }\r\n return new_data;\r\n }\r\n\r\n}\r\n\r\nexport class SamplingResult{\r\n layer: RenderLayer;\r\n extent: UECArea;\r\n timeRange: [number, number];\r\n components: number;\r\n data: SamplePointData\r\n\r\n constructor(layer: RenderLayer, extent: UECArea, timeRange: [number, number], components: number, data: SamplePointData){\r\n this.layer = layer;\r\n this.extent = extent;\r\n this.timeRange = timeRange;\r\n this.components = components;\r\n this.data = data;\r\n }\r\n}\r\n\r\n\r\nexport class PointSamplingService{\r\n\r\n public async sampleUECArea(sli: SourceLayerInfo, area: UECArea, zrange: [number, number] = null, timerange: [number, number], progress_callback: (progress: number)=> void, max_number_points: number = 5000): Promise{\r\n if(!zrange){\r\n zrange = [-99999999999,+99999999999];\r\n }\r\n let main_data = await Services.ProgressReportingDownloadService.downloadArrayBuffer(\r\n this.bbox_request_url_for_params(\r\n sli, \r\n area.topLeft(), \r\n area.bottomRight(), \r\n zrange[0], \r\n zrange[1], \r\n Math.round(timerange[0]),\r\n Math.round(timerange[1])\r\n ),\r\n (progress) => progress_callback(progress)\r\n );\r\n\r\n return SamplePointData.Downsampled(\r\n new SamplePointData(main_data), max_number_points\r\n );\r\n\r\n }\r\n\r\n public async sampleSelection(layer: RenderLayer, region: UECArea, progress_callback: (progress: number)=> void, max_number_points: number = 1000): Promise{\r\n //Fill progress_callback if not provided\r\n if(!progress_callback){\r\n progress_callback = (_progress) => {};\r\n }\r\n //The primary data source for this layer, i.e. the color\r\n let dataslot = null;\r\n //The additional data source for this layer, i.e. the delta for a difference layer\r\n let additional_dataslot = null;\r\n //How many components does the output have (between 1 and 3 both inclusive)\r\n let components = 0;\r\n //Should two layers be merged into one? I.e. layer1.0 -> result.0, layer2.0 -> result.1\r\n let merge_into_different_components = false;\r\n switch(layer.typeHint){\r\n case \"ColormapScalar\":\r\n dataslot = \"data0\";\r\n components = 1;\r\n break;\r\n case \"ColormapDifference\":\r\n dataslot = \"data0\";\r\n additional_dataslot = \"data1\";\r\n components = 1;\r\n break;\r\n case \"Image\":\r\n dataslot = \"data0\";\r\n components = 1;\r\n break;\r\n case \"Points\":\r\n dataslot = \"points\";\r\n components = 1;\r\n break;\r\n case \"Vec2Points\":\r\n dataslot = \"points\";\r\n components = 2;\r\n break;\r\n case \"Vector2\":\r\n dataslot = \"datau\";\r\n additional_dataslot = \"datav\";\r\n components = 2;\r\n merge_into_different_components = true;\r\n break;\r\n case \"Lines\":\r\n default: \r\n throw \"No sampling method implemented for layertype \" + layer.typeHint;\r\n break;\r\n }\r\n\r\n \r\n let timerange = Services.TimeService.getCurrentTimeRange();\r\n \r\n \r\n //Request the data\r\n let partscount = additional_dataslot == null ? 1 : 2;\r\n let main_data = await Services.ProgressReportingDownloadService.downloadArrayBuffer(\r\n this.bbox_request_url_for_selection_slot_and_time(\r\n layer.source.slots[dataslot].source,\r\n region,\r\n timerange\r\n ),\r\n (progress) => progress_callback(progress / partscount)\r\n );\r\n\r\n let main_sample_data = new SamplePointData(main_data);\r\n \r\n let additional_data = null;\r\n let additional_sample_data = null;\r\n\r\n if(additional_dataslot){\r\n additional_data = await Services.ProgressReportingDownloadService.downloadArrayBuffer(\r\n this.bbox_request_url_for_selection_slot_and_time(\r\n layer.source.slots[additional_dataslot].source,\r\n region,\r\n timerange\r\n ),\r\n (progress) => progress_callback((progress / partscount) + (1 / partscount))\r\n );\r\n }\r\n\r\n if(additional_data == null){\r\n return new SamplingResult(layer, region, timerange, components, \r\n SamplePointData.Downsampled(main_sample_data, max_number_points)\r\n );\r\n }else{\r\n let merger;\r\n //We need to merge here\r\n if(merge_into_different_components){\r\n merger = (v1: [number, number, number], v2: [number, number, number]) => [v1[0], v2[0], v1[2]];\r\n }else{\r\n //This is the delta one\r\n merger = (v1: [number, number, number], v2: [number, number, number]) => [v1[0] - v2[0],v1[1], v1[2]]\r\n }\r\n additional_sample_data = new SamplePointData(additional_data);\r\n let merged_data = SamplePointData.Merged(main_sample_data, additional_sample_data, merger);\r\n return new SamplingResult(layer, region, timerange, components, \r\n SamplePointData.Downsampled(merged_data, max_number_points)\r\n );\r\n }\r\n \r\n\r\n }\r\n\r\n public bbox_request_url_for_selection_slot_and_time(layer: SourceLayerInfo, region: UECArea, time: [number, number]): string{\r\n let zrange = layer.layer.zrange || [-999999999, +999999999];\r\n return this.bbox_request_url_for_params(\r\n layer,\r\n region.topLeft(),\r\n region.bottomRight(),\r\n zrange[0],\r\n zrange[1],\r\n time[0],\r\n time[1]\r\n );\r\n }\r\n\r\n public bbox_request_url_for_params(layer: SourceLayerInfo, pos_min: UEC, pos_max: UEC, height_min: number, height_max: number, t_min: number, t_max: number): string{\r\n return `sample_points/${encodeURIComponent(layer.instance_name)}/${encodeURIComponent(layer.layer_name)}/${pos_min.x}/${pos_min.y}/${height_min}/${pos_max.x}/${pos_max.y}/${height_max}/${t_min}/${t_max}`;\r\n }\r\n\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nexport class ParameterChangedEvent extends Event{\r\n public parameter: string;\r\n public group: string;\r\n public value: any;\r\n constructor(parameter: string, group: string, value: any){\r\n super(\"ParameterChanged\");\r\n this.parameter = parameter;\r\n this.group = group;\r\n this.value = value;\r\n }\r\n\r\n}\r\n\r\nexport class ParameterBroadcastService extends EventTarget{\r\n public parameterChanged(parameter: string, group: string, value: any){\r\n this.dispatchEvent(new ParameterChangedEvent(parameter,group,value));\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport { Services } from './Services';\r\nimport { SourceLayerInfo } from './SourceInfoService';\r\nimport { glenv } from './RenderService';\r\n\r\nexport class Particles {\r\n private particle_data_0: WebGLTexture; //even indices\r\n private particle_data_1: WebGLTexture; //odd indices\r\n private framebuffer_0: WebGLFramebuffer; //even indices\r\n private framebuffer_1: WebGLFramebuffer; //odd indices\r\n public frames_unused: number = 0;\r\n private index: number = 0;\r\n public origin: ParticlesRequest;\r\n \r\n public speed: number;\r\n public height: number;\r\n public time: number;\r\n public lifetime: number;\r\n\r\n constructor(env: glenv, origin: ParticlesRequest, size: number, depth_rb: WebGLRenderbuffer){\r\n let gl: WebGLRenderingContext = env.gl;\r\n this.origin = origin;\r\n let extent = origin.sourceu.layer.extent;\r\n let random_array = new Float32Array(4 * size * 8 * size);\r\n for(var i = 0; i < random_array.length; i+= 4){\r\n random_array[i] = Math.random();\r\n //Correct density for smaller differential area near the poles\r\n random_array[i + 1] = 1 - Math.acos(2.0 * Math.random() - 1.0) / Math.PI;\r\n random_array[i + 2] = origin.lifetime * (Math.random() + 0.5);\r\n }\r\n this.particle_data_0 = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, this.particle_data_0);\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, size * 8, size, 0, gl.RGBA, gl.FLOAT, random_array);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n this.framebuffer_0 = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer_0);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.particle_data_0, 0);\r\n gl.bindRenderbuffer(gl.RENDERBUFFER, depth_rb);\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, depth_rb);\r\n this.particle_data_1 = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, this.particle_data_1);\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, size * 8, size, 0, gl.RGBA, gl.FLOAT, random_array);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n this.framebuffer_1 = gl.createFramebuffer();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer_1);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.particle_data_1, 0);\r\n gl.bindRenderbuffer(gl.RENDERBUFFER, depth_rb);\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, depth_rb);\r\n this.frames_unused = 0;\r\n this.origin = origin;\r\n }\r\n\r\n //Gets the last frame's particle locations, this frame's target framebuffer and toggles the flag. Call only once per frame.\r\n get_fb_data_pingpong(): {\r\n target: WebGLFramebuffer,\r\n targetOffset: number,\r\n source: WebGLTexture\r\n sourceOffset: number,\r\n } {\r\n let sourceOffset = Math.floor(this.index / 2);\r\n this.index += 1;\r\n this.index %= 16;\r\n let targetOffset = Math.floor(this.index / 2);\r\n return this.index & 1 ? {\r\n //targetOffset: 0,\r\n target: this.framebuffer_1,\r\n targetOffset: targetOffset,\r\n //sourceOffset: 0,\r\n source: this.particle_data_0,\r\n sourceOffset: sourceOffset\r\n } : {\r\n target: this.framebuffer_0,\r\n //targetOffset: 0,\r\n targetOffset: targetOffset,\r\n source: this.particle_data_1,\r\n //sourceOffset: 0,\r\n sourceOffset: sourceOffset\r\n };\r\n }\r\n\r\n //Only gets the texture without changing state\r\n get_data(): {source: WebGLTexture, sourceOffset: number} {\r\n return this.index & 1 ? {\r\n source: this.particle_data_1,\r\n sourceOffset: Math.floor(this.index / 2)\r\n //sourceOffset: 0\r\n } : {\r\n source: this.particle_data_0,\r\n sourceOffset: Math.floor(this.index / 2)\r\n //sourceOffset: 0\r\n }\r\n }\r\n\r\n remove(env: glenv){\r\n env.gl.deleteTexture(this.particle_data_0);\r\n env.gl.deleteTexture(this.particle_data_1);\r\n env.gl.deleteFramebuffer(this.framebuffer_0);\r\n env.gl.deleteFramebuffer(this.framebuffer_1);\r\n }\r\n}\r\n\r\nclass ParticlesRequest {\r\n sourceu: SourceLayerInfo;\r\n sourcev: SourceLayerInfo;\r\n time: number;\r\n height: number;\r\n speed: number;\r\n lifetime: number;\r\n\r\n constructor(sourceu: SourceLayerInfo, sourcev: SourceLayerInfo, time: number, height: number, speed: number, lifetime: number) {\r\n this.sourceu = sourceu;\r\n this.sourcev = sourcev;\r\n this.time = time;\r\n this.height = height;\r\n this.speed = speed;\r\n this.lifetime = lifetime;\r\n }\r\n}\r\n\r\nexport class ParticlesService {\r\n\r\n private particle_sets: Map;\r\n private requested_particle_sets: ParticlesRequest[] = [];\r\n\r\n private shared_depth_buffer: WebGLRenderbuffer;\r\n\r\n private global_noise_texture: WebGLTexture;\r\n\r\n private gl: glenv;\r\n\r\n private particle_count_sqr: number = 256;\r\n\r\n\r\n constructor(gl: glenv){\r\n this.particle_count_sqr = Math.sqrt(Services.GLService.Geometries.tracers.length);\r\n this.gl = gl;\r\n this.particle_sets = new Map();\r\n\r\n let gl_: WebGLRenderingContext = gl.gl;\r\n this.shared_depth_buffer = gl_.createRenderbuffer();\r\n gl_.bindRenderbuffer(gl_.RENDERBUFFER, this.shared_depth_buffer);\r\n gl_.renderbufferStorage(gl_.RENDERBUFFER, gl_.DEPTH_COMPONENT16, this.particle_count_sqr * 8, this.particle_count_sqr);\r\n \r\n this.global_noise_texture = gl_.createTexture();\r\n gl_.bindTexture(gl_.TEXTURE_2D, this.global_noise_texture);\r\n\r\n let random_array = new Float32Array(4 * this.particle_count_sqr * this.particle_count_sqr);\r\n for(var i = 0; i < random_array.length; i++){\r\n random_array[i] = Math.random();\r\n }\r\n\r\n gl_.texImage2D(gl_.TEXTURE_2D, 0, gl_.RGBA, this.particle_count_sqr, this.particle_count_sqr, 0, gl_.RGBA, gl_.FLOAT, random_array);\r\n gl_.texParameteri(gl_.TEXTURE_2D, gl_.TEXTURE_MAG_FILTER, gl_.NEAREST);\r\n gl_.texParameteri(gl_.TEXTURE_2D, gl_.TEXTURE_MIN_FILTER, gl_.NEAREST);\r\n gl_.texParameteri(gl_.TEXTURE_2D, gl_.TEXTURE_WRAP_S, gl_.CLAMP_TO_EDGE);\r\n gl_.texParameteri(gl_.TEXTURE_2D, gl_.TEXTURE_WRAP_T, gl_.CLAMP_TO_EDGE);\r\n\r\n }\r\n\r\n prepareParticles() {\r\n let gl = this.gl.gl;\r\n gl.disable(gl.DEPTH_TEST);\r\n gl.viewport(0, 0, this.particle_count_sqr * 8, this.particle_count_sqr);\r\n let shader = Services.GLService.Modules.particles.particles;\r\n gl.useProgram(shader.program);\r\n\r\n this.particle_sets.forEach((particles, path) => {\r\n particles.frames_unused += 1;\r\n if(particles.frames_unused > 32){\r\n particles.remove(this.gl);\r\n this.particle_sets.delete(path);\r\n }\r\n });\r\n this.particle_sets.forEach((particles) => {\r\n this.calculateOneParticleSet(particles);\r\n });\r\n this.requested_particle_sets.forEach((req) => {\r\n let path = this.particlesPath(req.sourceu, req.sourcev);\r\n let new_particles = new Particles(this.gl, req, this.particle_count_sqr, this.shared_depth_buffer);\r\n this.calculateOneParticleSet(new_particles);\r\n this.particle_sets.set(path, new_particles);\r\n });\r\n this.requested_particle_sets = [];\r\n gl.enable(gl.DEPTH_TEST);\r\n }\r\n\r\n calculateOneParticleSet(particles: Particles) {\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n let gl = this.gl.gl;\r\n let shader = Services.GLService.Modules.particles.particles;\r\n let buff = Services.GLService.Geometries.quad;\r\n\r\n let stitched = Services.StitchedTilesService.getStitchedVector2Tiles(particles.origin.sourceu, particles.origin.sourcev, particles.time, particles.height);\r\n if(!stitched)return;\r\n\r\n let fb_data = particles.get_fb_data_pingpong();\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, fb_data.target);\r\n gl.uniform1f(shader.uniforms[\"target_offset\"], fb_data.targetOffset);\r\n //gl.bindFramebuffer(gl.FRAMEBUFFER, null);\r\n\r\n let texi = 0;\r\n\r\n gl.enableVertexAttribArray(shader.attributes[\"position\"]);\r\n gl.bindBuffer(gl.ARRAY_BUFFER, buff.buffer);\r\n gl.vertexAttribPointer(shader.attributes[\"position\"], 2, gl.FLOAT, false, 0, 0);\r\n gl.clear(gl.COLOR_BUFFER_BIT);\r\n\r\n gl.activeTexture(gl.TEXTURE0 + texi);\r\n gl.bindTexture(gl.TEXTURE_2D, fb_data.source);\r\n gl.uniform1i(shader.uniforms[\"particles\"], texi);\r\n gl.uniform1f(shader.uniforms[\"source_offset\"], fb_data.sourceOffset);\r\n texi++;\r\n\r\n gl.activeTexture(gl.TEXTURE0 + texi);\r\n gl.bindTexture(gl.TEXTURE_2D, stitched.texture);\r\n gl.uniform1i(shader.uniforms[\"vector_field\"], texi);\r\n gl.uniform2f(shader.uniforms[\"vector_field_coord_offset\"], stitched.coord_offset[0], stitched.coord_offset[1]);\r\n gl.uniform2f(shader.uniforms[\"vector_field_coord_scale\"], stitched.coord_scale[0], stitched.coord_scale[1]);\r\n texi++;\r\n\r\n gl.activeTexture(gl.TEXTURE0 + texi);\r\n gl.bindTexture(gl.TEXTURE_2D, this.global_noise_texture);\r\n gl.uniform1i(shader.uniforms[\"global_random\"], texi);\r\n\r\n gl.uniform1f(shader.uniforms[\"particle_speed\"], particles.speed);\r\n gl.uniform1f(shader.uniforms[\"particle_lifetime\"], particles.lifetime);\r\n gl.uniform2f(shader.uniforms[\"frame_random\"], Math.random(), Math.random());\r\n gl.drawArrays(gl.TRIANGLE_STRIP, buff.start, buff.length)\r\n\r\n\r\n // Debugging\r\n /*\r\n let dp = Services.GLService.Modules.viewport.copy;\r\n\r\n gl.useProgram(dp.program);\r\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\r\n\r\n gl.uniform1i(dp.uniforms[\"color_map\"], 0);\r\n gl.activeTexture(gl.TEXTURE0);\r\n gl.bindTexture(gl.TEXTURE_2D, particles.get_data());\r\n\r\n gl.enableVertexAttribArray(shader.attributes[\"position\"]);\r\n gl.bindBuffer(gl.ARRAY_BUFFER, buff.buffer);\r\n gl.vertexAttribPointer(shader.attributes[\"position\"], 2, gl.FLOAT, false, 0, 0);\r\n\r\n gl.drawArrays(gl.TRIANGLE_STRIP, buff.start, buff.length);\r\n */\r\n }\r\n\r\n getParticleCount() {\r\n return this.particle_count_sqr * this.particle_count_sqr;\r\n }\r\n\r\n getParticles(sourceu: SourceLayerInfo, sourcev: SourceLayerInfo, time: number, height: number, speed: number, lifetime: number): Particles {\r\n if(sourceu.layer.layer_type != \"ScalarTiles\" || sourcev.layer.layer_type != \"ScalarTiles\") return;\r\n let p = this.particlesPath(sourceu, sourcev);\r\n if(this.particle_sets.has(p)){\r\n let t = this.particle_sets.get(p);\r\n t.frames_unused = 0;\r\n t.speed = speed;\r\n t.time = time;\r\n t.height = height;\r\n t.lifetime = lifetime;\r\n return t;\r\n }\r\n this.requested_particle_sets.push(new ParticlesRequest(sourceu, sourcev, time, height, speed, lifetime));\r\n }\r\n\r\n particlesPath(sourceu: SourceLayerInfo, sourcev: SourceLayerInfo): string {\r\n return sourceu.instance_name + \"/\" + sourceu.layer_name + \"/\" + sourcev.instance_name + \"/\" + sourcev.layer_name;\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nexport class CameraService {\r\n\r\n constructor(){\r\n\r\n }\r\n\r\n getModelMatrix() {\r\n return null;\r\n }\r\n\r\n getCameraMatrix() {\r\n return null;\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nexport class StaticToBlobService {\r\n private blobs: Map;\r\n\r\n constructor() {\r\n this.blobs = new Map();\r\n }\r\n\r\n insert(url: string, cb?) {\r\n fetch(url).then((r) => r.blob()).then((b) => {\r\n let blob_url = URL.createObjectURL(b);\r\n this.blobs.set(url, blob_url);\r\n if(cb) cb(blob_url);\r\n });\r\n\r\n }\r\n\r\n getBlobUrl (url: string, cb) {\r\n if(this.blobs.has(url))\r\n cb(this.blobs.get(url));\r\n else\r\n this.insert(url, cb);\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nexport class ProgressReportingDownloadService{\r\n \r\n public downloadArrayBuffer(url: string, progress_callback: (progress: number)=>void, method: string=\"GET\"): Promise{\r\n return new Promise((res, rej) =>{\r\n let xhr = new XMLHttpRequest();\r\n xhr.open(method,url);\r\n xhr.responseType = \"arraybuffer\";\r\n xhr.onprogress = (e) => progress_callback(e.loaded / (e.total || 1));\r\n xhr.onerror = (_e) => rej(\"Error status \" + xhr.status);\r\n xhr.onreadystatechange = (_e) => {\r\n if(xhr.readyState === XMLHttpRequest.DONE) {\r\n let status = xhr.status;\r\n if (status === 0 || (status >= 200 && status < 400)) {\r\n res(xhr.response);\r\n } else {\r\n rej(\"Error status \" + xhr.status);\r\n }\r\n }\r\n };\r\n xhr.send();\r\n });\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport { Parameter } from \"../modules/Parameter\";\r\nimport { FlexibleTimeBaseService } from \"./FlexibleTimeBaseService\";\r\nimport { CameraPosition } from \"./PositionService\";\r\nimport { ServiceBarrier, Services } from \"./Services\";\r\n\r\nexport class PlaybackStateChangedEvent extends Event{\r\n state: boolean = false;\r\n constructor(state: boolean){\r\n super(\"PlaybackStateChanged\");\r\n this.state = state;\r\n }\r\n}\r\n\r\nexport class PlaybackService extends EventTarget{\r\n\r\n playback_state: boolean = false;\r\n\r\n public playback_overridden = false;\r\n\r\n public stalled = false;\r\n\r\n speed_seconds_per_second: number = 86400 * 1000;\r\n\r\n interval_handle = null;\r\n\r\n playback_start: number;\r\n playback_end: number;\r\n\r\n a: number;\r\n b: number;\r\n\r\n time_min: number;\r\n time_max: number;\r\n time_range_length: number;\r\n time_range_end: number;\r\n\r\n p0: CameraPosition;\r\n\r\n constructor(){\r\n super();\r\n ServiceBarrier.wait().then(() => {\r\n Services.SettingsService.initializeSetting(new Parameter(\"WaitForLoad\", true, \"boolean\"));\r\n });\r\n /*ServiceBarrier.wait().then(() =>\r\n Services.GLService.addEventListener(\"FrameDone\", () => {\r\n if(this.playback_state || this.playback_overridden){\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n this.setTimerangeToCorrectPosition();\r\n }\r\n }));*/\r\n }\r\n public update() {\r\n if(this.playback_state || this.playback_overridden){\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n this.setTimerangeToCorrectPosition();\r\n if(!this.playback_overridden){\r\n if(Services.TileCacheService.loading && Services.SettingsService.getSetting(\"WaitForLoad\").value){\r\n let ratio = Services.TileCacheService.ratio;\r\n this.stalled = true;\r\n this.begin_playing(Math.pow(ratio[0]/ratio[1], 2));\r\n }else{\r\n this.stalled = false;\r\n this.begin_playing();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private setTimerangeToCorrectPosition(){\r\n let now = Services.FlexibleTimeBaseService.now();\r\n\r\n let left_time = this.a * now + this.b;\r\n\r\n let gtr = Services.TimeService.getOverallTimeRange();\r\n\r\n if(!this.playback_overridden && left_time + this.time_range_length > gtr[1]){\r\n this.setPlaybackState(false);\r\n Services.TimeService.moveTimeStart();\r\n }else{\r\n left_time = Math.max(Math.min(left_time, gtr[1] - this.time_range_length), gtr[0]);\r\n Services.TimeService.setCurrentTimeRange(\r\n left_time,\r\n left_time + this.time_range_length\r\n );\r\n }\r\n }\r\n\r\n public setSpeed(speed_seconds_per_second: number){\r\n this.speed_seconds_per_second = speed_seconds_per_second;\r\n this.begin_playing();\r\n }\r\n\r\n public togglePlaying(){\r\n this.setPlaybackState(!this.playback_state);\r\n }\r\n\r\n public setPlaybackState(playback_state: boolean){\r\n if(this.playback_state != playback_state){\r\n this.playback_state = playback_state;\r\n if(playback_state){\r\n this.begin_playing();\r\n }else{\r\n this.stalled = false;\r\n }\r\n this.dispatchEvent(new PlaybackStateChangedEvent(playback_state));\r\n }\r\n }\r\n\r\n begin_playing(speed: number = 1){\r\n let tr = Services.TimeService.getOverallTimeRange();\r\n let ctr = Services.TimeService.getCurrentTimeRange();\r\n let now = Services.FlexibleTimeBaseService.now();\r\n\r\n this.a = this.speed_seconds_per_second * speed / 1000;\r\n this.b = ctr[0] - this.a * now;\r\n this.time_range_length = ctr[1] - ctr[0];\r\n\r\n this.time_range_end = tr[1];\r\n }\r\n\r\n stop_playing(){\r\n this.setPlaybackState(false);\r\n }\r\n\r\n public start_cam_snap(){\r\n this.p0 = Services.PositionService.getCameraPosition();\r\n }\r\n\r\n public format_cam_snap(){\r\n let p0 = this.p0;\r\n let p1 = Services.PositionService.getCameraPosition();\r\n return `lat0 = ${p0.Latitude}\r\nlon0 = ${p0.Longitude}\r\nd0 = ${p0.Distance}\r\nelev0 = ${p0.Elevation}\r\naz0 = ${p0.Azimuth}\r\nv0 = ${p0.VerticalPosition}\r\n\r\nlat1 = ${p1.Latitude}\r\nlon1 = ${p1.Longitude}\r\nd1 = ${p1.Distance}\r\nelev1 = ${p1.Elevation}\r\naz1 = ${p1.Azimuth}\r\nv1 = ${p1.VerticalPosition}`\r\n }\r\n\r\n\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { Parameter } from \"../Parameter\";\r\nimport { SourceLayerInfo } from \"../../services/SourceInfoService\";\r\nimport { Services } from \"../../services/Services\";\r\nimport { Mat4 } from \"../vecmat\";\r\nimport { UECArea } from \"../tile\";\r\n\r\nexport const EARTH_RADIUS = 6378000.0;\r\n\r\nexport type RenderSourceSlotType = \"tile\" | \"points\" | \"lines\";\r\n\r\nexport class RenderSourceSlot{\r\n name: string;\r\n shaderName: string;\r\n source: SourceLayerInfo;\r\n type: RenderSourceSlotType = \"tile\";\r\n mixing: Mat4;\r\n\r\n constructor(name: string, shaderName:string, source: SourceLayerInfo, type: RenderSourceSlotType, mixing: Mat4){\r\n this.name = name;\r\n this.shaderName = shaderName;\r\n this.source = source;\r\n this.type = type;\r\n this.mixing = mixing;\r\n }\r\n}\r\n\r\nexport class RenderSource{\r\n name: string;\r\n slots: {[name: string]: RenderSourceSlot};\r\n shaders: {[name: string]: {program: WebGLProgram, uniforms: {[name: string]: WebGLUniformLocation}, attributes: {[name: string]: number}}};\r\n shader: {program: WebGLProgram, uniforms: {[name: string]: WebGLUniformLocation}, attributes: {[name: string]: number}};\r\n parameters: {[name:string]: Parameter} = {};\r\n slot_order: string[];\r\n\r\n constructor(){}\r\n\r\n getSourceInfos(): SourceLayerInfo[]{\r\n let slis = new Map();\r\n for(let s in this.slots){\r\n if(this.slots[s].source){\r\n slis.set(s, this.slots[s].source);\r\n }\r\n }\r\n if(this.slot_order){\r\n let ordered_slis = [];\r\n for(let order of this.slot_order){\r\n if(slis.has(order)){\r\n ordered_slis.push(slis.get(order));\r\n }\r\n }\r\n return ordered_slis;\r\n }else{\r\n return [... slis.values()];\r\n }\r\n\r\n }\r\n\r\n getVerticalBoundsWorldSpace(): [number, number]{\r\n return [1, 1];\r\n }\r\n\r\n getVerticalBoundsNative(): [number, number] {\r\n return [1, 1];\r\n }\r\n\r\n getExtent(): UECArea{\r\n return null;\r\n }\r\n\r\n getTimeRange(): [number, number]{\r\n let e_layers: [number, number][] = Object.values(this.slots).filter((v: RenderSourceSlot) =>{\r\n return v.source && v.source.layer && v.source.layer.timerange;\r\n }).map(v => v.source.layer.timerange)\r\n if (e_layers.length) return e_layers.reduce((p: [number, number], v: [number, number]) => {\r\n return [Math.min(p[0], v[0]), Math.max(p[1], v[1])];\r\n });\r\n }\r\n\r\n applyScaling(val: number): number {\r\n throw(\"RenderSource.applyScaling must be overridden!\");\r\n }\r\n\r\n applyOffset(val: number): number {\r\n throw(\"RenderSource.applyOffset must be overridden!\");\r\n }\r\n\r\n /*\r\n * Without doing ANY GL stuff, tell the stitchedtilesservice what stitched tiles you will need so they can be made \r\n * available before rendering.\r\n */\r\n requestStitchedTiles() {\r\n }\r\n\r\n /*\r\n * Only put truly universal operations that are shared between ALL rendersources here.\r\n */\r\n execute(context: {[name: string]: WebGLRenderingContext | any}) {\r\n this.shader = this.shaders[Services.PositionService.projection_mode];\r\n context.gl.useProgram(this.shader.program);\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[\"projectionMatrix\"], false, Services.PositionService.camera_transform.as_typed());\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[\"viewMatrix\"], false, Services.PositionService.world_transform.as_typed());\r\n Object.values(this.parameters).forEach(p => {\r\n let uloc = this.shader.uniforms[p.shader_name];\r\n if(!uloc)return;\r\n switch (p.type) {\r\n case \"number\": {\r\n context.gl.uniform1f(uloc, p.value);\r\n break;\r\n }\r\n case \"boolean\": {\r\n context.gl.uniform1i(uloc, p.value);\r\n break;\r\n }\r\n case \"vector2D\": {\r\n context.gl.uniform2f(uloc, p.value.x1, p.value.x2);\r\n break;\r\n }\r\n case \"vector3D\": {\r\n context.gl.uniform3f(uloc, p.value.x1, p.value.x2, p.value.x3);\r\n break;\r\n }\r\n }\r\n });\r\n };\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { Parameter } from \"../Parameter\";\r\nimport { Services } from \"../../services/Services\";\r\nimport { Mat4 } from \"../vecmat\";\r\nimport { RenderSource, RenderSourceSlot, EARTH_RADIUS } from \"./RenderSource\";\r\nimport { StitchedTileData } from \"../../services/StitchedTilesService\";\r\nimport { UEC, UECArea, Tile, Coord } from \"../tile\";\r\nimport { SourceLayerInfo } from \"@/services/SourceInfoService\";\r\nexport class TileRenderSource extends RenderSource {\r\n\r\n constructor() {\r\n super();\r\n //@ts-ignore\r\n this.shaders = Services.GLService.Modules.sources.tileSource;\r\n this.name = \"TileRenderSource\";\r\n this.parameters = {\r\n displacement_scale: Services.SettingsService.getSetting(\"Exaggeration\"),\r\n displacement_correction: new Parameter(\"Displacement Scaling\", 1, \"number\", true).setShaderName(\"displacement_unit\"),\r\n displacement_offset: new Parameter(\"Vertical Offset\", 0, \"number\", true),\r\n z_level: new Parameter(\"Z Level\", 0,\"select\", true)\r\n };\r\n this.parameters[\"displacement_offset\"].shader_name = \"displacement_offset\";\r\n this.parameters[\"z_level\"].shader_name = \"z_level\";\r\n this.parameters[\"z_level\"].addOption(0);\r\n this.slots = {\r\n \"displacement\": new RenderSourceSlot(\r\n \"Displacement Layer\",\r\n \"displacement\",\r\n null,\r\n \"tile\",\r\n null\r\n ),\r\n \"data0\": new RenderSourceSlot(\r\n \"Data Layer 0\",\r\n \"data0\",\r\n null,\r\n \"tile\",\r\n Mat4.identity()\r\n ),\r\n \"data1\": new RenderSourceSlot(\r\n \"Data Layer 1\",\r\n \"data1\",\r\n null,\r\n \"tile\",\r\n Mat4.identity()\r\n ),\r\n \"data2\": new RenderSourceSlot(\r\n \"Data Layer 2\",\r\n \"data2\",\r\n null,\r\n \"tile\",\r\n Mat4.identity()\r\n ),\r\n \"data3\": new RenderSourceSlot(\r\n \"Data Layer 3\",\r\n \"data3\",\r\n null,\r\n \"tile\",\r\n Mat4.identity()\r\n )\r\n };\r\n }\r\n\r\n getVerticalBoundsWorldSpace(): [number, number] {\r\n if(this.slots[\"displacement\"]?.source?.layer?.datarange){\r\n let min_scaled = this.applyScaling(this.slots[\"displacement\"].source.layer.datarange[0]);\r\n let max_scaled = this.applyScaling(this.slots[\"displacement\"].source.layer.datarange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n return[1, 1];\r\n }\r\n\r\n getVerticalBoundsNative(): [number, number] {\r\n if(this.slots[\"displacement\"]?.source?.layer?.datarange){\r\n let min_scaled = this.applyOffset(this.slots[\"displacement\"].source.layer.datarange[0]);\r\n let max_scaled = this.applyOffset(this.slots[\"displacement\"].source.layer.datarange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n return[1, 1];\r\n }\r\n\r\n getExtent(): UECArea {\r\n let e_layers = Object.values(this.slots).filter((v: RenderSourceSlot) => \r\n v.shaderName != \"displacement\" && v.source?.layer?.extent\r\n ).map(v => v.source.layer.extent);\r\n if (e_layers.length > 0) return e_layers.reduce((b, nb) => {\r\n let tlc = new UEC(Math.max(nb.position.x, b.position.x), Math.max(nb.position.y, b.position.y));\r\n let brc = new UEC(Math.min(nb.position.x + nb.extent.x, b.position.x + b.extent.x), Math.min(nb.position.y + nb.extent.y, b.position.y + b.extent.y));\r\n return new UECArea(tlc, new UEC(brc.x - tlc.x, brc.y - tlc.y));\r\n }, new UECArea(new UEC(0, 0), new UEC(1, 1)));\r\n }\r\n\r\n applyScaling(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n * this.parameters[\"displacement_scale\"].value\r\n / EARTH_RADIUS\r\n }\r\n\r\n applyOffset(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n / EARTH_RADIUS\r\n }\r\n\r\n requestStitchedTiles(){\r\n if(this.slots[\"displacement\"] && this.slots[\"displacement\"].source){\r\n let time = Services.TimeService.getMeanTime();\r\n let height = 0;\r\n Services.StitchedTilesService.getStitchedScalarTiles(this.slots[\"displacement\"].source, time, height);\r\n }\r\n }\r\n\r\n /*\r\n * Only run this function once the gl context has been prepared. It requires the correct color attachments to be set.\r\n */\r\n execute(context: { [name: string]: WebGLRenderingContext | any; }) {\r\n super.execute(context);\r\n\r\n let time = Services.TimeService.getMeanTime();\r\n let height = 0;\r\n if(!Object.values(this.slots).some((slot) => slot?.source?.layer))return;\r\n if(this.slots[\"data0\"]?.source?.layer?.zsteps){\r\n height = parseFloat(this.parameters[\"z_level\"].value);\r\n }\r\n\r\n context.gl.enable(context.gl.DEPTH_TEST);\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n let buff = Services.GLService.Geometries.tile;\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"position\"], 2, context.gl.FLOAT, false, 0, 0);\r\n\r\n let count_timestep_slots = Object.entries(this.slots).filter(([name, slot]) => {\r\n if(name == \"displacement\")return false;\r\n return slot.source?.layer?.timesteps?.length > 1\r\n }).length;\r\n let count_empty_slots = Object.values(this.slots).filter(s => {\r\n return !s.source\r\n }).length;\r\n\r\n let slots_internal: {[name: string]: {\r\n source: SourceLayerInfo,\r\n shaderName: string,\r\n mixing: Mat4,\r\n time_index: number,\r\n height_index: number\r\n }} = {};\r\n let slots_used = 0;\r\n if(count_timestep_slots <= count_empty_slots){\r\n Object.entries(this.slots).forEach(([name, slot]) => {\r\n if(!slot.source)return;\r\n let ts0 = slot.source.resolve_time(time, time)[0];\r\n let ts1 = ts0 + 1;\r\n let hs = slot.source.resolve_height(height);\r\n if(name == \"displacement\"){\r\n slots_internal[\"displacement\"] = {\r\n source: slot.source,\r\n shaderName: \"displacement\",\r\n mixing: null,\r\n time_index: ts0,\r\n height_index: hs\r\n };\r\n }else if(!slot.source?.layer?.timesteps || ts1 >= slot.source.layer.timesteps.length){\r\n let l_name = \"data\"+slots_used;\r\n slots_internal[l_name] = {\r\n source: slot.source,\r\n shaderName: l_name,\r\n mixing: slot.mixing,\r\n time_index: ts0,\r\n height_index: hs\r\n };\r\n slots_used += 1;\r\n }else{\r\n let time0 = slot.source.layer.timesteps[ts0];\r\n let time1 = slot.source.layer.timesteps[ts1];\r\n let timedelta = time1 - time0;\r\n let fac1 = (time - time0) / timedelta;\r\n let fac0 = 1 - fac1;\r\n slots_internal[\"data\"+slots_used] = {\r\n source: slot.source,\r\n shaderName: \"data\"+slots_used,\r\n mixing: slot.mixing.mul_number(fac0),\r\n time_index: ts0,\r\n height_index: hs\r\n };\r\n slots_used += 1;\r\n slots_internal[\"data\"+slots_used] = {\r\n source: slot.source,\r\n shaderName: \"data\"+slots_used,\r\n mixing: slot.mixing.mul_number(fac1),\r\n time_index: ts1,\r\n height_index: hs\r\n };\r\n slots_used += 1;\r\n }\r\n });\r\n }else{\r\n Object.entries(this.slots).forEach(([name, slot]) => {\r\n if(!slot.source)return;\r\n slots_internal[name] = {\r\n source: slot.source,\r\n shaderName: slot.shaderName,\r\n mixing: slot.mixing,\r\n time_index: slot.source.resolve_time(time, time)[0],\r\n height_index: slot.source.resolve_height(height)\r\n };\r\n });\r\n }\r\n\r\n Object.keys(this.slots).forEach(key => {\r\n let slot = slots_internal[key];\r\n if (slot?.source) {\r\n context.gl.uniform1i(this.shader.uniforms[slot.shaderName + \"_active\"], true);\r\n if (slot.mixing)\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[slot.shaderName + \"_mixing\"], false, slot.mixing.as_typed());\r\n }\r\n else {\r\n context.gl.uniform1i(this.shader.uniforms[this.slots[key].shaderName + \"_active\"], false);\r\n }\r\n\r\n });\r\n let st: StitchedTileData;\r\n let req_tiles: Tile[];\r\n let layer_extent = this.getExtent() || new UECArea(new UEC(0, 0), new UEC(1, 1));\r\n if(this.slots[\"displacement\"] && this.slots[\"displacement\"].source){\r\n req_tiles = Services.RequiredTilesService.getRequiredTilesBoundedDisplaced(layer_extent, this.slots[\"displacement\"].source, time, height, (x) => this.applyScaling(x));\r\n\r\n st = Services.StitchedTilesService.getStitchedScalarTiles(this.slots[\"displacement\"].source, time, height);\r\n if(st){\r\n context.gl.activeTexture(context.gl.TEXTURE0);\r\n context.gl.bindTexture(context.gl.TEXTURE_2D, st.texture);\r\n context.gl.uniform1i(this.shader.uniforms[\"stitched_displacement_map\"], 0);\r\n }\r\n } else {\r\n req_tiles = Services.RequiredTilesService.getRequiredTilesBounded(layer_extent, [this.applyScaling(0), this.applyScaling(0)]);\r\n }\r\n let cam_position = Services.PositionService.getCameraPositionFiltered();\r\n let cam_uec = UEC.from_Coord(new Coord(cam_position.Latitude, cam_position.Longitude));\r\n req_tiles.forEach(tile => {\r\n switch (Services.PositionService.projection_mode) {\r\n case \"EQUIRECT\": {\r\n if(cam_position.Longitude < -90 && tile.position.x > 0.5) {\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[\"viewMatrix\"], false, Services.PositionService.world_transform.mul_mat4(new Mat4(tile.size.x, 0, 0, tile.position.x - 1, 0, tile.size.y, 0, tile.position.y, 0, 0, 1, 0, 0, 0, 0, 1)).as_typed());\r\n } else if (cam_position.Longitude > 90 && tile.position.x < 0.5) {\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[\"viewMatrix\"], false, Services.PositionService.world_transform.mul_mat4(new Mat4(tile.size.x, 0, 0, tile.position.x + 1, 0, tile.size.y, 0, tile.position.y, 0, 0, 1, 0, 0, 0, 0, 1)).as_typed());\r\n } else {\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[\"viewMatrix\"], false, Services.PositionService.world_transform.mul_mat4(new Mat4(tile.size.x, 0, 0, tile.position.x, 0, tile.size.y, 0, tile.position.y, 0, 0, 1, 0, 0, 0, 0, 1)).as_typed());\r\n }\r\n break;\r\n }\r\n case \"SPHERE\": {\r\n break;\r\n }\r\n case \"POLAR\": {\r\n break;\r\n }\r\n }\r\n context.gl.uniform2f(this.shader.uniforms[\"tile_coord\"], tile.position.x, tile.position.y);\r\n context.gl.uniform2f(this.shader.uniforms[\"tile_relative_coord\"], tile.position.x - cam_uec.x, tile.position.y - cam_uec.y);\r\n context.gl.uniform2f(this.shader.uniforms[\"tile_size\"], tile.size.x, tile.size.y);\r\n if(st){\r\n context.gl.uniform2f(\r\n this.shader.uniforms[\"stitched_displacement_coord_offset\"],\r\n (tile.position.x - st.coord_offset[0]) / st.coord_scale[0],\r\n (tile.position.y - st.coord_offset[1]) / st.coord_scale[1],\r\n );\r\n context.gl.uniform2f(\r\n this.shader.uniforms[\"stitched_displacement_coord_scale\"],\r\n tile.size.x / st.coord_scale[0],\r\n tile.size.y / st.coord_scale[1]\r\n );\r\n }\r\n\r\n //Used texture units. Same as slot number since empty slots are bound as null.\r\n let texture_count = st ? 1 : 0;\r\n let has_data = false;\r\n\r\n //Texture units that are bound to a non-null texture. If 0, skip rendering the tile.\r\n Object.entries(this.slots).forEach(([name, slot]) => {\r\n let slot_internal = slots_internal[name];\r\n let td;\r\n if(slot_internal)td = Services.TileCacheService.get_tile_data_direct(\r\n slot_internal.source,\r\n tile.copy(),\r\n slot_internal.time_index,\r\n slot_internal.height_index\r\n );\r\n context.gl.activeTexture(context.gl.TEXTURE0 + texture_count);\r\n if (td && td.texture) {\r\n context.gl.bindTexture(context.gl.TEXTURE_2D, td.texture);\r\n context.gl.uniform2f(this.shader.uniforms[slot.shaderName + \"_coord_offset\"], td.coord_offset[0], td.coord_offset[1]);\r\n context.gl.uniform2f(this.shader.uniforms[slot.shaderName + \"_coord_scale\"], td.coord_scale[0], td.coord_scale[1]);\r\n has_data ||= name != \"displacement\";\r\n }\r\n else {\r\n // Bind the gl default texture (all channels 0) to avoid rendering with an accidentally bound texture from a previous draw call\r\n context.gl.bindTexture(context.gl.TEXTURE_2D, null);\r\n }\r\n context.gl.uniform1i(this.shader.uniforms[slot.shaderName + \"_map\"], texture_count);\r\n texture_count++;\r\n });\r\n if(has_data)\r\n context.gl.drawArrays(context.gl.TRIANGLES, buff.start, buff.length);\r\n });\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n }\r\n}\r\n","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { LayerFilter } from \"./RenderFilter\";\r\nimport { SourceLayerInfo } from \"../../services/SourceInfoService\";\r\nimport { Parameter } from \"../Parameter\";\r\nimport { Services } from \"../../services/Services\";\r\n\r\nexport class ColormapFilter extends LayerFilter{\r\n constructor(sourcelayerinfo: SourceLayerInfo = null){\r\n let colormap_param = new Parameter(\"colormap\",\"balance\",\"colormap\");\r\n colormap_param.shader_name = \"colormap\";\r\n let colormap_min = new Parameter(\"min\",0,\"number\");\r\n colormap_min.shader_name = \"colormap_min\";\r\n let colormap_max = new Parameter(\"max\",1,\"number\");\r\n colormap_max.shader_name = \"colormap_max\";\r\n if(sourcelayerinfo && sourcelayerinfo.layer.datarange){\r\n colormap_min.value = sourcelayerinfo.layer.datarange[0];\r\n colormap_max.value = sourcelayerinfo.layer.datarange[1];\r\n let sup_min = Math.min(Math.abs(sourcelayerinfo.layer.datarange[0]), Math.abs(sourcelayerinfo.layer.datarange[1]));\r\n let sup_max = Math.max(Math.abs(sourcelayerinfo.layer.datarange[0]), Math.abs(sourcelayerinfo.layer.datarange[1]));\r\n colormap_min.setUnit(sourcelayerinfo.layer.unit);\r\n colormap_max.setUnit(sourcelayerinfo.layer.unit);\r\n colormap_param.registerAction(\"Symm. (min)\", () => {\r\n colormap_min.value = -sup_min;\r\n colormap_max.value = sup_min;\r\n });\r\n colormap_param.registerAction(\"Symm. (max)\", () => {\r\n colormap_min.value = -sup_max;\r\n colormap_max.value = sup_max;\r\n });\r\n colormap_param.registerAction(\"Reset\", () => {\r\n colormap_min.value = sourcelayerinfo.layer.datarange[0];\r\n colormap_max.value = sourcelayerinfo.layer.datarange[1];\r\n });\r\n }\r\n super(Services.GLService.Modules.effects.colormap, {\"colormap\": colormap_param, \"colormap_min\": colormap_min, \"colormap_max\": colormap_max});\r\n this.human_readable_name = \"Colormap\";\r\n this.name = \"colormap\";\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { LayerFilter } from \"./RenderFilter\";\r\nimport { Parameter } from \"../Parameter\";\r\nimport { Services } from \"../../services/Services\";\r\nimport { CompositionPipelineFramebuffer } from \"../PipelineFramebuffer\";\r\nimport { Vec3 } from \"../vecmat\";\r\n\r\nexport class HillShadingFilter extends LayerFilter{\r\n constructor(){\r\n super(Services.GLService.Modules.effects.hill_shading, {\r\n \"light_direction\": Services.SettingsService.getSetting(\"Light Direction\"),\r\n \"shading_intensity\": new Parameter(\"Shading Intensity\", 0.5, \"number\", true, false).setShaderName(\"shading_intensity\").setRange(0, 1),\r\n \"shading_falloff\": new Parameter(\"Shading Falloff\", 0.0, \"number\", true, false).setShaderName(\"shading_falloff\").setRange(-1, 1),\r\n \"brightness\": new Parameter(\"Brightness\", 1.0, \"number\", true, false).setShaderName(\"brightness\").setRange(0, 5)\r\n });\r\n this.human_readable_name = \"Hill Shading\";\r\n this.name = \"HillShading\";\r\n }\r\n\r\n execute(context: {[name: string]: WebGLRenderingContext | any}, source: any){ //TODO fix signature\r\n let tex_unit_index = super.preexecute(context);\r\n let gl = context.gl;\r\n if(Services.PositionService.light_locked){\r\n let cam = Services.PositionService.getCameraPositionFiltered();\r\n let clat = cam.Latitude / 180 * Math.PI;\r\n let clon = cam.Longitude / 180 * Math.PI;\r\n let caz = cam.Azimuth / 180 * Math.PI;\r\n\r\n let w_normal = new Vec3(\r\n Math.cos(clon) * Math.cos(clat),\r\n Math.sin(clon) * Math.cos(clat),\r\n Math.sin(clat)\r\n );\r\n \r\n let w_tangent = new Vec3(\r\n -Math.cos(clon) * Math.sin(clat),\r\n -Math.sin(clon) * Math.sin(clat),\r\n Math.cos(clat)\r\n );\r\n \r\n let w_cotangent = new Vec3(\r\n -Math.sin(clon),\r\n Math.cos(clon),\r\n 0\r\n );\r\n let w_tangent_2 = w_tangent.mul(Math.cos(caz)).add(w_cotangent.mul(-Math.sin(caz)));\r\n let w_cotangent_2 = w_tangent.mul(Math.sin(caz)).add(w_cotangent.mul(Math.cos(caz)));\r\n\r\n let ld_param_val = this.parameters[\"light_direction\"].value;\r\n let light_dir = w_normal.mul(ld_param_val.x1).add(w_tangent_2.mul(ld_param_val.x3)).add(w_cotangent_2.mul(ld_param_val.x2));\r\n\r\n gl.uniform3f(this.shader.uniforms[\"light_direction\"], light_dir.x1, light_dir.x2, light_dir.x3)\r\n }\r\n gl.depthFunc(gl.ALWAYS);\r\n\r\n if(this.shader.uniforms[\"screen_resolution\"]){\r\n gl.uniform2f(this.shader.uniforms[\"screen_resolution\"], context.gl.canvas.width, context.gl.canvas.width);\r\n }\r\n if(this.shader.uniforms[\"value_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.value);\r\n gl.uniform1i(this.shader.uniforms[\"value_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n if(this.shader.uniforms[\"depth_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.depth);\r\n gl.uniform1i(this.shader.uniforms[\"depth_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n if(this.shader.uniforms[\"normal_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.normal);\r\n gl.uniform1i(this.shader.uniforms[\"normal_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n if(this.shader.uniforms[\"worldPosition_map\"]){\r\n gl.activeTexture(gl.TEXTURE0 + tex_unit_index);\r\n gl.bindTexture(gl.TEXTURE_2D, source.worldPos);\r\n gl.uniform1i(this.shader.uniforms[\"worldPosition_map\"], tex_unit_index);\r\n tex_unit_index++;\r\n }\r\n\r\n let geometry = Services.GLService.Geometries.quad;\r\n gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n gl.bindBuffer(gl.ARRAY_BUFFER, geometry.buffer);\r\n gl.vertexAttribPointer(this.shader.attributes[\"position\"], 2, gl.FLOAT, false, 0, 0);\r\n gl.drawArrays(gl.TRIANGLE_STRIP, geometry.start, geometry.length);\r\n gl.disableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n gl.depthFunc(gl.LESS);\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { Parameter } from \"../Parameter\";\r\nimport { Services } from \"../../services/Services\";\r\nimport { RenderSource, RenderSourceSlot, EARTH_RADIUS } from \"./RenderSource\";\r\nimport { ArrayData } from \"../../services/TileCacheService\";\r\nimport { UECArea } from \"../tile\";\r\n\r\n//TODO fix coordinate readback\r\n\r\nexport class VectorPointRenderSource extends RenderSource {\r\n\r\n constructor() {\r\n super();\r\n //@ts-ignore\r\n this.shaders = Services.GLService.Modules.sources.arrowSource;\r\n this.name = \"VectorPointRenderSource\";\r\n this.parameters = {\r\n \"displacement_scale\": Services.SettingsService.getSetting(\"Exaggeration\"),\r\n \"displacement_offset\": new Parameter(\"Vertical Offset\", 0, \"number\", true),\r\n \"point_size\": new Parameter(\"Point Size\", 10, \"number\", true),\r\n \"time_range\": new Parameter(\"Time Range\", 1 / 24 / 60,\"number\",true).setStep(1 / 24 / 60).setUnit(\"d\"),\r\n \"value_sizing_enabled\": new Parameter(\"Size by Value\", false, \"boolean\", true),\r\n \"value_sizing_zero\": new Parameter(\"Minimum Size at\", 0, \"number\", true),\r\n \"value_sizing_one\": new Parameter(\"Maximum Size at\", 1, \"number\", true),\r\n \"value_sizing_power\": new Parameter(\"Proportionality\", 1, \"number\", true).setStep(0.1)\r\n };\r\n this.parameters[\"displacement_offset\"].shader_name = \"displacement_offset\";\r\n this.parameters[\"point_size\"].shader_name = \"point_size\";\r\n this.parameters[\"value_sizing_enabled\"].shader_name = \"value_sizing_enabled\";\r\n this.parameters[\"value_sizing_zero\"].shader_name = \"value_sizing_zero\";\r\n this.parameters[\"value_sizing_one\"].shader_name = \"value_sizing_one\";\r\n this.parameters[\"value_sizing_power\"].shader_name = \"value_sizing_power\";\r\n this.slots = {\r\n \"points\": new RenderSourceSlot(\r\n \"Point Layer\",\r\n \"points\",\r\n null,\r\n \"points\",\r\n null\r\n )\r\n };\r\n }\r\n\r\n getVerticalBoundsWorldSpace(): [number, number] {\r\n if(this.slots[\"points\"]?.source?.layer?.zrange) {\r\n let min_scaled = this.applyScaling(this.slots[\"points\"].source.layer.zrange[0]);\r\n let max_scaled = this.applyScaling(this.slots[\"points\"].source.layer.zrange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n\r\n return[1, 1];\r\n }\r\n\r\n getVerticalBoundsNative(): [number, number] {\r\n if(this.slots[\"points\"]?.source?.layer?.zrange) {\r\n let min_scaled = this.applyOffset(this.slots[\"points\"].source.layer.zrange[0]);\r\n let max_scaled = this.applyOffset(this.slots[\"points\"].source.layer.zrange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n\r\n return[1, 1];\r\n }\r\n\r\n getExtent(): UECArea {\r\n if(this.slots[\"points\"]?.source?.layer){\r\n return this.slots[\"points\"].source.layer.extent;\r\n }\r\n }\r\n\r\n applyScaling(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n * this.parameters[\"displacement_scale\"].value\r\n / EARTH_RADIUS\r\n }\r\n\r\n applyOffset(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n / EARTH_RADIUS\r\n }\r\n\r\n /*\r\n * Only run this function once the gl context has been prepared. It requires the correct color attachments to be set.\r\n */\r\n execute(context: { [name: string]: WebGLRenderingContext | any; }) {\r\n if(!this.slots[\"points\"]?.source)return;\r\n \r\n let tr = Services.TimeService.getCurrentTimeRange();\r\n let tm = Services.TimeService.getMeanTime();\r\n let t_radius = ((this.parameters[\"time_range\"].value) * (60 * 60 * 24 * 1000));\r\n let t_start = Math.min(tr[0], tm - t_radius);\r\n let t_end = Math.max(tr[1], tm + t_radius);\r\n let buffs: ArrayData[] = Services.TileCacheService.get_array_data(this.slots[\"points\"].source, t_start, t_end).filter(e => e && context.gl.isBuffer(e.buffer));\r\n if(buffs.length <= 0) return;\r\n\r\n super.execute(context);\r\n context.gl.enable(context.gl.DEPTH_TEST);\r\n context.gl.uniform1f(this.shader.uniforms[\"time_min\"], t_start);\r\n context.gl.uniform1f(this.shader.uniforms[\"time_max\"], t_end);\r\n\r\n let arrow_geo = Services.GLService.Geometries.arrow;\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"geometry_position\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, arrow_geo.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"geometry_position\"], 3, context.gl.FLOAT, false, 0, 0);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"geometry_position\"], 0);\r\n\r\n /*context.gl.enableVertexAttribArray(this.shader.attributes[\"geometry_normal\"]); \r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, arrow_normals.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"geometry_normal\"], 3, context.gl.FLOAT, false, 0, 0);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"geometry_normal\"], 3);\r\n */\r\n\r\n buffs.forEach(buff => {\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"position\"], 1);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"position\"], 3, context.gl.FLOAT, false, 6 * 4, 0);\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"value\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"value\"], 1);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"value\"], 2, context.gl.FLOAT, false, 6 * 4, 3 * 4);\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"time\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"time\"], 1);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"time\"], 1, context.gl.FLOAT, false, 6 * 4, 5 * 4);\r\n \r\n context.ANGLE_instanced_arrays.drawArraysInstancedANGLE(context.gl.TRIANGLES, 0, arrow_geo.length, buff.elements);\r\n });\r\n \r\n\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"position\"], 0);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"value\"]);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"value\"], 0);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"time\"]);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"time\"], 0);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"geometry_position\"]);\r\n\r\n }\r\n}\r\n","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { Parameter } from \"../Parameter\";\r\nimport { Services } from \"../../services/Services\";\r\nimport { Mat4 } from \"../vecmat\";\r\nimport { RenderSource, RenderSourceSlot, EARTH_RADIUS } from \"./RenderSource\";\r\nimport { ArrayData } from \"../../services/TileCacheService\";\r\nimport { Coord, UEC, UECArea } from \"../tile\";\r\n\r\nexport class LineRenderSource extends RenderSource {\r\n\r\n constructor() {\r\n super();\r\n //@ts-ignore\r\n this.shaders = Services.GLService.Modules.sources.lines;\r\n this.name = \"LineRenderSource\";\r\n this.parameters = {\r\n \"displacement_scale\": Services.SettingsService.getSetting(\"Exaggeration\"),\r\n \"displacement_offset\": new Parameter(\"Vertical Offset\", 0, \"number\", true),\r\n \"line_width\": new Parameter(\"Line Width\", 1, \"number\", true),\r\n \"snap_to_timestep\": new Parameter(\"Snap to Timestep\", true, \"boolean\", true),\r\n };\r\n this.parameters[\"displacement_offset\"].shader_name = \"displacement_offset\";\r\n\r\n this.slots = {\r\n \"lines\": new RenderSourceSlot(\r\n \"Line Layer\",\r\n \"lines\",\r\n null,\r\n \"lines\",\r\n null\r\n )\r\n };\r\n }\r\n\r\n getVerticalBoundsWorldSpace(): [number, number] {\r\n if(this.slots[\"lines\"]?.source?.layer?.zrange) {\r\n let min_scaled = this.applyScaling(this.slots[\"lines\"].source.layer.zrange[0]);\r\n let max_scaled = this.applyScaling(this.slots[\"lines\"].source.layer.zrange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n return[1, 1];\r\n }\r\n\r\n getVerticalBoundsNative(): [number, number] {\r\n if(this.slots[\"lines\"]?.source?.layer?.zrange) {\r\n let min_scaled = this.applyOffset(this.slots[\"lines\"].source.layer.zrange[0]);\r\n let max_scaled = this.applyOffset(this.slots[\"lines\"].source.layer.zrange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n return[1, 1];\r\n }\r\n\r\n getExtent(): UECArea {\r\n if(this.slots[\"lines\"]?.source?.layer){\r\n return this.slots[\"lines\"].source.layer.extent;\r\n }\r\n }\r\n\r\n applyScaling(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n * this.parameters[\"displacement_scale\"].value\r\n / EARTH_RADIUS\r\n }\r\n\r\n applyOffset(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n / EARTH_RADIUS\r\n }\r\n\r\n /*\r\n * Only run this function once the gl context has been prepared. It requires the correct color attachments to be set.\r\n */\r\n execute(context: { [name: string]: WebGLRenderingContext | any; }) {\r\n if(!this.slots[\"lines\"]?.source)return;\r\n \r\n let tr = Services.TimeService.getCurrentTimeRange();\r\n let tm = Services.TimeService.getMeanTime();\r\n if (this.parameters[\"snap_to_timestep\"].value == true){\r\n tr = [tr[0], tr[0]];\r\n }\r\n let buffs: ArrayData[] = Services.TileCacheService.get_array_data(this.slots[\"lines\"].source, tr[0], tr[1]).filter(e => e && context.gl.isBuffer(e.buffer));\r\n if (this.parameters[\"snap_to_timestep\"].value == true){\r\n if(buffs.length > 0){\r\n buffs = [buffs[0]];\r\n }\r\n }\r\n if(buffs.length <= 0) return;\r\n\r\n super.execute(context);\r\n context.gl.enable(context.gl.DEPTH_TEST);\r\n\r\n let [t_start, t_end] = Services.TimeService.getCurrentTimeRange();\r\n /*if (this.parameters[\"snap_to_timestep\"].value == true && this.slots['lines'].source.layer.timesteps != null){\r\n let [i_start, i_end] = this.slots['lines'].source.resolve_time(t_start, t_end);\r\n let temp = this.slots['lines'].source.layer.timesteps[t_start];\r\n t_start = temp;\r\n t_end = temp;\r\n }*/\r\n if(this.slots[\"lines\"]?.source?.layer.timerange){\r\n context.gl.uniform1f(this.shader.uniforms[\"time_min\"], t_start);\r\n context.gl.uniform1f(this.shader.uniforms[\"time_max\"], t_end);\r\n } else {\r\n context.gl.uniform1f(this.shader.uniforms[\"time_min\"], 0);\r\n context.gl.uniform1f(this.shader.uniforms[\"time_max\"], 0);\r\n }\r\n\r\n\r\n let line_geo = Services.GLService.Geometries.lines;\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"geometry_position\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, line_geo.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"geometry_position\"], 3, context.gl.FLOAT, false, 0, 0);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"geometry_position\"], 0);\r\n\r\n let screensize = Services.PositionService.getScreenDimensions();\r\n context.gl.uniform2f(this.shader.uniforms[\"point_size\"], this.parameters[\"line_width\"].value / screensize.width, this.parameters[\"line_width\"].value / screensize.height);\r\n\r\n let cam_position = Services.PositionService.getCameraPositionFiltered();\r\n let cam_uec = UEC.from_Coord(new Coord(cam_position.Latitude, cam_position.Longitude));\r\n\r\n buffs.forEach(buff => {\r\n switch (Services.PositionService.projection_mode) {\r\n case \"EQUIRECT\": {\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[\"viewMatrix\"], false, Services.PositionService.world_transform.mul_mat4(new Mat4(1, 0, 0, buff.referencePoint.x, 0, 1, 0, buff.referencePoint.y, 0, 0, 1, 0, 0, 0, 0, 1)).as_typed());\r\n break;\r\n }\r\n case \"SPHERE\": {\r\n break;\r\n }\r\n case \"POLAR\": {\r\n break;\r\n }\r\n }\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"position\"], 1);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"position\"], 3, context.gl.FLOAT, false, 10 * 4, 0);\r\n \r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"value\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"value\"], 1);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"value\"], 1, context.gl.FLOAT, false, 10 * 4, 3 * 4);\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"time\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"time\"], 1);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"time\"], 1, context.gl.FLOAT, false, 10 * 4, 4 * 4);\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"position2\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"position2\"], 1);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"position2\"], 3, context.gl.FLOAT, false, 10 * 4, 5 * 4);\r\n \r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"value2\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"value2\"], 1);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"value2\"], 1, context.gl.FLOAT, false, 10 * 4, 8 * 4);\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"time2\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"time2\"], 1);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"time2\"], 1, context.gl.FLOAT, false, 10 * 4, 9 * 4);\r\n\r\n context.gl.uniform2f(this.shader.uniforms[\"reference_relative_position\"], buff.referencePoint.x - cam_uec.x, buff.referencePoint.y - cam_uec.y);\r\n context.gl.uniform2f(this.shader.uniforms[\"reference_position\"], buff.referencePoint.x, buff.referencePoint.y);\r\n\r\n context.ANGLE_instanced_arrays.drawArraysInstancedANGLE(context.gl.TRIANGLE_STRIP, 0, line_geo.length, buff.elements / 2);\r\n \r\n });\r\n\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"position\"], 0);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"value\"]);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"value\"], 0);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"time\"]);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"time\"], 0);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"geometry_position\"]);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"position2\"]);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"position2\"], 0);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"value2\"]);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"value2\"], 0);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"time2\"]);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"time2\"], 0);\r\n }\r\n}\r\n","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { Parameter } from \"../Parameter\";\r\nimport { Services } from \"../../services/Services\";\r\nimport { RenderSource, RenderSourceSlot, EARTH_RADIUS } from \"./RenderSource\";\r\nimport { StitchedTileData } from \"../../services/StitchedTilesService\";\r\nimport { UEC, UECArea } from \"../tile\";\r\nimport { Particles } from \"../../services/ParticlesService\";\r\n\r\n//TODO fix coordinate readback\r\n\r\nexport class VectorTracerArrowRenderSource extends RenderSource {\r\n constructor() {\r\n super();\r\n //@ts-ignore\r\n this.shaders = Services.GLService.Modules.sources.particleArrows;\r\n this.name = \"TileRenderSource\";\r\n this.parameters = {\r\n displacement_scale: Services.SettingsService.getSetting(\"Exaggeration\"),\r\n displacement_offset: new Parameter(\"Vertical Offset\", 0, \"number\", true).setShaderName(\"displacement_offset\"),\r\n particle_speed: new Parameter(\"Particle Speed\", 100, \"number\", true, false).setStep(10).setShaderName(\"_\"),\r\n particle_lifetime: new Parameter(\"Particle Lifetime\", 32, \"number\", true, false).setShaderName(\"_\"),\r\n particle_amount: new Parameter(\"Particle Amount\",100,\"number\",true, false).setRange(0,100).setUnit(\"%\"),\r\n point_size: new Parameter(\"Point Size\", 3, \"number\", true, false).setShaderName(\"point_size\"),\r\n \"value_sizing_enabled\": new Parameter(\"Size by Value\", false, \"boolean\", true).setShaderName(\"value_sizing_enabled\"),\r\n \"value_sizing_zero\": new Parameter(\"Minimum Size at\", 0, \"number\", true).setShaderName(\"value_sizing_zero\"),\r\n \"value_sizing_one\": new Parameter(\"Maximum Size at\", 1, \"number\", true).setShaderName(\"value_sizing_one\"),\r\n \"value_sizing_power\": new Parameter(\"Proportionality\", 1, \"number\", true).setStep(0.1).setShaderName(\"value_sizing_power\"),\r\n z_level: new Parameter(\"Z Level\", 0,\"select\", true).addOption(0).setShaderName(\"_\")\r\n };\r\n\r\n this.slots = {\r\n \"displacement\": new RenderSourceSlot(\r\n \"Displacement Layer\",\r\n \"displacement\",\r\n null,\r\n \"tile\",\r\n null\r\n ),\r\n \"datau\": new RenderSourceSlot(\r\n \"Data Layer U\",\r\n \"datau\",\r\n null,\r\n \"tile\",\r\n null\r\n ),\r\n \"datav\": new RenderSourceSlot(\r\n \"Data Layer V\",\r\n \"datav\",\r\n null,\r\n \"tile\",\r\n null\r\n )\r\n };\r\n }\r\n\r\n getVerticalBoundsWorldSpace(): [number, number] {\r\n if(this.slots[\"displacement\"]?.source?.layer?.datarange){\r\n let min_scaled = this.applyScaling(this.slots[\"displacement\"].source.layer.datarange[0]);\r\n let max_scaled = this.applyScaling(this.slots[\"displacement\"].source.layer.datarange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n return[1, 1];\r\n }\r\n\r\n getVerticalBoundsNative(): [number, number] {\r\n if(this.slots[\"displacement\"]?.source?.layer?.datarange){\r\n let min_scaled = this.applyOffset(this.slots[\"displacement\"].source.layer.datarange[0]);\r\n let max_scaled = this.applyOffset(this.slots[\"displacement\"].source.layer.datarange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n return[1, 1];\r\n }\r\n\r\n getExtent(): UECArea {\r\n let e_layers = Object.values(this.slots).filter((v: RenderSourceSlot) => \r\n v.shaderName != \"displacement\" && v.source?.layer?.extent\r\n ).map(v => v.source.layer.extent);\r\n if (e_layers.length > 0) return e_layers.reduce((b, nb) => {\r\n let tlc = new UEC(Math.max(nb.position.x, b.position.x), Math.max(nb.position.y, b.position.y));\r\n let brc = new UEC(Math.min(nb.position.x + nb.extent.x, b.position.x + b.extent.x), Math.min(nb.position.y + nb.extent.y, b.position.y + b.extent.y));\r\n return new UECArea(tlc, new UEC(brc.x - tlc.x, brc.y - tlc.y));\r\n }, new UECArea(new UEC(0, 0), new UEC(1, 1)));\r\n }\r\n\r\n applyScaling(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n * this.parameters[\"displacement_scale\"].value\r\n / EARTH_RADIUS\r\n }\r\n\r\n applyOffset(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n / EARTH_RADIUS\r\n }\r\n\r\n requestStitchedTiles(){\r\n let time = Services.TimeService.getMeanTime();\r\n let height = 0;\r\n if(this.slots[\"datau\"].source && this.slots[\"datav\"].source){\r\n Services.StitchedTilesService.getStitchedVector2Tiles(this.slots[\"datau\"].source, this.slots[\"datav\"].source, time, height);\r\n }\r\n if(this.slots[\"displacement\"].shaderName == \"displacement\" && this.slots[\"displacement\"].source){\r\n Services.StitchedTilesService.getStitchedScalarTiles(this.slots[\"displacement\"].source, time, height);\r\n }\r\n }\r\n\r\n execute(context: { [name: string]: WebGLRenderingContext | any; }) {\r\n super.execute(context);\r\n\r\n context.gl.uniform1f(this.shader.uniforms[\"point_size\"], 30000 * this.parameters[\"point_size\"].value * Services.PositionService.camera_distance_filtered);\r\n\r\n\r\n let time = Services.TimeService.getMeanTime();\r\n let height = 0;\r\n if(!this.slots[\"datau\"].source || !this.slots[\"datav\"].source)return;\r\n if(this.slots[\"datau\"].source.layer.zsteps){\r\n height = parseFloat(this.parameters[\"z_level\"].value);\r\n }\r\n\r\n context.gl.enable(context.gl.DEPTH_TEST);\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n let buff = Services.GLService.Geometries.tracers;\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"position\"], 2, context.gl.FLOAT, false, 0, 0);\r\n let texi = 0;\r\n\r\n let arrow_geo = Services.GLService.Geometries.arrow;\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"geometry_position\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, arrow_geo.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"geometry_position\"], 3, context.gl.FLOAT, false, 0, 0);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"geometry_position\"], 0);\r\n\r\n let vect: StitchedTileData;\r\n if(this.slots[\"datau\"].source && this.slots[\"datav\"].source){\r\n vect = Services.StitchedTilesService.getStitchedVector2Tiles(this.slots[\"datau\"].source, this.slots[\"datav\"].source, time, height);\r\n if(vect){\r\n context.gl.activeTexture(context.gl.TEXTURE0 + texi);\r\n context.gl.bindTexture(context.gl.TEXTURE_2D, vect.texture);\r\n context.gl.uniform1i(this.shader.uniforms[\"stitched_vector_map\"], texi);\r\n context.gl.uniform2f(this.shader.uniforms[\"stitched_vector_coord_scale\"], vect.coord_scale[0], vect.coord_scale[1]);\r\n context.gl.uniform2f(this.shader.uniforms[\"stitched_vector_coord_offset\"], vect.coord_offset[0], vect.coord_offset[1]);\r\n texi++;\r\n } else {\r\n return\r\n }\r\n } else {\r\n return;\r\n }\r\n let disp: StitchedTileData;\r\n context.gl.activeTexture(context.gl.TEXTURE0 + texi);\r\n context.gl.bindTexture(context.gl.TEXTURE_2D, null);\r\n if(this.slots[\"displacement\"].shaderName == \"displacement\" && this.slots[\"displacement\"].source){\r\n disp = Services.StitchedTilesService.getStitchedScalarTiles(this.slots[\"displacement\"].source, time, height);\r\n if(disp){\r\n context.gl.bindTexture(context.gl.TEXTURE_2D, disp.texture);\r\n context.gl.uniform2f(this.shader.uniforms[\"stitched_displacement_coord_scale\"], disp.coord_scale[0], disp.coord_scale[1]);\r\n context.gl.uniform2f(this.shader.uniforms[\"stitched_displacement_coord_offset\"], disp.coord_offset[0], disp.coord_offset[1]);\r\n }\r\n }\r\n context.gl.uniform1i(this.shader.uniforms[\"stitched_displacement_map\"], texi);\r\n texi++;\r\n let part: Particles = Services.ParticlesService.getParticles(\r\n this.slots[\"datau\"].source,\r\n this.slots[\"datav\"].source,\r\n time, height,\r\n this.parameters[\"particle_speed\"].value * Math.sqrt(Services.PositionService.camera_distance_filtered),\r\n this.parameters[\"particle_lifetime\"].value\r\n );\r\n if(part){\r\n let pdata = part.get_data();\r\n context.gl.activeTexture(context.gl.TEXTURE0 + texi);\r\n context.gl.bindTexture(context.gl.TEXTURE_2D, pdata.source);\r\n context.gl.uniform1i(this.shader.uniforms[\"particle_pos\"], texi);\r\n context.gl.uniform1f(this.shader.uniforms[\"source_offset\"], pdata.sourceOffset);\r\n texi++;\r\n } else {\r\n return;\r\n }\r\n for(var i = texi; i < 8; i++){\r\n context.gl.activeTexture(context.gl.TEXTURE0 + i);\r\n context.gl.bindTexture(context.gl.TEXTURE_2D, null);\r\n }\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"position\"], 1);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"position\"], 3, context.gl.FLOAT, false, 6 * 4, 0);\r\n\r\n context.ANGLE_instanced_arrays.drawArraysInstancedANGLE(context.gl.TRIANGLES, 0, arrow_geo.length, buff.length * (this.parameters[\"particle_amount\"].value / 100));\r\n\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n context.ANGLE_instanced_arrays.vertexAttribDivisorANGLE(this.shader.attributes[\"position\"], 0);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"geometry_position\"]);\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { Parameter } from \"../Parameter\";\r\nimport { Services } from \"../../services/Services\";\r\nimport { Mat4 } from \"../vecmat\";\r\nimport { RenderSource, RenderSourceSlot, EARTH_RADIUS } from \"./RenderSource\";\r\nimport { ArrayData } from \"../../services/TileCacheService\";\r\nimport { UECArea } from \"../tile\";\r\n\r\n//TODO fix coordinate readback\r\n\r\nexport class PieChartPointRenderSource extends RenderSource {\r\n\r\n constructor() {\r\n super();\r\n //@ts-ignore\r\n this.shaders = Services.GLService.Modules.sources.scalarPieChartPointSource;\r\n console.log(\"shader\", this.shaders);\r\n this.name = \"PieChartPointRenderSource\";\r\n this.parameters = {\r\n \"displacement_scale\": Services.SettingsService.getSetting(\"Exaggeration\"),\r\n \"displacement_offset\": new Parameter(\"Vertical Offset\", 0, \"number\", true),\r\n \"point_size\": new Parameter(\"Point Size\", 30, \"number\", true),\r\n \"time_range\": new Parameter(\"Time Range\", 1 / 24 / 60,\"number\",true).setStep(1 / 24 / 60).setUnit(\"d\"),\r\n \"value_sizing_enabled\": new Parameter(\"Size by Value\", false, \"boolean\", true),\r\n \"value_sizing_zero\": new Parameter(\"Minimum Size at\", 0, \"number\", true),\r\n \"value_sizing_one\": new Parameter(\"Maximum Size at\", 1, \"number\", true),\r\n \"value_sizing_power\": new Parameter(\"Proportionality\", 1, \"number\", true).setStep(0.1)\r\n };\r\n this.parameters[\"displacement_offset\"].shader_name = \"displacement_offset\";\r\n this.parameters[\"point_size\"].shader_name = \"point_size\";\r\n this.parameters[\"value_sizing_enabled\"].shader_name = \"value_sizing_enabled\";\r\n this.parameters[\"value_sizing_zero\"].shader_name = \"value_sizing_zero\";\r\n this.parameters[\"value_sizing_one\"].shader_name = \"value_sizing_one\";\r\n this.parameters[\"value_sizing_power\"].shader_name = \"value_sizing_power\";\r\n this.slots = {\r\n \"attribute1\": new RenderSourceSlot(\r\n \"Attribute 1\",\r\n \"attribute1\",\r\n null,\r\n \"points\",\r\n null\r\n ),\r\n \"attribute2\": new RenderSourceSlot(\r\n \"Attribute 2\",\r\n \"attribute2\",\r\n null,\r\n \"points\",\r\n null\r\n ),\r\n \"attribute3\": new RenderSourceSlot(\r\n \"Attribute 3\",\r\n \"attribute3\",\r\n null,\r\n \"points\",\r\n null\r\n ),\r\n \"attribute4\": new RenderSourceSlot(\r\n \"Attribute 4\",\r\n \"attribute4\",\r\n null,\r\n \"points\",\r\n null\r\n ),\r\n \"attribute5\": new RenderSourceSlot(\r\n \"Attribute 5\",\r\n \"attribute5\",\r\n null,\r\n \"points\",\r\n null\r\n ),\r\n \"attribute6\": new RenderSourceSlot(\r\n \"Attribute 6\",\r\n \"attribute6\",\r\n null,\r\n \"points\",\r\n null\r\n ),\r\n \"attribute7\": new RenderSourceSlot(\r\n \"Attribute 7\",\r\n \"attribute7\",\r\n null,\r\n \"points\",\r\n null\r\n ),\r\n \"attribute8\": new RenderSourceSlot(\r\n \"Attribute 8\",\r\n \"attribute8\",\r\n null,\r\n \"points\",\r\n null\r\n )\r\n };\r\n }\r\n\r\n getVerticalBoundsWorldSpace(): [number, number] {\r\n if(this.slots[\"points\"]?.source?.layer?.zrange) {\r\n let min_scaled = this.applyScaling(this.slots[\"attribute1\"].source.layer.zrange[0]);\r\n let max_scaled = this.applyScaling(this.slots[\"attribute1\"].source.layer.zrange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n return[1, 1];\r\n }\r\n\r\n getVerticalBoundsNative(): [number, number] {\r\n if(this.slots[\"points\"]?.source?.layer?.zrange) {\r\n let min_scaled = this.applyOffset(this.slots[\"attribute1\"].source.layer.zrange[0]);\r\n let max_scaled = this.applyOffset(this.slots[\"attribute1\"].source.layer.zrange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n return[1, 1];\r\n }\r\n\r\n getExtent(): UECArea {\r\n if(this.slots[\"attribute1\"]?.source?.layer){\r\n return this.slots[\"attribute1\"].source.layer.extent;\r\n }\r\n }\r\n\r\n applyScaling(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n * this.parameters[\"displacement_scale\"].value\r\n / EARTH_RADIUS\r\n }\r\n\r\n applyOffset(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n / EARTH_RADIUS\r\n }\r\n\r\n /*\r\n * Only run this function once the gl context has been prepared. It requires the correct color attachments to be set.\r\n */\r\n execute(context: { [name: string]: WebGLRenderingContext | any; }) {\r\n if(!(this.slots[\"attribute1\"]?.source))return;\r\n \r\n let tr = Services.TimeService.getCurrentTimeRange();\r\n let tm = Services.TimeService.getMeanTime();\r\n let t_radius = ((this.parameters[\"time_range\"].value) * (60 * 60 * 24 * 1000));\r\n let t_start = Math.min(tr[0], tm - t_radius);\r\n let t_end = Math.max(tr[1], tm + t_radius);\r\n\r\n //Collect data\r\n\r\n \r\n let slots_active = 0;\r\n let buffers: ArrayData[][] = [];\r\n for(let i = 1; i <= 8; i++){\r\n let slotname = \"attribute\" + i;\r\n if(!!this.slots[slotname].source){\r\n slots_active ++;\r\n let source_buffs = Services.TileCacheService.get_array_data(this.slots[slotname].source, t_start, t_end).filter(e => e && context.gl.isBuffer(e.buffer));\r\n source_buffs.forEach((buff, i) => {\r\n if(!buffers[i]){\r\n buffers[i] = [];\r\n }\r\n buffers[i].push(buff);\r\n });\r\n }else{\r\n break;\r\n }\r\n }\r\n\r\n if(buffers.length <= 0) return;\r\n\r\n super.execute(context);\r\n context.gl.enable(context.gl.DEPTH_TEST);\r\n\r\n if(this.slots[\"attribute1\"]?.source?.layer.timerange){\r\n context.gl.uniform1f(this.shader.uniforms[\"time_min\"], t_start);\r\n context.gl.uniform1f(this.shader.uniforms[\"time_max\"], t_end);\r\n } else {\r\n context.gl.uniform1f(this.shader.uniforms[\"time_min\"], 0);\r\n context.gl.uniform1f(this.shader.uniforms[\"time_max\"], 0);\r\n }\r\n\r\n buffers.forEach(buffs => {\r\n\r\n let attribute1_buff = buffs[0];\r\n if(!attribute1_buff){\r\n return;\r\n }\r\n\r\n switch (Services.PositionService.projection_mode) {\r\n case \"EQUIRECT\": {\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[\"viewMatrix\"], false, Services.PositionService.world_transform.mul_mat4(new Mat4(1, 0, 0, attribute1_buff.referencePoint.x, 0, 1, 0, attribute1_buff.referencePoint.y, 0, 0, 1, 0, 0, 0, 0, 1)).as_typed());\r\n break;\r\n }\r\n case \"SPHERE\": {\r\n break;\r\n }\r\n case \"POLAR\": {\r\n break;\r\n }\r\n }\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, attribute1_buff.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"position\"], 3, context.gl.FLOAT, false, 5 * 4, 0);\r\n\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"time\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, attribute1_buff.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"time\"], 1, context.gl.FLOAT, false, 5 * 4, 4 * 4);\r\n \r\n context.gl.uniform1f(this.shader.uniforms[\"value_count\"], slots_active);\r\n\r\n for(let i = 1; i <= 8; i++){\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"value\" + i]);\r\n if(slots_active >= i && (!! buffs[i - 1])){\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buffs[i - 1].buffer);\r\n }else{\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, attribute1_buff.buffer);\r\n }\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"value\" + i], 1, context.gl.FLOAT, false, 5 * 4, 3 * 4);\r\n \r\n }\r\n \r\n\r\n\r\n\r\n context.gl.uniform2f(this.shader.uniforms[\"reference_position\"], attribute1_buff.referencePoint.x, attribute1_buff.referencePoint.y);\r\n\r\n context.gl.drawArrays(context.gl.POINTS, 0, attribute1_buff.elements);\r\n\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n for(let i = 1; i <= 8; i++){\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"value\" + i]);\r\n }\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"time\"]);\r\n \r\n });\r\n }\r\n}\r\n","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { Parameter } from \"../Parameter\";\r\nimport { Services } from \"../../services/Services\";\r\nimport { Mat4 } from \"../vecmat\";\r\nimport { RenderSource, RenderSourceSlot, EARTH_RADIUS } from \"./RenderSource\";\r\nimport { ArrayData } from \"../../services/TileCacheService\";\r\nimport { Coord, Tile, UEC, UECArea } from \"../tile\";\r\n\r\nexport class PointCloudRenderSource extends RenderSource {\r\n\r\n constructor() {\r\n super();\r\n //@ts-ignore\r\n this.shaders = Services.GLService.Modules.sources.scalarPointSource;\r\n this.name = \"PointCloudRenderSource\";\r\n this.parameters = {\r\n \"displacement_scale\": Services.SettingsService.getSetting(\"Exaggeration\"),\r\n \"displacement_offset\": new Parameter(\"Vertical Offset\", 0, \"number\", true),\r\n \"point_size\": new Parameter(\"Point Size\", 8, \"number\", true),\r\n \"time_range\": new Parameter(\"Time Range\", 1,\"number\",true).setStep(1 / 24 / 60).setUnit(\"d\"),\r\n \"value_sizing_enabled\": new Parameter(\"Size by Value\", false, \"boolean\", true),\r\n \"value_sizing_zero\": new Parameter(\"Minimum Size at\", 0, \"number\", true),\r\n \"value_sizing_one\": new Parameter(\"Maximum Size at\", 1, \"number\", true),\r\n \"value_sizing_power\": new Parameter(\"Proportionality\", 1, \"number\", true).setStep(0.1)\r\n };\r\n this.parameters[\"displacement_offset\"].shader_name = \"displacement_offset\";\r\n this.parameters[\"point_size\"].shader_name = \"point_size\";\r\n this.parameters[\"value_sizing_enabled\"].shader_name = \"value_sizing_enabled\";\r\n this.parameters[\"value_sizing_zero\"].shader_name = \"value_sizing_zero\";\r\n this.parameters[\"value_sizing_one\"].shader_name = \"value_sizing_one\";\r\n this.parameters[\"value_sizing_power\"].shader_name = \"value_sizing_power\";\r\n this.slots = {\r\n \"points\": new RenderSourceSlot(\r\n \"Point Layer\",\r\n \"points\",\r\n null,\r\n \"points\",\r\n null\r\n )\r\n };\r\n }\r\n\r\n getVerticalBoundsWorldSpace(): [number, number] {\r\n if(this.slots[\"points\"]?.source?.layer?.zrange) {\r\n let min_scaled = this.applyScaling(this.slots[\"points\"].source.layer.zrange[0]);\r\n let max_scaled = this.applyScaling(this.slots[\"points\"].source.layer.zrange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n return[1, 1];\r\n }\r\n\r\n getVerticalBoundsNative(): [number, number] {\r\n if(this.slots[\"points\"]?.source?.layer?.zrange) {\r\n let min_scaled = this.applyOffset(this.slots[\"points\"].source.layer.zrange[0]);\r\n let max_scaled = this.applyOffset(this.slots[\"points\"].source.layer.zrange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n return[1, 1];\r\n }\r\n\r\n getExtent(): UECArea {\r\n if(this.slots[\"points\"]?.source?.layer){\r\n return this.slots[\"points\"].source.layer.extent;\r\n }\r\n }\r\n\r\n applyScaling(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n * this.parameters[\"displacement_scale\"].value\r\n / EARTH_RADIUS\r\n }\r\n\r\n applyOffset(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n / EARTH_RADIUS\r\n }\r\n\r\n /*\r\n * Only run this function once the gl context has been prepared. It requires the correct color attachments to be set.\r\n */\r\n execute(context: { [name: string]: WebGLRenderingContext | any; }) {\r\n if(!(this.slots[\"points\"]?.source)){\r\n //console.log(\"no source\");\r\n return;\r\n }\r\n let src = this.slots[\"points\"].source;\r\n let tr = Services.TimeService.getCurrentTimeRange();\r\n let tm = Services.TimeService.getMeanTime();\r\n let t_radius = ((this.parameters[\"time_range\"].value) * (60 * 60 * 24 * 1000));\r\n let t_start = Math.min(tr[0], tm - t_radius);\r\n let t_end = Math.max(tr[1], tm + t_radius);\r\n\r\n //console.log(\"time computed\");\r\n\r\n let req_tiles: Tile[];\r\n let layer_extent = this.getExtent() || new UECArea(new UEC(0, 0), new UEC(1, 1));\r\n req_tiles = Services.RequiredTilesService.getRequiredTilesBounded(layer_extent, this.getVerticalBoundsWorldSpace());\r\n //extra gymnastics to avoid spamming the server with requests for tiles that are too deep tm.\r\n let actual_tiles: Set = new Set();\r\n req_tiles.forEach(t => actual_tiles.add(t.path.substring(0, src.layer.max_zoom_level)));\r\n req_tiles = [];\r\n actual_tiles.forEach(p => req_tiles.push(Tile.from_tilepath(p)));\r\n\r\n let buffs: [ArrayData, Tile][] = [];\r\n for(let tile of req_tiles){\r\n let temp = Services.TileCacheService.get_array_data_tiled(this.slots[\"points\"].source, t_start, t_end, tile).filter(e => !!e);\r\n for(let b of temp){\r\n buffs.push([b, tile]);\r\n }\r\n }\r\n\r\n //TODO: GetArrayDataTiled now returns parents of tiles as well. There are bounds of the original source attached. These need to be evaluated to avoid drawing the same point twice\r\n\r\n if(buffs.length <= 0) return;\r\n\r\n super.execute(context);\r\n context.gl.enable(context.gl.DEPTH_TEST);\r\n\r\n if(this.slots[\"points\"]?.source?.layer.timerange){\r\n context.gl.uniform1f(this.shader.uniforms[\"time_min\"], tr[0]);\r\n context.gl.uniform1f(this.shader.uniforms[\"time_max\"], tr[1]);\r\n } else {\r\n context.gl.uniform1f(this.shader.uniforms[\"time_min\"], 0);\r\n context.gl.uniform1f(this.shader.uniforms[\"time_max\"], 0);\r\n }\r\n\r\n let cam_position = Services.PositionService.getCameraPositionFiltered();\r\n let cam_uec = UEC.from_Coord(new Coord(cam_position.Latitude, cam_position.Longitude));\r\n\r\n buffs.forEach(x => {\r\n let buff = x[0];\r\n let tile = x[1];\r\n switch (Services.PositionService.projection_mode) {\r\n case \"EQUIRECT\": {\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[\"viewMatrix\"], false, Services.PositionService.world_transform.mul_mat4(new Mat4(1, 0, 0, buff.referencePoint.x, 0, 1, 0, buff.referencePoint.y, 0, 0, 1, 0, 0, 0, 0, 1)).as_typed());\r\n break;\r\n }\r\n case \"SPHERE\": {\r\n break;\r\n }\r\n case \"POLAR\": {\r\n break;\r\n }\r\n }\r\n let clip_min_x = tile.position.x - buff.referencePoint.x;\r\n let clip_min_y = tile.position.y - buff.referencePoint.y;\r\n let clip_max_x = clip_min_x + tile.size.x;\r\n let clip_max_y = clip_min_y + tile.size.y;\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"position\"], 3, context.gl.FLOAT, false, 5 * 4, 0);\r\n \r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"value\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"value\"], 1, context.gl.FLOAT, false, 5 * 4, 3 * 4);\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"time\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"time\"], 1, context.gl.FLOAT, false, 5 * 4, 4 * 4);\r\n\r\n context.gl.uniform2f(this.shader.uniforms[\"reference_position\"], buff.referencePoint.x, buff.referencePoint.y);\r\n context.gl.uniform2f(this.shader.uniforms[\"reference_relative_position\"], buff.referencePoint.x - cam_uec.x, buff.referencePoint.y - cam_uec.y);\r\n\r\n //Adaptive point size for fallbacks\r\n context.gl.uniform1f(this.shader.uniforms[\"point_size\"], this.parameters[\"point_size\"].value * Math.min(4, Math.sqrt(1 / buff.coord_scale[0] / buff.coord_scale[1])));\r\n context.gl.uniform2f(this.shader.uniforms[\"clip_min\"], clip_min_x, clip_min_y);\r\n context.gl.uniform2f(this.shader.uniforms[\"clip_max\"], clip_max_x, clip_max_y);\r\n\r\n context.gl.drawArrays(context.gl.POINTS, 0, buff.elements);\r\n\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"value\"]);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"time\"]);\r\n \r\n });\r\n }\r\n}\r\n","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { LayerFilter } from \"./RenderFilter\";\r\nimport { Parameter } from \"../Parameter\";\r\nimport { Services } from \"../../services/Services\";\r\n\r\nexport class DomeLightingFilter extends LayerFilter{\r\n constructor(){\r\n super(Services.GLService.Modules.effects.dome_lighting, {\r\n \"shading_intensity\": new Parameter(\"Shading Intensity\", 1, \"number\", true, false).setShaderName(\"shading_intensity\").setRange(0, 1),\r\n \"shading_falloff\": new Parameter(\"Shading Falloff\", 0.5, \"number\", true, false).setShaderName(\"shading_falloff\").setRange(0, 1),\r\n \"spread\": new Parameter(\"Coverage Size\", 2, \"number\", true, false).setShaderName(\"spread\").setRange(1, 10),\r\n \"depth_falloff\": new Parameter(\"Depth Falloff\", 5, \"number\", true, false).setShaderName(\"depth_falloff\").setRange(1, 25),\r\n \"brightness\": new Parameter(\"Brightness\", 1, \"number\", true, false).setShaderName(\"brightness\").setRange(0, 5),\r\n \"near_ratio\": new Parameter(\"near_ratio\", 0.025 / 3, \"number\", false).setShaderName(\"near_ratio\")\r\n });\r\n this.human_readable_name = \"Eyedome Lighting\";\r\n this.name = \"DomeLighting\";\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { Parameter } from \"../Parameter\";\r\nimport { Services } from \"../../services/Services\";\r\nimport { Mat4 } from \"../vecmat\";\r\nimport { RenderSource, RenderSourceSlot, EARTH_RADIUS } from \"./RenderSource\";\r\nimport { ArrayData } from \"../../services/TileCacheService\";\r\nimport { Coord, Tile, UEC, UECArea } from \"../tile\";\r\n\r\nexport class ColorPointCloudRenderSource extends RenderSource {\r\n\r\n constructor() {\r\n super();\r\n //@ts-ignore\r\n this.shaders = Services.GLService.Modules.sources.colorPointSource;\r\n this.name = \"ColorPointCloudRenderSource\";\r\n this.parameters = {\r\n \"displacement_scale\": Services.SettingsService.getSetting(\"Exaggeration\"),\r\n \"displacement_offset\": new Parameter(\"Vertical Offset\", 0, \"number\", true),\r\n \"point_size\": new Parameter(\"Point Size\", 8, \"number\", true),\r\n \"time_range\": new Parameter(\"Time Range\", 1 / 24 / 60,\"number\",true).setStep(1 / 24 / 60).setUnit(\"d\"),\r\n };\r\n this.parameters[\"displacement_offset\"].shader_name = \"displacement_offset\";\r\n this.parameters[\"point_size\"].shader_name = \"point_size\";\r\n this.slots = {\r\n \"points\": new RenderSourceSlot(\r\n \"Point Layer\",\r\n \"points\",\r\n null,\r\n \"points\",\r\n null\r\n )\r\n };\r\n }\r\n\r\n getVerticalBoundsWorldSpace(): [number, number] {\r\n if(this.slots[\"points\"]?.source?.layer?.zrange) {\r\n let min_scaled = this.applyScaling(this.slots[\"points\"].source.layer.zrange[0]);\r\n let max_scaled = this.applyScaling(this.slots[\"points\"].source.layer.zrange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n return[1, 1];\r\n }\r\n\r\n getVerticalBoundsNative(): [number, number] {\r\n if(this.slots[\"points\"]?.source?.layer?.zrange) {\r\n let min_scaled = this.applyOffset(this.slots[\"points\"].source.layer.zrange[0]);\r\n let max_scaled = this.applyOffset(this.slots[\"points\"].source.layer.zrange[1]);\r\n return [\r\n Math.min(min_scaled, max_scaled),\r\n Math.max(min_scaled, max_scaled)\r\n ];\r\n }\r\n return[1, 1];\r\n }\r\n\r\n getExtent(): UECArea {\r\n if(this.slots[\"points\"]?.source?.layer){\r\n return this.slots[\"points\"].source.layer.extent;\r\n }\r\n }\r\n\r\n applyScaling(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n * this.parameters[\"displacement_scale\"].value\r\n / EARTH_RADIUS\r\n }\r\n\r\n applyOffset(val: number): number {\r\n return 1 + (val + this.parameters[\"displacement_offset\"].value)\r\n / EARTH_RADIUS\r\n }\r\n\r\n /*\r\n * Only run this function once the gl context has been prepared. It requires the correct color attachments to be set.\r\n */\r\n execute(context: { [name: string]: WebGLRenderingContext | any; }) {\r\n if(!(this.slots[\"points\"]?.source)){\r\n //console.log(\"no source\");\r\n return;\r\n }\r\n \r\n let tr = Services.TimeService.getCurrentTimeRange();\r\n let tm = Services.TimeService.getMeanTime();\r\n let t_radius = ((this.parameters[\"time_range\"].value) * (60 * 60 * 24 * 1000));\r\n let t_start = Math.min(tr[0], tm - t_radius);\r\n let t_end = Math.max(tr[1], tm + t_radius);\r\n\r\n //console.log(\"time computed\");\r\n\r\n let req_tiles: Tile[];\r\n let layer_extent = this.getExtent() || new UECArea(new UEC(0, 0), new UEC(1, 1));\r\n req_tiles = Services.RequiredTilesService.getRequiredTilesBounded(layer_extent, this.getVerticalBoundsWorldSpace());\r\n //console.log(\"Required tiles: \", req_tiles.map(t => t.path).join(\", \"));\r\n\r\n let buffs: [ArrayData, Tile][] = [];\r\n for(let tile of req_tiles){\r\n let temp = Services.TileCacheService.get_array_data_tiled(this.slots[\"points\"].source, t_start, t_end, tile).filter(e => e && context.gl.isBuffer(e.buffer));\r\n for(let b of temp){\r\n buffs.push([b, tile]);\r\n }\r\n }\r\n\r\n if(buffs.length <= 0) return;\r\n\r\n super.execute(context);\r\n context.gl.enable(context.gl.DEPTH_TEST);\r\n\r\n if(this.slots[\"points\"]?.source?.layer.timerange){\r\n context.gl.uniform1f(this.shader.uniforms[\"time_min\"], t_start);\r\n context.gl.uniform1f(this.shader.uniforms[\"time_max\"], t_end);\r\n } else {\r\n context.gl.uniform1f(this.shader.uniforms[\"time_min\"], 0);\r\n context.gl.uniform1f(this.shader.uniforms[\"time_max\"], 0);\r\n }\r\n\r\n let cam_position = Services.PositionService.getCameraPositionFiltered();\r\n let cam_uec = UEC.from_Coord(new Coord(cam_position.Latitude, cam_position.Longitude));\r\n\r\n buffs.forEach(x => {\r\n let buff = x[0];\r\n let tile = x[1];\r\n switch (Services.PositionService.projection_mode) {\r\n case \"EQUIRECT\": {\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[\"viewMatrix\"], false, Services.PositionService.world_transform.mul_mat4(new Mat4(1, 0, 0, buff.referencePoint.x, 0, 1, 0, buff.referencePoint.y, 0, 0, 1, 0, 0, 0, 0, 1)).as_typed());\r\n break;\r\n }\r\n case \"SPHERE\": {\r\n break;\r\n }\r\n case \"POLAR\": {\r\n break;\r\n }\r\n }\r\n let clip_min_x = tile.position.x - buff.referencePoint.x;\r\n let clip_min_y = tile.position.y - buff.referencePoint.y;\r\n let clip_max_x = clip_min_x + tile.size.x;\r\n let clip_max_y = clip_min_y + tile.size.y;\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"position\"], 3, context.gl.FLOAT, false, 5 * 4, 0);\r\n \r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"color\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"color\"], 4, context.gl.UNSIGNED_BYTE, true, 5 * 4, 3 * 4);\r\n\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"time\"]);\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"time\"], 1, context.gl.FLOAT, false, 5 * 4, 4 * 4);\r\n\r\n context.gl.uniform2f(this.shader.uniforms[\"reference_position\"], buff.referencePoint.x, buff.referencePoint.y);\r\n context.gl.uniform2f(this.shader.uniforms[\"reference_relative_position\"], buff.referencePoint.x - cam_uec.x, buff.referencePoint.y - cam_uec.y);\r\n\r\n //Adaptive point size for fallbacks\r\n context.gl.uniform1f(this.shader.uniforms[\"point_size\"], this.parameters[\"point_size\"].value * Math.min(4, Math.sqrt(1 / buff.coord_scale[0] / buff.coord_scale[1])));\r\n context.gl.uniform2f(this.shader.uniforms[\"clip_min\"], clip_min_x, clip_min_y);\r\n context.gl.uniform2f(this.shader.uniforms[\"clip_max\"], clip_max_x, clip_max_y);\r\n\r\n context.gl.drawArrays(context.gl.POINTS, 0, buff.elements);\r\n\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"value\"]);\r\n context.gl.disableVertexAttribArray(this.shader.attributes[\"time\"]);\r\n \r\n });\r\n }\r\n}\r\n","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport {Services} from '../services/Services';\r\nimport {SourceLayerInfo} from '../services/SourceInfoService';\r\nimport { LayerFilter } from './renderfilters/RenderFilter';\r\nimport { RenderSource } from './rendersources/RenderSource';\r\nimport { TileRenderSource } from \"./rendersources/TileRenderSource\";\r\nimport { CompositionFilter } from './renderfilters/RenderFilter';\r\nimport { ColormapFilter } from './renderfilters/ColormapFilter';\r\nimport { HillShadingFilter } from './renderfilters/HillShadingFilter';\r\nimport { PointRenderSource } from './rendersources/PointRenderSource';\r\nimport { VectorPointRenderSource } from './rendersources/VectorPointRenderSource';\r\nimport { VectorTracerRenderSource } from './rendersources/VectorTracerSource';\r\nimport { UECArea } from './tile';\r\nimport { Parameter } from './Parameter';\r\nimport { VectorPointRenderSourceHack } from './rendersources/VectorPointRenderSourceHack';\r\nimport { PointRenderSourceHack } from './rendersources/PointRenderSourceHack';\r\nimport { Mat4, Vec2, Vec3 } from './vecmat';\r\nimport { LineRenderSource } from './rendersources/LineRenderSource';\r\nimport { VectorTracerArrowRenderSource } from './rendersources/VectorTracerArrowSource';\r\nimport { PieChartPointRenderSource } from './rendersources/PieChartPointRenderSource';\r\nimport { SphereRenderSource } from './rendersources/SphereRenderSource';\r\nimport { QuadRenderSource } from './rendersources/QuadRenderSource';\r\nimport { PointCloudRenderSource } from './rendersources/PointCloudRenderSource';\r\nimport { DomeLightingFilter } from './renderfilters/DomeLightingFilter';\r\nimport { ColorPointCloudRenderSource } from './rendersources/ColorPointCloudRenderSource';\r\n\r\nexport class RenderLayer{\r\n source: RenderSource;\r\n filterPipeline: LayerFilter[] = [];\r\n visible: boolean;\r\n name: string;\r\n id: number;\r\n changeId: number;\r\n compositionFilter: CompositionFilter;\r\n overlayHint: string;\r\n ticksHint: {[key: number]: string} = {};\r\n unit: string;\r\n uid: string;\r\n typeHint: string;\r\n\r\n getSourceInfos(): SourceLayerInfo[]{\r\n return this.source.getSourceInfos();\r\n }\r\n\r\n getVerticalBoundsWorldspace(): [number, number] {\r\n if(this.source)return this.source.getVerticalBoundsWorldSpace();\r\n return [1, 1];\r\n }\r\n\r\n getVerticalBoundsNative(): [number, number] {\r\n if(this.source)return this.source.getVerticalBoundsNative();\r\n return [1, 1];\r\n }\r\n\r\n getExtent(): UECArea {\r\n if(this.source){\r\n let extent = this.source.getExtent();\r\n return extent;\r\n }\r\n return null;\r\n }\r\n\r\n getTimeRange(): [number, number] {\r\n if(this.source)return this.source.getTimeRange();\r\n return null;\r\n }\r\n\r\n constructor(){\r\n this.uid = \"RenderLayer\" + Services.UIDService.getUid();\r\n }\r\n}\r\n\r\nexport class RenderLayerFactory{\r\n static createColormapScalarLayer(parameter: SourceLayerInfo, displacement: SourceLayerInfo = null): RenderLayer{\r\n let new_source = new TileRenderSource();\r\n new_source.name = parameter.instance_name + \"(\" + parameter.layer_name + \")\";\r\n new_source.slots[\"displacement\"].source = displacement;\r\n new_source.slots[\"displacement\"].name = \"Displacement\";\r\n new_source.slots[\"data0\"].name = \"Parameter\";\r\n new_source.slots[\"data0\"].source = parameter;\r\n new_source.slots[\"data1\"].name = \"\";\r\n new_source.slots[\"data2\"].name = \"\";\r\n new_source.slots[\"data3\"].name = \"\";\r\n new_source.parameters[\"displacement_offset\"].setUnit(\"m\").value = 0;\r\n\r\n new_source.slot_order = [\"data0\", \"displacement\"];\r\n\r\n if(parameter.layer.zsteps && parameter.layer.zsteps.length > 1){\r\n new_source.parameters[\"z_level\"].options = [];\r\n parameter.layer.zsteps.forEach(zstep => {\r\n new_source.parameters[\"z_level\"].addOption(zstep);\r\n });\r\n new_source.parameters[\"z_level\"].value = parameter.layer.zsteps[0];\r\n \r\n }\r\n \r\n let new_layer = new RenderLayer();\r\n new_layer.typeHint = \"ColormapScalar\";\r\n new_layer.source = new_source;\r\n new_layer.name = new_source.name;\r\n new_layer.visible = true;\r\n if(parameter.layer.default_overlay){\r\n new_layer.overlayHint = parameter.layer.default_overlay;\r\n } else {\r\n new_layer.overlayHint = \"ScalarOverlay\";\r\n }\r\n let colormap_filter = new ColormapFilter(parameter);\r\n new_layer.unit = parameter.layer.unit;\r\n new_layer.filterPipeline.push(colormap_filter);\r\n new_layer.filterPipeline.push(new HillShadingFilter());\r\n new_layer.filterPipeline.push(new DomeLightingFilter());\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {\r\n \"layer_opacity\": new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1)\r\n }))\r\n new_layer.compositionFilter.parameters[\"layer_opacity\"].shader_name = \"layer_opacity\";\r\n return new_layer;\r\n }\r\n\r\n static createColormapDifferenceLayer(base_parameter: SourceLayerInfo, delta_parameter: SourceLayerInfo, displacement: SourceLayerInfo = null): RenderLayer{\r\n let new_source = new TileRenderSource();\r\n new_source.name = \"Difference between \" + base_parameter.instance_name + \"(\" + base_parameter.layer_name + \")\" + \" and \" + delta_parameter.instance_name + \"(\" + delta_parameter.layer_name + \")\";\r\n\r\n new_source.slots[\"displacement\"].source = displacement;\r\n new_source.slots[\"displacement\"].name = \"Displacement\";\r\n new_source.slots[\"data0\"].name = \"Base Parameter\";\r\n new_source.slots[\"data0\"].source = base_parameter;\r\n new_source.slots[\"data1\"].name = \"Delta Parameter\";\r\n new_source.slots[\"data1\"].source = delta_parameter;\r\n new_source.slots[\"data1\"].mixing = Mat4.identity().mul_number(-1);\r\n new_source.slots[\"data2\"].name = \"\";\r\n new_source.slots[\"data3\"].name = \"\";\r\n new_source.parameters[\"displacement_offset\"].setUnit(\"m\").value = 0;\r\n\r\n new_source.slot_order = [\"data0\", \"data1\", \"displacement\"];\r\n\r\n if(base_parameter.layer.zsteps && base_parameter.layer.zsteps.length > 1){\r\n new_source.parameters[\"z_level\"].options = [];\r\n base_parameter.layer.zsteps.forEach(zstep => {\r\n new_source.parameters[\"z_level\"].addOption(zstep);\r\n });\r\n new_source.parameters[\"z_level\"].value = base_parameter.layer.zsteps[0];\r\n \r\n }\r\n \r\n let new_layer = new RenderLayer();\r\n new_layer.typeHint = \"ColormapDifference\";\r\n new_layer.source = new_source;\r\n new_layer.name = new_source.name;\r\n new_layer.visible = true;\r\n if(base_parameter.layer.default_overlay){\r\n new_layer.overlayHint = base_parameter.layer.default_overlay;\r\n } else {\r\n new_layer.overlayHint = \"ScalarOverlay\";\r\n }\r\n let base_colormap = new ColormapFilter(base_parameter);\r\n let base_min = base_colormap.parameters[\"colormap_min\"].value;\r\n let base_max = base_colormap.parameters[\"colormap_max\"].value;\r\n let delta_colormap = new ColormapFilter(delta_parameter)\r\n let delta_min = base_colormap.parameters[\"colormap_min\"].value;\r\n let delta_max = base_colormap.parameters[\"colormap_max\"].value;\r\n let colormap_filter = new ColormapFilter(base_parameter);\r\n colormap_filter.parameters[\"colormap_min\"].value = base_min - delta_max;\r\n colormap_filter.parameters[\"colormap_max\"].value = base_max - delta_min;\r\n new_layer.unit = base_parameter.layer.unit;\r\n new_layer.filterPipeline.push(colormap_filter);\r\n new_layer.filterPipeline.push(new HillShadingFilter());\r\n new_layer.filterPipeline.push(new DomeLightingFilter());\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {\r\n \"layer_opacity\": new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1)\r\n }))\r\n new_layer.compositionFilter.parameters[\"layer_opacity\"].shader_name = \"layer_opacity\";\r\n return new_layer;\r\n }\r\n\r\n static createImageLayer(image: SourceLayerInfo, displacement: SourceLayerInfo = null): RenderLayer{\r\n let new_source = new TileRenderSource();\r\n new_source.name = image.instance_name + \"(\" + image.layer_name + \")\";\r\n new_source.slots[\"displacement\"].source = displacement;\r\n new_source.slots[\"displacement\"].name = \"Displacement\";\r\n new_source.slots[\"data0\"].name = \"Image\";\r\n new_source.slots[\"data0\"].source = image;\r\n new_source.slots[\"data1\"].name = \"\";\r\n new_source.slots[\"data2\"].name = \"\";\r\n new_source.slots[\"data3\"].name = \"\";\r\n new_source.parameters[\"displacement_offset\"].setUnit(\"m\").value = 0;\r\n\r\n new_source.slot_order = [\"data0\", \"displacement\"];\r\n \r\n let new_layer = new RenderLayer();\r\n new_layer.typeHint = \"Image\";\r\n new_layer.source = new_source;\r\n new_layer.name = new_source.name;\r\n new_layer.visible = true;\r\n if(image.layer.default_overlay){\r\n new_layer.overlayHint = image.layer.default_overlay;\r\n } else {\r\n new_layer.overlayHint = \"ColorOverlay\";\r\n }\r\n new_layer.unit = null;\r\n\r\n new_layer.filterPipeline.push(new HillShadingFilter());\r\n\r\n\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {\r\n \"layer_opacity\": new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1)\r\n }))\r\n new_layer.compositionFilter.parameters[\"layer_opacity\"].shader_name = \"layer_opacity\";\r\n return new_layer;\r\n }\r\n\r\n static createDomeLightImageLayer(image: SourceLayerInfo, displacement: SourceLayerInfo = null): RenderLayer{\r\n let new_source = new TileRenderSource();\r\n new_source.name = image.instance_name + \"(\" + image.layer_name + \")\";\r\n new_source.slots[\"displacement\"].source = displacement;\r\n new_source.slots[\"displacement\"].name = \"Displacement\";\r\n new_source.slots[\"data0\"].name = \"Image\";\r\n new_source.slots[\"data0\"].source = image;\r\n new_source.slots[\"data1\"].name = \"\";\r\n new_source.slots[\"data2\"].name = \"\";\r\n new_source.slots[\"data3\"].name = \"\";\r\n new_source.parameters[\"displacement_offset\"].setUnit(\"m\").value = 0;\r\n\r\n new_source.slot_order = [\"data0\", \"displacement\"];\r\n \r\n let new_layer = new RenderLayer();\r\n new_layer.typeHint = \"Image\";\r\n new_layer.source = new_source;\r\n new_layer.name = new_source.name;\r\n new_layer.visible = true;\r\n if(image.layer.default_overlay){\r\n new_layer.overlayHint = image.layer.default_overlay;\r\n } else {\r\n new_layer.overlayHint = \"ColorOverlay\";\r\n }\r\n new_layer.unit = null;\r\n\r\n new_layer.filterPipeline.push(new HillShadingFilter());\r\n new_layer.filterPipeline.push(new DomeLightingFilter());\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {\r\n \"layer_opacity\": new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1)\r\n }))\r\n new_layer.compositionFilter.parameters[\"layer_opacity\"].shader_name = \"layer_opacity\";\r\n return new_layer;\r\n }\r\n\r\n static createPointCloudLayer(points: SourceLayerInfo): RenderLayer{\r\n let new_layer = new RenderLayer();\r\n new_layer.typeHint = \"ScalarPointCloud\";\r\n new_layer.source = new PointCloudRenderSource();\r\n new_layer.source.slots[\"points\"].source = points;\r\n new_layer.source.slots[\"points\"].name = \"Points\";\r\n new_layer.source.name = points.instance_name + \"(\" + points.layer_name + \")\";\r\n new_layer.source.parameters[\"displacement_offset\"].setUnit(\"m\").value = 0;\r\n if(points.layer.datarange){\r\n new_layer.source.parameters[\"value_sizing_zero\"].setUnit(points.layer.unit).value = points.layer.datarange[0];\r\n new_layer.source.parameters[\"value_sizing_one\"].setUnit(points.layer.unit).value = points.layer.datarange[1];\r\n }\r\n\r\n new_layer.source.slot_order = [\"points\"];\r\n\r\n new_layer.name = new_layer.source.name;\r\n new_layer.visible = true;\r\n new_layer.filterPipeline.push(new ColormapFilter(points));\r\n new_layer.filterPipeline.push(new DomeLightingFilter());\r\n new_layer.unit = points.layer.unit;\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {}));\r\n if(points.layer.default_overlay){\r\n new_layer.overlayHint = points.layer.default_overlay;\r\n } else {\r\n new_layer.overlayHint = \"ScalarOverlay\";\r\n }\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {\r\n \"layer_opacity\": new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1)\r\n }))\r\n new_layer.compositionFilter.parameters[\"layer_opacity\"].shader_name = \"layer_opacity\";\r\n return new_layer;\r\n }\r\n\r\n static createColorPointCloudLayer(points: SourceLayerInfo): RenderLayer{\r\n let new_layer = new RenderLayer();\r\n new_layer.typeHint = \"ColorPointCloud\";\r\n new_layer.source = new ColorPointCloudRenderSource();\r\n new_layer.source.slots[\"points\"].source = points;\r\n new_layer.source.slots[\"points\"].name = \"Points\";\r\n new_layer.source.name = points.instance_name + \"(\" + points.layer_name + \")\";\r\n new_layer.source.parameters[\"displacement_offset\"].setUnit(\"m\").value = 0;\r\n if(points.layer.datarange){\r\n new_layer.source.parameters[\"value_sizing_zero\"].setUnit(points.layer.unit).value = points.layer.datarange[0];\r\n new_layer.source.parameters[\"value_sizing_one\"].setUnit(points.layer.unit).value = points.layer.datarange[1];\r\n }\r\n\r\n new_layer.source.slot_order = [\"points\"];\r\n\r\n new_layer.name = new_layer.source.name;\r\n new_layer.visible = true;\r\n new_layer.filterPipeline.push(new DomeLightingFilter());\r\n new_layer.unit = points.layer.unit;\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {}));\r\n if(points.layer.default_overlay){\r\n new_layer.overlayHint = points.layer.default_overlay;\r\n } else {\r\n new_layer.overlayHint = \"ColorOverlay\";\r\n }\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {\r\n \"layer_opacity\": new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1)\r\n }))\r\n new_layer.compositionFilter.parameters[\"layer_opacity\"].shader_name = \"layer_opacity\";\r\n return new_layer;\r\n }\r\n\r\n static createPieChartPointsLayer(attribute1: SourceLayerInfo, extra_attributes: SourceLayerInfo[] = []): RenderLayer{\r\n let new_layer = new RenderLayer();\r\n new_layer.typeHint = \"PieChartPoints\";\r\n new_layer.source = new PieChartPointRenderSource();\r\n new_layer.source.slots[\"attribute1\"].source = attribute1;\r\n new_layer.source.slots[\"attribute1\"].name = \"Attribute 1\";\r\n if(attribute1){\r\n new_layer.source.name = attribute1.instance_name + \"(\" + attribute1.layer_name + \")\";\r\n new_layer.source.parameters[\"displacement_offset\"].setUnit(\"m\").value = 0;\r\n new_layer.source.parameters[\"value_sizing_zero\"].setUnit(attribute1.layer.unit).value = attribute1.layer.datarange[0];\r\n new_layer.source.parameters[\"value_sizing_one\"].setUnit(attribute1.layer.unit).value = attribute1.layer.datarange[1];\r\n\r\n new_layer.ticksHint = {};\r\n new_layer.ticksHint[(1/3)] = attribute1.layer.long_name ||attribute1.layer.name;\r\n\r\n let slotnum = 2;\r\n for(let sli of extra_attributes){\r\n new_layer.source.slots[\"attribute\"+ slotnum].source = sli;\r\n new_layer.ticksHint[(1/3)+((slotnum - 1)*0.8)] = sli.layer.long_name || sli.layer.name;\r\n slotnum ++;\r\n }\r\n\r\n let min_sum = attribute1.layer.datarange[0] || 0;\r\n let max_sum = attribute1.layer.datarange[1] || 0;\r\n for(let sli of extra_attributes){\r\n min_sum += sli.layer.datarange[0] || 0;\r\n max_sum += sli.layer.datarange[1] || 0;\r\n }\r\n\r\n new_layer.source.parameters[\"value_sizing_zero\"].value = min_sum;\r\n new_layer.source.parameters[\"value_sizing_one\"].value = max_sum;\r\n new_layer.source.parameters[\"value_sizing_enabled\"].value = true;\r\n\r\n }\r\n new_layer.name = new_layer.source.name;\r\n new_layer.visible = true;\r\n let cmap = new ColormapFilter();\r\n cmap.parameters[\"colormap\"].value = \"Set1\";\r\n cmap.parameters[\"colormap_min\"].value = 0;\r\n cmap.parameters[\"colormap_max\"].value = 7;\r\n new_layer.filterPipeline.push(cmap);\r\n new_layer.filterPipeline.push(new HillShadingFilter()); //No hillshading for now\r\n new_layer.unit = attribute1?.layer.unit;\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {}));\r\n if(attribute1?.layer.default_overlay){\r\n new_layer.overlayHint = attribute1.layer.default_overlay;\r\n } else {\r\n new_layer.overlayHint = \"ScalarOverlay\";\r\n }\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {\r\n \"layer_opacity\": new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1)\r\n }))\r\n new_layer.compositionFilter.parameters[\"layer_opacity\"].shader_name = \"layer_opacity\";\r\n return new_layer;\r\n }\r\n\r\n\r\n static createLinesLayer(lines: SourceLayerInfo): RenderLayer{\r\n let new_layer = new RenderLayer();\r\n new_layer.typeHint = \"Lines\";\r\n new_layer.source = new LineRenderSource();\r\n new_layer.source.slots[\"lines\"].source = lines;\r\n new_layer.source.slots[\"lines\"].name = \"Lines\";\r\n new_layer.source.name = lines.instance_name + \"(\" + lines.layer_name + \")\";\r\n new_layer.source.parameters[\"displacement_offset\"].setUnit(\"m\").value = 0;\r\n\r\n new_layer.source.slot_order = [\"lines\"];\r\n\r\n new_layer.name = new_layer.source.name;\r\n new_layer.visible = true;\r\n new_layer.filterPipeline.push(new ColormapFilter(lines));\r\n new_layer.filterPipeline.push(new HillShadingFilter());\r\n new_layer.unit = lines.layer.unit;\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {}));\r\n if(lines.layer.default_overlay){\r\n new_layer.overlayHint = lines.layer.default_overlay;\r\n } else {\r\n new_layer.overlayHint = \"ScalarOverlay\";\r\n }\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {\r\n \"layer_opacity\": new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1)\r\n }))\r\n new_layer.compositionFilter.parameters[\"layer_opacity\"].shader_name = \"layer_opacity\";\r\n return new_layer;\r\n }\r\n\r\n static createVector2ArrowLayer(datau: SourceLayerInfo, datav: SourceLayerInfo, displacement: SourceLayerInfo = null): RenderLayer {\r\n let new_layer = new RenderLayer();\r\n new_layer.typeHint = \"Vector2Arrow\";\r\n new_layer.source = new VectorTracerArrowRenderSource();\r\n new_layer.source.slots[\"datau\"].source = datau;\r\n new_layer.source.slots[\"datav\"].source = datav;\r\n new_layer.source.slots[\"displacement\"].source = displacement;\r\n new_layer.source.name = datau.instance_name + \"(\" + datau.layer_name + \")\";\r\n new_layer.source.parameters[\"displacement_offset\"].setUnit(\"m\").value = 0;\r\n\r\n new_layer.source.slot_order = [\"datau\", \"datav\", \"displacement\"];\r\n\r\n if(datau.layer.zsteps && datau.layer.zsteps.length > 1){\r\n new_layer.source.parameters[\"z_level\"].options = [];\r\n datau.layer.zsteps.forEach(zstep => {\r\n new_layer.source.parameters[\"z_level\"].addOption(zstep);\r\n });\r\n new_layer.source.parameters[\"z_level\"].value = datau.layer.zsteps[0];\r\n }\r\n\r\n new_layer.name = new_layer.source.name;\r\n new_layer.visible = true;\r\n //TODO improve colormap ranging\r\n let u_colormap = new ColormapFilter(datau);\r\n let u_min = u_colormap.parameters[\"colormap_min\"].value;\r\n let u_max = u_colormap.parameters[\"colormap_max\"].value;\r\n let v_colormap = new ColormapFilter(datav)\r\n let v_min = u_colormap.parameters[\"colormap_min\"].value;\r\n let v_max = u_colormap.parameters[\"colormap_max\"].value;\r\n let colormap_filter = new ColormapFilter(datau);\r\n let total_min = Math.min(Math.abs(u_min), Math.abs(u_max), Math.abs(v_min), Math.abs(v_max), 0);\r\n let total_max = Math.max(Math.abs(u_min), Math.abs(u_max), Math.abs(v_min), Math.abs(v_max));\r\n colormap_filter.parameters[\"colormap_min\"].value = total_min;\r\n colormap_filter.parameters[\"colormap_max\"].value = total_max;\r\n new_layer.filterPipeline.push(colormap_filter);\r\n new_layer.filterPipeline.push(new HillShadingFilter());\r\n new_layer.unit = datau.layer.unit;\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {}));\r\n if(datau.layer.default_overlay){\r\n new_layer.overlayHint = datau.layer.default_overlay;\r\n } else {\r\n new_layer.overlayHint = \"ScalarOverlay\";\r\n }\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {\r\n \"layer_opacity\": new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1)\r\n }))\r\n new_layer.compositionFilter.parameters[\"layer_opacity\"].shader_name = \"layer_opacity\";\r\n return new_layer;\r\n }\r\n\r\n static createVec2PointsLayer(points: SourceLayerInfo): RenderLayer{\r\n let new_layer = new RenderLayer();\r\n new_layer.typeHint = \"Vec2Points\";\r\n new_layer.source = new VectorPointRenderSource();\r\n new_layer.source.slots[\"points\"].source = points;\r\n new_layer.source.slots[\"points\"].name = \"Points\";\r\n new_layer.source.name = points.instance_name + \"(\" + points.layer_name + \")\";\r\n new_layer.source.parameters[\"displacement_offset\"].setUnit(\"m\").value = 0;\r\n new_layer.source.parameters[\"value_sizing_zero\"].setUnit(points.layer.unit).value = points.layer.datarange[0];\r\n new_layer.source.parameters[\"value_sizing_one\"].setUnit(points.layer.unit).value = points.layer.datarange[1];\r\n\r\n new_layer.name = new_layer.source.name;\r\n new_layer.visible = true;\r\n new_layer.filterPipeline.push(new ColormapFilter(points));\r\n new_layer.unit = points.layer.unit;\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {}));\r\n if(points.layer.default_overlay){\r\n new_layer.overlayHint = points.layer.default_overlay;\r\n } else {\r\n new_layer.overlayHint = \"ScalarOverlay\";\r\n }\r\n new_layer.compositionFilter = (new CompositionFilter(Services.GLService.Modules.compositing.blending, {\r\n \"layer_opacity\": new Parameter(\"Opacity\", 1.0, \"number\", true).setRange(0, 1).setStep(0.1)\r\n }))\r\n new_layer.compositionFilter.parameters[\"layer_opacity\"].shader_name = \"layer_opacity\";\r\n return new_layer;\r\n }\r\n\r\n}\r\n\r\n","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { CompositionFilter } from \"../modules/renderfilters/RenderFilter\";\r\nimport { RenderLayer } from \"../modules/RenderLayer\";\r\nimport { RenderSource } from \"../modules/rendersources/RenderSource\";\r\nimport { UEC, UECArea } from \"../modules/tile\";\r\nimport { Mat4 } from \"../modules/vecmat\";\r\nimport { GLBarrier, Services } from \"./Services\";\r\n\r\nexport class ExtentVisualizationService{\r\n renderLayer: ExtentRenderLayer;\r\n constructor(){\r\n GLBarrier.wait().then(() => {\r\n this.renderLayer = new ExtentRenderLayer();\r\n });\r\n }\r\n\r\n public showExtent(extent: UECArea, zrange: [number, number]){\r\n this.renderLayer.setExtent(extent);\r\n this.renderLayer.setZRange(zrange);\r\n this.renderLayer.setVisible(true);\r\n }\r\n\r\n public hideExtent(){\r\n this.renderLayer.setVisible(false);\r\n }\r\n}\r\n\r\n\r\n\r\nclass ExtentRenderLayer extends RenderLayer {\r\n source: ExtentRenderSource;\r\n\r\n constructor(){\r\n super();\r\n this.source = new ExtentRenderSource();\r\n this.compositionFilter = new CompositionFilter(Services.GLService.Modules.compositing.selection);\r\n }\r\n\r\n setExtent(area: UECArea) {\r\n this.source.extent = area;\r\n }\r\n\r\n setZRange(zrange: [number, number]){\r\n this.source.zrange = zrange;\r\n }\r\n\r\n setColor(color: number[]){\r\n this.source.color = color;\r\n }\r\n\r\n setVisible(visible: boolean){\r\n this.source.render = visible;\r\n }\r\n}\r\n\r\nclass ExtentRenderSource extends RenderSource {\r\n public extent: UECArea;\r\n public zrange: [number, number] = null;\r\n public color = [0.0, 1.0, 0.0, 1.0];\r\n public render: boolean = false;\r\n constructor(){\r\n super();\r\n //@ts-ignore\r\n this.shaders = Services.GLService.Modules.sources.selection;\r\n this.name = \"SelectionRenderSource\";\r\n this.parameters = {};\r\n this.slots = {};\r\n this.extent = new UECArea(new UEC(0,0), new UEC(0,0));\r\n }\r\n\r\n execute(context: {[name: string]: WebGLRenderingContext | any; }) {\r\n if(!this.render){\r\n return;\r\n }\r\n let srect = this.extent;\r\n if(srect.extent.x == 0 || srect.extent.y == 0)return;\r\n super.execute(context);\r\n context.gl.enable(context.gl.DEPTH_TEST);\r\n context.gl.enableVertexAttribArray(this.shader.attributes[\"position\"]);\r\n let buff = Services.GLService.Geometries.selection_box;\r\n context.gl.bindBuffer(context.gl.ARRAY_BUFFER, buff.buffer);\r\n context.gl.vertexAttribPointer(this.shader.attributes[\"position\"], 3, context.gl.FLOAT, false, 0, 0);\r\n\r\n let cam_position = Services.PositionService.getCameraPositionFiltered();\r\n switch (Services.PositionService.projection_mode) {\r\n case \"EQUIRECT\": {\r\n if(cam_position.Longitude < -90 && srect.position.x > 0.5) {\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[\"viewMatrix\"], false, Services.PositionService.world_transform.mul_mat4(new Mat4(srect.extent.x, 0, 0, srect.position.x - 1, 0, srect.extent.y, 0, srect.position.y, 0, 0, 1, 0, 0, 0, 0, 1)).as_typed());\r\n } else if (cam_position.Longitude > 90 && srect.position.x < 0.5) {\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[\"viewMatrix\"], false, Services.PositionService.world_transform.mul_mat4(new Mat4(srect.extent.x, 0, 0, srect.position.x + 1, 0, srect.extent.y, 0, srect.position.y, 0, 0, 1, 0, 0, 0, 0, 1)).as_typed());\r\n } else {\r\n context.gl.uniformMatrix4fv(this.shader.uniforms[\"viewMatrix\"], false, Services.PositionService.world_transform.mul_mat4(new Mat4(srect.extent.x, 0, 0, srect.position.x, 0, srect.extent.y, 0, srect.position.y, 0, 0, 1, 0, 0, 0, 0, 1)).as_typed());\r\n }\r\n break;\r\n }\r\n case \"SPHERE\": {\r\n break;\r\n }\r\n case \"POLAR\": {\r\n break;\r\n }\r\n }\r\n let minmax = Services.RenderLayerService.get_visible_renderlayers().map(r => r.source.getVerticalBoundsWorldSpace()).reduce((minmax, cv) => [Math.min(cv[0], minmax[0]), Math.max(cv[1], minmax[1])], [1, 1]);\r\n if(this.zrange){\r\n minmax = this.zrange;\r\n }\r\n context.gl.uniform1f(this.shader.uniforms[\"selection_zmin\"], minmax[0]);\r\n context.gl.uniform1f(this.shader.uniforms[\"selection_height\"], minmax[1] - minmax[0]);\r\n\r\n context.gl.uniform2f(this.shader.uniforms[\"selection_coord\"], srect.position.x, srect.position.y);\r\n context.gl.uniform2f(this.shader.uniforms[\"selection_size\"], srect.extent.x, srect.extent.y);\r\n\r\n context.gl.uniform4f(this.shader.uniforms[\"selection_color\"], this.color[0], this.color[1], this.color[2], this.color[3]);\r\n\r\n context.gl.drawArrays(buff.mode, buff.start, buff.length);\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nexport type ImageDimensions = {\r\n x: number,\r\n y: number\r\n}\r\n\r\nexport class TextRenderingService{\r\n private cache: Map;\r\n textureSize = {\r\n x: 480,\r\n y: 100\r\n }\r\n private font: string = \"48px sans\";\r\n private ctx: CanvasRenderingContext2D;\r\n\r\n constructor(){\r\n let el = document.createElement('canvas');\r\n el.style.display = \"none\";\r\n el.style.backgroundColor = \"white\";\r\n //Change these to the size needed\r\n el.width = this.textureSize.x;\r\n el.height = this.textureSize.y;\r\n document.body.appendChild(el);\r\n this.cache = new Map();\r\n this.ctx = el.getContext(\"2d\");\r\n this.ctx.fillStyle = \"black\";\r\n this.ctx.font = this.font;\r\n this.ctx.textBaseline = \"top\";\r\n this.renderText(\"DigitalEarthViewer\");\r\n }\r\n\r\n public renderText(text: string): ImageData{\r\n if(this.cache.has(text)){\r\n return this.cache.get(text);\r\n }else{\r\n let dims = this.ctx.measureText(text);\r\n let imdims = {\r\n x: dims.actualBoundingBoxLeft + dims.actualBoundingBoxRight,\r\n y: dims.actualBoundingBoxAscent + dims.actualBoundingBoxDescent\r\n };\r\n this.ctx.clearRect(0,0,this.textureSize.x, this.textureSize.y);\r\n this.ctx.fillText(text, 0,0);\r\n\r\n let imagedata = this.ctx.getImageData(0,0, imdims.x, imdims.y);\r\n this.cache.set(text, imagedata);\r\n return imagedata;\r\n };\r\n }\r\n}","export class DebugEvent extends Event{\r\n public debugMessage: string;\r\n constructor(text: string){\r\n super(\"Debug\");\r\n this.debugMessage = text;\r\n }\r\n}\r\n\r\n\r\nexport class DebugService extends EventTarget{\r\n public debug_text: string = \"\";\r\n constructor(){\r\n super();\r\n }\r\n\r\n putDebug(s: string){\r\n this.debug_text += s + \"\\n\";\r\n }\r\n\r\n commitDebug(){\r\n this.dispatchEvent(new DebugEvent(this.debug_text));\r\n this.debug_text = \"\";\r\n }\r\n}","import { SceneConfig } from \"./SerializationService\";\r\nimport { CameraPosition, CameraPositionTargetChangedEvent, PositionService } from \"./PositionService\";\r\nimport { ServiceBarrier, Services } from \"./Services\";\r\nimport { SettingsChangedEvent } from \"./SettingsService\";\r\nimport { CurrentTimeChangedEvent } from \"./TimeService\";\r\n\r\nexport interface SynchronizationMessage{\r\n type: string,\r\n data: object\r\n}\r\n\r\nexport interface CameraPositionMessage extends SynchronizationMessage {\r\n type: \"CameraPosition\";\r\n data:{\r\n position: CameraPosition\r\n };\r\n}\r\n\r\nexport interface TimeRangeMessage extends SynchronizationMessage {\r\n type: \"TimeRange\",\r\n data:{\r\n min: number,\r\n max: number\r\n }\r\n}\r\n\r\nexport interface ReloadMessage extends SynchronizationMessage{\r\n type: \"Reload\",\r\n data: {}\r\n}\r\n\r\nexport interface JoinedMessage extends SynchronizationMessage{\r\n type: \"Joined\",\r\n data: {}\r\n}\r\n\r\nexport interface SceneMessage extends SynchronizationMessage{\r\n type: \"Scene\",\r\n data: {\r\n scene: SceneConfig\r\n }\r\n}\r\n\r\nexport interface GetSceneMessage extends SynchronizationMessage{\r\n type: \"GetScene\",\r\n data: {}\r\n}\r\n\r\nexport interface SettingMessage extends SynchronizationMessage{\r\n type: \"Setting\",\r\n data: {\r\n name: string,\r\n value: any\r\n }\r\n}\r\n\r\nexport class SynchronizationMessageEvent extends Event{\r\n public message: SynchronizationMessage;\r\n constructor(message: SynchronizationMessage){\r\n super(\"SynchronizationMessage\");\r\n this.message = message;\r\n }\r\n}\r\n\r\nexport class SynchronizationService extends EventTarget{\r\n websocket: WebSocket = null;\r\n lastMessagesByType = {\r\n \"Reload\": new Date().getTime(),\r\n \"TimeRange\": new Date().getTime(),\r\n \"CameraPosition\": new Date().getTime(),\r\n \"Joined\": new Date().getTime(),\r\n \"Scene\": new Date().getTime()\r\n }\r\n constructor(){\r\n super();\r\n ServiceBarrier.wait().then(() => {\r\n Services.PositionService.addEventListener(\"CameraPositionTargetChanged\", (pos: CameraPositionTargetChangedEvent) => {\r\n let message: CameraPositionMessage = {\r\n type: \"CameraPosition\",\r\n data: {\r\n position: pos.position\r\n }\r\n };\r\n this.dispatchEvent(new SynchronizationMessageEvent(message));\r\n });\r\n\r\n\r\n Services.TimeService.addEventListener(\"CurrentTimeChanged\", (time_event: CurrentTimeChangedEvent) => {\r\n if(time_event.external){\r\n return;\r\n }\r\n let message: TimeRangeMessage = {\r\n type: \"TimeRange\",\r\n data: {\r\n min: time_event.time_min,\r\n max: time_event.time_max\r\n }\r\n };\r\n this.dispatchEvent(new SynchronizationMessageEvent(message));\r\n })\r\n\r\n const ALLOWED_SETTINGS = [\"DomeTilt\", \"ClearColor\", \"Exaggeration\", \"Light Direction\"];\r\n Services.SettingsService.addEventListener(\"SettingsChanged\", (e: SettingsChangedEvent) => {\r\n if(e.remote)return;\r\n if(ALLOWED_SETTINGS.includes(e.parameter.name)){\r\n let message: SettingMessage = {\r\n type: \"Setting\",\r\n data: {\r\n name: e.parameter.name,\r\n value: e.parameter.value\r\n }\r\n };\r\n this.dispatchEvent(new SynchronizationMessageEvent(message));\r\n }\r\n });\r\n\r\n fetch(\"synchronized\").then(r => r.json()).then(v => {\r\n if(v == true){\r\n console.log(\"Server says to start sync\");\r\n setTimeout(() => this.tryStart(), 100);\r\n }\r\n });\r\n\r\n });\r\n }\r\n\r\n public stop(){\r\n console.log(\"Stopping sync\");\r\n if(this.websocket != null){\r\n this.websocket.close();\r\n console.log(\"Stopped sync\");\r\n }\r\n }\r\n\r\n private sendSocket(message: SynchronizationMessage){\r\n if(this.websocket && this.websocket.readyState == WebSocket.OPEN)\r\n this.websocket.send(JSON.stringify(message));\r\n }\r\n\r\n public syncScene(){\r\n let message: SceneMessage = {\r\n type: \"Scene\",\r\n data: {\r\n scene: Services.SerializationService.serializeScene()\r\n }\r\n };\r\n //console.log(\"sync\", message);\r\n this.dispatchEvent(new SynchronizationMessageEvent(message));\r\n }\r\n\r\n public async handleIncomingMessage(message: SynchronizationMessage, rebroadcast: boolean = false) {\r\n try{\r\n //console.log(message);\r\n let messagetype = message.type;\r\n //console.log(\"Received message of type \", messagetype);\r\n switch (messagetype){\r\n case \"Reload\":\r\n (()=>{\r\n let t = new Date().getTime();\r\n console.log(\"Since last reload: \", t - this.lastMessagesByType[\"Reload\"]);\r\n if(t - this.lastMessagesByType[\"Reload\"] > 15000){\r\n window.location.reload();\r\n }\r\n })();\r\n break;\r\n case \"Joined\":\r\n (() => {\r\n let t = new Date().getTime();\r\n if(t - this.lastMessagesByType[\"CameraPosition\"] > 1000){\r\n let posmsg: CameraPositionMessage = {\r\n type: \"CameraPosition\",\r\n data: {\r\n position: Services.PositionService.getCameraPosition()\r\n }\r\n };\r\n this.sendSocket(posmsg); //These do not need to be thrown as events, but maybe they could be replaced by a master switch?\r\n }\r\n if(t - this.lastMessagesByType[\"TimeRange\"] > 1000){\r\n let trange = Services.TimeService.getCurrentTimeRange();\r\n let tmsg: TimeRangeMessage = {\r\n type: \"TimeRange\",\r\n data: {\r\n min: trange[0],\r\n max: trange[1]\r\n }\r\n }\r\n this.sendSocket(tmsg);\r\n }\r\n })();\r\n break;\r\n case \"GetScene\": \r\n (() => {\r\n //console.log(\"Received GetScene request\")\r\n let t = new Date().getTime();\r\n if(t - this.lastMessagesByType[\"Scene\"] > 1000){\r\n this.syncScene();\r\n this.lastMessagesByType[\"Scene\"] = new Date().getTime();\r\n }\r\n })();\r\n break;\r\n case \"CameraPosition\":\r\n (() => {\r\n let positionMessage = message as CameraPositionMessage;\r\n Services.PositionService.setCameraPosition(positionMessage.data.position, true);\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n })();\r\n break;\r\n case \"TimeRange\":\r\n (() => {\r\n let timeMessage = message as TimeRangeMessage;\r\n Services.TimeService.setCurrentTimeRange(timeMessage.data.min, timeMessage.data.max, false, true);\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n })();\r\n break;\r\n case \"Scene\": {\r\n await (async () => {\r\n let sceneMessage = message as SceneMessage;\r\n console.log(\"Received new scene\", sceneMessage.data);\r\n await Services.SerializationService.deserializeScene(sceneMessage.data.scene);\r\n console.log(\"Loaded new scene\");\r\n })();\r\n break;\r\n }\r\n case \"Setting\": {\r\n (() => {\r\n let settingMessage = message as SettingMessage;\r\n console.log(\"Received setting \", settingMessage.data.name);\r\n Services.SettingsService.getSetting(settingMessage.data.name).setValue(settingMessage.data.value, true);\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n })();\r\n break;\r\n }\r\n default: \r\n console.warn(\"Unknown synchronization message\", message);\r\n }\r\n this.lastMessagesByType[messagetype] = new Date().getTime();\r\n }catch{}\r\n if(rebroadcast){\r\n this.sendSocket(message);\r\n }\r\n };\r\n\r\n public tryStart(){\r\n if(this.websocket != null){\r\n return;\r\n }\r\n if(Services.InitializationService.SceneName != \"\"){\r\n let SYNCSERVER_URL = Services.InitializationService.SERVER_URL.replace(\"http\", \"ws\") + \"/sync/\" + Services.InitializationService.SceneName;\r\n console.log(\"Connecting to \", SYNCSERVER_URL);\r\n this.websocket = new WebSocket(SYNCSERVER_URL);\r\n this.websocket.onopen = () => {\r\n console.info(\"Synchronization websocket connected\");\r\n let joinmsg: JoinedMessage = {\r\n type: \"Joined\",\r\n data: {}\r\n }\r\n this.sendSocket(joinmsg); //Not interesting to the recording component\r\n }\r\n\r\n this.websocket.onclose = () => {\r\n console.warn(\"Lost synchronization connection\");\r\n this.websocket == null;\r\n setTimeout(this.tryStart, 100);\r\n }\r\n\r\n this.websocket.addEventListener(\"message\", msg => {\r\n let message: SynchronizationMessage = JSON.parse(msg.data);\r\n this.handleIncomingMessage(message);\r\n })\r\n\r\n window.addEventListener(\"beforeunload\", () => {\r\n let message: ReloadMessage = {\r\n type: \"Reload\",\r\n data: {}\r\n };\r\n this.sendSocket(message); //useless to throw this as an event, we're unloading anyways\r\n });\r\n\r\n this.addEventListener(\"SynchronizationMessage\", (event: SynchronizationMessageEvent) => {\r\n this.sendSocket(event.message);\r\n });\r\n\r\n }\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\n/*\r\nService to format numbers and coordinates as strings. Widely used in the program.\r\n*/\r\n\r\nimport {UEC, Coord} from '../modules/tile';\r\nimport { Vec3 } from '../modules/vecmat';\r\n\r\nconst nbh_space = \"\\u202F\";\r\nconst neg_sign = \"\\u2212\";\r\nconst mul_sign = \"\\u00d7\";\r\nconst sci_notation_prefix = nbh_space + mul_sign + nbh_space + \"10\";\r\n\r\n//(exponent + 24) / 3 = index\r\nconst si_prefixes = [\r\n \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"\r\n];\r\nconst sci_notation_exp = [\r\n sci_notation_prefix + \"\\u207b\\u00b2\\u2074\",//-24\r\n sci_notation_prefix + \"\\u207b\\u00b2\\u2071\",//-21\r\n sci_notation_prefix + \"\\u207b\\u2071\\u2078\",//-18\r\n sci_notation_prefix + \"\\u207b\\u2071\\u2075\",//-15\r\n sci_notation_prefix + \"\\u207b\\u2071\\u00b2\",//-12\r\n sci_notation_prefix + \"\\u207b\\u2079\",//-9\r\n sci_notation_prefix + \"\\u207b\\u2076\",//-6\r\n sci_notation_prefix + \"\\u207b\\u00b3\",//-3\r\n \"\",//0\r\n sci_notation_prefix + \"\\u00b3\",//3\r\n sci_notation_prefix + \"\\u2076\",//6\r\n sci_notation_prefix + \"\\u2079\",//9\r\n sci_notation_prefix + \"\\u2071\\u00b2\",//12\r\n sci_notation_prefix + \"\\u2071\\u2075\",//15\r\n sci_notation_prefix + \"\\u2071\\u2078\",//18\r\n sci_notation_prefix + \"\\u00b2\\u2071\",//21\r\n sci_notation_prefix + \"\\u00b2\\u2074\",//24\r\n]\r\n\r\nexport class FormattingService {\r\n //Prints a number as a string with a unit attached. If no optional seperator is given, a non-breaking-space-character is injected\r\n static num_to_string_unit(num: number, unit: string, decimals: number, separator?: string): string {\r\n if(!separator) separator = nbh_space;\r\n if(unit)\r\n return this.number_to_string(num, decimals) + separator + unit;\r\n else\r\n return this.number_to_string(num, decimals);\r\n }\r\n\r\n static num_to_string_unit_si(num: number, unit: string, decimals: number, separator?: string): string {\r\n if(!separator) separator = nbh_space;\r\n let magnitude = FormattingService.num_decimals(num);\r\n let prefix_index = Math.max(Math.min(Math.floor((magnitude + 23) / 3), si_prefixes.length - 1), 0);\r\n if(unit){\r\n return this.number_to_string(num / Math.pow(10, prefix_index * 3 - 24), decimals) + separator + si_prefixes[prefix_index] + unit;\r\n }else{\r\n if (magnitude <= 0) {\r\n prefix_index = Math.max(Math.min(Math.floor((magnitude + 24) / 3), si_prefixes.length - 1), 0)\r\n }\r\n //console.log(\"num_to_string_unit_si\", num, unit, decimals, magnitude, prefix_index);\r\n return this.number_to_string(num / Math.pow(10, prefix_index * 3 - 24), decimals) + sci_notation_exp[prefix_index];\r\n }\r\n }\r\n\r\n static color_0_1_to_hex(r: number, g: number, b: number, prefix: string = \"#\"): string {\r\n return prefix\r\n + this.leftpad((r * 255 | 0).toString(16), \"0\", 2)\r\n + this.leftpad((g * 255 | 0).toString(16), \"0\", 2)\r\n + this.leftpad((b * 255 | 0).toString(16), \"0\", 2);\r\n }\r\n static color_vec3_to_hex(colorvec: Vec3, prefix: string = \"#\"): string{\r\n return FormattingService.color_0_1_to_hex(colorvec.x1, colorvec.x2, colorvec.x3, prefix);\r\n }\r\n\r\n static color_hex_to_vec3(hexstr: string): Vec3{\r\n if(hexstr.startsWith(\"#\")){\r\n hexstr = hexstr.substr(1);\r\n }\r\n let rstr = hexstr.substring(0, 2);\r\n let gstr = hexstr.substring(2,4);\r\n let bstr = hexstr.substring(4,6);\r\n\r\n let rvalue = parseInt(rstr, 16);\r\n let gvalue = parseInt(gstr, 16);\r\n let bvalue = parseInt(bstr, 16);\r\n \r\n return new Vec3(rvalue / 255, gvalue / 255, bvalue / 255);\r\n }\r\n\r\n static num_decimals(num: number): number {\r\n if(num == 0)\r\n return 1;\r\n else\r\n return (Math.floor(Math.log10(Math.abs(num))) + 1) | 0;\r\n }\r\n\r\n static decimals_for_range(min: number, max: number): number {\r\n let delta = max - min;\r\n let decs = this.num_decimals(delta);\r\n return 4 - decs;\r\n }\r\n\r\n //Formats a latitude as decimal degrees north or south\r\n static latitude_to_string (lat: number, decimals: number): string {\r\n if(lat >= 0) return this.number_to_string(lat, decimals) + nbh_space + \"°N\"; \r\n else return this.number_to_string(-lat, decimals) + nbh_space + \"°S\";\r\n }\r\n\r\n //Formats a longitude as decimal degrees east or west\r\n static longitude_to_string (lon: number, decimals: number): string {\r\n if(lon >= 0) return this.number_to_string(lon, decimals) + nbh_space + \"°E\";\r\n else return this.number_to_string(-lon, decimals) + nbh_space + \"°W\";\r\n }\r\n\r\n //Formats a set of uec coordinates to a human readable string of decimal degrees\r\n static UEC_to_coord_string (uec: UEC, decimals: number, separator?: string): string {\r\n let c = Coord.from_UEC(uec);\r\n if(!separator) separator = nbh_space;\r\n return this.coord_to_string(c.lat, c.lon, decimals, separator);\r\n }\r\n\r\n //Formats a Coordinate object to a human readable string of decimal degrees\r\n static Coord_to_coord_string (coord: Coord, decimals: number, separator?: string): string {\r\n if(!separator) separator = nbh_space;\r\n return this.coord_to_string(coord.lat, coord.lon, decimals, separator);\r\n }\r\n\r\n //Formats decimal latitude and logitude to a human readable string\r\n static coord_to_string (lat: number, lon: number, decimals: number, separator?: string): string {\r\n if(!separator) separator = nbh_space;\r\n return this.latitude_to_string(lat, decimals) + separator + this.longitude_to_string(lon, decimals);\r\n }\r\n\r\n //Formats a number to a string with a given accuracy\r\n static number_to_string(num: number, decimals: number): string {\r\n if(decimals <= 0) return this.int_to_string(num);\r\n let sign = num >= 0;\r\n decimals = decimals | 0;\r\n let nd = Math.pow(10, decimals);\r\n let s = this.leftpad(this.int_to_string(Math.abs(Math.round(nd * num))), \"0\", decimals);\r\n let n = s.length - decimals;\r\n let whole = s.substr(0, n);\r\n if(whole.length == 0)whole = \"0\";\r\n let frac = this.leftpad(s.substr(n), \"0\", decimals);\r\n return (sign ? \"\" : neg_sign) + whole + \".\" + frac;\r\n }\r\n\r\n //The one. The only. Extends a string with filler characters from the left side until it reaches a certain length.\r\n static leftpad(s: string, c: string, tlen: number): string {\r\n if(s.length < tlen){\r\n return c.repeat(tlen - s.length) + s;\r\n }else return s;\r\n }\r\n\r\n //Converts a number to an integer and casts it to a string\r\n static int_to_string(num: number): string {\r\n return (num | 0) + \"\";\r\n }\r\n\r\n //Converts a timestamp to an ISO8601-String\r\n static time_to_string(time: number): string {\r\n return new Date(time || 0).toISOString().replace(\"T\", nbh_space).replace(\"Z\", nbh_space).split(\".\")[0];\r\n }\r\n\r\n //Converts a timestamp to shorter ISO8601-alike-String\r\n static time_to_string_shorter(time: number): string {\r\n let strdatetime = new Date(time || 0).toISOString()\r\n let [strdate, strtime] = strdatetime.split(\"T\");\r\n strtime = strtime.substr(0,strtime.indexOf(\"Z\"));\r\n let [hour, minute, second] = strtime.split(\":\");\r\n second = second.split(\".\")[0];\r\n let result = strdate;\r\n if(hour && hour != \"00\"){\r\n result += nbh_space + hour;\r\n if(minute && minute != \"00\"){\r\n result += \":\" + minute;\r\n if(second && second != \"00\"){\r\n result += \":\" + second;\r\n }\r\n }else{\r\n result += \"h\";\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static duration_map = [\r\n {name: 'd', length: 24 * 60 * 60 * 1000},\r\n {name: 'h', length: 60 * 60 * 1000},\r\n {name: 'm', length: 60 * 1000},\r\n {name: 's', length: 1 * 1000},\r\n {name: 'w', length: 7 * 24 * 60 * 60 * 1000},\r\n {name: 'y', length: 365.25 * 24 * 60 * 60 * 1000}\r\n ];\r\n\r\n static duration_milliseconds_to_string(duration: number): string{\r\n let result = \"\";\r\n\r\n for(let unit of FormattingService.duration_map){\r\n if(duration >= unit.length){\r\n let unit_value = Math.floor(duration / unit.length);\r\n duration = duration - (unit_value * unit.length);\r\n result += unit_value + unit.name;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static duration_string_to_milliseconds(str: string): number{\r\n str = str.trim();\r\n let result = 0;\r\n let current_number_string = \"\";\r\n const numbers = \"0123456789\";\r\n for(let char of str){\r\n //Check if it's a space\r\n if(char == \" \"){\r\n continue;\r\n }\r\n //Check if it's an number\r\n if(numbers.indexOf(char) != -1){\r\n current_number_string += char;\r\n }else{\r\n //Check if it's a duration letter\r\n let duration_map_entry = this.duration_map.find(entry => entry.name == char);\r\n if(duration_map_entry != undefined){\r\n let current_number = parseInt(current_number_string);\r\n //Check if the number parsed correctly\r\n if(!isNaN(current_number)){\r\n result += current_number * duration_map_entry.length;\r\n }else{\r\n return null;\r\n }\r\n current_number_string = \"\";\r\n }else{\r\n return null;\r\n }\r\n //Reset the counter\r\n }\r\n }\r\n if(current_number_string.length > 0){\r\n return null;\r\n }\r\n return result;\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { FormattingService } from \"@/services/FormattingService\";\r\n\r\nexport class TarBall {\r\n static gen_header(name: string, size: number): ArrayBuffer {\r\n let buf = new Uint8Array(512);\r\n let tenc = new TextEncoder();\r\n // filename\r\n tenc.encode(name).forEach((c, i) => {\r\n if(i < 99){\r\n buf[i] = c;\r\n }\r\n });\r\n // permissions\r\n tenc.encode(\"0100777\").forEach((c, i) => {\r\n if(i < 7){\r\n buf[i + 100] = c;\r\n }\r\n });\r\n // user & group\r\n tenc.encode(\"0000000\").forEach((c, i) => {\r\n if(i < 7){\r\n buf[i + 108] = c;\r\n buf[i + 116] = c;\r\n }\r\n });\r\n // file size\r\n tenc.encode(FormattingService.leftpad(size.toString(8), \"0\", 11)).forEach((c, i) => {\r\n if(i < 11){\r\n buf[i + 124] = c;\r\n }\r\n });\r\n // file creation date (now)\r\n tenc.encode(FormattingService.leftpad(((Date.now() / 1000) | 0).toString(8), \"0\", 11)).forEach((c, i) => {\r\n if(i < 11){\r\n buf[i + 136] = c;\r\n }\r\n });\r\n // 8 spaces as placeholder for the header checksum\r\n tenc.encode(\" \").forEach((c, i) => {\r\n if(i < 8){\r\n buf[i + 148] = c;\r\n }\r\n });\r\n // type = 0\r\n buf[156] = 48;\r\n // magic\r\n tenc.encode(\"ustar\").forEach((c, i) => {\r\n if(i < 5){\r\n buf[i + 257] = c;\r\n }\r\n });\r\n // version\r\n tenc.encode(\"00\").forEach((c, i) => {\r\n if(i < 2){\r\n buf[i + 263] = c;\r\n }\r\n });\r\n // actual checksum\r\n let checksum = 0;\r\n buf.forEach(c => {\r\n checksum += c;\r\n });\r\n // set all checksum bits to 0x00\r\n for(var i = 148; i < 156; i++){\r\n buf[i] = 0;\r\n }\r\n // overwrite with string \r\n tenc.encode(checksum.toString(8)).forEach((c, i) => {\r\n if(i < 7){\r\n buf[i + 148] = c;\r\n }\r\n });\r\n return buf.buffer;\r\n }\r\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\nimport { ServiceBarrier, Services } from \"./Services\";\r\nimport { CameraPositionMessage, SynchronizationMessageEvent, TimeRangeMessage } from \"./SynchronizationService\";\r\nimport {SynchronizationMessage} from \"./SynchronizationService\";\r\nimport { FormattingService } from \"./FormattingService\";\r\nimport { TarBall } from \"@/modules/tar\";\r\n\r\nexport class RecordingMessage{\r\n message: SynchronizationMessage;\r\n timeOffset: number;\r\n constructor(message: SynchronizationMessage, timeOffset: number){\r\n this.message = message;\r\n this.timeOffset = timeOffset;\r\n }\r\n}\r\n\r\nexport class PlaybackStateEvent extends Event{\r\n playback: boolean = false;\r\n event_number: number = 0;\r\n constructor(state: boolean, event_number: number){\r\n super(\"PlaybackState\");\r\n this.playback = state;\r\n this.event_number = event_number;\r\n }\r\n}\r\n\r\nexport class RecordingStateEvent extends Event{\r\n recording: boolean = false;\r\n event_number: number = 0;\r\n constructor(state: boolean, event_number: number){\r\n super(\"RecordingState\");\r\n this.recording = state;\r\n this.event_number = event_number;\r\n }\r\n}\r\n\r\nexport class RecordingService extends EventTarget{\r\n private first_event_index: number = 0;\r\n public isRecording: boolean = false;\r\n public isPlayingBack: boolean = false;\r\n public recordingActions: RecordingMessage[] = [];\r\n private recordingStartTime: number = 0;\r\n private playbackStartTime: number = 0;\r\n private playbackOffsetTime: number = 0;\r\n private callback_id = null;\r\n\r\n private frameArray: (Blob | ArrayBuffer)[] = null;\r\n private render_frame_number: number = 0;\r\n\r\n public startRecording(){\r\n this.stopPlayback();\r\n this.recordingActions = [];\r\n this.recordingStartTime = Services.FlexibleTimeBaseService.now();\r\n this.isRecording = true;\r\n this.savePositionAndTime();\r\n this.dispatchEvent(new RecordingStateEvent(true, 0));\r\n console.log(\"Started recording\");\r\n }\r\n\r\n private savePositionAndTime(){\r\n let pos = Services.PositionService.getCameraPositionFiltered();\r\n let message: CameraPositionMessage = {\r\n type: \"CameraPosition\",\r\n data: {\r\n position: pos\r\n }\r\n };\r\n this.handleSynchronizationMessage(message);\r\n \r\n let time = Services.TimeService.getCurrentTimeRange();\r\n if(!!time && !!time[0] && !!time[1]){\r\n let message2: TimeRangeMessage = {\r\n type: \"TimeRange\",\r\n data: {\r\n min: time[0],\r\n max: time[1]\r\n }\r\n };\r\n this.handleSynchronizationMessage(message2);\r\n }\r\n }\r\n\r\n public stopRecording(){\r\n if(!this.isRecording) return;\r\n this.savePositionAndTime();\r\n this.isRecording = false;\r\n this.dispatchEvent(new RecordingStateEvent(false, this.recordingActions.length));\r\n console.log(\"Stopped recording after \" , this.recordingActions.length, \" actions\");\r\n }\r\n\r\n public startPlayback(with_frame_capture: boolean = false){\r\n if(this.recordingActions.length == 0) return;\r\n if(with_frame_capture){\r\n this.frameArray = [];\r\n console.log(this.frameArray);\r\n Services.FlexibleTimeBaseService.set_lock_state(true);\r\n Services.TileCacheService.allow_preload = false;\r\n Services.TileCacheService.maximum_loading = 32;\r\n }\r\n this.stopRecording();\r\n this.isPlayingBack = true;\r\n this.first_event_index = 0;\r\n this.playbackStartTime = Services.FlexibleTimeBaseService.now();\r\n this.dispatchEvent(new PlaybackStateEvent(true, this.first_event_index));\r\n let first_time_event = this.recordingActions.find(a => a.message.type = \"TimeRange\");\r\n if(first_time_event){\r\n this.playback_state_helper.time_warp_state = first_time_event.message.data;\r\n this.playback_state_helper.time_warp_target = first_time_event.message.data;\r\n this.playback_state_helper.time_warp_target_time = first_time_event.timeOffset;\r\n this.playback_state_helper.time_warp_start_time = 0;\r\n }\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n }\r\n\r\n private playback_state_helper = {\r\n time_warp_state: null,\r\n time_warp_start_time: null,\r\n time_warp_target: null,\r\n time_warp_target_time: null\r\n };\r\n\r\n private lerp(xmin, xmax, ymin, ymax, x){\r\n let status = (x - xmin) / (xmax - xmin);\r\n return ymin + (status * (ymax - ymin));\r\n }\r\n\r\n public handlePlayback(){\r\n if(!this.isPlayingBack)return;\r\n let tdiff = Services.FlexibleTimeBaseService.now() - this.playbackStartTime;\r\n\r\n //handle non-time events\r\n let last_event_index = this.recordingActions.length;\r\n for(var i = this.first_event_index; i < this.recordingActions.length; i++){\r\n if(this.recordingActions[i].timeOffset > tdiff){\r\n last_event_index = i;\r\n break;\r\n }\r\n }\r\n if(last_event_index > this.first_event_index){\r\n this.dispatchEvent(new PlaybackStateEvent(true, last_event_index));\r\n }\r\n let this_frame_events = this.recordingActions.slice(this.first_event_index, last_event_index).filter((x) => x.message.type != \"TimeRange\");\r\n\r\n this.first_event_index = last_event_index;\r\n let handledMessageTypes = new Set();\r\n for(var i = this_frame_events.length - 1; i >= 0; i--){\r\n if(!handledMessageTypes.has(this_frame_events[i].message.type)){\r\n handledMessageTypes.add(this_frame_events[i].message.type);\r\n this.broadcastSynchronizationMessage(this_frame_events[i].message);\r\n }\r\n }\r\n\r\n //handle time events\r\n let first_time_range = null;\r\n let last_time_range = null;\r\n for(var i = 0; i < this.recordingActions.length; i++){\r\n let x = this.recordingActions[i];\r\n if(x.timeOffset <= tdiff && x.message.type == \"TimeRange\"){\r\n last_time_range = x;\r\n }\r\n if(x.timeOffset > tdiff)break;\r\n }\r\n for(var i = this.recordingActions.length - 1; i >= 0; i--){\r\n let x = this.recordingActions[i];\r\n if(x.timeOffset >= tdiff && x.message.type == \"TimeRange\"){\r\n last_time_range = x;\r\n }\r\n if(x.timeOffset < tdiff)break;\r\n }\r\n if(first_time_range && last_time_range){\r\n let xmin = first_time_range.timeOffset;\r\n let xmax = last_time_range.timeOffset;\r\n this.broadcastSynchronizationMessage({\r\n type: \"TimeRange\",\r\n data: {\r\n min: this.lerp(xmin, xmax, first_time_range.message.data.min, last_time_range.message.data.min, tdiff),\r\n max: this.lerp(xmin, xmax, first_time_range.message.data.max, last_time_range.message.data.max, tdiff)\r\n }\r\n });\r\n } else if(first_time_range){\r\n this.broadcastSynchronizationMessage({\r\n type: \"TimeRange\",\r\n data: {\r\n min: first_time_range.message.data.min,\r\n max: first_time_range.message.data.max\r\n }\r\n });\r\n } else if(last_time_range){\r\n this.broadcastSynchronizationMessage({\r\n type: \"TimeRange\",\r\n data: {\r\n min: last_time_range.message.data.min,\r\n max: last_time_range.message.data.max\r\n }\r\n });\r\n }\r\n\r\n if(this.first_event_index >= this.recordingActions.length){ //Stop playing if we're over the edge\r\n this.isPlayingBack = false;\r\n Services.FlexibleTimeBaseService.set_lock_state(false);\r\n this.saveZipFrames();\r\n this.dispatchEvent(new PlaybackStateEvent(false, this.first_event_index));\r\n }\r\n\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n }\r\n\r\n private saveZipFrames(){\r\n if(this.frameArray){\r\n //Append save script\r\n let scene_name_string = Services.InitializationService.SceneName;\r\n scene_name_string = scene_name_string.replaceAll(/[^a-zA-Z0-9]/ig, \"_\");\r\n let vwidth = Services.RenderService.width;\r\n let vheight = Services.RenderService.height;\r\n if(vwidth % 2)vwidth -= 1;\r\n if(vheight % 2)vheight -= 1;\r\n let encode_string_bash = new TextEncoder().encode(`ffmpeg -r 30 -i %05d.jpeg -c:v libx264 -crf 18 -pix_fmt yuv420p -s ${vwidth | 0}x${vheight | 0} -r 30 ${scene_name_string}.mp4\\n`);\r\n this.frameArray.push(TarBall.gen_header(\"create_mp4_video.sh\", encode_string_bash.byteLength));\r\n this.frameArray.push(encode_string_bash);\r\n if(encode_string_bash.byteLength % 512){\r\n this.frameArray.push(new ArrayBuffer(512 - encode_string_bash.byteLength % 512));\r\n }\r\n let encode_string_cmd = new TextEncoder().encode(`ffmpeg.exe -r 30 -i %%05d.jpeg -c:v libx264 -crf 18 -pix_fmt yuv420p -s ${vwidth | 0 }x${vheight | 0} -r 30 ${scene_name_string}.mp4\\r\\n`)\r\n this.frameArray.push(TarBall.gen_header(\"create_mp4_video.bat\", encode_string_cmd.byteLength));\r\n this.frameArray.push(encode_string_cmd);\r\n if(encode_string_cmd.byteLength % 512){\r\n this.frameArray.push(new ArrayBuffer(512 - encode_string_cmd.byteLength % 512));\r\n }\r\n this.frameArray.push(new ArrayBuffer(512 * 2));\r\n //Save blob\r\n let b = new Blob(this.frameArray);\r\n console.log(`Created blob for ${this.render_frame_number} frames.`);\r\n let a_elem = document.getElementById('downloadlink') as HTMLAnchorElement;\r\n a_elem.setAttribute(\"download\", `${scene_name_string}.tar`);\r\n a_elem.setAttribute(\"href\", URL.createObjectURL(b));\r\n a_elem.click();\r\n }\r\n this.frameArray = null;\r\n this.render_frame_number = 0;\r\n }\r\n\r\n public stopPlayback(){\r\n if(this.callback_id) clearTimeout(this.callback_id);\r\n this.callback_id = null;\r\n if(!this.isPlayingBack) return;\r\n this.isPlayingBack = false;\r\n Services.FlexibleTimeBaseService.set_lock_state(false);\r\n this.saveZipFrames();\r\n this.dispatchEvent(new PlaybackStateEvent(false, this.first_event_index));\r\n }\r\n\r\n public goEndPlayback(){\r\n if(this.recordingActions.length == 0) return;\r\n this.stopPlayback();\r\n this.first_event_index = this.recordingActions.length;\r\n this.isPlayingBack = false;\r\n this.broadcastSynchronizationMessage(this.recordingActions[this.recordingActions.length - 1].message);\r\n this.dispatchEvent(new PlaybackStateEvent(false, this.first_event_index));\r\n }\r\n\r\n public goStartPlayback(){\r\n if(this.recordingActions.length == 0) return;\r\n this.stopPlayback();\r\n this.first_event_index = 0;\r\n this.isPlayingBack = false;\r\n this.broadcastSynchronizationMessage(this.recordingActions[0].message);\r\n this.dispatchEvent(new PlaybackStateEvent(false, 0));\r\n }\r\n\r\n constructor(){\r\n super();\r\n ServiceBarrier.wait().then(() => {\r\n Services.SynchronizationService.addEventListener(\"SynchronizationMessage\", (e: SynchronizationMessageEvent) => {\r\n this.handleSynchronizationMessage(e.message);\r\n });\r\n });\r\n }\r\n\r\n private handleSynchronizationMessage(m: SynchronizationMessage){\r\n if(this.isRecording){\r\n if(this.recordingActions.length == 0){\r\n this.recordingStartTime = Services.FlexibleTimeBaseService.now();\r\n }\r\n let time = Services.FlexibleTimeBaseService.now() - this.recordingStartTime;\r\n this.recordingActions.push(new RecordingMessage(m, time));\r\n this.dispatchEvent(new RecordingStateEvent(true, this.recordingActions.length));\r\n }\r\n }\r\n\r\n public acceptsFrames(): boolean {\r\n return !(this.frameArray === null);\r\n }\r\n\r\n public submitFrameBlob(b: Blob) {\r\n if(!this.frameArray)return;\r\n this.frameArray.push(TarBall.gen_header(FormattingService.leftpad(\"\" + this.render_frame_number , \"0\", 5) + \".jpeg\", b.size));\r\n this.frameArray.push(b);\r\n if(b.size % 512){\r\n this.frameArray.push(new ArrayBuffer(512 - (b.size % 512)));\r\n }\r\n this.render_frame_number += 1;\r\n }\r\n\r\n public broadcastSynchronizationMessage(m: SynchronizationMessage){\r\n Services.SynchronizationService.handleIncomingMessage(m, Services.SettingsService.getValueOrDefault(\"Synchronized\",false)); //just pass it through for the moment\r\n }\r\n\r\n}","import { Services, ServiceBarrier } from \"./Services\";\r\n\r\nexport class FlexibleTimeBaseService{\r\n\r\n private tracked_rt = Date.now();\r\n private internal_time = this.tracked_rt;\r\n\r\n private framerate = 30;\r\n\r\n private locked_framerate = false;\r\n\r\n public constructor() {\r\n }\r\n\r\n count_frame(valid_frame: boolean = true){\r\n let rt_now = Date.now();\r\n\r\n let delta = rt_now - this.tracked_rt;\r\n\r\n this.tracked_rt = rt_now;\r\n\r\n if(this.locked_framerate) {\r\n if(valid_frame){\r\n this.internal_time += 1000/this.framerate;\r\n }\r\n }else{\r\n this.internal_time += delta;\r\n }\r\n }\r\n\r\n set_lock_state(locked: boolean){\r\n this.locked_framerate = locked;\r\n if(this.locked_framerate){\r\n console.log(\"locked\");\r\n } else {\r\n console.log(\"unlocked\");\r\n }\r\n }\r\n\r\n now(): number {\r\n return this.internal_time;\r\n }\r\n\r\n}","import { Parameter } from \"@/modules/Parameter\";\r\nimport { glenv } from \"./RenderService\";\r\nimport { ServiceBarrier, Services } from \"./Services\";\r\n\r\nexport class Frustum{\r\n public name: string;\r\n public fov: {\r\n \"up\": number;\r\n \"left\": number;\r\n \"right\": number;\r\n \"down\": number;\r\n };\r\n public orientation: {\r\n \"yaw\": number,\r\n \"pitch\": number,\r\n \"roll\": number\r\n }\r\n}\r\n\r\ntype ProjectorConfiguration = {\r\n \"id\": string,\r\n \"frustum\": {\r\n \"orientation\": {\r\n \"yaw\": number,\r\n \"pitch\": number,\r\n \"roll\": number\r\n },\r\n \"fov\": {\r\n \"right\": number,\r\n \"left\": number,\r\n \"up\": number,\r\n \"down\": number\r\n }\r\n },\r\n \"warp\": {\r\n \"size\": {\r\n \"width\": number,\r\n \"height\": number,\r\n \"channels\": number\r\n },\r\n \"interpolation\": string\r\n },\r\n \"blend\": {\r\n \"size\": {\r\n \"width\": number,\r\n \"height\": number,\r\n \"channels\": number\r\n },\r\n \"blend_gamma_embedded\": number\r\n }\r\n};\r\n\r\nexport class ProjectorConfigurationService{\r\n private configurations: Map = new Map();\r\n private frusta: Map = new Map();\r\n private selectedId: string;\r\n private blendMask: WebGLTexture;\r\n private warpTexture: WebGLTexture;\r\n private gl: glenv;\r\n\r\n private null_blend: WebGLTexture;\r\n private null_warp: WebGLTexture;\r\n\r\n private rot_orient_str: string = \"PRPPNH\";\r\n\r\n //frusta\r\n\r\n //blends\r\n\r\n //warps\r\n\r\n //ids\r\n\r\n constructor(gl: glenv){\r\n this.gl = gl;\r\n ServiceBarrier.wait().then(() => {\r\n let region_param = new Parameter(\"DisplayRegion\", null, \"select\", true);\r\n Services.SettingsService.initializeSetting(region_param);\r\n });\r\n (async () => {\r\n //1. Load data from server\r\n let configurations: ProjectorConfiguration[] = await fetch(\"projector_configurations\").then(r => r.json());\r\n for(let c of configurations){\r\n this.configurations.set(c.id, c);\r\n let f = new Frustum();\r\n f.name = c.id;\r\n f.fov = c.frustum.fov;\r\n f.orientation = c.frustum.orientation;\r\n this.frusta.set(c.id, f);\r\n }\r\n let display_region_param = Services.SettingsService.getSetting(\"DisplayRegion\");\r\n display_region_param.options = [... this.configurations.keys()];\r\n if(display_region_param.options.indexOf(display_region_param.value) != -1){\r\n this.setSelectedId(display_region_param.value);\r\n }\r\n Services.RenderService.forceDomeModeUpdate();\r\n })();\r\n this.createNullTextures();\r\n }\r\n\r\n public getRotationOrderString(): string {\r\n return this.rot_orient_str;\r\n }\r\n public setRotationOrderString(s: string){\r\n if(!s)return;\r\n this.rot_orient_str = s;\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n }\r\n\r\n createNullTextures(){\r\n let gl = this.gl.gl;\r\n this.null_blend = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, this.null_blend);\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.FLOAT, new Float32Array([1.0, 1.0, 1.0, 1.0]));\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.bindTexture(gl.TEXTURE_2D, null);\r\n\r\n this.null_warp = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, this.null_blend);\r\n this.warpTexture = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, this.warpTexture);\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, 2,2, 0, gl.RGB, gl.FLOAT, new Float32Array([-1,-1,0, 1,-1,0, -1,1,0, 1,1,0]));\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.bindTexture(gl.TEXTURE_2D, null);\r\n }\r\n\r\n setSelectedId(id: string){\r\n if(this.selectedId != id){\r\n this.selectedId = id;\r\n let selectedConfig = this.configurations.get(id);\r\n let gl = this.gl.gl;\r\n (async () => {\r\n let blend_promise;\r\n let warp_promise;\r\n if(selectedConfig.blend){\r\n blend_promise = fetch(`projector_blend_data/${encodeURIComponent(id)}`).then(r => r.arrayBuffer());\r\n }\r\n if(selectedConfig.warp){\r\n warp_promise = fetch(`projector_warp_data/${encodeURIComponent(id)}`).then(r => r.arrayBuffer());\r\n }\r\n \r\n if(selectedConfig.warp){\r\n let warp_buff = await warp_promise;\r\n if(this.warpTexture)gl.deleteTexture(this.warpTexture);\r\n this.warpTexture = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, this.warpTexture);\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, selectedConfig.warp.size.width, selectedConfig.warp.size.height, 0, gl.RGB, gl.FLOAT, new Float32Array(warp_buff));\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.bindTexture(gl.TEXTURE_2D, null);\r\n }else{\r\n if(this.warpTexture)gl.deleteTexture(this.warpTexture);\r\n this.warpTexture = null;\r\n }\r\n \r\n if(selectedConfig.blend){\r\n let blend_buff = await blend_promise;\r\n if(this.blendMask)gl.deleteTexture(this.blendMask);\r\n this.blendMask = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, this.blendMask);\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, selectedConfig.warp.size.width, selectedConfig.warp.size.height, 0, gl.RGBA, gl.FLOAT, new Float32Array(blend_buff));\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.bindTexture(gl.TEXTURE_2D, null);\r\n }else{\r\n if(this.blendMask)gl.deleteTexture(this.blendMask);\r\n this.blendMask = null;\r\n }\r\n\r\n Services.RenderService.forceDomeModeUpdate(); \r\n })();\r\n }\r\n }\r\n\r\n getSelectedId(): string{\r\n return this.selectedId;\r\n }\r\n\r\n getConfigIds(): string[]{\r\n return [...this.configurations.keys()];\r\n }\r\n\r\n getFrustumForId(id: string): Frustum{\r\n return this.frusta.get(id);\r\n }\r\n\r\n getBlendMask(): WebGLTexture{\r\n return this.blendMask || this.null_blend;\r\n }\r\n\r\n getBlendGamma(): number {\r\n return this.configurations.get(this.selectedId)?.blend?.blend_gamma_embedded || 1.0;\r\n }\r\n\r\n getWarpTexture(): WebGLTexture{\r\n return this.warpTexture || this.null_warp;\r\n }\r\n\r\n static genRotationOrders(): string[]{\r\n let base_orders = [\r\n \"RPH\",\r\n \"PRH\",\r\n \"RHP\",\r\n \"HRP\",\r\n \"HPR\",\r\n \"PHR\"\r\n ];\r\n let r = base_orders.flatMap(x => {\r\n return [0, 1, 2, 3, 4, 5, 6, 7].map(y => {\r\n return x.split(\"\").map((z, i) => {\r\n return y & (1 << i) ? \"P\" + z : \"N\" + z;\r\n }).join(\"\");\r\n });\r\n });\r\n console.log(r);\r\n return r;\r\n }\r\n}","import { Services } from \"@/services/Services\";\r\n\r\nexport class ModelObject{\r\n public vertexData: WebGLBuffer;\r\n public normalData: WebGLBuffer;\r\n public uvData: WebGLBuffer;\r\n public texture: WebGLTexture;\r\n public vertexCount: number;\r\n public bbox: {x: {min:number, max:number}, y: {min:number, max:number}, z: {min:number, max:number}};\r\n\r\n constructor(vertexData: Float32Array, normalData: Float32Array, uvData?: Float32Array, texture?: HTMLImageElement){\r\n\r\n let bbox = {\r\n x: {min: vertexData[0], max: vertexData[0]},\r\n y: {min: vertexData[1], max: vertexData[1]},\r\n z: {min: vertexData[2], max: vertexData[2]}, \r\n }\r\n for(var i = 3; i < vertexData.length; i += 3){\r\n bbox.x.min = Math.min(bbox.x.min, vertexData[i]);\r\n bbox.x.max = Math.max(bbox.x.max, vertexData[i]); \r\n bbox.y.min = Math.min(bbox.y.min, vertexData[i + 1]);\r\n bbox.y.max = Math.max(bbox.y.max, vertexData[i + 1]); \r\n bbox.z.min = Math.min(bbox.z.min, vertexData[i + 2]);\r\n bbox.z.max = Math.max(bbox.z.max, vertexData[i + 2]);\r\n }\r\n this.bbox = bbox;\r\n\r\n let gl: WebGLRenderingContext = Services.GLService.getContext().gl;\r\n\r\n this.vertexCount = vertexData.length / 3;\r\n\r\n this.vertexData = gl.createBuffer();\r\n gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexData);\r\n gl.bufferData(gl.ARRAY_BUFFER, vertexData, gl.STATIC_DRAW);\r\n\r\n this.normalData = gl.createBuffer();\r\n gl.bindBuffer(gl.ARRAY_BUFFER, this.normalData);\r\n gl.bufferData(gl.ARRAY_BUFFER, normalData, gl.STATIC_DRAW);\r\n\r\n if(uvData){\r\n this.uvData = gl.createBuffer();\r\n gl.bindBuffer(gl.ARRAY_BUFFER, this.uvData);\r\n gl.bufferData(gl.ARRAY_BUFFER, uvData, gl.STATIC_DRAW);\r\n }\r\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\r\n\r\n if(uvData && texture){\r\n this.texture = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D, this.texture);\r\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n gl.bindTexture(gl.TEXTURE_2D, null); }\r\n \r\n }\r\n\r\n public dispose(){\r\n let gl: WebGLRenderingContext = Services.GLService.getContext().gl;\r\n gl.deleteBuffer(this.vertexData);\r\n gl.deleteBuffer(this.normalData);\r\n if(this.uvData){\r\n gl.deleteBuffer(this.uvData);\r\n }\r\n }\r\n\r\n public static load_from_obj(obj: string, texture: HTMLImageElement): ModelObject{\r\n //only works with triangulated models\r\n let lines = obj.split(\"\\n\");\r\n let vertices: number[][] = [];\r\n let normals: number[][] = [];\r\n let uvs: number[][] = []\r\n \r\n let face_vertex_indices: number[][] = [];\r\n let face_normal_indices: number[][] = [];\r\n let face_uv_indices: number[][] = [];\r\n //Read file line by line and collect data\r\n lines.forEach(line => {\r\n if(line.startsWith(\"v \")){\r\n vertices.push(line.substring(2).split(\" \").map(s => parseFloat(s)));\r\n }else if(line.startsWith(\"vt\")){\r\n let uv = line.substring(3).split(\" \").map(s => parseFloat(s));\r\n if(uv.length == 1){\r\n uv.push(0.5);\r\n }\r\n uvs.push(uv);\r\n }else if(line.startsWith(\"vn\")){\r\n normals.push(line.substring(3).split(\" \").map(s => parseFloat(s)))\r\n }else if(line.startsWith(\"f\")){\r\n let face_points = line.substring(2).split(\" \");\r\n let vertex_indices = [];\r\n let uv_indices = [];\r\n let normal_indices = [];\r\n face_points.forEach(p => {\r\n let [vertexi, uvi, normali] = p.split(\"/\").map(s => parseInt(s));\r\n vertex_indices.push(vertexi);\r\n uv_indices.push(uvi);\r\n normal_indices.push(normali);\r\n })\r\n face_vertex_indices.push(vertex_indices);\r\n face_normal_indices.push(normal_indices);\r\n face_uv_indices.push(uv_indices);\r\n }\r\n });\r\n //Create Float32 Arrays\r\n let vertices_f32 = new Float32Array(face_vertex_indices.length * 3 /*points per face*/ * 3 /*components per point*/);\r\n let vertex_counter = 0;\r\n face_vertex_indices.forEach(vis => {\r\n vis.forEach(v => {\r\n let vertex = vertices[v - 1];\r\n vertices_f32[vertex_counter] = vertex[0];\r\n vertex_counter++;\r\n vertices_f32[vertex_counter] = vertex[1];\r\n vertex_counter++;\r\n vertices_f32[vertex_counter] = vertex[2];\r\n vertex_counter++;\r\n });\r\n });\r\n \r\n let normals_f32 = new Float32Array(face_vertex_indices.length * 3 /*points per face*/ * 3 /*components per point*/);\r\n let normal_counter = 0;\r\n face_normal_indices.forEach(vis => {\r\n vis.forEach(v => {\r\n let vertex = normals[v - 1];\r\n normals_f32[normal_counter] = vertex[0];\r\n normal_counter++;\r\n normals_f32[normal_counter] = vertex[1];\r\n normal_counter++;\r\n normals_f32[normal_counter] = vertex[2];\r\n normal_counter++;\r\n });\r\n });\r\n\r\n let uvs_f32 = null;\r\n\r\n if(uvs.length > 0){\r\n uvs_f32 = new Float32Array(face_uv_indices.length * 3 /*points per face */ * 2 /*uv components per points*/);\r\n let uv_counter = 0;\r\n face_uv_indices.forEach(vis => {\r\n vis.forEach(v => {\r\n let vertex = uvs[v - 1];\r\n uvs_f32[uv_counter] = vertex[0];\r\n uv_counter++;\r\n uvs_f32[uv_counter] = 1 - vertex[1];\r\n uv_counter++;\r\n })\r\n })\r\n }\r\n\r\n return new ModelObject(vertices_f32, normals_f32, uvs_f32, texture);\r\n }\r\n}","import { ModelObject } from \"@/modules/ModelObject\";\r\n\r\nexport class ModelRepositoryService{\r\n models: Map = new Map();\r\n \r\n public async add_from_urls(name: string, mesh_url: string, texture_url: string){\r\n let cube_str = await fetch(mesh_url).then(r => r.text());\r\n let img = new Image();\r\n img.src = texture_url;\r\n await img.decode();\r\n let model = ModelObject.load_from_obj(cube_str, img);\r\n console.log(\"Loaded model with \" + model.vertexCount + \" vertices\", model);\r\n this.models.set(name, model);\r\n }\r\n\r\n public get_model(name: string): ModelObject{\r\n return this.models.get(name);\r\n }\r\n}","import { ColormapFilter } from '@/modules/renderfilters/ColormapFilter';\r\nimport { DomeLightingFilter } from '@/modules/renderfilters/DomeLightingFilter';\r\nimport { HillShadingFilter } from '@/modules/renderfilters/HillShadingFilter';\r\nimport { Filter, LayerFilter } from '@/modules/renderfilters/RenderFilter';\r\nimport { RenderGroup, SerializedRenderGroup } from '@/modules/RenderGroup';\r\nimport { RenderLayer, RenderLayerFactory } from '@/modules/RenderLayer';\r\nimport { UEC } from '@/modules/tile';\r\nimport { Vec2, Vec3 } from '@/modules/vecmat';\r\nimport { SerializedOverlay } from '@/services/OverlayService';\r\nimport { DialogBox, SerializedDialog } from './DialogBoxService';\r\nimport { CameraPosition } from './PositionService';\r\nimport { Services } from './Services';\r\n\r\nconst SERIALIZATION_VERSION = 1.0;\r\n\r\nexport type SceneConfig = {\r\n timerange: [number, number],\r\n selectedLayerName: string,\r\n layers: SerializedRenderLayer[],\r\n groups?: SerializedRenderGroup[],\r\n default_group_id?: number,\r\n selected_group_id?: number,\r\n dialogs: SerializedDialog[],\r\n cameraPosition: CameraPosition,\r\n version?:number\r\n};\r\n\r\nexport type SerializedRenderLayer = {\r\n id: number,\r\n slots: {\"slot\": string, \"path\": string}[],\r\n overlays: SerializedOverlay[],\r\n source_params: {\"parameter\": string, \"value\": any}[],\r\n filters: SerializedRenderFilter[],\r\n composition_parameters: {\"parameter\": string, \"value\": any}[],\r\n info: {\r\n \"visible\": boolean,\r\n \"name\": string,\r\n \"typeHint\": string\r\n };\r\n}\r\n\r\nexport type SerializedRenderFilter = {\r\n name: string,\r\n human_readable_name: string,\r\n parameters: {\"parameter\": string, \"value\": any}[]\r\n}\r\n\r\nexport class SerializationService{\r\n public getSceneString(): string{\r\n return JSON.stringify(this.serializeScene(), null, 4);\r\n }\r\n\r\n public async deserializeScene(scene: SceneConfig){\r\n console.log(\"Deserializing Scene\", scene);\r\n if(!scene.version){\r\n await this.deserializeScene_legacy(scene);\r\n }else if(scene.version == 1.0){\r\n await this.deserializeScene_v1(scene);\r\n }\r\n Services.AdaptivePerformanceService.RequestRerender();\r\n }\r\n\r\n public async deserializeScene_v1(config: SceneConfig){\r\n //Extract layer paths and wait for the sources to become available\r\n let paths = config.layers.flatMap(l => l.slots.map(s => s.path)).filter(s => !!s);\r\n await Services.SourceInfoService.wait_for_layers_to_be_available(paths);\r\n console.log(\"Layers available\");\r\n\r\n //Clear existing layers\r\n let layers = Services.RenderLayerService.getLayers();\r\n for (let l of layers){\r\n Services.RenderLayerService.deleteLayer(l);\r\n }\r\n\r\n //Create the layers from the config\r\n for(var layer of config.layers){\r\n let new_layer = this.deserializeRenderLayer(layer, 1.0);\r\n Services.RenderLayerService.addLayer(new_layer);\r\n //If the layer was previously selected, select it now\r\n if(new_layer.name == config.selectedLayerName){\r\n Services.RenderLayerService.selectLayer(new_layer);\r\n }\r\n if(layer.overlays)for(let o of layer.overlays){\r\n Services.OverlayService.addOverlay(new UEC(o.location[0], o.location[1]), o.location[2], new_layer, o.information);\r\n }\r\n }\r\n if(config.layers?.length > 0){\r\n let max_id = config.layers.map(l => l.id).reduce((a,b) => Math.max(a,b), 0);\r\n Services.UIDService.advanceTopicIdTo(\"layers\", max_id + 1);\r\n }\r\n\r\n if(config.groups){\r\n Services.RenderLayerService.groups = new Map();\r\n for(let serialized_group of config.groups){\r\n let render_group = RenderGroup.deserialize(serialized_group);\r\n Services.RenderLayerService.groups.set(render_group.id, render_group);\r\n }\r\n if(config.default_group_id != null){\r\n let default_group = Services.RenderLayerService.groups.get(config.default_group_id);\r\n Services.RenderLayerService.default_group = default_group;\r\n }\r\n if(config.selected_group_id != null){\r\n let selected_group = Services.RenderLayerService.groups.get(config.selected_group_id);\r\n Services.RenderLayerService.selected_group = selected_group;\r\n }\r\n if(config.groups.length > 0){\r\n let max_id = config.groups.map(g => g.id).reduce((a,b) => Math.max(a,b), 0);\r\n Services.UIDService.advanceTopicIdTo(\"layers\", max_id + 1);\r\n }\r\n }\r\n\r\n if(config.dialogs)\r\n for(var dialog of config.dialogs){\r\n Services.DialogBoxService.insert(dialog.name, DialogBox.fromSerialized(dialog))\r\n }\r\n\r\n //Set the camera position\r\n Services.PositionService.setCameraPosition(config.cameraPosition);\r\n //Set the time range\r\n Services.TimeService.setCurrentTimeRange(config.timerange[0], config.timerange[1]);\r\n }\r\n\r\n private async deserializeScene_legacy(config: SceneConfig){\r\n //Extract layer paths and wait for the sources to become available\r\n let paths = config.layers.flatMap(l => l.slots.map(s => s.path)).filter(s => !!s);\r\n await Services.SourceInfoService.wait_for_layers_to_be_available(paths);\r\n console.log(\"Layers available\");\r\n\r\n //Clear existing layers\r\n let layers = Services.RenderLayerService.getLayers();\r\n for (let l of layers){\r\n Services.RenderLayerService.deleteLayer(l);\r\n }\r\n\r\n //Create the layers from the config\r\n for(var layer of config.layers){\r\n let new_layer = this.deserializeRenderLayerLegacy(layer);\r\n Services.RenderLayerService.addLayer(new_layer);\r\n //If the layer was previously selected, select it now\r\n if(new_layer.name == config.selectedLayerName){\r\n Services.RenderLayerService.selectLayer(new_layer);\r\n }\r\n if(layer.overlays)for(let o of layer.overlays){\r\n Services.OverlayService.addOverlay(new UEC(o.location[0], o.location[1]), o.location[2], new_layer, o.information);\r\n }\r\n }\r\n if(config.layers?.length > 0){\r\n let max_id = config.layers.map(l => l.id).reduce((a,b) => Math.max(a,b), 0);\r\n Services.UIDService.advanceTopicIdTo(\"layers\", max_id + 1);\r\n }\r\n\r\n if(config.groups){\r\n Services.RenderLayerService.groups = new Map();\r\n for(let serialized_group of config.groups){\r\n let render_group = RenderGroup.deserialize(serialized_group);\r\n Services.RenderLayerService.groups.set(render_group.id, render_group);\r\n }\r\n if(config.default_group_id != null){\r\n let default_group = Services.RenderLayerService.groups.get(config.default_group_id);\r\n Services.RenderLayerService.default_group = default_group;\r\n }\r\n if(config.selected_group_id != null){\r\n let selected_group = Services.RenderLayerService.groups.get(config.selected_group_id);\r\n Services.RenderLayerService.selected_group = selected_group;\r\n }\r\n if(config.groups.length > 0){\r\n let max_id = config.groups.map(g => g.id).reduce((a,b) => Math.max(a,b), 0);\r\n Services.UIDService.advanceTopicIdTo(\"layers\", max_id + 1);\r\n }\r\n }\r\n\r\n if(config.dialogs)\r\n for(var dialog of config.dialogs){\r\n Services.DialogBoxService.insert(dialog.name, DialogBox.fromSerialized(dialog))\r\n }\r\n\r\n //Set the camera position\r\n Services.PositionService.setCameraPosition(config.cameraPosition);\r\n //Set the time range\r\n Services.TimeService.setCurrentTimeRange(config.timerange[0], config.timerange[1]);\r\n }\r\n\r\n public serializeScene(): SceneConfig{\r\n return {\r\n cameraPosition: Services.PositionService.getCameraPosition(),\r\n layers: Services.RenderLayerService.getLayers().map(l => this.serializeRenderLayer(l)),\r\n groups: Services.RenderLayerService.getGroups().map(g => g.serialize()),\r\n default_group_id: Services.RenderLayerService.default_group.id,\r\n selected_group_id: Services.RenderLayerService.selected_group.id,\r\n dialogs: Services.DialogBoxService.serialize(),\r\n selectedLayerName: Services.RenderLayerService.selected_layer.name,\r\n timerange: Services.TimeService.getCurrentTimeRange(),\r\n version: SERIALIZATION_VERSION\r\n }\r\n }\r\n\r\n public serializeRenderLayer(layer: RenderLayer): SerializedRenderLayer{\r\n let serialized: any = {}; //TODO better type signature\r\n //0. Store id\r\n serialized.id = layer.id;\r\n //1. Store sources\r\n serialized.slots = [];\r\n for(var s in layer.source.slots){\r\n if(layer.source.slots[s]){\r\n if(layer.source.slots[s].source){\r\n serialized.slots.push({\r\n \"slot\": s,\r\n \"path\": layer.source.slots[s].source.getPath()\r\n });\r\n }else{\r\n serialized.slots.push({\r\n \"slot\": s,\r\n \"path\": null\r\n });\r\n }\r\n \r\n }\r\n }\r\n serialized.overlays = [];\r\n for(let o of Services.OverlayService.overlays){\r\n if(o.layer == layer){\r\n serialized.overlays.push(o.serialize());\r\n }\r\n }\r\n\r\n //2. Store source parameters\r\n serialized.source_params = [];\r\n for(var p in layer.source.parameters){\r\n serialized.source_params.push({\r\n \"parameter\": p,\r\n \"value\": layer.source.parameters[p].value\r\n })\r\n }\r\n //TODO maybe serialize the pipeline here?\r\n //3. store filter pipeline paramters\r\n serialized.filters = [];\r\n for(let f of layer.filterPipeline){\r\n let filter: SerializedRenderFilter = {\r\n name: f.name,\r\n human_readable_name: f.human_readable_name,\r\n parameters: []\r\n };\r\n\r\n for(let p in f.parameters){\r\n let param = f.parameters[p];\r\n filter.parameters.push({\r\n parameter: p,\r\n value: param.value\r\n });\r\n }\r\n serialized.filters.push(filter);\r\n }\r\n //4. store composition filter paramters\r\n serialized.composition_parameters = [];\r\n for(var p in layer.compositionFilter.parameters){\r\n serialized.composition_parameters.push({\r\n \"parameter\": p,\r\n \"value\": layer.compositionFilter.parameters[p].value\r\n });\r\n }\r\n //5. store additional information\r\n serialized.info = {\r\n \"visible\": layer.visible,\r\n \"name\": layer.name,\r\n \"typeHint\": layer.typeHint\r\n };\r\n //6. return serialized result\r\n return serialized;\r\n }\r\n\r\n public deserializeRenderLayer(serialized: SerializedRenderLayer, version = SERIALIZATION_VERSION): RenderLayer{\r\n if(version == null){\r\n return this.deserializeRenderLayerLegacy(serialized);\r\n }else if(version == 1.0){\r\n return this.deserializeRenderLayer_v1(serialized);\r\n }\r\n }\r\n\r\n public deserializeRenderLayer_v1(serialized: SerializedRenderLayer): RenderLayer{\r\n //1. Create layer\r\n let layer: RenderLayer;\r\n switch(serialized.info.typeHint){\r\n case \"ColormapScalar\": \r\n layer = RenderLayerFactory.createColormapScalarLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"data0\")?.path),\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"displacement\")?.path));\r\n break;\r\n case \"ColormapDifference\":\r\n layer = RenderLayerFactory.createColormapDifferenceLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"data0\")?.path),\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"data1\")?.path),\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"displacement\")?.path));\r\n break;\r\n case \"Image\":\r\n layer = RenderLayerFactory.createImageLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"data0\")?.path),\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"displacement\")?.path));\r\n break;\r\n case \"Points\":\r\n console.log(\"Deprecated layer type: Points\");\r\n break;\r\n case \"ScalarPointCloud\":\r\n layer = RenderLayerFactory.createPointCloudLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"points\")?.path),\r\n );\r\n break;\r\n case \"ColorPointCloud\":\r\n layer = RenderLayerFactory.createColorPointCloudLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"points\")?.path),\r\n );\r\n break;\r\n case \"PointsHACK\":\r\n console.log(\"Deprecated layer type: PointsHACK\");\r\n break;\r\n case \"Vec2Points\":\r\n layer = RenderLayerFactory.createVec2PointsLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"points\")?.path)\r\n );\r\n break;\r\n case \"Vec2PointsHack\":\r\n console.log(\"Deprecated layer type: Vec2PointsHack\");\r\n break;\r\n case \"Vector2\":\r\n console.log(\"Deprecated layer type: Vector2\");\r\n break;\r\n case \"Vector2Arrow\":\r\n layer = RenderLayerFactory.createVector2ArrowLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"datau\")?.path),\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"datav\")?.path),\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"displacement\")?.path)\r\n );\r\n break;\r\n case \"Lines\":\r\n layer = RenderLayerFactory.createLinesLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"lines\")?.path)\r\n )\r\n break;\r\n case \"Ocean\":\r\n console.log(\"Deprecated layer type: Ocean\");\r\n break;\r\n case \"Atmosphere\":\r\n console.log(\"Deprecated layer type: Atmosphere\");\r\n break;\r\n case \"PieChartPoints\":\r\n let extra_slis = [];\r\n console.log(serialized);\r\n for(let i = 2; i <= 8; i++){\r\n let source_info = Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"attribute\" + i)?.path);\r\n if(source_info){\r\n extra_slis.push(source_info);\r\n }\r\n }\r\n let attribute1 = Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"attribute1\")?.path);\r\n if(!attribute1){\r\n if(extra_slis.length > 0){\r\n attribute1 = extra_slis.pop();\r\n }\r\n }\r\n console.log(\"Extra slis: \", extra_slis);\r\n layer = RenderLayerFactory.createPieChartPointsLayer(\r\n attribute1,\r\n extra_slis\r\n );\r\n break;\r\n default:\r\n throw \"No layer typeHint registered for \" + serialized.info.typeHint;\r\n }\r\n //2. Set source params\r\n for(let p of serialized.source_params){\r\n layer.source.parameters[p.parameter].value = p.value;\r\n }\r\n\r\n \r\n //3. Set filter pipeline\r\n layer.filterPipeline = [];\r\n for(let f of serialized.filters){\r\n let filter_instance: LayerFilter = null;\r\n if(f.name == \"colormap\"){\r\n filter_instance = new ColormapFilter(layer.source.slots[\"data\"]?.source);\r\n }else if(f.name == \"DomeLighting\"){\r\n filter_instance = new DomeLightingFilter();\r\n }else if(f.name == \"HillShading\"){\r\n filter_instance = new HillShadingFilter();\r\n }else{\r\n console.error(\"Unknown filter: \" + f.name);\r\n }\r\n filter_instance['human_readable_name'] = f.human_readable_name;\r\n\r\n for(let p of f.parameters){\r\n //Hydrate value if necessary\r\n let value = p.value;\r\n let typeClass = filter_instance.parameters[p.parameter].type;\r\n if(typeClass == \"vector3D\"){\r\n value = new Vec3(value.x1, value.x2, value.x3);\r\n }else if (typeClass == \"vector2D\"){\r\n value = new Vec2(value.x1, value.x2);\r\n }\r\n filter_instance.parameters[p.parameter].value = value;\r\n }\r\n\r\n layer.filterPipeline.push(filter_instance);\r\n }\r\n //4. Set composition params\r\n for(let p of serialized.composition_parameters){\r\n layer.compositionFilter.parameters[p.parameter].value = p.value;\r\n }\r\n //5. Set additional info\r\n layer.name = serialized.info.name;\r\n layer.visible = serialized.info.visible;\r\n layer.id = serialized.id;\r\n return layer;\r\n }\r\n\r\n //@ts-ignore\r\n public deserializeRenderLayerLegacy(serialized: any): RenderLayer{\r\n //1. Create layer\r\n let layer: RenderLayer;\r\n switch(serialized.info.typeHint){\r\n case \"ColormapScalar\": \r\n layer = RenderLayerFactory.createColormapScalarLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"data0\")?.path),\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"displacement\")?.path));\r\n break;\r\n case \"ColormapDifference\":\r\n layer = RenderLayerFactory.createColormapDifferenceLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"data0\")?.path),\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"data1\")?.path),\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"displacement\")?.path));\r\n break;\r\n case \"Image\":\r\n layer = RenderLayerFactory.createImageLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"data0\")?.path),\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"displacement\")?.path));\r\n break;\r\n case \"Points\":\r\n console.log(\"Deprecated layer type: Points\");\r\n break;\r\n case \"PointCloud\":\r\n layer = RenderLayerFactory.createPointCloudLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"points\")?.path),\r\n );\r\n break;\r\n case \"PointsHACK\":\r\n console.log(\"Deprecated layer type: PointsHACK\");\r\n break;\r\n case \"Vec2Points\":\r\n layer = RenderLayerFactory.createVec2PointsLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"points\")?.path)\r\n );\r\n break;\r\n case \"Vec2PointsHack\":\r\n console.log(\"Deprecated layer type: Vec2PointsHack\");\r\n break;\r\n case \"Vector2\":\r\n console.log(\"Deprecated layer type: Vector2\");\r\n break;\r\n case \"Vector2Arrow\":\r\n layer = RenderLayerFactory.createVector2ArrowLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"datau\")?.path),\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"datav\")?.path),\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"displacement\")?.path)\r\n );\r\n break;\r\n case \"Lines\":\r\n layer = RenderLayerFactory.createLinesLayer(\r\n Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"lines\")?.path)\r\n )\r\n break;\r\n case \"Ocean\":\r\n console.log(\"Deprecated layer type: Ocean\");\r\n break;\r\n case \"Atmosphere\":\r\n console.log(\"Deprecated layer type: Atmosphere\");\r\n break;\r\n case \"PieChartPoints\":\r\n let extra_slis = [];\r\n console.log(serialized);\r\n for(let i = 2; i <= 8; i++){\r\n let source_info = Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"attribute\" + i)?.path);\r\n if(source_info){\r\n extra_slis.push(source_info);\r\n }\r\n }\r\n let attribute1 = Services.SourceInfoService.get_source_layer_info_by_path(serialized.slots.find(s => s.slot == \"attribute1\")?.path);\r\n if(!attribute1){\r\n if(extra_slis.length > 0){\r\n attribute1 = extra_slis.pop();\r\n }\r\n }\r\n console.log(\"Extra slis: \", extra_slis);\r\n layer = RenderLayerFactory.createPieChartPointsLayer(\r\n attribute1,\r\n extra_slis\r\n );\r\n break;\r\n default:\r\n throw \"No layer typeHint registered for \" + serialized.info.typeHint;\r\n }\r\n //2. Set source params\r\n for(let p of serialized.source_params){\r\n layer.source.parameters[p.parameter].value = p.value;\r\n }\r\n //3. Set filter params\r\n for(let p of serialized.filter_pipeline_params){\r\n //Hydrate value if necessary\r\n let value = p.value;\r\n let typeClass = layer.filterPipeline[parseInt(p.filter)].parameters[p.parameter].type;\r\n if(typeClass == \"vector3D\"){\r\n value = new Vec3(value.x1, value.x2, value.x3);\r\n }else if (typeClass == \"vector2D\"){\r\n value = new Vec2(value.x1, value.x2);\r\n }\r\n layer.filterPipeline[parseInt(p.filter)].parameters[p.parameter].value = value;\r\n }\r\n //4. Set composition params\r\n for(let p of serialized.composition_parameters){\r\n layer.compositionFilter.parameters[p.parameter].value = p.value;\r\n }\r\n //5. Set additional info\r\n layer.name = serialized.info.name;\r\n layer.visible = serialized.info.visible;\r\n layer.id = serialized.id;\r\n return layer;\r\n }\r\n}","import { create } from \"@/d3\";\r\nimport { EARTH_RADIUS } from \"@/modules/rendersources/RenderSource\";\r\nimport { Coord, UEC } from \"@/modules/tile\";\r\nimport { Vec2 } from \"@/modules/vecmat\";\r\nimport { FormattingService } from \"./FormattingService\";\r\nimport { ScreenPosition } from \"./PositionService\";\r\nimport { Services } from \"./Services\";\r\n\r\nconst svgns = \"http://www.w3.org/2000/svg\";\r\n\r\nexport function screen_pos_of_uec_and_height_earth_radii(pos: UEC, height: number): Vec2{\r\n let screen_pos: ScreenPosition = Services.PositionService.UECHeightToScreenPixels(pos, height);\r\n return new Vec2(screen_pos.x, screen_pos.y);\r\n}\r\n\r\nexport function create_svg_line(parent: HTMLElement, stroke: string, strokeWidth: string, id = null){\r\n let element = document.createElementNS(svgns, \"line\");\r\n element.setAttributeNS(null, \"x1\", \"300\");\r\n element.setAttributeNS(null, \"y1\", \"300\");\r\n element.setAttributeNS(null, \"x2\", \"400\");\r\n element.setAttributeNS(null, \"y2\", \"300\");\r\n element.style.stroke = stroke;\r\n element.style.strokeWidth = strokeWidth;\r\n if(id){\r\n element.setAttribute(\"id\", id);\r\n }\r\n parent.appendChild(element);\r\n return element;\r\n}\r\n\r\nexport function create_svg_text(parent: HTMLElement, text: string, stroke: string, id = null, fontsize: string = \"20px\", font: string = \"sans-serif\"){\r\n let element = document.createElementNS(svgns, \"text\");\r\n element.innerHTML = text;\r\n element.setAttributeNS(null, \"x\", \"300\");\r\n element.setAttributeNS(null, \"y\", \"300\");\r\n element.setAttributeNS(null, \"text-anchor\", \"middle\");\r\n element.setAttributeNS(null, \"dominant-baseline\", \"middle\");\r\n element.style.stroke = stroke;\r\n element.style.fill = stroke;\r\n element.style.font = fontsize + \" \" + font;\r\n if(id){\r\n element.setAttribute(\"id\", id);\r\n }\r\n parent.appendChild(element);\r\n return element;\r\n}\r\n\r\nexport function move_svg_line(line: SVGLineElement, start: Vec2, end: Vec2){\r\n line.setAttributeNS(null, \"x1\", start.x1.toString());\r\n line.setAttributeNS(null, \"y1\", start.x2.toString());\r\n line.setAttributeNS(null, \"x2\", end.x1.toString());\r\n line.setAttributeNS(null, \"y2\", end.x2.toString());\r\n}\r\n\r\nexport function move_svg_text(text: SVGTextElement, position: Vec2){\r\n text.setAttributeNS(null, \"x\", position.x1.toString());\r\n text.setAttributeNS(null, \"y\", position.x2.toString());\r\n}\r\n\r\nfunction axis_name_to_descriptor(name: \"x\"|\"y\"|\"z\"): string{\r\n switch(name){\r\n case \"x\": return \"E\";\r\n case \"y\": return \"S\";\r\n case \"z\": return \"Z\";\r\n default: return name;\r\n }\r\n}\r\n\r\nclass Axis{\r\n public center: Vec2;\r\n public end: Vec2;\r\n public breaks: Vec2[] = [];\r\n public orthogonal_unit: Vec2;\r\n public kind: \"x\"|\"y\"|\"z\";\r\n private base_line_elem: SVGLineElement;\r\n private tick_elems: SVGLineElement[] = [];\r\n private end_tick_elem: SVGLineElement;\r\n private name_text: SVGTextElement;\r\n private distance_text: SVGTextElement;\r\n\r\n private current_exponent: number = 1;\r\n\r\n public tick_len = 10;\r\n\r\n constructor(kind: \"x\"|\"y\"|\"z\", parent_svg: HTMLElement, stroke: string){\r\n this.center = new Vec2(0,0);\r\n this.end = this.center.add(new Vec2(10,0));\r\n for(let i = 1; i < 10; i++){\r\n this.breaks.push(this.center.add(new Vec2(i,0)));\r\n }\r\n this.kind = kind;\r\n this.base_line_elem = create_svg_line(parent_svg, stroke, \"3px\", kind + \"_base\");\r\n this.end_tick_elem = create_svg_line(parent_svg, stroke, \"3px\", kind + \"_end\");\r\n for(let i = 1; i < 10; i++){\r\n this.tick_elems.push(create_svg_line(parent_svg, stroke, \"1px\", kind + \"_tick_\" + i));\r\n }\r\n this.name_text = create_svg_text(parent_svg, axis_name_to_descriptor(kind), stroke, kind + \"_name_txt\");\r\n this.distance_text = create_svg_text(parent_svg, \"1m\", stroke, kind + \"_distance_txt\", \"15px\");\r\n }\r\n\r\n private offset_screen_position_by_value_and_exponent(pos: UEC, height: number, value: number, exponent: number): Vec2{\r\n switch(this.kind){\r\n case \"x\":\r\n return screen_pos_of_uec_and_height_earth_radii(pos.move_by_meters(value * Math.pow(10, exponent), 0), height);\r\n case \"y\":\r\n return screen_pos_of_uec_and_height_earth_radii(pos.move_by_meters(0, value * Math.pow(10, exponent)), height);\r\n case \"z\":\r\n return screen_pos_of_uec_and_height_earth_radii(pos, height + ((value * Math.pow(10, exponent))/ EARTH_RADIUS))\r\n }\r\n }\r\n\r\n public recompute(pos: UEC, height: number, exponent: number){\r\n this.center = screen_pos_of_uec_and_height_earth_radii(pos, height);\r\n for(let i = 1; i < 10; i++){\r\n this.breaks[i-1] = this.offset_screen_position_by_value_and_exponent(pos, height,i,exponent);\r\n }\r\n this.end = this.offset_screen_position_by_value_and_exponent(pos, height, 10, exponent);\r\n this.orthogonal_unit = this.end.sub(this.center).norm().orthogonal();\r\n this.current_exponent = exponent;\r\n }\r\n\r\n public end_in_bounds(width: number, height: number, margin: number){\r\n return (\r\n this.end.x1 > margin\r\n && this.end.x1 < (width - margin)\r\n && this.end.x2 > margin\r\n && this.end.x2 < (height - margin)\r\n );\r\n }\r\n\r\n public update_lines(){\r\n move_svg_line(this.base_line_elem, this.center, this.end);\r\n move_svg_line(this.end_tick_elem, this.end.sub(this.orthogonal_unit.mul(this.tick_len / 2)), this.end.add(this.orthogonal_unit.mul(this.tick_len / 2)));\r\n for(let i = 1; i < 10; i++){\r\n move_svg_line(this.tick_elems[i-1], this.breaks[i-1].sub(this.orthogonal_unit.mul(this.tick_len / 2)), this.breaks[i-1].add(this.orthogonal_unit.mul(this.tick_len / 2)));\r\n }\r\n const end_text_distance = 15;\r\n move_svg_text(this.name_text, this.end.add(this.end.sub(this.center).norm().mul(end_text_distance)));\r\n let len = FormattingService.num_to_string_unit_si(10 * Math.pow(10, this.current_exponent), \"m\", 0);\r\n move_svg_text(this.distance_text, this.end.add(this.end.sub(this.center).norm().mul(end_text_distance * 3)));\r\n this.distance_text.innerHTML = len;\r\n\r\n }\r\n\r\n}\r\n\r\nexport class ScaleIndicatorService{\r\n scale_indicator_visible: boolean = false;\r\n\r\n fill_style = \"rgba(255,255,255,0.7)\";\r\n margin = 50;\r\n\r\n svg_element: HTMLElement;\r\n center_circle: SVGCircleElement;\r\n\r\n current_exponent = 1;\r\n x_axis: Axis;\r\n y_axis: Axis;\r\n z_axis: Axis;\r\n\r\n\r\n private are_axis_ends_in_bounds(width: number, height: number, margin: number = 50){\r\n return (\r\n this.x_axis.end_in_bounds(width,height,margin) \r\n && this.y_axis.end_in_bounds(width,height,margin)\r\n && this.z_axis.end_in_bounds(width,height,margin)\r\n );\r\n }\r\n\r\n \r\n\r\n private recompute_ends(center_uec: UEC, center_height: number){\r\n this.x_axis.recompute(center_uec, center_height,this.current_exponent);\r\n this.y_axis.recompute(center_uec, center_height,this.current_exponent);\r\n this.z_axis.recompute(center_uec, center_height,this.current_exponent);\r\n }\r\n\r\n constructor(){\r\n this.svg_element = document.getElementById(\"scale-svg\");\r\n\r\n this.x_axis= new Axis(\"x\", this.svg_element, \"rgba(255,127,127,0.8)\");\r\n this.y_axis = new Axis(\"y\", this.svg_element, \"rgba(127,255,127,0.8)\");\r\n this.z_axis = new Axis(\"z\", this.svg_element, \"rgba(127,127,255,0.8)\");\r\n\r\n this.center_circle = document.createElementNS(svgns, \"circle\");\r\n this.center_circle.setAttributeNS(null, \"cx\", \"300\");\r\n this.center_circle.setAttributeNS(null, \"cy\", \"300\");\r\n this.center_circle.setAttributeNS(null, \"r\", \"5\");\r\n this.center_circle.style.fill = this.fill_style;\r\n this.svg_element.appendChild(this.center_circle);\r\n\r\n let camera_position = Services.PositionService.getCameraPositionFiltered();\r\n let uec_camera_pos = UEC.from_Coord(new Coord(camera_position.Latitude, camera_position.Longitude));\r\n let camera_height = camera_position.VerticalPosition;\r\n this.recompute_ends(uec_camera_pos, camera_height);\r\n\r\n Services.GLService.addEventListener(\"FrameDone\", () => {\r\n if(!this.scale_indicator_visible){\r\n return;\r\n }\r\n //Set the center circle\r\n let frame_bbox = this.svg_element.getBoundingClientRect();\r\n let camera_position = Services.PositionService.getCameraPositionFiltered();\r\n let uec_camera_pos = UEC.from_Coord(new Coord(camera_position.Latitude, camera_position.Longitude));\r\n let camera_height = camera_position.VerticalPosition;\r\n let pixel_pos: ScreenPosition = Services.PositionService.UECHeightToScreenPixels(uec_camera_pos, camera_height);\r\n this.center_circle.setAttributeNS(null, \"cx\", pixel_pos.x.toString());\r\n this.center_circle.setAttributeNS(null, \"cy\", pixel_pos.y.toString());\r\n //Recompute where the ends go\r\n this.recompute_ends(uec_camera_pos, camera_height);\r\n //Try out a new exponent\r\n //shrink to fit\r\n if(!this.are_axis_ends_in_bounds(frame_bbox.width, frame_bbox.height, this.margin)){\r\n this.current_exponent --;\r\n this.recompute_ends(uec_camera_pos, camera_height);\r\n }\r\n //try one bigger!\r\n if(this.current_exponent < 7){\r\n this.current_exponent ++;\r\n this.recompute_ends(uec_camera_pos, camera_height);\r\n if(!this.are_axis_ends_in_bounds(frame_bbox.width, frame_bbox.height, this.margin)){\r\n this.current_exponent --;\r\n this.recompute_ends(uec_camera_pos, camera_height);\r\n }\r\n }\r\n\r\n\r\n //Move axes\r\n this.x_axis.update_lines();\r\n this.y_axis.update_lines();\r\n this.z_axis.update_lines();\r\n\r\n });\r\n }\r\n\r\n set_visibility(visible: boolean){\r\n this.scale_indicator_visible = visible;\r\n if(visible){\r\n this.svg_element.style.opacity=\"1\";\r\n }else{\r\n this.svg_element.style.opacity=\"0\";\r\n }\r\n }\r\n}","import { create } from \"@/d3\";\nimport { EARTH_RADIUS } from \"@/modules/rendersources/RenderSource\";\nimport { Coord, UEC } from \"@/modules/tile\";\nimport { Vec2, Vec3 } from \"@/modules/vecmat\";\nimport { FormattingService } from \"./FormattingService\";\nimport { ScreenPosition } from \"./PositionService\";\nimport { Services } from \"./Services\";\nimport {screen_pos_of_uec_and_height_earth_radii, create_svg_line, create_svg_text, move_svg_line, move_svg_text} from \"./ScaleIndicatorService\"\n\nfunction pos_height_to_geocentric(pos: UEC, height: number): Vec3{\n let coord = Coord.from_UEC(pos);\n let lat = coord.lat / 180.0 * Math.PI;\n let lon = coord.lon / 180.0 * Math.PI;\n let r = height + EARTH_RADIUS;\n return new Vec3(\n r * Math.cos(lat) * Math.cos(lon),\n r * Math.cos(lat) * Math.sin(lon),\n r * Math.sin(lat),\n );\n}\n\nfunction euclidean_distance(pos1: UEC, height1: number, pos2: UEC, height2: number): number{\n let geo_coord1 = pos_height_to_geocentric(pos1, height1);\n let geo_coord2 = pos_height_to_geocentric(pos2, height2);\n return geo_coord1.sub(geo_coord2).abs();\n}\n\nexport class MeasurementService{\n measurement_visible: boolean = false;\n start_uec: UEC;\n end_uec: UEC;\n start_height: number;\n end_height: number;\n start_pixels: Vec2;\n end_pixels: Vec2;\n\n measure_line_black: SVGLineElement;\n measure_line_white: SVGLineElement;\n measure_label: SVGTextElement;\n\n svg_element: HTMLElement;\n center_circle: SVGCircleElement;\n\n constructor(){\n this.svg_element = document.getElementById(\"measure-svg\");\n this.measure_line_black = create_svg_line(this.svg_element, \"rgba(0.0,0.0,0.0,0.8)\", \"6px\", \"measureline_black\");\n this.measure_line_white = create_svg_line(this.svg_element, \"rgba(255,255,255,0.8)\", \"3px\", \"measureline_white\");\n this.measure_line_black.style.strokeLinecap = \"round\";\n this.measure_line_white.style.strokeLinecap = \"round\";\n this.measure_line_white.setAttributeNS(null, \"stroke-dasharray\", \"3,7\");\n this.measure_label = create_svg_text(this.svg_element, \"\", \"rgba(0.0,0.0,0.0,0.8)\", \"measurelabel\");\n this.measure_label.style.fill = \"rgba(255,255,255,1)\";\n this.measure_label.style.fontWeight = \"bold\";\n this.measure_label.style.paintOrder = \"stroke\";\n this.measure_label.setAttributeNS(null, \"stroke-width\", \"4px\");\n this.set_visibility(false);\n Services.GLService.addEventListener(\"FrameDone\", () => {\n if(!this.measurement_visible){\n return;\n }\n if (this.start_uec != null && this.end_uec != null){\n let s = Services.RenderLayerService.getSelectedLayer()?.source;\n if(!s)return;\n \n this.start_pixels = screen_pos_of_uec_and_height_earth_radii(this.start_uec, s.applyScaling(this.start_height));\n this.end_pixels = screen_pos_of_uec_and_height_earth_radii(this.end_uec, s.applyScaling(this.end_height));\n move_svg_line(this.measure_line_black, this.start_pixels, this.end_pixels);\n move_svg_line(this.measure_line_white, this.start_pixels, this.end_pixels);\n let len = FormattingService.num_to_string_unit_si(euclidean_distance(this.start_uec, this.start_height, this.end_uec, this.end_height), \"m\", 3);\n this.measure_label.textContent = len;\n move_svg_text(this.measure_label, this.end_pixels.add(new Vec2(20, 20)));\n //console.log(this.start_pixels, this.end_pixels);\n }\n });\n Services.RenderLayerService.addEventListener(\"SelectedLayerChanged\", () => {\n this.set_visibility(false);\n });\n }\n\n public set_start(){\n this.set_visibility(true);\n this.start_uec = Services.LayerMetadataService.coord;\n this.start_height = Services.LayerMetadataService.z;\n this.set_end()\n }\n\n public set_end(){\n this.end_uec = new UEC(Services.LayerMetadataService.coord.x, Services.LayerMetadataService.coord.y);\n this.end_height = Services.LayerMetadataService.z;\n }\n\n \n\n set_visibility(visible: boolean){\n this.measurement_visible = visible;\n if(visible){\n this.svg_element.style.opacity=\"1\";\n }else{\n this.svg_element.style.opacity=\"0\";\n //this.start_uec = null;\n //this.end_uec = null;\n }\n }\n}","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport { PositionService } from './PositionService';\r\nimport { InitializationService } from './InitializationService';\r\nimport { InteractionService } from './InteractionService';\r\nimport { GLService } from './GLService';\r\nimport { ColormapService } from './ColormapService';\r\nimport { TileCacheService } from './TileCacheService';\r\nimport { TimeService } from './TimeService';\r\nimport { RenderLayerService } from './RenderLayerService';\r\nimport { SourceInfoService } from './SourceInfoService';\r\nimport { OverlayService } from './OverlayService';\r\nimport { DialogBoxService } from './DialogBoxService';\r\nimport { AdaptivePerformanceService } from './AdaptivePerformanceService';\r\nimport { RequiredTilesService } from './RequiredTilesService';\r\nimport { Barrier } from '../modules/barrier';\r\nimport { RenderService } from './RenderService';\r\nimport { UIDService } from './UIDService';\r\nimport { StitchedTilesService } from './StitchedTilesService';\r\nimport { LayerMetaDataService} from './LayerMetadataService';\r\nimport { PointSamplingService } from './PointSamplingService';\r\nimport { ParameterBroadcastService } from './ParameterBroadcastService';\r\nimport { ParticlesService } from './ParticlesService';\r\nimport { CameraService } from './CameraService';\r\nimport { StaticToBlobService } from './StaticToBlobService';\r\nimport {ProgressReportingDownloadService} from './ProgressReportingDownloadService';\r\nimport { PlaybackService } from './PlaybackService';\r\nimport { ExtentVisualizationService } from './ExtentVisualizationService';\r\nimport { SettingsService } from './SettingsService';\r\nimport {TextRenderingService} from './TextRenderingService';\r\nimport { DebugService } from './DebugService';\r\nimport { SynchronizationService } from './SynchronizationService';\r\nimport { RecordingService } from './RecordingService';\r\nimport { FlexibleTimeBaseService } from './FlexibleTimeBaseService';\r\nimport { ProjectorConfigurationService } from './ProjectorConfigurationService';\r\nimport { ModelRepositoryService } from './ModelRepositoryService';\r\nimport { SerializationService } from './SerializationService'; \r\nimport { ScaleIndicatorService} from './ScaleIndicatorService'\r\nimport { MeasurementService } from './MeasurementService';\r\n\r\n//Barrier for primary Service initialization\r\nexport const ServiceBarrier = new Barrier();\r\n//Barrier that shows that webgl context dependent services have been intitialized\r\nexport const GLBarrier = new Barrier();\r\n\r\nclass ServicesClass{\r\n public PositionService: PositionService;\r\n public InitializationService: InitializationService; \r\n public InteractionService: InteractionService;\r\n public GLService: GLService;\r\n public ColormapService: ColormapService;\r\n public TileCacheService: TileCacheService;\r\n public TimeService: TimeService;\r\n public RenderLayerService: RenderLayerService;\r\n public SourceInfoService: SourceInfoService;\r\n public OverlayService: OverlayService;\r\n public DialogBoxService: DialogBoxService;\r\n public RequiredTilesService: RequiredTilesService;\r\n public AdaptivePerformanceService: AdaptivePerformanceService;\r\n public RenderService: RenderService;\r\n public UIDService: UIDService;\r\n public StitchedTilesService: StitchedTilesService;\r\n public LayerMetadataService: LayerMetaDataService;\r\n public PointSamplingService: PointSamplingService;\r\n public ParameterBroadcastService: ParameterBroadcastService;\r\n public ParticlesService: ParticlesService;\r\n public CameraService: CameraService;\r\n public StaticToBlobService: StaticToBlobService;\r\n public ProgressReportingDownloadService: ProgressReportingDownloadService;\r\n public PlaybackService: PlaybackService;\r\n public ExtentVisualizationService: ExtentVisualizationService;\r\n public SettingsService: SettingsService;\r\n public TextRenderingService: TextRenderingService;\r\n public DebugService: DebugService;\r\n public SynchronizationService: SynchronizationService;\r\n public RecordingService: RecordingService;\r\n public FlexibleTimeBaseService: FlexibleTimeBaseService;\r\n public ProjectorConfigurationService: ProjectorConfigurationService;\r\n public ModelRepositoryService: ModelRepositoryService;\r\n public SerializationService: SerializationService;\r\n public ScaleIndicatorService: ScaleIndicatorService;\r\n public MeasurementService: MeasurementService;\r\n\r\n constructor(){\r\n this.UIDService = new UIDService();\r\n this.FlexibleTimeBaseService = new FlexibleTimeBaseService();\r\n this.SettingsService = new SettingsService();\r\n this.ProgressReportingDownloadService = new ProgressReportingDownloadService();\r\n this.ParameterBroadcastService = new ParameterBroadcastService();\r\n this.PositionService = new PositionService(this.FlexibleTimeBaseService);\r\n this.LayerMetadataService = new LayerMetaDataService();\r\n this.InitializationService = new InitializationService(this.PositionService);\r\n this.InteractionService = new InteractionService();\r\n this.TimeService = new TimeService();\r\n this.RenderLayerService = new RenderLayerService();\r\n this.SourceInfoService = new SourceInfoService();\r\n this.OverlayService = new OverlayService();\r\n this.DialogBoxService = new DialogBoxService();\r\n this.RequiredTilesService = new RequiredTilesService();\r\n this.AdaptivePerformanceService = new AdaptivePerformanceService();\r\n this.PointSamplingService = new PointSamplingService();\r\n this.CameraService = new CameraService();\r\n this.StaticToBlobService = new StaticToBlobService();\r\n this.PlaybackService = new PlaybackService();\r\n this.ExtentVisualizationService = new ExtentVisualizationService();\r\n this.TextRenderingService = new TextRenderingService();\r\n this.DebugService = new DebugService();\r\n this.SynchronizationService = new SynchronizationService();\r\n this.RecordingService = new RecordingService();\r\n this.SerializationService = new SerializationService();\r\n ServiceBarrier.resolve();\r\n }\r\n\r\n initGL(gl: WebGLRenderingContext){\r\n this.GLService = new GLService(gl);\r\n this.ColormapService = new ColormapService(this.GLService.GL);\r\n this.TileCacheService = new TileCacheService(this.GLService.GL);\r\n this.RenderService = new RenderService(this.GLService.getContext());\r\n this.StitchedTilesService = new StitchedTilesService(this.GLService.getContext());\r\n this.ParticlesService = new ParticlesService(this.GLService.getContext());\r\n this.ProjectorConfigurationService = new ProjectorConfigurationService(this.GLService.getContext());\r\n this.ModelRepositoryService = new ModelRepositoryService();\r\n this.ScaleIndicatorService = new ScaleIndicatorService();\r\n this.MeasurementService = new MeasurementService();\r\n GLBarrier.resolve();\r\n }\r\n}\r\n\r\nexport const Services = new ServicesClass();\r\n\r\n\r\n","\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./threedee.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./threedee.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./threedee.vue?vue&type=template&id=c731ddbe\"\nimport script from \"./threedee.vue?vue&type=script&lang=ts\"\nexport * from \"./threedee.vue?vue&type=script&lang=ts\"\nimport style0 from \"./threedee.vue?vue&type=style&index=0&id=c731ddbe&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"fadein\",attrs:{\"id\":\"timeslider-card\",\"ondragstart\":\"return false;\"}},[_c('div',{attrs:{\"id\":\"timeslider-container\"},on:{\"mousedown\":_vm.mousedown_evt,\"wheel\":_vm.mousewheel_evt}},[_c('div',{attrs:{\"id\":\"overflow-hider\"}},[_c('div',{style:({left: _vm.container_left * 100 + '%', width: _vm.container_width * 100 + '%'}),attrs:{\"id\":\"timeslider-fullrange-container\"}},_vm._l((_vm.render_layer_ranges),function(lrange){return _c('div',{key:lrange.layer.uid,class:{'layer-timerange-indicator': true, 'layer-timerange-indicator-focussed': _vm.is_active(lrange.layer)},style:({left: _vm.left_from_range(lrange.min) * 100 + '%', width: _vm.width_from_range(lrange.min, lrange.max) * 100 + '%'})})}),0)]),_c('div',{staticClass:\"anchor\",staticStyle:{\"left\":\"30%\"},attrs:{\"id\":\"timeslider-ranged-min-anchor\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.value_min < _vm.value_max),expression:\"value_min < value_max\"}],attrs:{\"id\":\"min-anchor-bar\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:((_vm.value_max - _vm.value_min) > 0.2 * (_vm.overall_range[1] - _vm.overall_range[0])),expression:\"(value_max - value_min) > 0.2 * (overall_range[1] - overall_range[0])\"}],staticClass:\"anchor-label\",attrs:{\"id\":\"min-anchor-label\"}},[_c('div',{staticClass:\"anchor-pointer\"}),_c('div',{staticClass:\"anchor-callout\",attrs:{\"id\":\"min-anchor-callout\"}},[_vm._v(_vm._s(_vm.label_min))])])]),_c('div',{staticClass:\"anchor\",staticStyle:{\"left\":\"40%\"},attrs:{\"id\":\"timeslider-ranged-max-anchor\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.value_max > _vm.value_min),expression:\"value_max > value_min\"}],attrs:{\"id\":\"max-anchor-bar\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:((_vm.value_max - _vm.value_min) > 0.2 * (_vm.overall_range[1] - _vm.overall_range[0])),expression:\"(value_max - value_min) > 0.2 * (overall_range[1] - overall_range[0])\"}],staticClass:\"anchor-label\",attrs:{\"id\":\"max-anchor-label\"}},[_c('div',{staticClass:\"anchor-pointer\"}),_c('div',{staticClass:\"anchor-callout\",attrs:{\"id\":\"max-anchor-callout\"}},[_vm._v(_vm._s(_vm.label_max))])])]),_c('div',{staticClass:\"anchor\",staticStyle:{\"left\":\"40%\"},attrs:{\"id\":\"timeslider-single-anchor\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.value_max == _vm.value_min),expression:\"value_max == value_min\"}],attrs:{\"id\":\"single-anchor-bar\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:((_vm.value_max - _vm.value_min) < 0.2 * (_vm.overall_range[1] - _vm.overall_range[0])),expression:\"(value_max - value_min) < 0.2 * (overall_range[1] - overall_range[0])\"}],staticClass:\"anchor-label\",attrs:{\"id\":\"single-anchor-label\"}},[_c('div',{staticClass:\"anchor-pointer\"}),(_vm.value_max == _vm.value_min)?_c('div',{staticClass:\"anchor-callout\",attrs:{\"id\":\"single-anchor-callout\"}},[_vm._v(_vm._s(_vm.label_min))]):_c('div',{staticClass:\"anchor-callout\",attrs:{\"id\":\"single-anchor-callout\"}},[_vm._v(_vm._s(_vm.label_mid))])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.label_gmin.length > 0),expression:\"label_gmin.length > 0\"}],attrs:{\"id\":\"timeslider-grange-start\"}},[_c('div',{staticClass:\"anchor-callout-grange start\"},[_vm._v(\" \"+_vm._s(_vm.label_gmin)+\" \")]),_c('div',{staticClass:\"grange-callout-pointer-min\"})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.label_gmax.length > 0),expression:\"label_gmax.length > 0\"}],attrs:{\"id\":\"timeslider-grange-end\"}},[_c('div',{staticClass:\"anchor-callout-grange end\"},[_vm._v(\" \"+_vm._s(_vm.label_gmax)+\" \")]),_c('div',{staticClass:\"grange-callout-pointer-max\"})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./timeslider.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./timeslider.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./timeslider.vue?vue&type=template&id=767d5712&scoped=true\"\nimport script from \"./timeslider.vue?vue&type=script&lang=ts\"\nexport * from \"./timeslider.vue?vue&type=script&lang=ts\"\nimport style0 from \"./timeslider.vue?vue&type=style&index=0&id=767d5712&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"767d5712\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"compass-container\"}},[_c('div',{staticClass:\"fadein\",style:({'transform': `rotateX(${_vm.angleX}deg)`}),attrs:{\"id\":\"compass-box\"},on:{\"click\":_vm.compass_click}},[_c('svg',{ref:\"compass\",style:({'transform': `rotate(${_vm.angleZ}deg)`}),attrs:{\"id\":\"compass-needle\",\"width\":\"75px\",\"height\":\"75px\",\"viewBox\":\"-10,-50,20,100\"}},[_c('path',{attrs:{\"id\":\"cneedle\",\"stroke-width\":\"0.5\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",\"d\":\"M -10,0 L 0,-50 L 10,0 L 0,50 Z\"}}),_c('path',{attrs:{\"id\":\"cneedle_point\",\"stroke-width\":\"1\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",\"d\":\"M -10,0 L 0,-50 L 10,0 L 0,-10 Z\"}})])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.valid_coords),expression:\"valid_coords\"}],attrs:{\"id\":\"compass-coords\"}},[_vm._v(_vm._s(_vm.coordstring)),_c('br'),_vm._v(_vm._s(_vm.valuestring)+\" @ \"+_vm._s(_vm.heightstring))]),_c('div',{class:{checked: _vm.rotation_locked},attrs:{\"id\":\"compass-lock\"},on:{\"click\":_vm.toggle_rotation_lock}},[(_vm.rotation_locked)?_c('SvgIcon',{attrs:{\"name\":\"lock\"}}):_c('SvgIcon',{attrs:{\"name\":\"lock-open\"}})],1),_c('div',{class:{checked: _vm.light_locked},attrs:{\"id\":\"light-lock\"},on:{\"click\":_vm.toggle_light_lock}},[_c('SvgIcon',{attrs:{\"name\":\"sun\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"svg-icon-container\"},[_c('svg',{staticClass:\"svg-icon\",attrs:{\"viewBox\":\"0 0 12 12\"}},[_c('use',{attrs:{\"xlink:href\":_vm.bloburl + '#' + _vm.name}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./svgIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./svgIcon.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./svgIcon.vue?vue&type=template&id=760463aa\"\nimport script from \"./svgIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./svgIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./svgIcon.vue?vue&type=style&index=0&id=760463aa&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./compass.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./compass.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./compass.vue?vue&type=template&id=05ac0a6f\"\nimport script from \"./compass.vue?vue&type=script&lang=ts\"\nexport * from \"./compass.vue?vue&type=script&lang=ts\"\nimport style0 from \"./compass.vue?vue&type=style&index=0&id=05ac0a6f&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"overlays\"}},_vm._l((_vm.overlays),function(overlay){return _c('div',{key:overlay.id,staticClass:\"overlay-anchor\",style:({left: _vm.position_from_overlay(overlay).x, top: _vm.position_from_overlay(overlay).y, zIndex: _vm.position_from_overlay(overlay).z})},[_c('div',{staticClass:\"overlay-pointer\"}),_c('div',{staticClass:\"overlay\",on:{\"click\":function($event){return _vm.move_to(overlay)},\"mousedown\":function($event){return _vm.mousedown_evt()},\"mousemove\":function($event){return _vm.mouseenter(overlay)},\"mouseleave\":function($event){return _vm.mouseleave(overlay)}}},[_c('div',{staticClass:\"overlay-title\"},[_vm._v(_vm._s(overlay.layer.name))]),_c(overlay.component,{tag:\"component\",staticClass:\"overlay-val\",attrs:{\"overlay\":overlay}}),_c('div',{staticClass:\"overlay-coords\"},[_vm._v(_vm._s(_vm.coordinates(overlay)))]),_c('div',{staticClass:\"close-button\",on:{\"click\":function($event){$event.stopPropagation();return _vm.remove_overlay(overlay)}}},[_c('SvgIcon',{attrs:{\"name\":\"close\"}})],1)],1)])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',[_vm._v(\" \"+_vm._s(_vm.value)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./scalarOverlay.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./scalarOverlay.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./scalarOverlay.vue?vue&type=template&id=ca28dde2\"\nimport script from \"./scalarOverlay.vue?vue&type=script&lang=ts\"\nexport * from \"./scalarOverlay.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticStyle:{\"user-select\":\"default\"}},[_c('span',{staticClass:\"color-dot\",style:({backgroundColor: _vm.color})}),_vm._v(_vm._s(_vm.value)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./colorOverlay.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./colorOverlay.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./colorOverlay.vue?vue&type=template&id=68bcd118\"\nimport script from \"./colorOverlay.vue?vue&type=script&lang=ts\"\nexport * from \"./colorOverlay.vue?vue&type=script&lang=ts\"\nimport style0 from \"./colorOverlay.vue?vue&type=style&index=0&id=68bcd118&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',[_c('svg',{staticStyle:{\"border\":\"1px solid red\"},attrs:{\"width\":\"200\",\"height\":\"200\",\"viewBox\":\"0 0 1 1\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('polyline',{attrs:{\"stroke\":\"white\",\"stroke-width\":\"0.01\",\"points\":_vm.points}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./turbidityOverlay.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./turbidityOverlay.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./turbidityOverlay.vue?vue&type=template&id=4fa4daac\"\nimport script from \"./turbidityOverlay.vue?vue&type=script&lang=ts\"\nexport * from \"./turbidityOverlay.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"scaleOverlayContainer\"},[_c('span',[_vm._v(\"Size (m):\")]),_vm._v(\" \"),_c('NumberInput',{attrs:{\"min\":0.1,\"decimals\":1,\"unit\":'m'},on:{\"input\":function($event){return _vm.updateScale()}},model:{value:(_vm.scale),callback:function ($$v) {_vm.scale=$$v},expression:\"scale\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"number-input-container\"},[_c('div',{staticClass:\"number-input-slider\",style:({'opacity': _vm.editEnabled ? '0.0' : '1.0'})},[_c('div',{staticClass:\"number-input-progress\",style:({'left': ((_vm.progress - 1) * 100) + '%'})},[_c('div',{staticClass:\"number-input-text-container\",style:({'left': ((1 - _vm.progress) * 100) + '%', 'position': 'relative'})},[_vm._v(\" \"+_vm._s(_vm.raw_value)+\" \")])]),_c('div',{staticClass:\"number-input-text-container\"},[_vm._v(\" \"+_vm._s(_vm.raw_value)+\" \")])]),_c('input',{staticClass:\"number-input-input\",style:({'opacity': _vm.editEnabled ? '1.0' : '0.0'}),domProps:{\"value\":this.$props.value},on:{\"blur\":_vm.editDone,\"keypress\":_vm.checkEnter,\"focus\":_vm.gotFocus}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.editEnabled),expression:\"!editEnabled\"}],staticClass:\"number-input-focus-captor\",on:{\"mousedown\":function($event){$event.stopPropagation();return _vm.mousedown.apply(null, arguments)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.editEnabled),expression:\"!editEnabled\"}],staticClass:\"number-input-button-left\",on:{\"mousedown\":function($event){$event.stopPropagation();return _vm.decrease.apply(null, arguments)}}},[_c('SvgIcon',{attrs:{\"name\":\"left\"}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.editEnabled),expression:\"!editEnabled\"}],staticClass:\"number-input-button-right\",on:{\"mousedown\":function($event){$event.stopPropagation();return _vm.increase.apply(null, arguments)}}},[_c('SvgIcon',{attrs:{\"name\":\"right\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./numberinput.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./numberinput.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./numberinput.vue?vue&type=template&id=653469c9\"\nimport script from \"./numberinput.vue?vue&type=script&lang=ts\"\nexport * from \"./numberinput.vue?vue&type=script&lang=ts\"\nimport style0 from \"./numberinput.vue?vue&type=style&index=0&id=653469c9&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./scaleOverlay.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./scaleOverlay.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./scaleOverlay.vue?vue&type=template&id=5e2c9048&scoped=true\"\nimport script from \"./scaleOverlay.vue?vue&type=script&lang=ts\"\nexport * from \"./scaleOverlay.vue?vue&type=script&lang=ts\"\nimport style0 from \"./scaleOverlay.vue?vue&type=style&index=0&id=5e2c9048&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e2c9048\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./overlays.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./overlays.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./overlays.vue?vue&type=template&id=53f2a634\"\nimport script from \"./overlays.vue?vue&type=script&lang=ts\"\nexport * from \"./overlays.vue?vue&type=script&lang=ts\"\nimport style0 from \"./overlays.vue?vue&type=style&index=0&id=53f2a634&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedLayer && _vm.selectedLayer.filterPipeline.some(x => x.name == 'colormap')),expression:\"selectedLayer && selectedLayer.filterPipeline.some(x => x.name == 'colormap')\"}],attrs:{\"id\":\"box\"}},[_c('div',{style:({background: _vm.getCurrentColormapCss()}),attrs:{\"id\":\"colormap\"}}),_vm._l((_vm.ticks),function(tick){return _c('div',{key:tick.break,staticClass:\"scale-label-anchor\",style:({\"transform\": `translateY(calc(-30vh * ${tick.break}))`})},[_c('div',{staticClass:\"scale-label-pointer\"}),_c('div',{staticClass:\"scale-label\"},[_c('span',[_vm._v(_vm._s(tick.label))])])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./scale.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./scale.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./scale.vue?vue&type=template&id=1e57ebea\"\nimport script from \"./scale.vue?vue&type=script&lang=ts\"\nexport * from \"./scale.vue?vue&type=script&lang=ts\"\nimport style0 from \"./scale.vue?vue&type=style&index=0&id=1e57ebea&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{style:({opacity: (_vm.loading ? '1.0' : '0.0')}),attrs:{\"id\":\"loading-indicator-box\"}},[_c('div',{staticClass:\"text-container\"},[_vm._v(\" \"+_vm._s(_vm.label_text)+\" \")]),_c('div',{style:({width: (100 * _vm.ratio[0] / _vm.ratio[1]) + '%'}),attrs:{\"id\":\"loading-indicator-bar\"}},[_c('div',{staticClass:\"text-container\"},[_vm._v(\" \"+_vm._s(_vm.label_text)+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./loadingindicator.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./loadingindicator.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./loadingindicator.vue?vue&type=template&id=3f562394&scoped=true\"\nimport script from \"./loadingindicator.vue?vue&type=script&lang=ts\"\nexport * from \"./loadingindicator.vue?vue&type=script&lang=ts\"\nimport style0 from \"./loadingindicator.vue?vue&type=style&index=0&id=3f562394&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3f562394\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"menubar\",on:{\"mousedown\":_vm.register_mousedown}},[_c('div',{staticClass:\"button-group\"},[_c('div',{staticClass:\"button symbol continue\",attrs:{\"title\":\"Save Scene\"},on:{\"click\":_vm.showSaveMenu}},[_c('SvgIcon',{attrs:{\"name\":\"save\"}})],1),_c('div',{staticClass:\"button symbol continue\",attrs:{\"title\":\"Settings\"},on:{\"click\":_vm.showSettings}},[_c('SvgIcon',{attrs:{\"name\":\"gear\"}})],1),_c('div',{staticClass:\"button symbol continue\",attrs:{\"title\":\"Playback\"},on:{\"click\":_vm.showPlayback}},[_c('SvgIcon',{attrs:{\"name\":\"playpause\"}})],1)]),_c('div',{staticClass:\"button-group\"},[_c('div',{staticClass:\"button symbol continue\",attrs:{\"title\":\"Move Camera\",\"is-selected\":_vm.interactionStateMove},on:{\"click\":_vm.modeMove}},[_c('SvgIcon',{attrs:{\"name\":\"movement\"}})],1),_c('div',{staticClass:\"button symbol continue\",attrs:{\"title\":\"Place Pins...\",\"is-selected\":_vm.interactionStateOverlay},on:{\"click\":_vm.modePin}},[_c('SvgIcon',{attrs:{\"name\":\"marker\"}})],1),_c('div',{staticClass:\"button symbol continue\",attrs:{\"title\":\"Measure Distances...\",\"is-selected\":_vm.interactionStateMeasure},on:{\"click\":_vm.modeMeasure}},[_c('SvgIcon',{attrs:{\"name\":\"distance\"}})],1)]),_c('div',{staticClass:\"button-group\"},[_c('div',{staticClass:\"button symbol continue\",attrs:{\"title\":\"Toggle Scale Indicator Visibility...\",\"is-selected\":_vm.is_scale_indicator_visible},on:{\"click\":_vm.toggleScaleIndicatorVisibility}},[_c('SvgIcon',{attrs:{\"name\":\"grid\"}})],1)]),_c('div',{staticClass:\"button-group\"},[_c('div',{staticClass:\"button symbol continue\",attrs:{\"title\":\"Layer Configuration...\"},on:{\"click\":_vm.layerSettings}},[_c('SvgIcon',{attrs:{\"name\":\"layer-sliders\"}})],1)]),_c('div',{staticClass:\"button-group\"},[_c('div',{staticClass:\"button symbol continue\",attrs:{\"title\":\"User Manual...\"},on:{\"click\":_vm.showManual}},[_c('SvgIcon',{attrs:{\"name\":\"book-help\"}})],1)]),_c('div',{staticClass:\"button-group\"},[_c('div',{staticClass:\"button symbol continue\",attrs:{\"title\":\"Program Status Information\"},on:{\"click\":_vm.showProgramStatus}},[_c('SvgIcon',{attrs:{\"name\":\"graph\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./menucomponent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./menucomponent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./menucomponent.vue?vue&type=template&id=6352a1c6&scoped=true\"\nimport script from \"./menucomponent.vue?vue&type=script&lang=ts\"\nexport * from \"./menucomponent.vue?vue&type=script&lang=ts\"\nimport style0 from \"./menucomponent.vue?vue&type=style&index=0&id=6352a1c6&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6352a1c6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"dialog-host\"},_vm._l((_vm.dialogBoxes),function([id, dbox]){return _c('DialogBoxComponent',{key:id,attrs:{\"box_id\":id,\"dbox\":dbox}},[_c(dbox.containedComponent,{tag:\"component\",attrs:{\"data\":dbox.data}})],1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"settings-grid\"}},[_c('fold-group',{attrs:{\"name\":\"Display Settings\",\"expanded\":true}},[_c('div',{staticClass:\"settings-grid\"},[_c('span',{attrs:{\"title\":\"Pixels rendered per pixel displayed\"}},[_vm._v(\"Render Resolution\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.ScalingFactor),expression:\"ScalingFactor\"}],attrs:{\"title\":\"Pixels rendered per pixel displayed\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.ScalingFactor=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.scalingFactorChanged]}},[_c('option',{attrs:{\"value\":\"2.0\"}},[_vm._v(\"200%\")]),_c('option',{attrs:{\"value\":\"1.5\"}},[_vm._v(\"150%\")]),_c('option',{attrs:{\"selected\":\"selected\",\"value\":\"1\"}},[_vm._v(\"100%\")]),_c('option',{attrs:{\"value\":\"0.75\"}},[_vm._v(\"75%\")]),_c('option',{attrs:{\"value\":\"0.66\"}},[_vm._v(\"66%\")]),_c('option',{attrs:{\"value\":\"0.5\"}},[_vm._v(\"50%\")]),_c('option',{attrs:{\"value\":\"0.33\"}},[_vm._v(\"33%\")]),_c('option',{attrs:{\"value\":\"0.25\"}},[_vm._v(\"25%\")])]),_c('span',{attrs:{\"title\":\"Data samples to load per pixel\"}},[_vm._v(\"Data Resolution\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.TargetTileCount),expression:\"TargetTileCount\"}],attrs:{\"title\":\"Data samples to load per pixel\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.TargetTileCount=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.targetTileCountChanged]}},[_c('option',{attrs:{\"value\":\"32\"}},[_vm._v(\"400%\")]),_c('option',{attrs:{\"value\":\"16\"}},[_vm._v(\"200%\")]),_c('option',{attrs:{\"selected\":\"selected\",\"value\":\"8\"}},[_vm._v(\"100%\")]),_c('option',{attrs:{\"value\":\"4\"}},[_vm._v(\"50%\")]),_c('option',{attrs:{\"value\":\"2\"}},[_vm._v(\"25%\")]),_c('option',{attrs:{\"value\":\"1\"}},[_vm._v(\"12%\")])]),_c('span',{attrs:{\"title\":\"Redraw even when nothing has changed\"}},[_vm._v(\"Always Rerender\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.AlwaysRerender),expression:\"AlwaysRerender\"}],attrs:{\"type\":\"checkbox\",\"title\":\"Redraw even when nothing has changed\"},domProps:{\"checked\":Array.isArray(_vm.AlwaysRerender)?_vm._i(_vm.AlwaysRerender,null)>-1:(_vm.AlwaysRerender)},on:{\"change\":[function($event){var $$a=_vm.AlwaysRerender,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.AlwaysRerender=$$a.concat([$$v]))}else{$$i>-1&&(_vm.AlwaysRerender=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.AlwaysRerender=$$c}},_vm.setAlwaysRerender]}}),_c('span',{attrs:{\"title\":\"Background color for the 3D area\"}},[_vm._v(\"Background color\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.ClearColor),expression:\"ClearColor\"}],attrs:{\"type\":\"color\",\"title\":\"Background color for the 3D area\"},domProps:{\"value\":(_vm.ClearColor)},on:{\"change\":_vm.setClearColor,\"input\":function($event){if($event.target.composing)return;_vm.ClearColor=$event.target.value}}}),_c('div',{staticClass:\"button\",on:{\"click\":_vm.hideUI}},[_vm._v(\"Hide All UI\")]),_c('span',[_vm._v(\"Press H to show it again.\")])])]),_c('br'),_c('fold-group',{attrs:{\"name\":\"Application Settings\"}},[_c('div',{staticClass:\"settings-grid\"},[_c('span',{attrs:{\"title\":\"Slow down playback if data is still loading\"}},[_vm._v(\"Wait For Data During Playback\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.WaitForLoad),expression:\"WaitForLoad\"}],attrs:{\"type\":\"checkbox\",\"title\":\"Slow down playback if data is still loading\"},domProps:{\"checked\":Array.isArray(_vm.WaitForLoad)?_vm._i(_vm.WaitForLoad,null)>-1:(_vm.WaitForLoad)},on:{\"change\":[function($event){var $$a=_vm.WaitForLoad,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.WaitForLoad=$$a.concat([$$v]))}else{$$i>-1&&(_vm.WaitForLoad=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.WaitForLoad=$$c}},_vm.setWaitForLoad]}}),_c('span',{attrs:{\"title\":\"Font size for menus and buttons\"}},[_vm._v(\"Font size\")]),_c('div',[_c('button',{on:{\"click\":function($event){_vm.FontSize--; _vm.fontSizeChanged();}}},[_vm._v(\"-\")]),_vm._v(\" \"+_vm._s(_vm.FontSize)+\" \"),_c('button',{on:{\"click\":function($event){_vm.FontSize++; _vm.fontSizeChanged();}}},[_vm._v(\"+\")])]),_c('button',{attrs:{\"title\":\"Reset saved user settings\"},on:{\"click\":_vm.clearSettings}},[_vm._v(\"Clear Settings\")]),_c('button',{attrs:{\"title\":\"Clear cached data\"},on:{\"click\":_vm.clearCache}},[_vm._v(\"Clear Cache\")]),_c('span',{attrs:{\"title\":\"Select Gamepad for control of the viewer\"}},[_vm._v(\"Controller\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.SelectedGamepad),expression:\"SelectedGamepad\"}],attrs:{\"title\":\"Select Gamepad for control of the viewer\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.SelectedGamepad=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.selectGamepad]}},[_c('option',{domProps:{\"value\":null}},[_vm._v(\"(no gamepad)\")]),_vm._l((_vm.Gamepads),function(gamepad,index){return _c('option',{key:gamepad.id,domProps:{\"value\":gamepad}},[_vm._v(_vm._s(\"Controller \" + index + \" (\" + gamepad.id + \")\"))])})],2)])]),_c('br'),_c('fold-group',{attrs:{\"name\":\"Special Dome Settings\"}},[_c('div',{staticClass:\"settings-grid\"},[_c('span',{attrs:{\"title\":\"Uncheck to hide all UI elements\"}},[_vm._v(\"UI Visible\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.UIVisible),expression:\"UIVisible\"}],attrs:{\"type\":\"checkbox\",\"title\":\"Uncheck to hide all UI elements\"},domProps:{\"checked\":Array.isArray(_vm.UIVisible)?_vm._i(_vm.UIVisible,null)>-1:(_vm.UIVisible)},on:{\"change\":[function($event){var $$a=_vm.UIVisible,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.UIVisible=$$a.concat([$$v]))}else{$$i>-1&&(_vm.UIVisible=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.UIVisible=$$c}},_vm.setUIVisible]}}),_c('span',{attrs:{\"title\":\"Projection mode to use\"}},[_vm._v(\"Projection Mode\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.DomeMode),expression:\"DomeMode\"}],attrs:{\"title\":\"Projection mode to use\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.DomeMode=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.selectDomeMode]}},[_c('option',{attrs:{\"value\":\"normal\"}},[_vm._v(\"Regular\")]),_c('option',{attrs:{\"value\":\"domemaster\"}},[_vm._v(\"Fisheye Equidistant (Dome Master)\")]),_c('option',{attrs:{\"selected\":\"selected\",\"value\":\"normal_red_blue\"}},[_vm._v(\"Stereo Anaglyph (R/B)\")]),(_vm.DisplayIds.length > 0)?_c('option',{attrs:{\"value\":\"single_projector\"}},[_vm._v(\"Offset Projector\")]):_vm._e()]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.DomeMode == 'single_projector'),expression:\"DomeMode == 'single_projector'\"}],attrs:{\"title\":\"Display Region\"}},[_vm._v(\"Display Region\")]),_c('select',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.DomeMode == 'single_projector'),expression:\"DomeMode == 'single_projector'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.DisplayRegion),expression:\"DisplayRegion\"}],attrs:{\"title\":\"Display region to use for this projector\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.DisplayRegion=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.selectDisplayRegion]}},_vm._l((_vm.DisplayIds),function(id){return _c('option',{key:id,domProps:{\"value\":id}},[_vm._v(_vm._s(id))])}),0),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.DomeMode == 'single_projector'),expression:\"DomeMode == 'single_projector'\"}],attrs:{\"title\":\"Rotation Axis Order in Projector Configuration\"}},[_vm._v(\"Rotation Order\")]),_c('select',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.DomeMode == 'single_projector'),expression:\"DomeMode == 'single_projector'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.AxisOrder),expression:\"AxisOrder\"}],on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.AxisOrder=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.selectAxisOrder]}},_vm._l((_vm.AxisOrders),function(id){return _c('option',{key:id,domProps:{\"value\":id}},[_vm._v(_vm._s(_vm.AxisOrderHumanReadable(id)))])}),0),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.DomeMode == 'single_projector' || _vm.DomeMode =='domemaster'),expression:\"DomeMode == 'single_projector' || DomeMode =='domemaster'\"}],attrs:{\"title\":\"Dome Tilt Angle\"}},[_vm._v(\"Tilt Angle\")]),_c('NumberInput',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.DomeMode == 'single_projector' || _vm.DomeMode =='domemaster'),expression:\"DomeMode == 'single_projector' || DomeMode =='domemaster'\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"min\":0,\"max\":360,\"decimals\":1,\"step\":5,\"unit\":\"°\"},on:{\"change\":_vm.setDomeTilt},model:{value:(_vm.DomeTilt),callback:function ($$v) {_vm.DomeTilt=$$v},expression:\"DomeTilt\"}}),_c('span',{attrs:{\"title\":\"Synchronize state with other viewers on the same link\"}},[_vm._v(\"Synchronize\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.Synchronized),expression:\"Synchronized\"}],attrs:{\"type\":\"checkbox\",\"title\":\"Synchronize state with other viewers on the same link\"},domProps:{\"checked\":Array.isArray(_vm.Synchronized)?_vm._i(_vm.Synchronized,null)>-1:(_vm.Synchronized)},on:{\"change\":[function($event){var $$a=_vm.Synchronized,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.Synchronized=$$a.concat([$$v]))}else{$$i>-1&&(_vm.Synchronized=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.Synchronized=$$c}},_vm.setSynchronized]}}),_c('button',{on:{\"click\":_vm.syncScene}},[_vm._v(\"Sync scene\")])],1)]),_c('br'),_c('fold-group',{attrs:{\"name\":\"Version Information\"}},[_c('div',{staticClass:\"settings-grid\"},[_vm._l((_vm.Versions),function(version){return [_c('span',{key:version.attribute,staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(version.attribute))]),_c('span',{key:version.version,staticStyle:{\"max-width\":\"10em\",\"overflow\":\"hidden\",\"overflow-x\":\"scroll\",\"whitespace\":\"nowrap\",\"font-family\":\"monospace\",\"font-size\":\"80%\"},attrs:{\"contenteditable\":\"contenteditable\"}},[_vm._v(_vm._s(version.version))])]})],2)]),_c('span',{staticStyle:{\"color\":\"#ff0000\"},attrs:{\"title\":\"Something went wrong. Maybe send this error message to digitalearthviewer@geomar.de?\"}},[_vm._v(_vm._s(_vm.SceneError))])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"foldgroup-container\"},[_c('div',{staticClass:\"foldgroup-header\",attrs:{\"foldedOut\":_vm.foldedOut},on:{\"click\":_vm.toggleFold}},[_c('SvgIcon',{staticClass:\"foldgroup-icon\",attrs:{\"name\":_vm.foldedOut?'down':'right'}}),_c('span',{staticClass:\"foldgroup-title\"},[_vm._v(_vm._s(_vm.name))])],1),_c('div',{staticClass:\"foldgroup-content\",style:({display: _vm.foldedOut? 'block' : 'none'})},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./foldGroup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./foldGroup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./foldGroup.vue?vue&type=template&id=0e08bee9\"\nimport script from \"./foldGroup.vue?vue&type=script&lang=ts\"\nexport * from \"./foldGroup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./foldGroup.vue?vue&type=style&index=0&id=0e08bee9&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./settingscomponent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./settingscomponent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./settingscomponent.vue?vue&type=template&id=4ff62563\"\nimport script from \"./settingscomponent.vue?vue&type=script&lang=ts\"\nexport * from \"./settingscomponent.vue?vue&type=script&lang=ts\"\nimport style0 from \"./settingscomponent.vue?vue&type=style&index=0&id=4ff62563&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"about-container\"},on:{\"click\":function($event){$event.stopPropagation();}}},[_c('h1',{staticStyle:{\"margin-top\":\"0\"}},[_vm._v(\"Digital Earth Viewer\")]),_vm._m(0),_vm._m(1),_vm._m(2),_c('ScrollBox',{staticStyle:{\"max-height\":\"80%\"}},[_c('div',{staticClass:\"tnc\"},[_c('h1',[_vm._v(\"Terms of Use\")]),_c('em',[_vm._v(\"Last updated: February 4, 2021\")]),_c('br'),_c('strong',{staticStyle:{\"font-size\":\"110%\"}},[_vm._v(\"These Terms of Use (\\\"Terms\\\") apply to your use of the Digital Earth Viewer. Please read them carefully and let us know if you have any questions.\"),_c('br'),_vm._v(\" By using the Digital Earth Viewer, you agree to be bound by these Terms. If you are using the Digital Earth Viewer on behalf of an organization, you agree to these Terms on behalf of that organization. \")]),_c('h2',[_vm._v(\"Content\")]),_c('p',[_vm._v(\" Content such as model- or observation data in the Digital Earth Viewer is protected by intellectual property laws. \")]),_c('h3',[_vm._v(\"The Digital Earth Viewer Software\")]),_c('p',[_vm._v(\" The Digital Earth Viewer software is protected by copyright and other laws. GEOMAR gives you a personal, worldwide, royalty-free, non-assignable and non-exclusive license to use the software we provide you to use our service. This license is for the sole purpose of enabling you to use the Digital Earth Viewer as permitted by these Terms. If you violate these Terms, we may terminate this license. The source code of the Digital Earth Viewer software is licensed under \"),_c('a',{attrs:{\"href\":\"https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\"}},[_vm._v(\"EUPL v1.2\")]),_vm._v(\" and is accessible at \"),_c('a',{attrs:{\"href\":\"https://git.geomar.de/digital-earth/digital-earth-viewer\"}},[_vm._v(\"https://git.geomar.de/digital-earth/digital-earth-viewer\")])]),_c('h2',[_vm._v(\" Prohibited Activities \")]),_c('p',[_vm._v(\" We require you to respect these limitations, and we may restrict your access to the Digital Earth Viewer if you do not follow them. \")]),_c('ul',[_c('li',[_vm._v(\" Do not use the Digital Earth Viewer in a manner that violates any laws, regulations, ordinances, or directives. \")]),_c('li',[_vm._v(\" Do not use the Digital Earth Viewer contrary to our policies. \")]),_c('li',[_vm._v(\" Do not use the Digital Earth Viewer to do anything threatening, abusive, harassing, defamatory, tortious, or invasive of another person's privacy. \")]),_c('li',[_vm._v(\" Do not interfere with the proper functioning of any software, hardware, or equipment of the Digital Earth Viewer. \")]),_c('li',[_vm._v(\" Do not engage in any conduct that inhibits anyone else's use of our services, or which we determine may harm the Digital Earth Viewer, GEOMAR or our users. \")]),_c('li',[_vm._v(\" Do not monitor or copy any material on the Digital Earth Viewer, either manually or through automated means (i.e. scraping), without prior written consent. \")])]),_c('h2',[_vm._v(\" Our Rights \")]),_c('p',[_vm._v(\" We are always working to improve the Digital Earth Viewer and make our services better, so we do reserve some rights. In our sole discretion, we may, at any time — with or without notice — change, eliminate or restrict access to our services. GEOMAR is not liable for any damages as a result of these actions. \")]),_c('h2',[_vm._v(\" Other Sites and Services \")]),_c('p',[_vm._v(\" The Digital Earth Viewer contains links to websites and services that we neither own nor control. GEOMAR does not endorse or assume responsibility for any third-party sites, information, materials, products, or services. \")]),_c('h2',[_vm._v(\" Privacy \")]),_c('p',[_vm._v(\" Please refer to \"),_c('a',{attrs:{\"href\":\"https://www.geomar.de/datenschutz\"}},[_vm._v(\"GEOMAR's Privacy Policy\")]),_vm._v(\". \")]),_c('h2',[_vm._v(\" Disclaimers \")]),_c('p',[_vm._v(\" The Digital Earth Viewer is provided \\\"as is\\\" without any warranties, expressed or implied. \")]),_c('h2',[_vm._v(\" Limitation of Liability \")]),_c('p',[_vm._v(\" To the fullest extent allowed by law, GEOMAR shall not be liable for any indirect, incidental, special, consequential, or punitive damages, or any loss of profits or revenues, whether incurred directly or indirectly, or any loss of data, use, goodwill, or other intangible losses resulting from \"),_c('ol',[_c('li',[_vm._v(\" your access to, use of, inability to access, or inability to use the Digital Earth Viewer; \")]),_c('li',[_vm._v(\" any third party conduct or content on the Digital Earth Viewer, including any defamatory, offensive, or illegal conduct of third parties; \")]),_c('li',[_vm._v(\" any unauthorized access, use, or alteration of your content. \")])])]),_c('h2',[_vm._v(\" Modification \")]),_c('p',[_vm._v(\" The Terms may be modified from time to time. The date of the most recent revisions will always be shown on this page. If we make changes that we believe will substantially alter your rights, we will notify you. You will agree to accept any changes or revisions to the Terms by continuing to use the Digital Earth Viewer. \")]),_c('h2',[_vm._v(\" Contact \")]),_c('p',[_vm._v(\" We welcome all questions, concerns, and feedback you might have about these terms. If you have suggestions for us, let us know at \"),_c('a',{attrs:{\"href\":\"mailto:digitalearthviewer@geomar.de\"}},[_vm._v(\"digitalearthviewer@geomar.de\")]),_vm._v(\". \")])])]),_c('div',{staticStyle:{\"text-align\":\"right\"}},[_c('button',{staticStyle:{\"width\":\"10em\",\"margin-bottom\":\"1em\",\"font-weight\":\"bold\"},attrs:{\"id\":\"acceptbutton\"},on:{\"click\":function($event){return _vm.hide()}}},[_vm._v(\"Accept\")])]),_c('br')],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_vm._v(\" The \"),_c('a',{attrs:{\"href\":\"https://git.geomar.de/digital-earth/digital-earth-viewer\"}},[_vm._v(\"Digital Earth Viewer\")]),_vm._v(\" is a project to develop a modern geospatial data viewer as part of the \"),_c('a',{attrs:{\"href\":\"https://www.digitalearth-hgf.de\"}},[_vm._v(\"Digital Earth\")]),_vm._v(\" initiative. \")])\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('b',[_vm._v(\"Project Lead: \")]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://www.geomar.de/en/jgreinert\"}},[_vm._v(\"Prof. Dr. Jens Greinert\")]),_c('br'),_c('b',[_vm._v(\"Developers:\")]),_c('a',{attrs:{\"href\":\"https://www.geomar.de/vbuck\"}},[_vm._v(\"Valentin Buck\")]),_vm._v(\", \"),_c('a',{attrs:{\"href\":\"https://www.geomar.de/fstaebler\"}},[_vm._v(\"Flemming Stäbler\")]),_vm._v(\", \"),_c('a',{attrs:{\"href\":\"https://www.geomar.de/egonzalez\"}},[_vm._v(\"Everardo González\")])])\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('b',[_vm._v(\"Contact\")]),_vm._v(\": \"),_c('a',{attrs:{\"href\":\"mailto:digitalearthviewer@geomar.de\"}},[_vm._v(\"digitalearthviewer@geomar.de\")])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"scrollbox-outer\"},[_c('div',{staticClass:\"scrollbox-inner\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./scrollbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./scrollbox.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./scrollbox.vue?vue&type=template&id=1aebe046\"\nimport script from \"./scrollbox.vue?vue&type=script&lang=ts\"\nexport * from \"./scrollbox.vue?vue&type=script&lang=ts\"\nimport style0 from \"./scrollbox.vue?vue&type=style&index=0&id=1aebe046&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./aboutdialogue.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./aboutdialogue.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./aboutdialogue.vue?vue&type=template&id=78db97bf&scoped=true\"\nimport script from \"./aboutdialogue.vue?vue&type=script&lang=ts\"\nexport * from \"./aboutdialogue.vue?vue&type=script&lang=ts\"\nimport style0 from \"./aboutdialogue.vue?vue&type=style&index=0&id=78db97bf&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"78db97bf\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:'dbox-'+this.$props.box_id,staticClass:\"dialog-box\",style:({\n 'left': this.$props.dbox.pos_x + 'vw',\n 'top': this.$props.dbox.pos_y + 'vh',\n 'width': this.$props.dbox.size_x + 'rm',\n 'height': this.$props.dbox.size_y + 'rm',\n 'z-index': this.$props.dbox.pos_z + 2001,\n 'transform': this.$props.dbox.referenceTransform\n }),on:{\"mousedown\":_vm.dialog_mousedown}},[_c('div',{staticClass:\"dialog-box-title\",on:{\"mousedown\":function($event){$event.stopPropagation();return _vm.move_start.apply(null, arguments)}}},[_c('span',[_vm._v(\" \"+_vm._s(this.$props.dbox.title)+\" \")]),_c('div',{staticClass:\"dialog-close-button\",on:{\"click\":function($event){$event.stopPropagation();return _vm.closeDialog.apply(null, arguments)}}},[_c('SvgIcon',{attrs:{\"name\":\"close\"}})],1)]),_c('div',{staticClass:\"content\"},[_vm._t(\"default\")],2),_c('div',{staticClass:\"border-left border-top\",on:{\"mousedown\":function($event){$event.stopPropagation();return ((e) => _vm.resize_start(e, 5)).apply(null, arguments)}}}),_c('div',{staticClass:\"horizontal-edge border-top\",on:{\"mousedown\":function($event){$event.stopPropagation();return ((e) => _vm.resize_start(e, 4)).apply(null, arguments)}}}),_c('div',{staticClass:\"border-right border-top\",on:{\"mousedown\":function($event){$event.stopPropagation();return ((e) => _vm.resize_start(e, 6)).apply(null, arguments)}}}),_c('div',{staticClass:\"border-right vertical-edge\",on:{\"mousedown\":function($event){$event.stopPropagation();return ((e) => _vm.resize_start(e, 2)).apply(null, arguments)}}}),_c('div',{staticClass:\"border-right border-bottom\",on:{\"mousedown\":function($event){$event.stopPropagation();return ((e) => _vm.resize_start(e, 10)).apply(null, arguments)}}}),_c('div',{staticClass:\"horizontal-edge border-bottom\",on:{\"mousedown\":function($event){$event.stopPropagation();return ((e) => _vm.resize_start(e, 8)).apply(null, arguments)}}}),_c('div',{staticClass:\"border-left border-bottom\",on:{\"mousedown\":function($event){$event.stopPropagation();return ((e) => _vm.resize_start(e, 9)).apply(null, arguments)}}}),_c('div',{staticClass:\"border-left vertical-edge\",on:{\"mousedown\":function($event){$event.stopPropagation();return ((e) => _vm.resize_start(e, 1)).apply(null, arguments)}}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./dialogbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./dialogbox.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./dialogbox.vue?vue&type=template&id=2c313f3f\"\nimport script from \"./dialogbox.vue?vue&type=script&lang=ts\"\nexport * from \"./dialogbox.vue?vue&type=script&lang=ts\"\nimport style0 from \"./dialogbox.vue?vue&type=style&index=0&id=2c313f3f&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"type-selection-container\"},on:{\"click\":function($event){$event.stopPropagation();}}},[_c('fold-group',{attrs:{\"name\":\"Normal\",\"expanded\":true}},[_c('div',{staticClass:\"type-row\",on:{\"click\":function($event){return _vm.add_layer('image-ao')}}},[_c('div',{staticClass:\"type-image\"},[_c('SvgIcon',{attrs:{\"name\":\"checker\"}})],1),_c('div',{staticClass:\"type-info\"},[_c('span',{staticClass:\"type-label\"},[_vm._v(\"Color Image\")]),_c('span',{staticClass:\"type-description\"},[_vm._v(\"Displays georeferenced images.\")])])]),_c('div',{staticClass:\"type-row\",on:{\"click\":function($event){return _vm.add_layer('scalar')}}},[_c('div',{staticClass:\"type-image\"},[_c('SvgIcon',{attrs:{\"name\":\"grid\"}})],1),_c('div',{staticClass:\"type-info\"},[_c('span',{staticClass:\"type-label\"},[_vm._v(\"Data Grid\")]),_c('span',{staticClass:\"type-description\"},[_vm._v(\"Displays a raster of scalar data values using a colormap.\")])])]),_c('div',{staticClass:\"type-row\",on:{\"click\":function($event){return _vm.add_layer('vector2arrow')}}},[_c('div',{staticClass:\"type-image\"},[_c('SvgIcon',{attrs:{\"name\":\"tracers\"}})],1),_c('div',{staticClass:\"type-info\"},[_c('span',{staticClass:\"type-label\"},[_vm._v(\"Vector Fields\")]),_c('span',{staticClass:\"type-description\"},[_vm._v(\"Displays a vector field as an animation of arrows\")])])]),_c('div',{staticClass:\"type-row\",on:{\"click\":function($event){return _vm.add_layer('pointcloud')}}},[_c('div',{staticClass:\"type-image\"},[_c('SvgIcon',{attrs:{\"name\":\"points\"}})],1),_c('div',{staticClass:\"type-info\"},[_c('span',{staticClass:\"type-label\"},[_vm._v(\"Data Pointcloud\")]),_c('span',{staticClass:\"type-description\"},[_vm._v(\"Displays a pointcloud with a scalar data attribute for each point.\")])])]),_c('div',{staticClass:\"type-row\",on:{\"click\":function($event){return _vm.add_layer('colorpointcloud')}}},[_c('div',{staticClass:\"type-image\"},[_c('SvgIcon',{attrs:{\"name\":\"points\"}})],1),_c('div',{staticClass:\"type-info\"},[_c('span',{staticClass:\"type-label\"},[_vm._v(\"Color Pointcloud\")]),_c('span',{staticClass:\"type-description\"},[_vm._v(\"Displays a pointcloud with color information for each point.\")])])])]),_c('fold-group',{attrs:{\"name\":\"Special\"}},[_c('div',{staticClass:\"type-row\",on:{\"click\":function($event){return _vm.add_layer('lines')}}},[_c('div',{staticClass:\"type-image\"},[_c('SvgIcon',{attrs:{\"name\":\"paths\"}})],1),_c('div',{staticClass:\"type-info\"},[_c('span',{staticClass:\"type-label\"},[_vm._v(\"Lines Layer\")]),_c('span',{staticClass:\"type-description\"},[_vm._v(\"Displays lines with scalar data values using a colormap.\")])])]),_c('div',{staticClass:\"type-row\",on:{\"click\":function($event){return _vm.add_layer('difference')}}},[_c('div',{staticClass:\"type-image\"},[_c('SvgIcon',{attrs:{\"name\":\"grid-difference\"}})],1),_c('div',{staticClass:\"type-info\"},[_c('span',{staticClass:\"type-label\"},[_vm._v(\"Difference Layer\")]),_c('span',{staticClass:\"type-description\"},[_vm._v(\"Displays the difference between two scalar layers.\")])])]),_c('div',{staticClass:\"type-row\",on:{\"click\":function($event){return _vm.add_layer('vec2points')}}},[_c('div',{staticClass:\"type-image\"},[_c('SvgIcon',{attrs:{\"name\":\"points\"}})],1),_c('div',{staticClass:\"type-info\"},[_c('span',{staticClass:\"type-label\"},[_vm._v(\"2-Component Vector Points Layer\")]),_c('span',{staticClass:\"type-description\"},[_vm._v(\"Displays points with two values using a colormap and an arrow.\")])])]),_c('div',{staticClass:\"type-row\",on:{\"click\":function($event){return _vm.add_layer('piechartpoints')}}},[_c('div',{staticClass:\"type-image\"},[_c('SvgIcon',{attrs:{\"name\":\"points\"}})],1),_c('div',{staticClass:\"type-info\"},[_c('span',{staticClass:\"type-label\"},[_vm._v(\"Pie Chart Points Layer\")]),_c('span',{staticClass:\"type-description\"},[_vm._v(\"Displays pie charts from point data.\")])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./typeselectiondialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./typeselectiondialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./typeselectiondialog.vue?vue&type=template&id=14ac1d50&scoped=true\"\nimport script from \"./typeselectiondialog.vue?vue&type=script&lang=ts\"\nexport * from \"./typeselectiondialog.vue?vue&type=script&lang=ts\"\nimport style0 from \"./typeselectiondialog.vue?vue&type=style&index=0&id=14ac1d50&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"14ac1d50\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"layers-card-content\"}},[_c('layer-group-component',{attrs:{\"group\":_vm.default_group,\"isDefault\":true}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.group)?_c('div',{staticClass:\"pad-top drop-bounds\"},[_c('div',{staticClass:\"layer-row\",attrs:{\"draggable\":!_vm.isDefault},on:{\"dragstart\":function($event){return _vm.startDrag($event, _vm.group.id)},\"dragenter\":_vm.allowDrop,\"dragover\":_vm.allowDrop,\"drop\":function($event){return _vm.drop($event, _vm.group.id, _vm.expanded)}}},[_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){_vm.expanded = !_vm.expanded}}},[_c('SvgIcon',{attrs:{\"name\":_vm.expanded?'down':'right'}})],1),(!_vm.isDefault && _vm.group.children.length > 0)?_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){_vm.group.setVisibility(!_vm.group.getAnyVisible()); _vm.rerender()}}},[(_vm.group.getAnyVisible())?_c('SvgIcon',{attrs:{\"name\":\"eye\"}}):_c('SvgIcon',{attrs:{\"name\":\"no-eye\"}})],1):_vm._e(),(_vm.group.getExtent())?_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){return _vm.zoomToLayer(_vm.group)},\"mouseleave\":function($event){return _vm.hideExtent()},\"mouseenter\":function($event){return _vm.showExtent(_vm.group)}}},[_c('SvgIcon',{attrs:{\"name\":\"marker\"}})],1):_vm._e(),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.group.name),expression:\"group.name\"}],key:_vm.group.id,staticClass:\"layername continue\",staticStyle:{\"width\":\"60%\"},attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.group.name)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.group, \"name\", $event.target.value)}}}),_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){return _vm.createLayer()}}},[_c('SvgIcon',{attrs:{\"name\":\"layer-new\"}})],1),_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){return _vm.createGroup()}}},[_c('SvgIcon',{attrs:{\"name\":\"layer-group-new\"}})],1),(!_vm.isDefault)?_c('div',{staticClass:\"button symbol continue active-red\",on:{\"click\":function($event){return _vm.groupDelete($event, _vm.group)}}},[_c('SvgIcon',{attrs:{\"name\":\"close2\"}})],1):_vm._e()]),(_vm.group.children.length > 0)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expanded),expression:\"expanded\"}],staticClass:\"group-children\"},[_vm._l((_vm.group.children),function(id){return [(_vm.isLayer(id))?_c('div',{key:id,staticClass:\"layer-row pad-top drop-bounds\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":function($event){return _vm.startDrag($event, id)},\"dragenter\":_vm.allowDrop,\"dragover\":_vm.allowDrop,\"drop\":function($event){return _vm.drop($event, id)}}},[_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){_vm.getLayer(id).visible = !_vm.getLayer(id).visible; _vm.rerender();}}},[(_vm.getLayer(id).visible)?_c('SvgIcon',{attrs:{\"name\":\"eye\"}}):_c('SvgIcon',{attrs:{\"name\":\"no-eye\"}})],1),(_vm.getLayer(id).source.getExtent())?_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){_vm.zoomToLayer(_vm.getLayer(id))},\"mouseleave\":function($event){return _vm.hideExtent()},\"mouseenter\":function($event){_vm.showExtent(_vm.getLayer(id))}}},[_c('SvgIcon',{attrs:{\"name\":\"marker\"}})],1):_vm._e(),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.getLayer(id).name),expression:\"getLayer(id).name\"}],key:id,staticClass:\"layername continue\",staticStyle:{\"width\":\"60%\"},attrs:{\"type\":\"text\",\"is-selected\":_vm.isSelected(id)},domProps:{\"value\":(_vm.getLayer(id).name)},on:{\"click\":function($event){_vm.selectLayer(_vm.getLayer(id))},\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.getLayer(id), \"name\", $event.target.value)}}}),_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){_vm.layerSettings(_vm.getLayer(id))}}},[_c('SvgIcon',{attrs:{\"name\":\"sliders\"}})],1),_c('div',{staticClass:\"button symbol continue active-red\",on:{\"click\":function($event){_vm.layerDelete(_vm.getLayer(id))}}},[_c('SvgIcon',{attrs:{\"name\":\"close2\"}})],1)]):(_vm.isGroup(id))?_c('layer-group-component',{key:id,attrs:{\"group\":_vm.getGroup(id),\"isDefault\":false}}):_vm._e()]})],2):_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expanded),expression:\"expanded\"}],staticClass:\"layer-placehold\",on:{\"dragenter\":_vm.allowDrop,\"dragover\":_vm.allowDrop,\"drop\":function($event){return _vm.drop($event, _vm.group.id, true)}}},[_vm._v(\"Empty Group\")])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./layergroupcomponent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./layergroupcomponent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./layergroupcomponent.vue?vue&type=template&id=67220ea8\"\nimport script from \"./layergroupcomponent.vue?vue&type=script&lang=ts\"\nexport * from \"./layergroupcomponent.vue?vue&type=script&lang=ts\"\nimport style0 from \"./layergroupcomponent.vue?vue&type=style&index=0&id=67220ea8&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./layerstack.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./layerstack.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./layerstack.vue?vue&type=template&id=d63412ea\"\nimport script from \"./layerstack.vue?vue&type=script&lang=ts\"\nexport * from \"./layerstack.vue?vue&type=script&lang=ts\"\nimport style0 from \"./layerstack.vue?vue&type=style&index=0&id=d63412ea&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"source-selection-container\"},on:{\"click\":function($event){$event.stopPropagation();}}},[(_vm.title != null)?_c('div',{staticClass:\"source-title\"},[_vm._v(_vm._s(_vm.title)+\":\")]):_vm._e(),_vm._l((_vm.categories.filter((c) => _vm.sources_for_category(c).length > 0)),function(category){return _c('div',{key:category,staticClass:\"source-row\",on:{\"click\":function($event){$event.stopPropagation();return _vm.toggle_category(category)}}},[_c('div',{class:{'category-row-label': true, expanded: _vm.expanded_category==category}},[_c('span',{staticStyle:{\"display\":\"inline-block\"}},[_c('SVGIcon',{attrs:{\"name\":_vm.expanded_category==category?'down':'right'}})],1),_vm._v(\" \"+_vm._s(category)+\" \")]),(_vm.expanded_category==category)?_c('div',_vm._l((_vm.sources_for_category(category).filter((s) => _vm.rows_for_source(s).length > 0)),function(source){return _c('div',{key:source,on:{\"click\":function($event){$event.stopPropagation();return _vm.toggle_source(source)}}},[_c('div',{class:{'source-row-label': true, expanded: _vm.expanded_source==source}},[_c('span',{staticStyle:{\"display\":\"inline-block\"}},[_c('SVGIcon',{attrs:{\"name\":_vm.expanded_source==source?'down':'right'}})],1),_vm._v(\" \"+_vm._s(source)+\" \")]),(_vm.expanded_source==source)?_c('div',_vm._l((_vm.rows_for_source(source)),function(row){return _c('div',{key:row.path,class:{'layer-row-label': true, expanded: _vm.highlighted_layer == row.sli.layer_name},on:{\"click\":function($event){$event.stopPropagation();return _vm.return_source(row.sli)}}},[_vm._v(\" \"+_vm._s(row.layer)+\" \"),(row.unit)?_c('span',{staticClass:\"layer-row-unit\"},[_vm._v(\" (\"+_vm._s(row.unit)+\") \")]):_vm._e()])}),0):_vm._e()])}),0):_vm._e()])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"badge-style\",attrs:{\"variant\":_vm.variant}},[_vm._v(\" \"+_vm._s(_vm.name)+\" \"),_c('span',{staticClass:\"badge-layer-remove\",on:{\"click\":function($event){$event.stopPropagation();return _vm.clearSlot.apply(null, arguments)}}},[_c('SvgIcon',{attrs:{\"name\":\"close2\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./sourcelayerbadge.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./sourcelayerbadge.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./sourcelayerbadge.vue?vue&type=template&id=d574d83e\"\nimport script from \"./sourcelayerbadge.vue?vue&type=script&lang=ts\"\nexport * from \"./sourcelayerbadge.vue?vue&type=script&lang=ts\"\nimport style0 from \"./sourcelayerbadge.vue?vue&type=style&index=0&id=d574d83e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./sourceselectiondialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./sourceselectiondialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./sourceselectiondialog.vue?vue&type=template&id=0717fca5&scoped=true\"\nimport script from \"./sourceselectiondialog.vue?vue&type=script&lang=ts\"\nexport * from \"./sourceselectiondialog.vue?vue&type=script&lang=ts\"\nimport style0 from \"./sourceselectiondialog.vue?vue&type=style&index=0&id=0717fca5&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0717fca5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"playback\"}},[_c('div',{staticClass:\"datetime-label\",attrs:{\"id\":\"datetime-label\"}},[_vm._v(_vm._s(_vm.time))]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.time2),expression:\"time2\"}],staticClass:\"datetime-label\",attrs:{\"id\":\"datetime-label-end\"}},[_vm._v(_vm._s(_vm.time2))]),_c('div',{staticClass:\"row\",attrs:{\"id\":\"playback-buttons\"}},[_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){return _vm.start()}}},[_c('SvgIcon',{attrs:{\"name\":\"fast-start\"}})],1),_c('div',{staticClass:\"button symbol continue\",on:{\"mousedown\":function($event){$event.stopPropagation();return _vm.reverse($event)}}},[_c('SvgIcon',{attrs:{\"name\":\"fast-reverse\"}})],1),_c('div',{staticClass:\"button symbol continue\",attrs:{\"stalled\":_vm.stalled},on:{\"click\":function($event){return _vm.playpause()}}},[(_vm.playbackState)?_c('span',[_c('SvgIcon',{attrs:{\"name\":\"pause\"}})],1):_c('span',[_c('SvgIcon',{attrs:{\"name\":\"play\"}})],1)]),_c('div',{staticClass:\"button symbol continue\",on:{\"mousedown\":function($event){$event.stopPropagation();return _vm.forward($event)}}},[_c('SvgIcon',{attrs:{\"name\":\"fast-forward\"}})],1),_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){return _vm.end()}}},[_c('SvgIcon',{attrs:{\"name\":\"fast-end\"}})],1)]),_c('div',{staticClass:\"row\",attrs:{\"id\":\"playback-speed\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.internal_speed_str),expression:\"internal_speed_str\"}],staticStyle:{\"margin-right\":\"0.2em\"},attrs:{\"type\":\"text\",\"id\":\"speed-input\",\"value_broken\":!_vm.internal_speed_ok},domProps:{\"value\":(_vm.internal_speed_str)},on:{\"change\":_vm.speedChanged,\"input\":function($event){if($event.target.composing)return;_vm.internal_speed_str=$event.target.value}}}),_vm._v(\"  per second \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./playbackcomponent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./playbackcomponent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./playbackcomponent.vue?vue&type=template&id=23dfdb0a&scoped=true\"\nimport script from \"./playbackcomponent.vue?vue&type=script&lang=ts\"\nexport * from \"./playbackcomponent.vue?vue&type=script&lang=ts\"\nimport style0 from \"./playbackcomponent.vue?vue&type=style&index=0&id=23dfdb0a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23dfdb0a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{key:_vm.layer.changeId,staticClass:\"layer-component-container\",on:{\"mousedown\":_vm.mousedown_evt}},[_c('fold-group',{attrs:{\"name\":\"Source\",\"expanded\":true}},[_c('div',{staticClass:\"layer-component-source-slots\"},[_vm._l((Object.entries(_vm.layer.source.slots).filter(s => !s[1].name =='')),function([name,slot]){return [_c('span',{key:'sourcename_' + name,staticClass:\"first-col\"},[_vm._v(_vm._s(slot.name))]),_c('span',{key:'sourceslot_' + name,staticClass:\"double-col\",on:{\"click\":function($event){return _vm.selectSource(_vm.layer, slot, name)}}},[_c('SourceLayerBadge',{attrs:{\"source\":_vm.layer.source.slots[name] || null,\"layer\":_vm.layer,\"slotname\":name}})],1)]})],2)]),_c('fold-group',{attrs:{\"name\":\"General Options\"}},[_c('div',{staticClass:\"layer-component-source-parameters\"},[_vm._l((_vm.layer.source.parameters),function(parameter,index){return [(parameter.userVisible)?_c('ParameterComponent',{key:'source-parameter-' + index + '_' + _vm.layer.changeId,attrs:{\"param\":parameter}}):_vm._e()]})],2)]),_vm._l((_vm.layer.filterPipeline),function(filter,index){return [_c('fold-group',{key:'filter-label-'+index,attrs:{\"name\":filter.human_readable_name}},[_vm._l((filter.parameters),function(parameter,pindex){return [(parameter.userVisible)?_c('ParameterComponent',{key:'filter-' + index + '-parameter-' + pindex + '_' + _vm.layer.changeId,attrs:{\"param\":parameter}}):_vm._e()]})],2)]}),_c('fold-group',{attrs:{\"name\":\"Composition\"}},[_c('div',{staticClass:\"layer-component-source-parameters\"},[_vm._l((_vm.layer.compositionFilter.parameters),function(parameter,index){return [(parameter.userVisible)?_c('ParameterComponent',{key:'source-composition-parameter-' + index + '_' + _vm.layer.changeId,attrs:{\"param\":parameter}}):_vm._e()]})],2)]),_c('fold-group',{attrs:{\"name\":\"Attribution\"}},[_c('div',{staticClass:\"triple-col layer-component-attribution\",staticStyle:{\"max-width\":\"40ch\",\"user-select\":\"text\"},domProps:{\"innerHTML\":_vm._s(_vm.attribution())}})])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"parameter\"},[_c('span',{key:'pf_' + _vm.param.name,staticClass:\"first-col\"},[_vm._v(_vm._s(_vm.param.name))]),(_vm.param.type == 'number')?[_c('NumberInput',{key:'pn_' + _vm.param.name,staticClass:\"double-col\",attrs:{\"min\":_vm.min,\"max\":_vm.max,\"step\":_vm.param.step,\"unit\":_vm.param.unit},on:{\"input\":function($event){return _vm.change();}},model:{value:(_vm.param.value),callback:function ($$v) {_vm.$set(_vm.param, \"value\", $$v)},expression:\"param.value\"}})]:(_vm.param.type == 'vector3D')?[_c('VectorInput',{key:'pn_' + _vm.param.name,staticClass:\"double-col\",on:{\"input\":function($event){return _vm.change();}},model:{value:(_vm.param.value),callback:function ($$v) {_vm.$set(_vm.param, \"value\", $$v)},expression:\"param.value\"}})]:(_vm.param.type == 'boolean')?[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.param.value),expression:\"param.value\"}],key:'pc_' + _vm.param.name,staticClass:\"second-col\",attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.param.value)?_vm._i(_vm.param.value,null)>-1:(_vm.param.value)},on:{\"input\":function($event){return _vm.change();},\"change\":function($event){var $$a=_vm.param.value,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.param, \"value\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.param, \"value\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.param, \"value\", $$c)}}}})]:(_vm.param.type=='colormap')?[_c('button',{staticClass:\"dropdown-button double-col\",style:({background: _vm.getCSSGradient(_vm.param.value), color: 'white', textShadow: '0px 0px 4px black'}),on:{\"click\":function($event){return _vm.toggle_dropdown()},\"keydown\":function($event){return _vm.arrow_key_interaction($event)}}},[_c('span',{staticClass:\"dd-label\"},[_c('span',{staticClass:\"dd-icon\"},[_c('SvgIcon',{attrs:{\"name\":\"down\"}})],1),_vm._v(\" \"+_vm._s(_vm.param.value)+\" \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dropdown_open),expression:\"dropdown_open\"}],staticClass:\"colormap-dropdown\"},_vm._l((_vm.getColormapNames()),function(colormap_name){return _c('div',{key:colormap_name,staticClass:\"colormap-dropdown-entry\",style:({background: _vm.getCSSGradient(colormap_name), color: 'white', textShadow: '0px 0px 4px black'}),on:{\"click\":function($event){return _vm.set_value(colormap_name)}}},[_vm._v(_vm._s(colormap_name))])}),0)])]:(_vm.param.type=='select')?[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.param.value),expression:\"param.value\"}],staticClass:\"double-col\",on:{\"input\":function($event){return _vm.change();},\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.param, \"value\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.param.options),function(option){return _c('option',{key:option},[_vm._v(_vm._s(option))])}),0)]:[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.param.value),expression:\"param.value\"}],key:'pe_' + _vm.param.name,staticClass:\"second-col\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.param.value)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.param, \"value\", $event.target.value)},function($event){return _vm.change();}],\"change\":function($event){return _vm.change();}}}),(_vm.param.unit)?_c('span',{key:'pe2_' + _vm.param.name,staticClass:\"third-col\"},[_vm._v(_vm._s(_vm.param.unit))]):_vm._e()],(_vm.param.Actions.length > 0)?_c('div',{staticClass:\"triple-col actions\"},_vm._l((_vm.param.Actions),function(action){return _c('button',{key:action.Name,on:{\"click\":function($event){return _vm.triggerAction(action)}}},[_vm._v(_vm._s(action.Name))])}),0):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('div',{attrs:{\"id\":\"orb-container\"},on:{\"mousedown\":function($event){$event.stopPropagation();return _vm.mousedown.apply(null, arguments)}}},[_c('svg',{attrs:{\"viewBox\":\"-1 -1 2 2\"}},[_c('g',[_c('circle',{attrs:{\"cx\":\"0\",\"cy\":\"0\",\"r\":\"0.8\",\"fill\":\"transparent\",\"id\":\"outer\"}}),_c('path',{attrs:{\"id\":\"inner\",\"d\":`\r\n M -0.8 0\r\n A 0.8 0.8 0 0 1 0.8 0\r\n A 0.8 ${0.8 * Math.abs(_vm.value.x1 / _vm.value.abs())} 0 0 ${_vm.value.x1 > 0 ? 1 : 0} -0.8 0\r\n Z\r\n `,\"transform\":`rotate(${180 / Math.PI * Math.atan2(_vm.value.x2, _vm.value.x3)})`}})])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.value.x1 > -0.1),expression:\"value.x1 > -0.1\"}],staticClass:\"light-marker\",style:({left: _vm.sun_left, top: _vm.sun_top})},[_c('SvgIcon',{staticClass:\"icon-outline\",staticStyle:{\"position\":\"absolute\"},attrs:{\"name\":\"sun\"}}),_c('SvgIcon',{staticStyle:{\"position\":\"absolute\"},attrs:{\"name\":\"sun\"}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.value.x1 < 0.1),expression:\"value.x1 < 0.1\"}],staticClass:\"light-marker\",style:({left: _vm.moon_left, top: _vm.moon_top})},[_c('SvgIcon',{staticClass:\"icon-outline\",staticStyle:{\"position\":\"absolute\"},attrs:{\"name\":\"moon\"}}),_c('SvgIcon',{staticStyle:{\"position\":\"absolute\"},attrs:{\"name\":\"moon\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vectorinput.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vectorinput.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./vectorinput.vue?vue&type=template&id=fd7ecf9e&scoped=true\"\nimport script from \"./vectorinput.vue?vue&type=script&lang=ts\"\nexport * from \"./vectorinput.vue?vue&type=script&lang=ts\"\nimport style0 from \"./vectorinput.vue?vue&type=style&index=0&id=fd7ecf9e&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fd7ecf9e\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./parametercomponent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./parametercomponent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./parametercomponent.vue?vue&type=template&id=d21440f0\"\nimport script from \"./parametercomponent.vue?vue&type=script&lang=ts\"\nexport * from \"./parametercomponent.vue?vue&type=script&lang=ts\"\nimport style0 from \"./parametercomponent.vue?vue&type=style&index=0&id=d21440f0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./layercomponent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./layercomponent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./layercomponent.vue?vue&type=template&id=e252e70e\"\nimport script from \"./layercomponent.vue?vue&type=script&lang=ts\"\nexport * from \"./layercomponent.vue?vue&type=script&lang=ts\"\nimport style0 from \"./layercomponent.vue?vue&type=style&index=0&id=e252e70e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('pre',{attrs:{\"id\":\"debug_text_field\"}},[_vm._v(_vm._s(_vm.debugMessage)+\"\\n \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./debugcomponent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./debugcomponent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./debugcomponent.vue?vue&type=template&id=4f691a66&scoped=true\"\nimport script from \"./debugcomponent.vue?vue&type=script&lang=ts\"\nexport * from \"./debugcomponent.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f691a66\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"recording\"}},[_c('div',[_vm._v(\"Recording: \"+_vm._s(_vm.isRecording)+\" (\"+_vm._s(_vm.recordingEventCount)+\" actions)\")]),_c('div',[_vm._v(\"Playback: \"+_vm._s(_vm.isPlayingBack)+\" (\"+_vm._s(_vm.playbackEventCount)+\" actions)\")]),_c('div',{staticClass:\"row\",attrs:{\"id\":\"recording-buttons\"}},[_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){return _vm.start()}}},[_c('SvgIcon',{attrs:{\"name\":\"fast-start\"}})],1),_c('div',{staticClass:\"button symbol continue record\",attrs:{\"recording\":_vm.isRecording},on:{\"mousedown\":function($event){$event.stopPropagation();return _vm.record()}}},[_c('SvgIcon',{attrs:{\"name\":\"record\"}})],1),_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){return _vm.playpause()}}},[(_vm.isPlayingBack)?_c('span',[_c('SvgIcon',{attrs:{\"name\":\"pause\"}})],1):_c('span',[_c('SvgIcon',{attrs:{\"name\":\"play\"}})],1)]),_c('div',{staticClass:\"button symbol continue\",on:{\"click\":function($event){return _vm.end()}}},[_c('SvgIcon',{attrs:{\"name\":\"fast-end\"}})],1)]),_c('div',[_c('progress',{staticStyle:{\"width\":\"100%\"},attrs:{\"max\":_vm.recordingEventCount},domProps:{\"value\":_vm.playbackEventCount}})]),_c('div',{staticClass:\"button\",on:{\"click\":function($event){return _vm.frameRecord()}}},[_vm._v(\"Export TAR of JPEG frames\")]),_c('br'),_c('div',{staticClass:\"button\",on:{\"click\":function($event){return _vm.exportActions()}}},[_vm._v(\"Export Actions as JSON\")]),_c('br'),_c('div',{staticClass:\"button\",on:{\"click\":function($event){return _vm.importActions()}}},[_vm._v(\"Import Actions as JSON\")]),_c('br'),_c('input',{staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"id\":\"actionsFile\"},on:{\"change\":_vm.loadActionsFile}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./recordingplayback.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./recordingplayback.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./recordingplayback.vue?vue&type=template&id=4115e07c&scoped=true\"\nimport script from \"./recordingplayback.vue?vue&type=script&lang=ts\"\nexport * from \"./recordingplayback.vue?vue&type=script&lang=ts\"\nimport style0 from \"./recordingplayback.vue?vue&type=style&index=0&id=4115e07c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4115e07c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"sourcestatus\"}},[_c('table',[_vm._m(0),_c('tbody',_vm._l((_vm.status_list),function(status){return _c('tr',{key:status.name},[_c('td',[_vm._v(_vm._s(status.name))]),_c('td',[(status.status == 'Error')?_c('span',{staticClass:\"status-error\"},[_vm._v(\" Error: \"+_vm._s(status.error_message)+\" \")]):_c('span',[_vm._v(\" \"+_vm._s(status.status)+\" \")])])])}),0)])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('thead',[_c('tr',[_c('td',[_vm._v(\"Source\")]),_c('td',[_vm._v(\"Status\")])])])\n}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./programstatuscomponent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./programstatuscomponent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./programstatuscomponent.vue?vue&type=template&id=3b85b287&scoped=true\"\nimport script from \"./programstatuscomponent.vue?vue&type=script&lang=ts\"\nexport * from \"./programstatuscomponent.vue?vue&type=script&lang=ts\"\nimport style0 from \"./programstatuscomponent.vue?vue&type=style&index=0&id=3b85b287&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3b85b287\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"save-container\"},on:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"button\",attrs:{\"title\":\"Open Scene...\"},on:{\"click\":_vm.uploadLayerConfig}},[_c('SvgIcon',{attrs:{\"name\":\"open\"}}),_c('span',[_vm._v(\"Open Scene File\")])],1),_c('input',{staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"accept\":\".json\",\"id\":\"inputlayerfile\"},on:{\"change\":_vm.handleLayerConfig}}),_c('div',{staticClass:\"button\",attrs:{\"title\":\"Save Scene...\"},on:{\"click\":_vm.downloadLayerConfig}},[_c('SvgIcon',{attrs:{\"name\":\"save\"}}),_c('span',[_vm._v(\"Save Scene File\")])],1),_c('hr',{staticStyle:{\"width\":\"80%\"}}),_c('div',[_vm._v(\"Enter a scene name:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.SceneName),expression:\"SceneName\"}],attrs:{\"type\":\"text\",\"title\":\"A keyword which is to be included in the URL generated\"},domProps:{\"value\":(_vm.SceneName)},on:{\"input\":function($event){if($event.target.composing)return;_vm.SceneName=$event.target.value}}}),_c('button',{attrs:{\"title\":\"Create a link to this display configuration\"},on:{\"click\":_vm.createLink}},[_vm._v(\"Generate Link\")]),_c('a',{attrs:{\"href\":_vm.SceneLink,\"target\":\"_blank\",\"title\":\"A link to the current display configuration\"}},[_vm._v(_vm._s(_vm.SceneLink))]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.SceneLink != ''),expression:\"SceneLink != ''\"}],staticClass:\"button copy\",attrs:{\"title\":\"Copy the link to the clipboard\",\"copySuccessful\":_vm.CopySuccessful},on:{\"click\":_vm.copyLinkToClipboard}},[_vm._v(\"Copy to Clipboard\")]),_c('span',{staticStyle:{\"color\":\"#ff0000\"},attrs:{\"title\":\"Something went wrong. Maybe send this error message to digitalearthviewer@geomar.de?\"}},[_vm._v(_vm._s(_vm.SceneError))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./savedialogue.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./savedialogue.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./savedialogue.vue?vue&type=template&id=66da1949&scoped=true\"\nimport script from \"./savedialogue.vue?vue&type=script&lang=ts\"\nexport * from \"./savedialogue.vue?vue&type=script&lang=ts\"\nimport style0 from \"./savedialogue.vue?vue&type=style&index=0&id=66da1949&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"66da1949\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"manual-container\"},on:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{attrs:{\"id\":\"manual-toc\"}},[_c('strong',{staticStyle:{\"font-size\":\"125%\",\"text-decoration\":\"underline\"}},[_vm._v(\"Table of Contents\")]),_c('a',{class:{'toc-item': true, 'selected': _vm.selected_article == 'home'},on:{\"click\":function($event){return _vm.selectArticle('home')}}},[_vm._v(\"Home\")]),_vm._l((_vm.table_of_contents),function(item){return _c('a',{key:item[0] + item[1],class:{'toc-item': true, 'selected': _vm.selected_article == item[0] + item[1]},on:{\"click\":function($event){return _vm.selectArticle(item[0] + item[1])}}},[_c('span',{staticClass:\"toc-prefix\"},[_vm._v(_vm._s(item[0].replaceAll(\"-\", \" \")))]),_c('span',{staticClass:\"toc-name\"},[_vm._v(_vm._s(item[1].replaceAll(\"-\", \" \")))])])})],2),_c('div',{attrs:{\"id\":\"manual-text\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./manualcomponent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./manualcomponent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./manualcomponent.vue?vue&type=template&id=f415daf8\"\nimport script from \"./manualcomponent.vue?vue&type=script&lang=ts\"\nexport * from \"./manualcomponent.vue?vue&type=script&lang=ts\"\nimport style0 from \"./manualcomponent.vue?vue&type=style&index=0&id=f415daf8&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./dialogBoxes.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./dialogBoxes.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./dialogBoxes.vue?vue&type=template&id=5c07dc1e\"\nimport script from \"./dialogBoxes.vue?vue&type=script&lang=ts\"\nexport * from \"./dialogBoxes.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"logo\"}},[_c('img',{staticClass:\"fadein\",attrs:{\"id\":\"smalllogo\",\"ondragstart\":\"return false;\",\"src\":\"static/digitalearth.png\"},on:{\"click\":function($event){return _vm.openabout();}}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./logocomponent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./logocomponent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./logocomponent.vue?vue&type=template&id=4f5c845b\"\nimport script from \"./logocomponent.vue?vue&type=script&lang=ts\"\nexport * from \"./logocomponent.vue?vue&type=script&lang=ts\"\nimport style0 from \"./logocomponent.vue?vue&type=style&index=0&id=4f5c845b&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=11f82702&scoped=true\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=11f82702&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11f82702\",\n null\n \n)\n\nexport default component.exports","//This file is licensed under EUPL v1.2 as part of the Digital Earth Viewer\r\n\r\nimport Vue from 'vue'\r\nimport App from './App.vue'\r\n\r\n(async function(){\r\n\r\n Vue.config.productionTip = false\r\n Vue.config.errorHandler = (e, vm, info) => {\r\n console.trace(e, vm, info);\r\n },\r\n Vue.config.warnHandler = (e, vm, info) => {\r\n console.trace(e, vm, info);\r\n }\r\n new Vue({\r\n el: '#app',\r\n template: '',\r\n components: { App },\r\n render: h => h(App),\r\n });\r\n \r\n })();\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunktileclient\"] = globalThis[\"webpackChunktileclient\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], () => (__webpack_require__(3372)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["render","_vm","this","_c","_self","attrs","staticStyle","directives","name","rawName","value","ui_visible","expression","staticRenderFns","_setupProxy","staticClass","on","wheel_evt","mousedown_evt","mouseup_evt","mouseout_evt","touchstart_evt","doubleclick_evt","Vec2","constructor","x1","x2","mul","rhs","add","sub","neg","dot","cross","abs","Math","sqrt","norm","transpose","orthogonal","sign","len","Vec3","x3","empty","from_fv","x2x3","from_vf","x1x2","dyadic","Mat3","ortho","Vec4","r","g","b","a","x4","from_vff","rg","rgb","from_fvf","gb","from_ffv","ba","gba","from_vv","Quaternion","w","x","y","z","mul_scalar","scalar","normalize","length","pow","conjugate","invert","fromVec4","v","to_rotation_matrix","from_rotation_matrix","rot","trace","a11","a22","a33","a32","a23","a13","a31","a21","a12","from_axis_and_angle","axis","angle","normal_axis","sin_a_half","sin","cos","Mat2","from_cols","a1","a2","from_lins","phi","identity","det","adj","inverse","mul_number","mul_vec2","mul_mat2","a3","s","c","c1","n","translate","offset","Mat4","extend","mul_vec3","mul_mat3","q1","m1","q2","m2","a14","a24","a34","a41","a42","a43","a44","a4","as_cols","perspective","fov","aspect","near","far","tan","d","perspective_ext","left","right","top","bottom","look_at","from","to","up","m","mul_mat4","as_typed","Float32Array","mul_vec4","AaBb","max","min","from_point","p","get_corner","corners","check_for_all_corners","pred","add_vec3","add_aabb","Coord","lat","lon","from_UEC","u","UEC","from_Coord","as_vec2","other","subtract","from_ueclike","ueclike","haversine_distance_to","self_coord","other_coord","lat1","lat2","lon1","lon2","R","φ1","PI","φ2","Δφ","Δλ","atan2","move_by_meters","east","south","CIRCUMFERENCE_EQUATOR_METRES","offset_x","offset_y","UECArea","position","extent","fromUECAreaLike","uecarealike","fromPositionExtentTuple","tuple","betweenTwoPoints","topLeft","bottomRight","fromPoints","points","min_x","min_y","max_x","max_y","forEach","Tile","from_XYWH","h","path","t","size","area","copy","in_extent","bounds","radius_min","radius_max","radius","point_worldspace","px","py","sp","p0","p1","p2","p3","res","A","B","C","D","U","L","parent","from_tilepath","substring","posInTile","lx","ly","sx","sy","split","width","height","aspect_ratio","tilepath","startsWith","Error","ScreenPosition","toVec3","fromVec3","CameraPositionChangedEvent","Event","pos","super","CameraPositionTargetChangedEvent","DisplayParametersChangedEvent","RotationLockChangedEvent","ELEV_ANG_MIN","ELEV_ANG_MAX","ANIM_SPEED","ZOOM_IN_LIMIT","ZOOM_OUT_LIMIT","SPHERICAL_LIMIT","CAMERA_FOV","PositionService","EventTarget","rotation_locked","rotation_locked_interal","dispatchEvent","tbs","world_transform","camera_transform","light_locked","camPosDirty","timebaseservice","filterUpdate","animT","now","animStart","world_rotation_filtered","evalAnimPolynomial","world_rotation_pw","world_rotation_px","world_rotation_py","world_rotation_pz","camera_elevation_filtered","camera_elevation_p","camera_distance_filtered","camera_distance_p","camera_zposition_filtered","camera_zposition_p","recalculate_matrices","getCameraPositionFiltered","Services","AdaptivePerformanceService","RequestRerender","forceFilteredToTarget","world_rotation","camera_distance","camera_elevation","camera_zposition","update_projection_mode","projection_mode","recalculate_world_transform","rotmat","scaling_mat","uecpos","Latitude","Longitude","offsetmat","xy_correction_mat","Azimuth","UECHeightToScreenPixels","UECHeightToScreenPixels_equirect","world_rot_to_uec_pos","tmat","UECHeightToScreenPixels_spherical","recalculate_camera_transform","display_width","display_height","result","calculate_camera_pretransform_internal","recalculate_camera_transform_stereo_offset","offset_mat","atan","recalculate_camera_transform_dome_top","domeTilt","recalculate_camera_transform_single_frustum","f","down","axes","orientation","roll","yaw","pitch","orientation_str","ProjectorConfigurationService","getRotationOrderString","rot_a","substr","rot_b","rot_c","mt","recalculate_camera_transform_dome_side","rot_z","SettingsService","getValueOrDefault","moveCamera","correction_fac","pos_old","cam_dist","yfac","xfac","mixed_axis","rotmat_old","cam_northing","rotmat_new","cam_northing_new","updateCameraPolynomials","getCameraPosition","tiltCamera","correction_fac_az","correction_fac_elev","zoomCamera","exp","log","setCameraPosition","external","oldrot","Elevation","az","newrot","Distance","VerticalPosition","genAnimPolynomial","evalAnimPolynomialDeriv","rot_x","rot_y","lat_phi","asin","rot_xy","lon_phi","calculateCameraPositionInternalRad","rotation","elevation","distance","zposition","calculateCameraPositionInternal","cameraPositionInternal","cameraPositionFilteredInternal","setScreenDimensions","getScreenDimensions","location_to_screenspace","screenspace_pos","cy","x0","v0","v1","e","Barrier","is_resolved","internal_barrier","Promise","rej","resolve_handler","reject_handler","resolve","reject","wait","isResolved","AwaitableDelay","ms","_rej","setTimeout","SettingsChangedEvent","parameter","remote","parameters","skip_storing","serializedArray","localStorage","getItem","deserializedArray","JSON","parse","param","Parameter","deserialize","Object","assign","console","warn","window","addEventListener","paramlist","push","setItem","stringify","map","serialize","initializeSetting","default_values","hasOwnProperty","getSetting","setting","default_value","setting_value","_a","storeSetting","value_internal","type","userVisible","sync","step","Actions","range","unit","options","setValue","setRange","setStep","setUnit","setShaderName","shader_name","addOption","option","registerAction","Name","Action","ParameterAction","executeAction","action","find","serialized_object","InitializationService","positionService","SERVER_URL","SOURCELIST_URL","STATUSLIST_URL","SOURCEINFO_URL","INITIAL_LAYERS_URL","TILESIZE_URL","SAMPLE_URL","VERSIONS_URL","PRELOAD_ALL","PRODUCTION","LOD","FOV_LR","FOV_UD","DOME_FRUSTRA","SceneName","tilesize","EARTH_RADIUS","versionInfo","ServiceBarrier","then","dome_mode","camera_rotation_offset","clearcolor","fontsize","document","querySelector","style","displacement_scale","light_direction","synchronized","location","origin","init_barrier","loadVersionInfo","frustra","active","refresh_tile_size","GLBarrier","async","RenderService","ModelRepositoryService","add_from_urls","getTileWidth","getTileHeight","getVersionInfo","versions","fetch","json","key","keys","attribute","version","sort","initialize","search_str","search","hash_str","hash","ilc","encodeURIComponent","load_initial_layers","error","message","parts","raw_value","decodeURIComponent","bool","v2","v3","num","parseFloat","str","SynchronizationService","tryStart","config","SerializationService","deserializeScene","MouseMoveEvent","KeyDownEvent","event","keycode","code","MouseDownEvent","InteractionStateChangedEvent","old","state","InteractionState","InteractionService","mouseMoveHandlers","Map","mouseUpHandlers","mouseDownHandlers","keyDownHandlers","lastMousePosition","touchStartHandlers","touchEndHandlers","touchMoveHandlers","interactionState","Move","clientX","clientY","has","target","get","defaultHandler","buttons","defaultTouchHandler","set","touchMoveHappened","me","MouseEvent","dist","y1","y2","touches","currentTouch","previousTouches","lastTouches","movementX","movementY","DebugService","putDebug","commitDebug","old_touch_dist","new_touch_dist","zoom","old_angle","new_angle","angle_diff","preventDefault","Overlay","OverlayService","addCurrentLayerOverlay","Measure","MeasurementService","set_start","ctrlKey","set_end","gamepad","id","gamepadid","index","gp","Navigator","getGamepads","requestAnimationFrame","updateGamepad","toggle_rotation_lock_energy","getGamepad","left_stick_x","left_stick_y","right_stick_x","right_stick_y","speed","threshold","zoom_speed","left_back_trigger","right_back_trigger","button_a","button_b","pressed","mousedown","button_left_shoulder","button_right_shoulder","dpad_left","dpad_right","dpad_up","dpad_down","TimeService","moveTimeStart","moveTimeEnd","moveTimeEarlier","moveTimeLater","increaseTimeRange","reduceTimeRange","navigator","touchstart","setInteractionState","getInteractionState","getTarget","Shaders","STITCHING_PYRAMID_SLOPE_WIDTH","GLService","gl","REQUIRED_EXTENSIONS","Modules","GL","init_extensions","loadShaders","create_geometry","raiseFrameDoneEvent","getContext","Extensions","createVertexShader","source","vs","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","i","join","createFragmentShader","fs","FRAGMENT_SHADER","createProgram","vshader","fshader","program","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","detachShader","deleteShader","uniforms","ACTIVE_UNIFORMS","o","getActiveUniform","getUniformLocation","attributes","ACTIVE_ATTRIBUTES","getActiveAttrib","getAttribLocation","module_name","module","program_name","program_source","vertex","fragment","prog","extension","getExtension","Geometries","tile","create_tile_geometry","quad","create_quad_geometry","arrow","create_arrow_geometry","arrow_normals","create_arrow_normals","tracers","create_tracer_geometry","lines","create_line_segment_geometry","selection_box","create_selection_box_geometry","stitching","create_stitching_pyramid_geometry","geometry","buffer","createBuffer","start","mode","TRIANGLES","bindBuffer","ARRAY_BUFFER","divs","stepsize","floor","i2","bufferData","STATIC_DRAW","gi","ifrac","k","j","jfrac","TRIANGLE_STRIP","require","POINTS","GEO_COUNT","create_tracer_line_geometry","a_index","colormaps","author","url","license","symmetric","c3g_string","tex_buffer","Uint8Array","linear_interpolation","ColormapService","precomputed_gradients","initColormaps","getColormapNames","getColormapByName","maps","createTexture","bindTexture","TEXTURE_2D","texImage2D","RGB","UNSIGNED_BYTE","texParameteri","TEXTURE_MIN_FILTER","LINEAR","TEXTURE_MAG_FILTER","NEAREST","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","get_CSSGradient","direction","getNextColormap","currentName","indexOf","getPreviousColormap","PRELOAD_STEPS","TileData","dispose","texture","isTexture","deleteTexture","ArrayData","isBuffer","deleteBuffer","TileRequest","expirationFrame","tilePath","heightIndex","timeIndex","layer","zsteps","timesteps","time","ArrayRequest","FailedRequest","should_retry","Date","attempts","new_attempt","attempt","TileCacheService","loading","ratio","allow_preload","frameCounter","maximum_loading","drop_after","retrying_independently","dataDB_Barrier","DBOpenRequest","indexedDB","open","onerror","ev","onsuccess","dataDB","onupgradeneeded","createObjectStore","detailedData","LRUMap","array_queries","arrays_loading","Set","tile_queries","tiles_loading","empty_paths","available_queried_elements","failed_paths","get_gl","shift","prototype","call","get_perf_stats","limit","tile_path","heightindex","timeindex","instance_name","layer_name","array_path","store_arraybuffer_db","data","transaction","db_request","objectStore","put","commit","load_arraybuffer","cb","cbe","http_get","XMLHttpRequest","responseType","onprogress","onload","status","response","statusText","onabort","send","load_tile_data_for","layer_type","load_array_data_for","get_tile_data","hindex","resolve_height","tindex","resolve_time","get_tile_data_direct","get_tile_data_internal","get_tile_data_range","copied_tile","max_zoom_level","value_range","req_tile","first","coord_offset","coord_scale","get_array_data_tiled_internal","get_array_data_tiled","timeStart","timeEnd","times","getTimeTileForLayer","get_array_data","get_array_data_internal","reset_queried","clear","is_complete","load_queried","display_time","getMeanTime","tqs_sorted_local","delete","a_","b_","aqs_sorted_local","free_space","q","pop","byteLength","a_view","DataView","referencePoint","getFloat64","elements","td","Infinity","RGBA","floats","LUMINANCE","FLOAT","GlobalTimeRangeChangedEvent","rlr","globalMin","globalMax","renderLayerRanges","CurrentTimeChangedEvent","secondary","time_min","time_max","TIMESTEP_COUNT","render_layer_ranges","overall_range","value_min","value_max","RenderLayerService","get_visible_renderlayers","l","getTimeRange","reduce","isFinite","PlaybackService","stop_playing","begin_playing","togglePlaying","reset","setCurrentTimeRange","time_distance","time_range_step_amount","time_step_min_new","time_step_max_new","time_distance_new","time_center","time_min_new","time_max_new","real_min","real_max","getOverallTimeRange","getCurrentTimeRange","selection","timerange","split_3","one_third","second","third","range_len","range_intersects","get_timetiles_by_limit","total","iteration_limit","tilecount_limit","ranges","new_ranges","filter","sr","mapped","flat","max_time_level","get_parameter_int","paths","RenderGroup","children","UIDService","getNextTopicId","remove","setVisibility","visible","isGroup","getGroupById","isLayer","getLayerById","getAnyVisible","getAllVisible","getLayerInstances","getGroupInstances","hasChild","some","getExtent","extents","base_extent","getVerticalBoundsWorldspace","base_bounds","getVerticalBoundsNative","next_elem","raiseLayersChanged","layer_id","prev_elem","isFirstLayer","isLastLayer","serialized","SelectedLayerChangedEvent","selectedLayer","LayersChangedEvent","layers","groups","selected_layer_id","selected_layer","vertical_bounds_world_space","default_group","selected_group","addLayer","group","addGroup","parentGroupId","parent_group","replaceLayer","oldLayer","newLayer","is_selected","getSelectedLayer","selectLayer","selectGroup","getGroups","values","getLayers","get_euclidian_global_height_range","getGlobalHeightRanges","slots","slot","datarange","slot_zrange","zrange","getGlobalExtent","layerDown","groupForLayer","layerUp","isSelectedLayer","setSourceOnLayer","source_slot_name","serializeRenderLayer","slot_index","findIndex","getPath","splice","deserialized","deserializeRenderLayer","_b","_d","colormapfilter","filterPipeline","deleteLayer","deleteGroup","deleteContents","groupForId","Source","SourceLayer","get_time_limits","get_parameter","SourceLayerInfo","end","starti","endi","zi","pathForSourceAndLayer","SourceStatus","fromJSONObject","jobj","status_entry","error_message","getError","SourceInfoService","status_entries","everything_loaded","source_layer_infos","source_list","loading_interval_handle","source_barrier","refresh_status_entries","setInterval","everythingLoaded","clearInterval","wait_for_layers_to_be_available","get_source_layer_info_by_path","statuslist","statusproto","old_status","load_source_info","sourcename","source_info_proto","localeCompare","getBarrier","sli","get_all_source_layer_infos","get_all_status_infos","SerializedOverlay","sourcelayerinfo","information","component","overlayHint","updateScreenPosition","screen_position","applyScaling","createOverlay","OverlaysChangedEvent","overlays","next_overlay_id","to_delete","overlay","removeOverlay","addOverlay","overlay_id","LayerMetadataService","isUpToDate","coord","getOverlayById","getOverlaysByLayer","getOverlays","DialogBoxEvent","popup","args","eventType","box","arguments","SerializedDialog","DialogBox","title","anchor","referenceTransform","pos_x","innerWidth","pos_y","innerHeight","pos_z","containedComponent","size_x","size_y","centered","fromSerialized","contained_component","reference_transform","DraggingOrientation","DialogBoxService","dialogBoxes","insert","eventArgs","try_insert","focus","update_above","tmp","FPS_LOWER_BOUND","FPS_UPPER_BOUND","FPS_MEASUREMENTS","MIN_HEIGHT","LOADING_TIMEOUT","RESOLUTION_SCALES","FORCED_RERENDER_INTERVAL","mayResize","clientWidth","clientHeight","currentWidth","currentHeight","aspectRatio","measurements","current_measurement","performance","currently_measuring","currentFPS","currentFPSLowWarningSent","needsRerender","is_firefox","userAgent","recommendSize","StartMeasurement","EndMeasurement","time_sum","time_average","SetClientDimensions","GetRecommendedDimensions","GetFPS","NeedsRerender","isFirefox","RequiredTilesChangedEvent","required_tiles","new_tiles","obsolete_tiles","RequiredTilesService","last_required_tiles","planesets","clearRequiredTiles","addRequiredTiles","matrix_world_inverse","projection_matrix","mvcols","finalizeRequiredTiles","get_required_tiles_internal","t_","getRequiredTiles","getTilespaceBounds","verticalRange","filter_again","tag","tiles","is_clipping","heightrange","bb","clipplanes","every","targetcount","ntiles","flatMap","getRequiredTilesBoundedDisplaced","getRequiredTilesBounded","height_extent","Filter","shader","human_readable_name","preexecute","context","tex_unit_index","useProgram","uloc","uniform1i","uniform1f","cm","activeTexture","TEXTURE0","uniform2f","uniform3f","tex","LayerFilter","execute","depthFunc","ALWAYS","canvas","depth","normal","worldPos","enableVertexAttribArray","vertexAttribPointer","drawArrays","disableVertexAttribArray","LESS","CompositionFilter","layerSource","color","bindFramebuffer","FRAMEBUFFER","framebuffer","assignDrawBuffers","Ocean","compositing","ocean","Atmosphere","atmosphere","ViewportFilter","viewport","dome_top","dome_side","dyed","single_projector","frustum","create_texture","format","wrap","LayerPipelineFramebuffer","ctx","flip_state","ext","WEBGL_draw_buffers","input_framebuffer","createFramebuffer","value_1","framebufferTexture2D","COLOR_ATTACHMENT0_WEBGL","depth_1","DEPTH_COMPONENT","UNSIGNED_INT","DEPTH_ATTACHMENT","COLOR_ATTACHMENT1_WEBGL","COLOR_ATTACHMENT2_WEBGL","worldPosReadFramebuffer","worldNormalReadFramebuffer","filter_framebuffer_1","COLOR_ATTACHMENT0","filter_framebuffer_2","value_2","depth_2","readInputFramebuffer","cam_pos","cam_uec","readPixelArray","readPixels","result_value","result_coord","result_z","result_meshZ","result_normal","result_exists","meshZ","exists","drawBuffersWEBGL","setInputFramebuffer","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","setFxFramebufferAndGetTextures","getResultTextures","deleteFramebuffer","CompositionPipelineFramebuffer","DisplaySection","camAdjust","vFilter","cameraAdjustment","viewportFilter","blob_submission_complete","force_dome_mode_update","active_composition_pipeline","domeMode","sections","is_complete_frame","nextFrameCallbacks","internalHeight","internalWidth","layerPipeline","compositionPipelineFB1","compositionPipelineFB2","resized","get_write_composition_framebuffer","get_read_composition_framebuffer","flipComposition","executeLayer","mc","layerMetaData","isNaN","source_textures","layer_source","compositionFilter","forceDomeModeUpdate","loop","needs_rerender","recommended_width","recommended_height","dome_backbuffer_side","getBoundingClientRect","fr_id","getSelectedId","getConfigIds","getFrustumForId","getBlendMask","getWarpTexture","getBlendGamma","RecordingService","handlePlayback","update","requestStitchedTiles","StitchedTilesService","prepareStitchedTiles","acceptsFrames","ParticlesService","prepareParticles","renderPipeline","toBlob","blob","submitFrameBlob","handleNextFrame","FlexibleTimeBaseService","count_frame","clearColor","section","target_fb","has_transparency","ExtentVisualizationService","renderLayer","enable","BLEND","disable","DEPTH_TEST","blendFunc","ONE","nextFrame","callback","nextUid","nextTopicId","getUid","topic","advanceTopicIdTo","min_id","StitchedTileData","env","float","depth_rb","framesUnused","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","updateBounds","sources","my_extent","mbx0","mby0","mbx1","mby1","updateSize","StitchedTileRequest","stitched_type","require_new_stitching","requested_stitched_textures","resolution","stitched_textures","gl_","shared_depth_buffer","createRenderbuffer","renderbufferStorage","DEPTH_COMPONENT16","req_tiles","renderStitchedTile","stitchedTilePath","s_tile","buff","texs","ts0","ts1","time0","time1","timedelta","fac1","fac0","tmp_arr0","tmp_arr1","mat","tmp_arr","uniformMatrix4fv","getStitchedScalarTiles","getStitchedColorTiles","getStitchedVector2Tiles","sourceu","sourcev","LayerMetaDataService","SamplePoint","SamplePointData","extent_buffer","view","readOffsetPosition","POSITION_LENGTH","VEC3POINT_LENGTH","readPosition","getFloat32","FLOAT_LENGTH","readTime","readPoint","NaN","writePoint","point","setFloat32","getValue","Symbol","iterator","positions","positionsToIdMap","posmap","obj_index","Merged","data1","data2","merger","longer","shorter","slice","shorter_objmap","pos_index","id_if_any","Downsampled","max_number_points","points_per_point","new_data","SamplingResult","timeRange","components","PointSamplingService","sampleUECArea","progress_callback","main_data","ProgressReportingDownloadService","downloadArrayBuffer","bbox_request_url_for_params","round","progress","sampleSelection","region","_progress","dataslot","additional_dataslot","merge_into_different_components","typeHint","partscount","bbox_request_url_for_selection_slot_and_time","main_sample_data","additional_data","additional_sample_data","merged_data","pos_min","pos_max","height_min","height_max","t_min","t_max","ParameterChangedEvent","ParameterBroadcastService","parameterChanged","Particles","frames_unused","random_array","random","acos","lifetime","particle_data_0","framebuffer_0","particle_data_1","framebuffer_1","get_fb_data_pingpong","sourceOffset","targetOffset","get_data","ParticlesRequest","requested_particle_sets","particle_count_sqr","particle_sets","global_noise_texture","particles","calculateOneParticleSet","req","particlesPath","new_particles","stitched","fb_data","texi","getParticleCount","getParticles","CameraService","getModelMatrix","getCameraMatrix","StaticToBlobService","blobs","blob_url","URL","createObjectURL","getBlobUrl","method","xhr","loaded","_e","onreadystatechange","readyState","DONE","PlaybackStateChangedEvent","playback_state","playback_overridden","stalled","speed_seconds_per_second","interval_handle","setTimerangeToCorrectPosition","left_time","gtr","time_range_length","setPlaybackState","setSpeed","tr","ctr","time_range_end","start_cam_snap","format_cam_snap","RenderSourceSlot","shaderName","mixing","RenderSource","getSourceInfos","slis","slot_order","ordered_slis","order","getVerticalBoundsWorldSpace","e_layers","val","applyOffset","shaders","TileRenderSource","tileSource","displacement_correction","displacement_offset","z_level","min_scaled","max_scaled","nb","tlc","brc","st","count_timestep_slots","entries","count_empty_slots","slots_internal","slots_used","hs","time_index","height_index","l_name","layer_extent","cam_position","texture_count","has_data","slot_internal","ColormapFilter","colormap_param","colormap_min","colormap_max","sup_min","sup_max","effects","colormap","HillShadingFilter","hill_shading","cam","clat","clon","caz","w_normal","w_tangent","w_cotangent","w_tangent_2","w_cotangent_2","ld_param_val","light_dir","VectorPointRenderSource","arrowSource","tm","t_radius","t_start","t_end","buffs","arrow_geo","ANGLE_instanced_arrays","vertexAttribDivisorANGLE","drawArraysInstancedANGLE","LineRenderSource","line_geo","screensize","VectorTracerArrowRenderSource","particleArrows","particle_speed","particle_lifetime","particle_amount","point_size","vect","disp","part","pdata","PieChartPointRenderSource","scalarPieChartPointSource","slots_active","buffers","slotname","source_buffs","attribute1_buff","PointCloudRenderSource","scalarPointSource","src","actual_tiles","temp","clip_min_x","clip_min_y","clip_max_x","clip_max_y","DomeLightingFilter","dome_lighting","ColorPointCloudRenderSource","colorPointSource","RenderLayer","ticksHint","uid","RenderLayerFactory","createColormapScalarLayer","displacement","new_source","zstep","new_layer","default_overlay","colormap_filter","blending","createColormapDifferenceLayer","base_parameter","delta_parameter","base_colormap","base_min","base_max","delta_min","delta_max","createImageLayer","image","createDomeLightImageLayer","createPointCloudLayer","createColorPointCloudLayer","createPieChartPointsLayer","attribute1","extra_attributes","long_name","slotnum","min_sum","max_sum","cmap","createLinesLayer","createVector2ArrowLayer","datau","datav","u_colormap","u_min","u_max","v_min","v_max","total_min","total_max","createVec2PointsLayer","ExtentRenderLayer","showExtent","setExtent","setZRange","setVisible","hideExtent","ExtentRenderSource","setColor","srect","minmax","cv","uniform4f","TextRenderingService","textureSize","font","el","createElement","display","backgroundColor","body","appendChild","cache","fillStyle","textBaseline","renderText","text","dims","measureText","imdims","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","clearRect","fillText","imagedata","getImageData","DebugEvent","debugMessage","debug_text","SynchronizationMessageEvent","websocket","lastMessagesByType","getTime","time_event","ALLOWED_SETTINGS","includes","stop","close","sendSocket","WebSocket","OPEN","syncScene","scene","serializeScene","handleIncomingMessage","rebroadcast","messagetype","reload","posmsg","trange","tmsg","positionMessage","timeMessage","sceneMessage","settingMessage","SYNCSERVER_URL","replace","onopen","info","joinmsg","onclose","msg","nbh_space","neg_sign","mul_sign","sci_notation_prefix","si_prefixes","sci_notation_exp","FormattingService","num_to_string_unit","decimals","separator","number_to_string","num_to_string_unit_si","magnitude","num_decimals","prefix_index","color_0_1_to_hex","prefix","leftpad","toString","color_vec3_to_hex","colorvec","color_hex_to_vec3","hexstr","rstr","gstr","bstr","rvalue","parseInt","gvalue","bvalue","log10","decimals_for_range","delta","decs","latitude_to_string","longitude_to_string","UEC_to_coord_string","uec","coord_to_string","Coord_to_coord_string","int_to_string","nd","whole","frac","tlen","repeat","time_to_string","toISOString","time_to_string_shorter","strdatetime","strdate","strtime","hour","minute","duration_milliseconds_to_string","duration","duration_map","unit_value","duration_string_to_milliseconds","trim","current_number_string","numbers","char","duration_map_entry","entry","undefined","current_number","TarBall","gen_header","buf","tenc","TextEncoder","encode","checksum","RecordingMessage","timeOffset","PlaybackStateEvent","event_number","playback","RecordingStateEvent","recording","startRecording","stopPlayback","recordingActions","recordingStartTime","isRecording","savePositionAndTime","handleSynchronizationMessage","message2","stopRecording","startPlayback","with_frame_capture","frameArray","set_lock_state","isPlayingBack","first_event_index","playbackStartTime","first_time_event","playback_state_helper","time_warp_state","time_warp_target","time_warp_target_time","time_warp_start_time","lerp","xmin","xmax","ymin","ymax","tdiff","last_event_index","this_frame_events","handledMessageTypes","broadcastSynchronizationMessage","first_time_range","last_time_range","saveZipFrames","scene_name_string","replaceAll","vwidth","vheight","encode_string_bash","ArrayBuffer","encode_string_cmd","Blob","render_frame_number","a_elem","getElementById","setAttribute","click","callback_id","clearTimeout","goEndPlayback","goStartPlayback","playbackOffsetTime","tracked_rt","internal_time","framerate","locked_framerate","valid_frame","rt_now","locked","Frustum","configurations","frusta","rot_orient_str","region_param","display_region_param","setSelectedId","createNullTextures","setRotationOrderString","null_blend","null_warp","warpTexture","selectedId","selectedConfig","blend_promise","warp_promise","blend","arrayBuffer","warp","warp_buff","blend_buff","blendMask","blend_gamma_embedded","genRotationOrders","base_orders","ModelObject","vertexData","normalData","uvData","bbox","vertexCount","load_from_obj","obj","vertices","normals","uvs","face_vertex_indices","face_normal_indices","face_uv_indices","line","uv","face_points","vertex_indices","uv_indices","normal_indices","vertexi","uvi","normali","vertices_f32","vertex_counter","vis","normals_f32","normal_counter","uvs_f32","uv_counter","models","mesh_url","texture_url","cube_str","img","Image","decode","model","get_model","SERIALIZATION_VERSION","getSceneString","deserializeScene_v1","deserializeScene_legacy","selectedLayerName","max_id","serialized_group","render_group","default_group_id","selected_group_id","dialogs","dialog","cameraPosition","deserializeRenderLayerLegacy","source_params","filters","composition_parameters","deserializeRenderLayer_v1","_f","_g","_h","_j","_k","_l","_m","_o","_p","extra_slis","source_info","_q","_r","filter_instance","_s","typeClass","filter_pipeline_params","svgns","screen_pos_of_uec_and_height_earth_radii","screen_pos","create_svg_line","stroke","strokeWidth","element","createElementNS","setAttributeNS","create_svg_text","innerHTML","fill","move_svg_line","move_svg_text","axis_name_to_descriptor","Axis","kind","parent_svg","breaks","tick_elems","current_exponent","tick_len","center","base_line_elem","end_tick_elem","name_text","distance_text","offset_screen_position_by_value_and_exponent","exponent","recompute","orthogonal_unit","end_in_bounds","margin","update_lines","end_text_distance","ScaleIndicatorService","are_axis_ends_in_bounds","x_axis","y_axis","z_axis","recompute_ends","center_uec","center_height","scale_indicator_visible","fill_style","svg_element","center_circle","camera_position","uec_camera_pos","camera_height","frame_bbox","pixel_pos","set_visibility","opacity","pos_height_to_geocentric","euclidean_distance","pos1","height1","pos2","height2","geo_coord1","geo_coord2","measurement_visible","measure_line_black","measure_line_white","strokeLinecap","measure_label","fontWeight","paintOrder","start_uec","end_uec","start_pixels","start_height","end_pixels","end_height","textContent","ServicesClass","initGL","SourceComponent","Vue","max_tile_calculation_duration","last_async_time","mounted","hostcanvas","$el","getElementsByTagName","gl_context","oncontextmenu","svg_resize_handler","scale_svg","svg_size","svg_height","svg_width","measure_svg","deltaY","coords","vertical","old_position","__decorate","Component","mousewheel_evt","container_left","container_width","lrange","class","is_active","left_from_range","width_from_range","_v","label_min","label_max","label_mid","label_gmin","label_gmax","TimeSlider","zoom_ratio","pointer_left","visbounds","innerbounds","update_labels","gmin_value","gmax_value","slider_move","clientRect","mouseX","xpos","rlen","minref","maxref","playbutton_click","props","Number","angleX","compass_click","ref","angleZ","valid_coords","coordstring","valuestring","heightstring","checked","toggle_rotation_lock","toggle_light_lock","bloburl","SvgIcon","$forceUpdate","String","Compass","updateInspectLabel","position_from_overlay","zIndex","$event","move_to","mouseenter","mouseleave","coordinates","stopPropagation","remove_overlay","ScalarOverlay","timeout","$props","TurbidityOverlay","sample_value","min_time","max_time","min_values","max_values","updateScale","scale","$$v","editEnabled","domProps","editDone","checkEnter","gotFocus","apply","decrease","increase","NumberInput","mousemove","mouseup","keyCode","setSelectionRange","destroyed","travelledDistance","$emit","mscale","tw","getElementsByClassName","default","required","ScaleOverlay","recompute_value","scale_param","Overlays","hovered","formatter","ColorOverlay","background","getCurrentColormapCss","ticks","tick","break","label","Scale","boxheight","labels","selectedValue","selectedIndex","break_from_value","vmax","vmin","label_text","LoadingIndicator","update_ratio","update_label_text","register_mousedown","showSaveMenu","showSettings","showPlayback","interactionStateMove","modeMove","interactionStateOverlay","modePin","interactionStateMeasure","modeMeasure","is_scale_indicator_visible","toggleScaleIndicatorVisibility","layerSettings","showManual","showProgramStatus","menucomponent","istate","graph","graphid","showDebug","showRecording","dbox","ScalingFactor","$$selectedVal","Array","selected","_value","multiple","scalingFactorChanged","TargetTileCount","targetTileCountChanged","AlwaysRerender","isArray","_i","$$a","$$el","$$c","$$i","concat","setAlwaysRerender","ClearColor","setClearColor","composing","hideUI","WaitForLoad","setWaitForLoad","FontSize","fontSizeChanged","clearSettings","clearCache","SelectedGamepad","selectGamepad","Gamepads","UIVisible","setUIVisible","DomeMode","selectDomeMode","DisplayIds","DisplayRegion","selectDisplayRegion","AxisOrder","selectAxisOrder","AxisOrders","AxisOrderHumanReadable","setDomeTilt","DomeTilt","Synchronized","setSynchronized","Versions","SceneError","foldedOut","toggleFold","_t","FoldGroup","expanded","Boolean","Settings","shown","stupid","getters","renderlayers","deleteDatabase","lut","AxisOrderChanged","created","registerProperty","refreshValues","getter","gamepadhandler","downloadLayerConfig","renderlayertext","btoa","uploadLayerConfig","handleLayerConfig","input","file","files","resp","Response","alert","hide","ScrollBox","innerwidth","beforeUpdate","AboutDialogue","box_id","dialog_mousedown","move_start","closeDialog","resize_start","DialogBoxComponent","dx","mousestart","dy","draggingOrientation","Left","startpos","Up","Right","Down","validate_position","add_layer","TypeSelectionDialog","sourceSelectionCallback","_","typeFilter","needs_source","sli1","sli2","other_sli_name","isDefault","startDrag","allowDrop","drop","rerender","zoomToLayer","$set","createLayer","createGroup","groupDelete","getLayer","isSelected","layerDelete","getGroup","LayerGroupComponent","dataTransfer","setData","dropEffect","targetId","droppedIdString","getData","droppedId","source_group","targetGroup","target_index","composedPath","classList","contains","rect","yrel","zbounds","newGroup","LayerStack","categories","sources_for_category","category","toggle_category","expanded_category","rows_for_source","toggle_source","expanded_source","row","highlighted_layer","return_source","variant","clearSlot","SourceLayerBadge","SourceSelectionDialog","filtered_sources","filter_term","type_filter","toLowerCase","original_layertype","layertype","sort_filtered_by","current_source","currentSource","refresh_sources","SVGIcon","time2","reverse","playpause","playbackState","forward","internal_speed_str","internal_speed_ok","speedChanged","PlaybackComponent","speed_milliseconds","updateTime","pbs","changeId","selectSource","pindex","attribution","change","getCSSGradient","textShadow","toggle_dropdown","arrow_key_interaction","dropdown_open","colormap_name","set_value","triggerAction","sun_left","sun_top","moon_left","moon_top","VectorInput","start_value","start_mouse","r_axis","r_amount","ParameterComponent","cn","refreshRequester","marked","LayerComponent","layerCanBeDeleted","max_dois","doi_counter","test","doi","match","changeHandler","t2s","filterFromLayerAndIndex","DebugComponent","recordingEventCount","playbackEventCount","record","frameRecord","exportActions","importActions","loadActionsFile","RecordingPlaybackComponent","re","pe","bytes","status_list","ProgramStatusComponent","createLink","SceneLink","CopySuccessful","copyLinkToClipboard","SaveDialogue","clipboard","writeText","catch","selected_article","selectArticle","table_of_contents","item","ManualComponent","selected_article_html","allowed_files","last_slash_index","lastIndexOf","article_raw","article_md","manual_text","links","querySelectorAll","link","getAttribute","removeAttribute","images","dialogboxes","update_handler","box_el","$refs","openabout","LogoComponent","threedee","timeslider","compass","loadingindicator","logo","productionTip","errorHandler","vm","warnHandler","template","App","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__","deferred","O","chunkIds","fn","priority","notFulfilled","fulfilled","definition","defineProperty","enumerable","globalThis","Function","prop","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","__webpack_exports__"],"sourceRoot":""}