{"version":3,"file":"futures.176f8eb1.js","mappings":"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CnB+R,EAAS/R,EACT6S,EAAWZ,aAGjB,IAEA,8FC/BO,IAAK5H,EAAQ,SAARA,GAAQ,OAARA,EAAQ,gBAARA,EAAQ,0BAARA,EAAQ,gBAARA,CAAQ,MAMRR,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,UAAhBA,EAAgB,aAAhBA,EAAgB,WAAhBA,EAAgB,UAAhBA,EAAgB,WAAhBA,EAAgB,YAAhBA,CAAgB,MAShBf,EAAU,SAAVA,GAAU,OAAVA,EAAU,UAAVA,EAAU,oBAAVA,EAAU,uBAAVA,CAAU,MAMVR,EAAU,SAAVA,GAAU,OAAVA,EAAU,YAAVA,EAAU,cAAVA,EAAU,yBAAVA,EAAU,YAAVA,EAAU,uBAAVA,EAAU,YAAVA,EAAU,gCAAVA,CAAU,MAUVL,EAAS,SAATA,GAAS,OAATA,EAAS,UAATA,EAAS,4BAATA,EAAS,wBAATA,CAAS,6JClEjBH,EAAmB,CACrBkL,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,WAGT3c,EAAiB,CACnBqB,EAAG,IACH2B,EAAG,IACHC,EAAG,EACHC,IAAK,EACLC,EAAG,GACHC,GAAI,GACJb,EAAG,GACHc,IAAK,IAGHuZ,EAAe,CACjBvb,EAAG,EACH2B,EAAG,IACHC,EAAG,EACHC,IAAK,EACLC,EAAG,GACHC,GAAI,GACJb,EAAG,GACHc,IAAK,IAGHwZ,EAAgB,CAClBxb,EAAG,EACH2B,EAAG,IACHC,EAAG,EACHC,IAAK,EACLC,EAAG,GACHC,GAAI,GACJb,EAAG,GACHc,IAAK,IAGHxD,EAAqB,SAAUid,EAAiCC,GAA+C,IAA7Bra,EAAQtC,UAAAuB,OAAA,QAAA2F,IAAAlH,UAAA,GAAAA,UAAA,GAAGoR,EAC/F,IAAIzP,EAAS,CACX4D,KAAMmX,EAAQC,GACdpF,KAAMmF,EAAQC,IAGZC,EAAclb,EAAAA,MAEfC,OAAO,CAACA,EAAO4D,IAAK5D,EAAO4V,MAC3BxV,MAAM,CAAC,EAAGO,EAASga,OAAO/a,OAAS,IAEtC,OAAO,SAAUO,GACf,GAAI,MAAOA,EA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CA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,QAg/BAiL,EAAiD,CAC5D,CAACrK,EAAAA,GAAQsK,SAAUrW,EACnBsW,GAAItW,EACJuW,IAAKvW,EACLwW,IAAKxW,EACLyW,IAAKzW,EACL0W,IAAK1W,EACL2W,QA77HmB,CACnBzL,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,WAm9FXyL,IAAKb,EACLc,KAAMd,EACNe,KAAMf,EACNgB,IAAKhB,EACLiB,IAAKjB,EACLkB,KAAMf,EACNgB,OAAQlX,EACRmX,OAAQlB,EACRmB,KAAMpX,EACNqX,UA19FuB,CACvBnM,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,WAg/DXmM,cAAetX,EACfuX,cAAevX,GAGJwX,EAAuD,CAClE,CAACzL,EAAAA,GAAQsK,SAAUF,EACnBG,GAAIH,EACJI,IAAKJ,EACLK,IAAKL,EACLM,IAAKN,EACLO,IAAKP,EACLQ,QA3gC0B,CAC1BzL,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,QAiCXyL,IAAKT,EACLU,KAAMV,EACNW,KAAMX,EACNY,IAAKZ,EACLa,IAAKb,EACLc,KAAMd,EACNe,OAAQf,EACRgB,OAAQhB,EACRiB,KAAMjB,EACNkB,UAAWlB,EACXmB,cAAenB,EACfoB,cAAepB,GAGJsB,EAviIiB,CAC5BvM,OAAQ,CACN,UACA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","sources":["webpack://@finviz/website/./js/app/futures/components/BarChart.tsx","webpack://@finviz/website/./js/app/futures/components/CanvasSparkline.tsx","webpack://@finviz/website/./js/app/futures/constants/constants.ts","webpack://@finviz/website/./js/app/futures/dispatcher/appDispatcher.ts","webpack://@finviz/website/./js/app/futures/actions/futuresActionCreators.ts","webpack://@finviz/website/./js/app/futures/components/ChartMenu.tsx","webpack://@finviz/website/./js/app/futures/components/Divider.tsx","webpack://@finviz/website/./js/app/futures/components/Labels.tsx","webpack://@finviz/website/./js/app/futures/components/Tile.tsx","webpack://@finviz/website/./js/app/futures/components/redesign/MapTile.tsx","webpack://@finviz/website/./js/app/futures/components/redesign/TileWithBorder.tsx","webpack://@finviz/website/./js/app/futures/components/Layout.tsx","webpack://@finviz/website/./js/app/futures/components/Menu.tsx","webpack://@finviz/website/./js/app/futures/components/MenuNew.tsx","webpack://@finviz/website/./js/app/futures/futures.tsx","webpack://@finviz/website/./js/app/futures/index.tsx","webpack://@finviz/website/./js/app/futures/stores/rowsStore.ts","webpack://@finviz/website/./js/app/futures/stores/store.ts","webpack://@finviz/website/./js/app/futures/stores/tilesStore.ts","webpack://@finviz/website/./js/app/futures/types.ts","webpack://@finviz/website/./js/app/futures/utils.tsx","webpack://@finviz/website/./js/app/maps/types.ts","webpack://@finviz/website/./js/app/shared/components/ForexFuturesCryptoSettings.tsx","webpack://@finviz/website/./js/app/shared/hooks/use-on-settings-click.tsx","webpack://@finviz/website/./js/app/shared/components/FuturesForexCryptoTimeframeBar.tsx","webpack://@finviz/website/./js/app/shared/components/Sparkline.tsx","webpack://@finviz/website/./js/app/shared/getInitChartConfig.ts","webpack://@finviz/website/./js/app/shared/gradients.ts","webpack://@finviz/website/./js/app/shared/hover-chart.ts","webpack://@finviz/website/./js/app/shared/retinafy.ts","webpack://@finviz/website/./js/main/components/delayed.tsx","webpack://@finviz/website/./js/main/components/icon/svg.tsx","webpack://@finviz/website/./js/main/components/notification/hooks.ts","webpack://@finviz/website/./js/main/components/notification/notification-wrapper.tsx","webpack://@finviz/website/./js/main/components/notification/with-notification-context.tsx","webpack://@finviz/website/./js/main/components/notification/notification.tsx","webpack://@finviz/website/../node_modules/flux/index.js","webpack://@finviz/website/../node_modules/flux/lib/Dispatcher.js","webpack://@finviz/website/../node_modules/flux/lib/invariant.js","webpack://@finviz/website/../node_modules/keymirror/index.js","webpack://@finviz/website/../node_modules/prop-types/factoryWithThrowingShims.js","webpack://@finviz/website/../node_modules/prop-types/index.js","webpack://@finviz/website/../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://@finviz/website/../node_modules/react-router-dom/dist/index.js"],"sourcesContent":["import classnames from 'classnames'\r\nimport * as d3 from 'd3'\r\nimport { CSSProperties, Component, MouseEvent } from 'react'\r\n\r\nimport { GradientDefinition } from '../../shared/gradients'\r\nimport { futuresDomains } from '../utils'\r\nimport { generateColorScale as gcs } from '../utils'\r\n\r\nvar generateColorScale = gcs.bind(null, futuresDomains)\r\n\r\ninterface Bar {\r\n label: string\r\n value: number\r\n isInactive?: boolean\r\n}\r\n\r\ninterface BarChartProps {\r\n width: number\r\n barHeight?: number\r\n period: string\r\n //height: number,\r\n //title: string,\r\n //date: string, // TODO\r\n data: Bar[]\r\n onClick?: (bar: Bar) => void\r\n gap: number\r\n gradient?: GradientDefinition\r\n alignHeaderToBars?: boolean\r\n isHorizontal?: boolean\r\n isWrapper?: boolean\r\n}\r\n\r\nclass BarChart extends Component {\r\n state = { hoveredGroup: null }\r\n\r\n static defaultProps = {\r\n gap: 0.5,\r\n }\r\n\r\n render() {\r\n var rows = this.props.data\r\n var labels = rows.map(function (d) {\r\n return d.label\r\n })\r\n\r\n var width = this.props.width,\r\n barHeight = this.props.barHeight || 12,\r\n height = (barHeight + this.props.gap * 2) * rows.length,\r\n leftWidth = 100\r\n\r\n var x = d3\r\n .scaleLinear()\r\n .domain([0, d3.max(rows, (d: Bar) => Math.abs(d.value))!])\r\n .range([0, width - leftWidth - 40])\r\n .nice(6)\r\n\r\n var xAxisTicks = x.ticks(6)\r\n\r\n var y = d3\r\n .scaleBand()\r\n .domain(labels)\r\n .range([0, (barHeight + 2 * this.props.gap) * labels.length])\r\n\r\n var colorScale = generateColorScale(this.props.period, this.props.gradient)\r\n\r\n // so React won't reorder our elements\r\n rows = rows.slice().sort(function (a, b) {\r\n if (a.label < b.label) {\r\n return -1\r\n }\r\n if (a.label > b.label) {\r\n return 1\r\n }\r\n return 0\r\n })\r\n\r\n var header =\r\n // @ts-ignore\r\n {\r\n d: '1 Day',\r\n w: '1 Week',\r\n m: '1 Month',\r\n mtd: 'Month to date',\r\n q: '3 Month',\r\n hy: 'Half year',\r\n y: '1 Year',\r\n ytd: 'Year to Date',\r\n }[this.props.period] + ' Performance'\r\n\r\n return (\r\n \r\n \r\n {header}\r\n \r\n
\r\n {xAxisTicks.map((tick: any) => (\r\n \r\n
{tick}%
\r\n
\r\n ))}\r\n \r\n \r\n {rows.map((row) => {\r\n var large = x(Math.abs(row.value)) > 40\r\n var width = Math.round(x(Math.abs(row.value)))\r\n var style: CSSProperties = {\r\n position: 'absolute',\r\n top: y(row.label)! + this.props.gap,\r\n left: leftWidth,\r\n width: width,\r\n height: barHeight,\r\n ...(!row.isInactive && { background: colorScale(row.value) }),\r\n }\r\n return (\r\n \r\n \r\n {row.value > 0 ? '+' : ''}\r\n {row.value}\r\n \r\n
{row.label}
\r\n \r\n )\r\n })}\r\n \r\n
\r\n
\r\n \r\n )\r\n }\r\n\r\n _onClick = (row: Bar, e: MouseEvent) => {\r\n e.preventDefault()\r\n this.props.onClick?.(row)\r\n }\r\n}\r\n\r\nexport default BarChart\r\n","import * as d3 from 'd3'\r\nimport { Component, createRef } from 'react'\r\n\r\nimport { isFirefoxDesktop } from '../../shared/isMobile'\r\nimport { retinafy } from '../../shared/retinafy'\r\n\r\nvar xCache: Record = {}\r\n\r\ninterface CanvasSparklineProps {\r\n className?: string\r\n data: number[]\r\n dateChanges: any\r\n width: number\r\n height: number\r\n changeDomain: number\r\n change: number\r\n changeOpacity?: boolean\r\n shadow?: boolean\r\n lineColor?: string\r\n textColor?: string\r\n}\r\n\r\nclass CanvasSparkline extends Component {\r\n static defaultProps = {\r\n changeOpacity: true,\r\n }\r\n\r\n canvas = createRef()\r\n declare canvasContext: CanvasRenderingContext2D\r\n\r\n shouldComponentUpdate(nextProps: CanvasSparklineProps) {\r\n // eslint-disable-next-line eqeqeq\r\n return nextProps.data != this.props.data || nextProps.width !== this.props.width\r\n }\r\n\r\n componentDidMount() {\r\n this.canvasContext = this.canvas.current!.getContext(\r\n '2d',\r\n isFirefoxDesktop() ? { willReadFrequently: true } : undefined\r\n )!\r\n this._renderCanvas()\r\n }\r\n\r\n componentDidUpdate() {\r\n this._renderCanvas()\r\n }\r\n\r\n render() {\r\n var { width, height } = this.props\r\n var className = 'sparkline ' + this.props.className\r\n return \r\n }\r\n\r\n _renderCanvas = () => {\r\n var { data, dateChanges, width, height, changeOpacity, shadow, lineColor, textColor } = this.props\r\n\r\n retinafy(this.canvas.current, this.canvasContext, this.props.width, this.props.height)\r\n\r\n // TODO check ci sa zobrazuje posledny den\r\n var xCacheKey = width + '|' + data.length\r\n var x = xCache[xCacheKey]\r\n if (!x) {\r\n x = d3\r\n .scaleLinear()\r\n .range([-1, width + 1])\r\n .domain([0, data.length])\r\n xCache[xCacheKey] = x\r\n }\r\n\r\n var y = d3\r\n .scaleLinear()\r\n .range([height - 8, 0])\r\n .domain(d3.extent(data, (d) => d) as [number, number])\r\n\r\n var changeDomain = this.props.changeDomain\r\n var opacityChange = Math.min(Math.abs(this.props.change), changeDomain)\r\n var textOpacity = changeOpacity ? (0.5 + (0.2 / changeDomain) * opacityChange).toFixed(3) : 1\r\n\r\n this.canvasContext.clearRect(0, 0, width, height)\r\n\r\n if (shadow) {\r\n this.canvasContext.translate(0.5, 0.5)\r\n\r\n this.canvasContext.strokeStyle = 'rgba(34, 38, 47, 0.8)'\r\n this.canvasContext.beginPath()\r\n for (let i = 0; i < data.length; i++) {\r\n this.canvasContext.lineTo(x(i), y(data[i]))\r\n }\r\n this.canvasContext.stroke()\r\n\r\n this.canvasContext.fillStyle = 'rgba(34, 38, 47, 0.8)'\r\n this.canvasContext.textAlign = 'center'\r\n this.canvasContext.font = '7px Lato'\r\n Object.keys(dateChanges).forEach((key) => {\r\n var xPos = x(key)\r\n if (xPos < 8) {\r\n return\r\n }\r\n this.canvasContext.fillText(dateChanges[key], xPos, height - 1)\r\n })\r\n\r\n this.canvasContext.translate(-0.5, -0.5)\r\n }\r\n\r\n this.canvasContext.strokeStyle = lineColor ?? `rgba(255, 255, 255, ${textOpacity})`\r\n this.canvasContext.beginPath()\r\n for (let i = 0; i < data.length; i++) {\r\n this.canvasContext.lineTo(x(i), y(data[i]))\r\n }\r\n this.canvasContext.stroke()\r\n\r\n this.canvasContext.fillStyle = textColor ?? `rgba(255, 255, 255, ${textOpacity})`\r\n this.canvasContext.textAlign = 'center'\r\n this.canvasContext.font = '7px Lato'\r\n Object.keys(dateChanges).forEach((key) => {\r\n var xPos = x(key)\r\n if (xPos < 8) {\r\n return\r\n }\r\n this.canvasContext.fillText(dateChanges[key], xPos, height - 1)\r\n })\r\n }\r\n}\r\n\r\nexport default CanvasSparkline\r\n","import keyMirror from 'keymirror'\r\n\r\nexport const ActionTypes = keyMirror({\r\n INIT: null,\r\n INIT_TILES: null,\r\n\r\n UPDATE_DATA: null,\r\n\r\n CHANGE_TIMEFRAME_STARTED: null,\r\n CHANGE_TIMEFRAME_COMPLETED: null,\r\n CHANGE_TIMEFRAME_FAILED: null,\r\n})\r\n\r\nexport const PayloadSources = keyMirror({\r\n SERVER_ACTION: null,\r\n VIEW_ACTION: null,\r\n})\r\n","import { Dispatcher } from 'flux'\r\n\r\nimport { PayloadSources } from '../constants/constants'\r\n\r\nclass AppDispatcher extends Dispatcher {\r\n handleServerAction(action: any) {\r\n var payload = {\r\n source: PayloadSources.SERVER_ACTION,\r\n action: action,\r\n }\r\n //console.log(action, payload);\r\n this.dispatch(payload)\r\n }\r\n\r\n handleViewAction(action: any) {\r\n var payload = {\r\n source: PayloadSources.VIEW_ACTION,\r\n action: action,\r\n }\r\n //console.log(action, payload);\r\n this.dispatch(payload)\r\n }\r\n}\r\n\r\nexport default new AppDispatcher()\r\n","import { CancelablePromise, apiRequest, setCookieRequest } from '../../../main/services/api'\r\nimport { ActionTypes } from '../constants/constants'\r\nimport AppDispatcher from '../dispatcher/appDispatcher'\r\nimport RowsStore from '../stores/rowsStore'\r\nimport { FuturesDatum } from '../types'\r\nimport { getCookie } from '../utils'\r\n\r\nvar cookieKey = 'finvizFuturesQuotesTimeframe'\r\n\r\nvar getFuturesUrl = function () {\r\n var timeframe = RowsStore.getTimeframe()\r\n return '/api/futures_all.ashx?timeframe=' + timeframe\r\n}\r\n\r\nfunction migrateOldTimeframe(timeframe: string) {\r\n switch (timeframe) {\r\n case 'm5':\r\n return 'i5'\r\n case 'h1':\r\n return 'h'\r\n case 'd1':\r\n return 'd'\r\n case 'w1':\r\n return 'w'\r\n case 'm1':\r\n return 'm'\r\n }\r\n\r\n return timeframe\r\n}\r\n\r\nlet _lastRequest: CancelablePromise | null = null\r\n\r\nconst actions = {\r\n init(rows: FuturesDatum[], type?: any) {\r\n var timeframe\r\n if (type === 'quotes') {\r\n timeframe = migrateOldTimeframe(getCookie(cookieKey)) || 'NO'\r\n }\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.INIT,\r\n rows,\r\n timeframe,\r\n })\r\n },\r\n\r\n async update(data: FuturesDatum[]) {\r\n if (data) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.UPDATE_DATA,\r\n tiles: data,\r\n })\r\n return\r\n }\r\n\r\n _lastRequest?.cancel?.()\r\n _lastRequest = apiRequest(getFuturesUrl())\r\n const resData = await _lastRequest\r\n if (resData) {\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.UPDATE_DATA,\r\n tiles: resData,\r\n })\r\n }\r\n },\r\n\r\n async changeTimeframe(timeframe: string, updateCookie = true) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.CHANGE_TIMEFRAME_STARTED,\r\n period: timeframe,\r\n })\r\n\r\n _lastRequest?.cancel?.()\r\n _lastRequest = apiRequest(getFuturesUrl())\r\n const data = await _lastRequest\r\n if (data) {\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.UPDATE_DATA,\r\n tiles: data,\r\n })\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.CHANGE_TIMEFRAME_COMPLETED,\r\n })\r\n }\r\n if (updateCookie) setCookieRequest(cookieKey, timeframe).catch(() => {})\r\n },\r\n}\r\n\r\nexport default actions\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { encodeQueryString } from '../../queryString'\r\nimport { ForexFuturesCryptoSettings } from '../../shared/components/ForexFuturesCryptoSettings'\r\nimport Sparkline from '../../shared/components/Sparkline'\r\nimport TilesStore from '../stores/tilesStore'\r\n\r\ninterface ChartMenuProps {\r\n activeGroup: string\r\n activeTile: string\r\n activeTimeframe: string\r\n activeRange?: string\r\n type: string\r\n showChartControls?: boolean\r\n isRedesignEnabled?: boolean\r\n}\r\n\r\nexport function ChartMenu({\r\n activeGroup,\r\n activeTile,\r\n activeTimeframe,\r\n activeRange,\r\n type,\r\n showChartControls = true,\r\n isRedesignEnabled,\r\n}: ChartMenuProps) {\r\n const isInteractiveActive = type === '1'\r\n const [tiles, setTiles] = React.useState(TilesStore.getTilesInGroup(activeGroup))\r\n\r\n React.useEffect(() => {\r\n const onStoreChange = () => setTiles(TilesStore.getTilesInGroup(activeGroup))\r\n\r\n TilesStore.addChangeListener(onStoreChange)\r\n\r\n return () => TilesStore.removeChangeListener(onStoreChange)\r\n }, [activeGroup])\r\n\r\n const interactiveUrl = FinvizSettings.hasUserPremium\r\n ? `/futures_charts.ashx?${encodeQueryString({\r\n t: activeTile,\r\n p: activeTimeframe,\r\n ty: 1,\r\n })}`\r\n : `/elite.ashx?${encodeQueryString({\r\n utm_source: 'finviz',\r\n utm_medium: 'banner',\r\n utm_campaign: 'futures-interactive-chart',\r\n })}`\r\n\r\n const getTileHref = (ticker: string) =>\r\n `/futures_charts.ashx?${encodeQueryString({\r\n t: ticker,\r\n p: activeTimeframe,\r\n ty: isRedesignEnabled && isInteractiveActive ? undefined : type,\r\n r: activeRange,\r\n })}`\r\n\r\n return (\r\n
\r\n {showChartControls && (\r\n
    \r\n
  • \r\n \r\n Static\r\n \r\n
  • \r\n \r\n \r\n Interactive\r\n \r\n {isInteractiveActive && (\r\n \r\n )}\r\n \r\n
\r\n )}\r\n
\r\n {tiles.map((tile) => (\r\n \r\n {tile.label}\r\n \r\n \r\n ))}\r\n
\r\n
\r\n )\r\n}\r\n","import { SVG, SVGProps } from '../../../main/components/icon/svg'\r\n\r\nexport function Divider({ width = 5, height = 6, ...props }: SVGProps) {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\n\r\ninterface LabelProps {\r\n groupLabel: string\r\n groupName: string\r\n rightAligned: boolean\r\n color: boolean\r\n}\r\n\r\nconst COLOR_MAP: Record = {\r\n indices: { text: 'text-gray-400', border: 'border-gray-400', background: 'bg-gray-400' },\r\n energy: { text: 'text-violet-400', border: 'border-violet-400', background: 'bg-violet-400' },\r\n bonds: { text: 'text-blue-400', border: 'border-blue-400', background: 'bg-blue-400' },\r\n softs: { text: 'text-teal-300', border: 'border-teal-300', background: 'bg-teal-300' },\r\n metals: { text: 'text-yellow-200', border: 'border-yellow-200', background: 'bg-yellow-200' },\r\n meats: { text: 'text-pink-400', border: 'border-pink-400', background: 'bg-pink-400' },\r\n grains: { text: 'text-orange-300', border: 'border-orange-300', background: 'bg-orange-300' },\r\n currencies: { text: 'text-purple-300', border: 'border-purple-300', background: 'bg-purple-300' },\r\n}\r\n\r\nexport function PlainLabel({ groupName, groupLabel, color }: LabelProps) {\r\n return (\r\n \r\n {groupLabel}\r\n \r\n )\r\n}\r\n\r\nexport function SideLabel({ groupName, groupLabel, rightAligned, color }: LabelProps) {\r\n return (\r\n \r\n {groupLabel}\r\n \r\n )\r\n}\r\n\r\nexport function LineLabel({ groupName, groupLabel }: LabelProps) {\r\n return (\r\n
\r\n {groupLabel}\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport function LineWithEndingLabel({ groupName, groupLabel }: LabelProps) {\r\n return (\r\n
\r\n {groupLabel}\r\n
\r\n
\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nimport { Icon } from '../../../main/components/icon'\r\nimport * as hoverChart from '../../shared/hover-chart'\r\nimport TilesStore from '../stores/tilesStore'\r\nimport Sparkline from './CanvasSparkline'\r\n\r\ninterface MapCondensedTileProps {\r\n ticker: string\r\n showSparkline: boolean\r\n hoverOffsetX: number\r\n hoverOffsetY: number\r\n colorScale: (d: number) => string\r\n}\r\n\r\nfunction getTileState(ticker: string, prevWidth = 0) {\r\n var tile = TilesStore.getTile(ticker)\r\n var group = TilesStore.getTilesGroup(tile.ticker).toLowerCase()\r\n\r\n return {\r\n ...tile,\r\n group,\r\n width: prevWidth,\r\n }\r\n}\r\n\r\nexport class MapCondensedTile extends React.Component> {\r\n state = getTileState(this.props.ticker)\r\n\r\n resizeObserver?: ResizeObserver\r\n containerRef = React.createRef()\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n\r\n // Resize sparkline on window resize\r\n const container = this.containerRef.current\r\n if (container && this.state.sparkline) {\r\n this.setState({ width: container.getBoundingClientRect().width }, () => {\r\n this.resizeObserver = new ResizeObserver(\r\n throttle(([entry]: ResizeObserverEntry[]) => {\r\n this.setState({ width: entry.contentRect.width })\r\n }, 100)\r\n )\r\n this.resizeObserver.observe(container)\r\n })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n this.resizeObserver?.disconnect()\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getTileState(this.props.ticker, this.state.width))\r\n }\r\n\r\n render() {\r\n const { colorScale, children, showSparkline, hoverOffsetX, hoverOffsetY } = this.props\r\n var { ticker, width, label, last, prevClose, change, high, low, sparkline, sparklineDateChanges } = this.state\r\n\r\n var format = (n: number) => (n >= 0 ? '+' : '') + n.toFixed(2)\r\n var places = last > 6 ? 2 : 4\r\n var round = (n: number, plusSign?: string) =>\r\n (n >= 0 ? plusSign || '' : '') + (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n\r\n var range = (high - low) * 0.1\r\n var highlightHigh = last > high - range\r\n var highlightLow = last < low + range\r\n const backgroundColor = colorScale(change)\r\n const changeUSD = last - prevClose\r\n\r\n const chartImage = hoverChart.getHoverChartImg(\r\n '@' + ticker.toLowerCase(),\r\n false,\r\n FinvizSettings.hoverCharts?.futures?.timeframe,\r\n FinvizSettings.hoverCharts?.futures?.dateRange\r\n )\r\n\r\n const boxover = `cssbody=[hoverchart] cssheader=[tabchrthdr] body=[${chartImage.img}] offsetx=[${hoverOffsetX}] offsety=[${hoverOffsetY}] delay=[100]`\r\n\r\n if (showSparkline) {\r\n return (\r\n \r\n {children}\r\n
\r\n
\r\n
{label}
\r\n
\r\n {round(changeUSD, '+')}\r\n \r\n
\r\n
\r\n
\r\n
{round(last)}
\r\n
\r\n {format(change)} %\r\n
\r\n
\r\n
\r\n
\r\n {showSparkline && (\r\n \r\n )}\r\n
\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n
{label}
\r\n
{round(last)}
\r\n
\r\n
\r\n \r\n \r\n H\r\n \r\n {round(high)}\r\n
\r\n
\r\n {round(changeUSD, '+')}\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n L\r\n \r\n {round(low)}\r\n
\r\n
\r\n {format(change)} %\r\n
\r\n
\r\n
\r\n \r\n )\r\n }\r\n}\r\n","import classnames from 'classnames'\r\nimport throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nimport * as hoverChart from '../../../shared/hover-chart'\r\nimport TilesStore from '../../stores/tilesStore'\r\nimport Sparkline from '../CanvasSparkline'\r\n\r\ninterface MapTileProps {\r\n ticker: string\r\n showSparkline: boolean\r\n hoverOffsetX: number\r\n hoverOffsetY: number\r\n colorScale: (d: number) => string\r\n}\r\n\r\nfunction getTileState(ticker: string, prevWidth = 0) {\r\n var tile = TilesStore.getTile(ticker)\r\n var group = TilesStore.getTilesGroup(tile.ticker).toLowerCase()\r\n\r\n return {\r\n ...tile,\r\n group,\r\n width: prevWidth,\r\n }\r\n}\r\n\r\nexport class MapTile extends React.Component> {\r\n state = getTileState(this.props.ticker)\r\n\r\n resizeObserver?: ResizeObserver\r\n containerRef = React.createRef()\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n\r\n // Resize sparkline on window resize\r\n const container = this.containerRef.current\r\n if (container && this.state.sparkline) {\r\n this.setState({ width: container.getBoundingClientRect().width }, () => {\r\n this.resizeObserver = new ResizeObserver(\r\n throttle(([entry]: ResizeObserverEntry[]) => {\r\n this.setState({ width: entry.contentRect.width })\r\n }, 100)\r\n )\r\n this.resizeObserver.observe(container)\r\n })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n this.resizeObserver?.disconnect()\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getTileState(this.props.ticker, this.state.width))\r\n }\r\n\r\n render() {\r\n const { colorScale, children, showSparkline, hoverOffsetX, hoverOffsetY } = this.props\r\n var { ticker, width, label, last, prevClose, change, high, low, sparkline, sparklineDateChanges } = this.state\r\n\r\n var format = (n: number) => (n >= 0 ? '+' : '') + n.toFixed(2) + '%'\r\n var places = last > 6 ? 2 : 4\r\n var round = (n: number, plusSign?: string) =>\r\n (n >= 0 ? plusSign || '' : '') + (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n\r\n var range = (high - low) * 0.1\r\n var highlightHigh = last > high - range\r\n var highlightLow = last < low + range\r\n const backgroundColor = colorScale(change)\r\n\r\n const chartImage = hoverChart.getHoverChartImg(\r\n '@' + ticker.toLowerCase(),\r\n false,\r\n FinvizSettings.hoverCharts?.futures?.timeframe,\r\n FinvizSettings.hoverCharts?.futures?.dateRange\r\n )\r\n\r\n const boxover = `cssbody=[hoverchart] cssheader=[tabchrthdr] body=[${chartImage.img}] offsetx=[${hoverOffsetX}] offsety=[${hoverOffsetY}] delay=[100]`\r\n\r\n if (showSparkline) {\r\n return (\r\n \r\n {children}\r\n
\r\n
\r\n
{label}
\r\n
{round(last - prevClose, '+')}
\r\n
\r\n
\r\n
{round(last)}
\r\n
({format(change)})
\r\n
\r\n
\r\n
\r\n {showSparkline && (\r\n \r\n )}\r\n
\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n
{label}
\r\n
{round(last)}
\r\n \r\n {round(last - prevClose, '+')} ({format(change)})\r\n \r\n
\r\n \r\n \r\n H\r\n \r\n {round(high)}\r\n
\r\n \r\n \r\n L\r\n \r\n {round(low)}\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import classnames from 'classnames'\r\nimport throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nimport tailwindColors from '../../../../../../config/colors'\r\nimport * as hoverChart from '../../../shared/hover-chart'\r\nimport TilesStore from '../../stores/tilesStore'\r\nimport Sparkline from '../CanvasSparkline'\r\n\r\ninterface TileWithBorderProps {\r\n ticker: string\r\n showSparkline: boolean\r\n hoverOffsetX: number\r\n hoverOffsetY: number\r\n colorScale: (d: number) => string\r\n}\r\n\r\nfunction getTileState(ticker: string, prevWidth = 0) {\r\n var tile = TilesStore.getTile(ticker)\r\n var group = TilesStore.getTilesGroup(tile.ticker).toLowerCase()\r\n\r\n return {\r\n ...tile,\r\n group,\r\n width: prevWidth,\r\n }\r\n}\r\n\r\nexport class TileWithBorder extends React.Component> {\r\n state = getTileState(this.props.ticker)\r\n\r\n resizeObserver?: ResizeObserver\r\n containerRef = React.createRef()\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n\r\n // Resize sparkline on window resize\r\n const container = this.containerRef.current\r\n if (container && this.state.sparkline) {\r\n this.setState({ width: container.getBoundingClientRect().width }, () => {\r\n this.resizeObserver = new ResizeObserver(\r\n throttle(([entry]: ResizeObserverEntry[]) => {\r\n this.setState({ width: entry.contentRect.width })\r\n }, 100)\r\n )\r\n this.resizeObserver.observe(container)\r\n })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n this.resizeObserver?.disconnect()\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getTileState(this.props.ticker, this.state.width))\r\n }\r\n\r\n render() {\r\n const { colorScale, children, showSparkline, hoverOffsetX, hoverOffsetY } = this.props\r\n var { ticker, width, label, last, prevClose, change, high, low, sparkline, sparklineDateChanges } = this.state\r\n\r\n var format = (n: number) => (n >= 0 ? '+' : '') + n.toFixed(2) + '%'\r\n var places = last > 6 ? 2 : 4\r\n var round = (n: number, plusSign?: string) =>\r\n (n >= 0 ? plusSign || '' : '') + (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n\r\n var range = (high - low) * 0.1\r\n var highlightHigh = last > high - range\r\n var highlightLow = last < low + range\r\n const backgroundColor = colorScale(change)\r\n\r\n const chartImage = hoverChart.getHoverChartImg(\r\n '@' + ticker.toLowerCase(),\r\n false,\r\n FinvizSettings.hoverCharts?.futures?.timeframe,\r\n FinvizSettings.hoverCharts?.futures?.dateRange\r\n )\r\n\r\n const boxover = `cssbody=[hoverchart] cssheader=[tabchrthdr] body=[${chartImage.img}] offsetx=[${hoverOffsetX}] offsety=[${hoverOffsetY}] delay=[100]`\r\n\r\n if (showSparkline) {\r\n return (\r\n \r\n {children}\r\n
\r\n \r\n
\r\n
\r\n
{label}
\r\n = 0,\r\n 'text-red-500': last - prevClose < 0,\r\n })}\r\n >\r\n {round(last - prevClose, '+')}\r\n
\r\n
\r\n
\r\n
{round(last)}
\r\n = 0,\r\n 'text-red-500': change < 0,\r\n })}\r\n >\r\n ({format(change)})\r\n
\r\n
\r\n \r\n
\r\n {showSparkline && (\r\n \r\n )}\r\n
\r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n
\r\n
\r\n
{label}
\r\n
{round(last)}
\r\n
\r\n
\r\n \r\n \r\n H\r\n \r\n \r\n {round(high)}\r\n \r\n
\r\n = 0,\r\n 'text-red-500': last - prevClose < 0,\r\n })}\r\n >\r\n {round(last - prevClose, '+')}\r\n
\r\n
\r\n
\r\n \r\n \r\n L\r\n \r\n \r\n {round(low)}\r\n \r\n
\r\n = 0,\r\n 'text-red-500': change < 0,\r\n })}\r\n >\r\n {format(change)}\r\n
\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { redGreenGradient } from '../../shared/gradients'\r\nimport TilesStore from '../stores/tilesStore'\r\nimport { FuturesTimeframe, LabelStyle, LayoutType, TileStyle } from '../types'\r\nimport { futuresDomains, generateColorScale, layout } from '../utils'\r\nimport { Divider } from './Divider'\r\nimport { LineLabel, LineWithEndingLabel, PlainLabel, SideLabel } from './Labels'\r\nimport { MapCondensedTile } from './Tile'\r\nimport { MapTile } from './redesign/MapTile'\r\nimport { TileWithBorder } from './redesign/TileWithBorder'\r\n\r\nconst COLS = 8\r\nconst colorScale = generateColorScale(futuresDomains, 'd', redGreenGradient)\r\n\r\ninterface NewLayoutWrapperProps {\r\n type: LayoutType\r\n tileStyle: TileStyle\r\n labelStyle: LabelStyle\r\n showSparkline: boolean\r\n activeTimeframe: string\r\n}\r\n\r\nfunction getTileComponent(tileStyle: TileStyle) {\r\n switch (tileStyle) {\r\n case TileStyle.Map:\r\n return MapTile\r\n case TileStyle.MapCondensed:\r\n return MapCondensedTile\r\n default:\r\n return TileWithBorder\r\n }\r\n}\r\n\r\nfunction getLabelComponent(labelStyle: LabelStyle) {\r\n switch (labelStyle) {\r\n case LabelStyle.Plain:\r\n case LabelStyle.PlainColor:\r\n return PlainLabel\r\n case LabelStyle.Side:\r\n case LabelStyle.SideColor:\r\n return SideLabel\r\n case LabelStyle.Line:\r\n return LineLabel\r\n case LabelStyle.LineWithEnding:\r\n return LineWithEndingLabel\r\n default:\r\n return () => null\r\n }\r\n}\r\n\r\nexport function Layout(props: NewLayoutWrapperProps) {\r\n switch (props.type) {\r\n case LayoutType.NewHorizontal:\r\n return \r\n case LayoutType.NewGroups:\r\n return \r\n default:\r\n return null\r\n }\r\n}\r\n\r\nfunction LayoutHorizontal(props: NewLayoutWrapperProps) {\r\n const TileComponent = getTileComponent(props.tileStyle)\r\n const LabelComponent = getLabelComponent(props.labelStyle)\r\n\r\n return (\r\n
\r\n {layout.map((row, ri) => {\r\n const groupName = TilesStore.getTilesGroup(row[0]).toLowerCase()\r\n const groupLabel = `${groupName[0].toUpperCase()}${groupName.substring(1, groupName.length)}`\r\n\r\n return (\r\n \r\n \r\n
\r\n {row.map((ticker, ci) => {\r\n const isSmallGroup = row.length < COLS\r\n const showEndCaret = isSmallGroup && ci === row.length - 1\r\n\r\n return (\r\n COLS / 2 && ci < COLS / 2 ? 0 : -320}\r\n hoverOffsetY={ri < layout.length / 2 ? 105 : -275}\r\n >\r\n \r\n {showEndCaret && (\r\n \r\n )}\r\n \r\n )\r\n })}\r\n
\r\n
\r\n )\r\n })}\r\n \r\n )\r\n}\r\n\r\nfunction LayoutGroups(props: NewLayoutWrapperProps) {\r\n const TileComponent = getTileComponent(props.tileStyle)\r\n const LabelComponent = getLabelComponent(props.labelStyle)\r\n\r\n return (\r\n \r\n {layout.map((row, ri) => {\r\n const groupName = TilesStore.getTilesGroup(row[0]).toLowerCase()\r\n const groupLabel = `${groupName[0].toUpperCase()}${groupName.substring(1, groupName.length)}`\r\n\r\n return (\r\n \r\n \r\n \r\n {row.map((ticker, ci) => (\r\n \r\n ))}\r\n \r\n \r\n )\r\n })}\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { TIMEFRAME } from '../../../main/constants'\r\nimport { encodeQueryString } from '../../queryString'\r\nimport { PageType } from '../types'\r\nimport { groups } from '../utils'\r\n\r\ninterface MenuProps {\r\n company?: string\r\n activePage: PageType\r\n activeGroup?: string\r\n activeRange?: string\r\n showGroups?: boolean\r\n type?: string\r\n onGroupMouseEnter?: (group: string) => void\r\n onGroupMouseLeave?: () => void\r\n timeframes: {\r\n active: string\r\n link?: (timeframe: string) => string\r\n onClick: (timeframe: string, e: React.MouseEvent) => void\r\n timeframes: Array<{ key: string; title?: string; value: React.ReactNode }>\r\n }\r\n groupTimeframe?: string\r\n isDetailOpen?: boolean\r\n onTimeframeChange?: (timeframe: TIMEFRAME) => void\r\n onDateRangeChange?: (dateRange: string | undefined) => void\r\n}\r\n\r\nclass Menu extends React.Component {\r\n static defaultProps = {\r\n showGroups: true,\r\n onGroupMouseEnter: () => {},\r\n onGroupMouseLeave: () => {},\r\n }\r\n\r\n render() {\r\n var { activePage, activeGroup, showGroups, type, activeRange } = this.props\r\n var timeframesMenu = this.props.timeframes\r\n var groupTimeframe = this.props.groupTimeframe || 'd'\r\n\r\n return (\r\n
\r\n \r\n\r\n {showGroups && (\r\n
    \r\n
  • \r\n \r\n All\r\n \r\n
  • \r\n {groups.map((group) => (\r\n \r\n \r\n \r\n {group}\r\n \r\n \r\n ))}\r\n
\r\n )}\r\n\r\n
    \r\n {timeframesMenu.timeframes.map((timeframe) => (\r\n
  • \r\n \r\n {timeframe.value}\r\n \r\n
  • \r\n ))}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default Menu\r\n","import * as React from 'react'\r\n\r\nimport { Button } from '../../../main/components/button'\r\nimport { SpecificChartFunctionality, TIMEFRAME } from '../../../main/constants'\r\nimport { Instrument } from '../../../main/types'\r\nimport { encodeQueryString } from '../../queryString'\r\nimport { FuturesForexCryptoTimeframeBar } from '../../shared/components/FuturesForexCryptoTimeframeBar'\r\nimport { PageType } from '../types'\r\nimport { groups } from '../utils'\r\n\r\ninterface MenuProps {\r\n company?: string\r\n activePage: PageType\r\n activeGroup?: string\r\n activeRange?: string\r\n showGroups?: boolean\r\n type?: string\r\n onGroupMouseEnter?: (group: string) => void\r\n onGroupMouseLeave?: () => void\r\n timeframes: {\r\n active: string\r\n link?: (timeframe: string) => string\r\n onClick: (timeframe: string, e: React.MouseEvent) => void\r\n timeframes: Array<{ key: string; title?: string; value: React.ReactNode }>\r\n }\r\n groupTimeframe?: string\r\n isDetailOpen?: boolean\r\n onTimeframeChange?: (timeframe: TIMEFRAME) => void\r\n onDateRangeChange?: (dateRange: string | undefined) => void\r\n}\r\n\r\nexport function MenuNew({\r\n company = '',\r\n activePage,\r\n activeGroup = 'all',\r\n activeRange,\r\n showGroups = true,\r\n type,\r\n timeframes,\r\n groupTimeframe = 'd',\r\n isDetailOpen,\r\n onTimeframeChange,\r\n onDateRangeChange,\r\n ...props\r\n}: MenuProps) {\r\n const groupName = company ?? activeGroup.charAt(0).toUpperCase() + activeGroup.slice(1)\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n Performance\r\n \r\n \r\n
\r\n {showGroups && (\r\n
\r\n \r\n All\r\n \r\n {groups.map((group) => (\r\n props.onGroupMouseEnter?.(group.toUpperCase())}\r\n onMouseLeave={props.onGroupMouseLeave}\r\n >\r\n {group}\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n {activePage === PageType.Charts ? (\r\n \r\n ) : (\r\n timeframes.timeframes.map((timeframe) => (\r\n ) => timeframes.onClick?.(timeframe.key, ev)}\r\n title={timeframe.title}\r\n >\r\n {timeframe.value}\r\n \r\n ))\r\n )}\r\n
\r\n
\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport PropTypes from 'prop-types'\r\nimport { Component } from 'react'\r\nimport ReactDOM from 'react-dom'\r\n\r\nimport { TIMEFRAME } from '../../main/constants'\r\nimport { apiRequest } from '../../main/services/api'\r\nimport { decodeQueryString, encodeQueryString } from '../queryString'\r\nimport { redGreenGradient } from '../shared/gradients'\r\nimport * as hoverChart from '../shared/hover-chart'\r\nimport FuturesActionCreators from './actions/futuresActionCreators'\r\nimport BarChart from './components/BarChart'\r\nimport CanvasSparkline from './components/CanvasSparkline'\r\nimport { ChartMenu } from './components/ChartMenu'\r\nimport { Layout as NewLayout } from './components/Layout'\r\nimport Menu from './components/Menu'\r\nimport { MenuNew } from './components/MenuNew'\r\nimport RowsStore from './stores/rowsStore'\r\nimport TilesStore from './stores/tilesStore'\r\nimport { FuturesTimeframe, LabelStyle, LayoutType, PageType, TileStyle } from './types'\r\nimport { FuturesDatum, FuturesRow } from './types'\r\nimport { futuresDomains } from './utils'\r\nimport { generateColorScale } from './utils'\r\n\r\nvar colorScale = generateColorScale(futuresDomains, 'd')\r\n\r\nconst SMALL_BREAKPOINT_WIDTH = 1280\r\n\r\nvar bigLayout = [\r\n ['YM', 'ES', 'NQ', 'ER2', 'NKD', 'EX', 'DY', 'VX'],\r\n ['CL', 'QA', 'RB', 'HO', 'NG', 'ZK', 'ZB', 'ZN'],\r\n ['CC', 'CT', 'JO', 'KC', 'LB', 'SB', 'ZF', 'ZT'],\r\n ['GC', 'SI', 'PL', 'HG', 'PA', 'LC', 'FC', 'LH'],\r\n ['ZS', 'ZM', 'ZL', 'ZC', 'ZW', 'ZR', 'ZO', 'RS'],\r\n ['DX', '6E', '6J', '6B', '6C', '6S', '6A', '6N'],\r\n]\r\n\r\nvar bigLayoutFirstInGroup = [\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 1, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 1, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n [1, 0, 0, 0, 0, 0, 0, 0],\r\n]\r\n\r\nvar smallLayout = [\r\n ['YM', 'ES', 'NQ', 'ER2', 'ZB', 'ZN'],\r\n ['NKD', 'EX', 'DY', 'VX', 'ZF', 'ZT'],\r\n ['CL', 'QA', 'RB', 'HO', 'NG', 'ZK'],\r\n ['CC', 'CT', 'JO', 'KC', 'LB', 'SB'],\r\n ['ZS', 'ZM', 'ZL', 'ZC', 'GC', 'SI'],\r\n ['ZW', 'ZR', 'ZO', 'RS', 'PL', 'HG'],\r\n ['DX', '6E', '6J', '6B', 'PA', 'LH'],\r\n ['6C', '6S', '6A', '6N', 'LC', 'FC'],\r\n]\r\n\r\nfunction getAdvancedTileState(ticker: string) {\r\n var tile = TilesStore.getTile(ticker)\r\n var group = TilesStore.getTilesGroup(tile.ticker).toLowerCase()\r\n\r\n return {\r\n ...tile,\r\n group,\r\n }\r\n}\r\n\r\ninterface AdvancedTileProps {\r\n width: number\r\n ticker: string\r\n hoverOffsetX: number\r\n hoverOffsetY: number\r\n}\r\n\r\nclass AdvancedTile extends Component {\r\n static propTypes = {\r\n ticker: PropTypes.string,\r\n }\r\n\r\n state = getAdvancedTileState(this.props.ticker)\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getAdvancedTileState(this.props.ticker))\r\n }\r\n\r\n render() {\r\n var { ticker, label, last, prevClose, change, sparkline, sparklineDateChanges, group } = this.state\r\n var { hoverOffsetX, hoverOffsetY } = this.props\r\n\r\n var format = (n: number) => (n >= 0 ? '+' : '') + n.toFixed(2) + '%'\r\n var places = last > 6 ? 2 : 4\r\n var round = (n: number, plusSign?: string) =>\r\n (n >= 0 ? plusSign || '' : '') + (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n\r\n const chartImage = hoverChart.getHoverChartImg(\r\n '@' + ticker.toLowerCase(),\r\n false,\r\n FinvizSettings.hoverCharts?.futures?.timeframe,\r\n FinvizSettings.hoverCharts?.futures?.dateRange\r\n )\r\n\r\n const boxover = `cssbody=[hoverchart] cssheader=[tabchrthdr] body=[${chartImage.img}] offsetx=[${hoverOffsetX}] offsety=[${hoverOffsetY}] delay=[100]`\r\n\r\n return (\r\n \r\n
\r\n {label}\r\n {round(last - prevClose, '+')}\r\n
\r\n
\r\n {round(last)}\r\n {format(change)}\r\n \r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction getSimpleTileState(ticker: string) {\r\n var tile = TilesStore.getTile(ticker)\r\n var group = TilesStore.getTilesGroup(tile.ticker).toLowerCase()\r\n\r\n return {\r\n ...tile,\r\n group,\r\n }\r\n}\r\n\r\ninterface SimpleTileProps {\r\n width: number\r\n ticker: string\r\n hoverOffsetX: number\r\n hoverOffsetY: number\r\n firstInGroup: unknown\r\n lastInGroup: unknown\r\n}\r\n\r\nclass SimpleTile extends Component {\r\n static propTypes = {\r\n ticker: PropTypes.string,\r\n }\r\n\r\n state = getSimpleTileState(this.props.ticker)\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getSimpleTileState(this.props.ticker))\r\n }\r\n\r\n render() {\r\n var { ticker, label, last, prevClose, change, high, low, group } = this.state\r\n var { hoverOffsetX, hoverOffsetY, firstInGroup, lastInGroup } = this.props\r\n\r\n var format = (n: number) => (n >= 0 ? '+' : '') + n.toFixed(2) + '%'\r\n var places = last > 6 ? 2 : 4\r\n var round = (n: number, plusSign?: string) =>\r\n (n >= 0 ? plusSign || '' : '') + (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n\r\n var range = (high - low) * 0.1\r\n var highlightHigh = last > high - range\r\n var highlightLow = last < low + range\r\n var highlightStyle = {\r\n color: '#fbdb19',\r\n }\r\n\r\n var opacityChange = Math.min(Math.abs(change), 1.3)\r\n var textOpacity = 0.5 + (0.2 / 1.3) * opacityChange\r\n\r\n const chartImage = hoverChart.getHoverChartImg(\r\n '@' + ticker.toLowerCase(),\r\n false,\r\n FinvizSettings.hoverCharts?.futures?.timeframe,\r\n FinvizSettings.hoverCharts?.futures?.dateRange\r\n )\r\n\r\n const boxover = `cssbody=[hoverchart] cssheader=[tabchrthdr] body=[${chartImage.img}] offsetx=[${hoverOffsetX}] offsety=[${hoverOffsetY}] delay=[100]`\r\n\r\n return (\r\n \r\n \r\n {firstInGroup ? group.toUpperCase() : ''}\r\n \r\n
\r\n
{label}
\r\n
{round(last)}
\r\n\r\n
\r\n
\r\n H {round(high)}\r\n
\r\n
\r\n L {round(low)}\r\n
\r\n
\r\n\r\n
\r\n {round(last - prevClose, '+')}\r\n
({format(change)})\r\n
\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nclass AdvancedLayout extends Component {\r\n render() {\r\n var w = Math.min(document.documentElement.clientWidth, window.innerWidth || 0)\r\n\r\n var layout = w >= SMALL_BREAKPOINT_WIDTH ? bigLayout : smallLayout\r\n\r\n var tileWidth = 156\r\n if (w < 1304 && w >= SMALL_BREAKPOINT_WIDTH) {\r\n tileWidth = 150\r\n }\r\n\r\n var cols = layout[0].length\r\n var rows = layout.length\r\n return (\r\n
\r\n {layout.map((row, ri) => (\r\n
\r\n {row.map((ticker, ci) => (\r\n \r\n ))}\r\n
\r\n
\r\n ))}\r\n
\r\n )\r\n }\r\n}\r\n\r\nclass SimpleLayout extends Component {\r\n render() {\r\n var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)\r\n\r\n var layout = bigLayout\r\n var firstInGroup = bigLayoutFirstInGroup\r\n\r\n var tileWidth = w >= SMALL_BREAKPOINT_WIDTH ? 136 : 120\r\n\r\n var cols = layout[0].length\r\n var rows = layout.length\r\n return (\r\n
\r\n {layout.map((row, ri) => (\r\n
\r\n {row.map((ticker, ci) => (\r\n \r\n ))}\r\n
\r\n
\r\n ))}\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction getFuturesState() {\r\n return {\r\n activeTimeframe: RowsStore.getTimeframe(),\r\n rows: RowsStore.getRows(),\r\n }\r\n}\r\n\r\nclass Futures extends Component {\r\n state = getFuturesState()\r\n\r\n componentDidMount() {\r\n RowsStore.addChangeListener(this._onChange)\r\n }\r\n\r\n componentWillUnmount() {\r\n RowsStore.removeChangeListener(this._onChange)\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getFuturesState())\r\n }\r\n\r\n render() {\r\n const { activeTimeframe, rows } = this.state\r\n\r\n var timeframes = {\r\n onClick: (timeframe: string, e: React.MouseEvent) => {\r\n e.preventDefault()\r\n FuturesActionCreators.changeTimeframe(timeframe)\r\n },\r\n active: activeTimeframe,\r\n timeframes: [\r\n { key: FuturesTimeframe.None, value: Ø },\r\n { key: FuturesTimeframe.Minute5, value: '5M' },\r\n { key: FuturesTimeframe.Hourly, value: 'H' },\r\n { key: FuturesTimeframe.Daily, value: 'D' },\r\n { key: FuturesTimeframe.Weekly, value: 'W' },\r\n { key: FuturesTimeframe.Monthly, value: 'M' },\r\n ],\r\n }\r\n\r\n if (FinvizSettings.hasRedesignEnabled) {\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n return (\r\n
\r\n \r\n\r\n {activeTimeframe === 'NO' ? : }\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n _onBarClick = (bar: { label: string }) => {\r\n var ticker = TilesStore.getTilesList().filter(function (tile) {\r\n return tile.label === bar.label\r\n })[0].ticker\r\n window.open(`/futures_charts.ashx?t=${ticker}&p=d`)\r\n }\r\n}\r\n\r\ninterface FuturesPerformanceProps {\r\n rows: FuturesRow[]\r\n}\r\n\r\nclass FuturesPerformance extends Component {\r\n declare refreshInterval: number\r\n\r\n state = {\r\n rows: this.props.rows,\r\n hoveredGroup: null,\r\n }\r\n\r\n componentDidMount() {\r\n this.refreshInterval = window.setInterval(async () => {\r\n const data = await apiRequest(`/api/futures_perf.ashx${window.location.search}`)\r\n if (data) {\r\n this.setState({ rows: data })\r\n }\r\n }, 30 * 1000)\r\n }\r\n\r\n componentWillUnmount() {\r\n clearInterval(this.refreshInterval)\r\n }\r\n\r\n render() {\r\n var view = (decodeQueryString()['v'] || '11').substring(1, 2)\r\n\r\n var kv = { d: 1, w: 2, m: 3, mtd: 8, q: 4, hy: 5, y: 6, ytd: 7 }\r\n var vk: Record = {}\r\n Object.keys(kv).forEach((key: any) => {\r\n vk[kv[key as keyof typeof kv].toString()] = key\r\n })\r\n var timeframes = {\r\n link: (key: string) => '/futures_performance.ashx?v=1' + kv[key as keyof typeof kv],\r\n onClick: () => {},\r\n active: view && vk[view],\r\n timeframes: [\r\n { key: 'd', value: 'D', title: 'Day' },\r\n { key: 'w', value: 'W', title: 'Week' },\r\n { key: 'm', value: 'M', title: 'Month' },\r\n { key: 'mtd', value: 'MTD', title: 'Month to Date' },\r\n { key: 'q', value: 'Q', title: 'Quarter' },\r\n { key: 'hy', value: 'HY', title: 'Half Year' },\r\n { key: 'y', value: 'Y', title: 'Year' },\r\n { key: 'ytd', value: 'YTD', title: 'Year To Date' },\r\n ],\r\n }\r\n\r\n var hoveredGroup = this.state.hoveredGroup\r\n var rows = this.state.rows\r\n .map(function (row) {\r\n return {\r\n label: row.label,\r\n value: row.perf,\r\n isInactive: hoveredGroup !== null && hoveredGroup !== row.group,\r\n }\r\n })\r\n .sort(function (a, b) {\r\n return b.value - a.value\r\n })\r\n\r\n const MenuComponent = FinvizSettings.hasRedesignEnabled ? MenuNew : Menu\r\n\r\n return (\r\n
\r\n {\r\n this.setState({ hoveredGroup: group })\r\n }}\r\n onGroupMouseLeave={() => {\r\n this.setState({ hoveredGroup: null })\r\n }}\r\n />\r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n _onBarClick = (bar: { label: string }) => {\r\n var ticker = this.state.rows.filter(function (tile) {\r\n return tile.label === bar.label\r\n })[0].ticker\r\n window.open(`/futures_charts.ashx?t=${ticker}&p=d`)\r\n }\r\n}\r\n\r\ninterface ChartsState {\r\n timeframe: TIMEFRAME\r\n dateRange: string\r\n ticker: string\r\n type: string\r\n isGroupOpen: boolean\r\n activeGroup: string\r\n}\r\n\r\nfunction getChartsState(override: Partial = {}) {\r\n var queryString = decodeQueryString()\r\n var timeframe = queryString['p'] as TIMEFRAME\r\n if (!Object.values(TIMEFRAME).includes(timeframe)) {\r\n timeframe = TIMEFRAME.d\r\n }\r\n var ticker = (queryString['t'] || 'ALL').toUpperCase()\r\n var type = queryString['ty']\r\n\r\n var isGroupOpen = ticker === 'ALL' || ticker.length > 3\r\n if (!isGroupOpen && !TilesStore.getTilesGroup(ticker)) {\r\n ticker = 'ALL'\r\n isGroupOpen = true\r\n }\r\n var activeGroup = (isGroupOpen ? ticker : TilesStore.getTilesGroup(ticker)).toLowerCase()\r\n\r\n return {\r\n timeframe,\r\n dateRange: queryString['r'] || undefined,\r\n ticker,\r\n type,\r\n isGroupOpen,\r\n activeGroup,\r\n ...override,\r\n }\r\n}\r\n\r\ninterface FuturesChartsProps {}\r\n\r\nexport class FuturesCharts extends Component {\r\n state = getChartsState()\r\n\r\n _onTimeframeChange = async (timeframe: TIMEFRAME) => {\r\n FuturesActionCreators.changeTimeframe(timeframe, false)\r\n this.setState(getChartsState({ timeframe }))\r\n }\r\n\r\n render() {\r\n const { timeframe, ticker, type, isGroupOpen, activeGroup, dateRange } = this.state\r\n\r\n var timeframes = {\r\n link: (key: string) => `/futures_charts.ashx?${encodeQueryString({ t: ticker, p: key, ty: type, r: dateRange })}`,\r\n onClick: () => {},\r\n active: timeframe,\r\n timeframes: [\r\n { key: FuturesTimeframe.Minute5, value: '5M' },\r\n { key: FuturesTimeframe.Hourly, value: 'H' },\r\n { key: FuturesTimeframe.Daily, value: 'D' },\r\n { key: FuturesTimeframe.Weekly, value: 'W' },\r\n { key: FuturesTimeframe.Monthly, value: 'M' },\r\n ],\r\n }\r\n\r\n const isRedesignEnabled = FinvizSettings.hasRedesignEnabled\r\n const MenuComponent = isRedesignEnabled ? MenuNew : Menu\r\n\r\n return (\r\n \r\n \r\n \r\n this.setState(getChartsState({ dateRange }))}\r\n />\r\n
\r\n \r\n {!isGroupOpen && (\r\n \r\n )}\r\n \r\n )\r\n }\r\n}\r\nwindow['FinvizInitFutures'] = function (groups: FuturesDatum[]) {\r\n FuturesActionCreators.init(groups, 'quotes')\r\n ReactDOM.render(, document.getElementById('futures'))\r\n\r\n setInterval(FuturesActionCreators.update, 30 * 1000)\r\n}\r\n\r\nwindow['FinvizInitFuturesPerformance'] = function (rows: FuturesRow[]) {\r\n ReactDOM.render(, document.getElementById('futures'))\r\n}\r\n\r\n// @ts-ignore\r\nwindow.RowsStore = RowsStore\r\n// @ts-ignore\r\nwindow.TilesStore = TilesStore\r\n","import * as React from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport { BrowserRouter } from 'react-router-dom'\r\n\r\nimport { NotificationWrapper } from '../../main/components/notification'\r\nimport { SpecificChartFunctionality } from '../../main/constants'\r\nimport { ChartLayoutWithGlobalState } from '../charts-lib'\r\nimport { getInitChartConfig } from '../shared/getInitChartConfig'\r\nimport { ready } from '../shared/ready'\r\nimport { parseInitData } from '../shared/utils'\r\nimport FuturesActionCreators from './actions/futuresActionCreators'\r\nimport { FuturesCharts } from './futures'\r\nimport { FuturesDatum, FuturesTile } from './types'\r\n\r\ninterface InitDataType {\r\n groups: FuturesDatum[]\r\n tiles: Record\r\n}\r\n\r\nfunction getFuturesInitData() {\r\n const initData = parseInitData('futures-init-data')!\r\n\r\n initData.groups.forEach(function (group: any) {\r\n for (var i = 0; i < group.contracts.length; i++) {\r\n group.contracts[i] = initData.tiles[group.contracts[i].ticker]\r\n }\r\n })\r\n\r\n return initData.groups\r\n}\r\n\r\nwindow['FinvizInitFuturesCharts'] = function () {\r\n const futuresEl = document.getElementById('futures')\r\n const dataEl = document.getElementById('futures-init-data')\r\n if (!futuresEl || !dataEl) return\r\n\r\n try {\r\n const initData = getFuturesInitData()\r\n FuturesActionCreators.init(initData)\r\n } catch {\r\n return\r\n }\r\n\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n futuresEl\r\n )\r\n}\r\n\r\nready(function () {\r\n const futuresEl = document.getElementById('futures')\r\n const chartEl = document.getElementById('chart')\r\n const dataEl = document.getElementById('futures-init-data')\r\n\r\n if (!futuresEl || !chartEl || !dataEl || !window.globalChartConfig) return\r\n\r\n const chartConfig = getInitChartConfig()\r\n\r\n try {\r\n const initData = getFuturesInitData()\r\n FuturesActionCreators.init(initData)\r\n } catch {\r\n return\r\n }\r\n\r\n ReactDOM.render(\r\n \r\n \r\n {ReactDOM.createPortal(, futuresEl)}\r\n \r\n \r\n ,\r\n chartEl\r\n )\r\n})\r\n","import { ActionTypes } from '../constants/constants'\r\nimport AppDispatcher from '../dispatcher/appDispatcher'\r\nimport { Contract, FuturesDatum, FuturesTile } from '../types'\r\nimport Store from './store'\r\n\r\nfunction getRows(tiles: Record) {\r\n return Object.values(tiles)\r\n .map(function (tile) {\r\n return {\r\n label: tile.label,\r\n value: tile.change,\r\n }\r\n })\r\n .sort(function (a, b) {\r\n return b.value - a.value\r\n })\r\n}\r\n\r\nvar _timeframe = 'i5'\r\nvar _rows: ReturnType = []\r\nclass RowsStore extends Store {\r\n getTimeframe() {\r\n return _timeframe\r\n }\r\n\r\n getRows() {\r\n return _rows\r\n }\r\n}\r\nvar rowsStore = new RowsStore()\r\n\r\n// @ts-ignore\r\nrowsStore.dispatchToken = AppDispatcher.register(function (payload) {\r\n var action = payload.action\r\n\r\n // eslint-disable-next-line default-case\r\n switch (action.type) {\r\n case ActionTypes.INIT:\r\n var _tiles: Record = {}\r\n action.rows.forEach((group: FuturesDatum) => {\r\n group.contracts.forEach((contract: Contract) => {\r\n _tiles[contract.ticker] = contract\r\n })\r\n })\r\n\r\n _rows = getRows(_tiles)\r\n if (action.timeframe) {\r\n _timeframe = action.timeframe\r\n }\r\n rowsStore.emitChange()\r\n break\r\n\r\n case ActionTypes.CHANGE_TIMEFRAME_STARTED:\r\n _timeframe = action.period\r\n rowsStore.emitChange()\r\n break\r\n\r\n case ActionTypes.UPDATE_DATA:\r\n _rows = getRows(action.tiles)\r\n rowsStore.emitChange()\r\n break\r\n }\r\n})\r\n\r\nexport default rowsStore\r\n","import { EventEmitter } from 'events'\r\n\r\nclass Store extends EventEmitter {\r\n static CHANGE_EVENT = 'change'\r\n\r\n emitChange() {\r\n this.emit(Store.CHANGE_EVENT)\r\n }\r\n\r\n addChangeListener(callback: (...args: any[]) => void) {\r\n this.on(Store.CHANGE_EVENT, callback)\r\n }\r\n\r\n removeChangeListener(callback: (...args: any[]) => void) {\r\n this.removeListener(Store.CHANGE_EVENT, callback)\r\n }\r\n}\r\n\r\nexport default Store\r\n","import { ActionTypes } from '../constants/constants'\r\nimport AppDispatcher from '../dispatcher/appDispatcher'\r\nimport { Contract, FuturesDatum, FuturesTile } from '../types'\r\nimport Store from './store'\r\n\r\nvar _tilesGroups: Record = {}\r\nvar _tiles: Record = {}\r\nvar _tileOrder: string[] = []\r\nclass TilesStore extends Store {\r\n getTiles() {\r\n return _tiles\r\n }\r\n\r\n getTilesList() {\r\n return Object.keys(_tiles)\r\n .map(function (key) {\r\n return _tiles[key]\r\n })\r\n .sort((a, b) => _tileOrder.indexOf(a.ticker) - _tileOrder.indexOf(b.ticker))\r\n }\r\n\r\n getTile(ticker: string) {\r\n return _tiles[ticker]\r\n }\r\n\r\n getTilesGroup(ticker: string) {\r\n return _tilesGroups[ticker]\r\n }\r\n\r\n getTilesInGroup(group: string) {\r\n var g = group.toUpperCase()\r\n return this.getTilesList().filter((tile) => _tilesGroups[tile.ticker] === g)\r\n }\r\n}\r\nvar tilesStore = new TilesStore()\r\ntilesStore.setMaxListeners(50)\r\n\r\n// @ts-ignore\r\ntilesStore.dispatchToken = AppDispatcher.register(function (payload) {\r\n var action = payload.action\r\n\r\n // eslint-disable-next-line default-case\r\n switch (action.type) {\r\n case ActionTypes.INIT:\r\n var groups = action.rows\r\n groups.forEach((group: FuturesDatum) => {\r\n group.contracts.forEach((contract: Contract) => {\r\n _tiles[contract.ticker] = contract\r\n _tilesGroups[contract.ticker] = group.ticker\r\n _tileOrder.push(contract.ticker)\r\n })\r\n })\r\n tilesStore.emitChange()\r\n break\r\n\r\n case ActionTypes.INIT_TILES:\r\n _tiles = action.tiles\r\n tilesStore.emitChange()\r\n break\r\n\r\n case ActionTypes.UPDATE_DATA:\r\n var tiles = action.tiles\r\n _tiles = tiles\r\n tilesStore.emitChange()\r\n break\r\n }\r\n})\r\n\r\nexport default tilesStore\r\n","export interface Contract {\r\n label: string\r\n ticker: string\r\n last: number\r\n change: number\r\n prevClose: number\r\n high: number\r\n low: number\r\n sparkline: number[]\r\n sparklineDateChanges: Record\r\n}\r\n\r\nexport interface FuturesDatum {\r\n ticker: string\r\n label: string\r\n contracts: Contract[]\r\n}\r\n\r\nexport interface FuturesTile {\r\n change: number\r\n high: number\r\n label: string\r\n last: number\r\n low: number\r\n prevClose: number\r\n sparkline: number[]\r\n sparklineDateChanges: Record\r\n ticker: string\r\n}\r\n\r\nexport interface FuturesRow {\r\n ticker: string\r\n label: string\r\n group: string\r\n perf: number\r\n}\r\n\r\nexport enum PageType {\r\n Quotes = 'quotes',\r\n Performance = 'performance',\r\n Charts = 'charts',\r\n}\r\n\r\nexport enum FuturesTimeframe {\r\n None = 'NO',\r\n Minute5 = 'i5',\r\n Hourly = 'h',\r\n Daily = 'd',\r\n Weekly = 'w',\r\n Monthly = 'm',\r\n}\r\n\r\nexport enum LayoutType {\r\n Old = 'old',\r\n NewHorizontal = 'new',\r\n NewGroups = 'new_groups',\r\n}\r\n\r\nexport enum LabelStyle {\r\n None = 'none',\r\n Plain = 'plain',\r\n PlainColor = 'plain_color',\r\n Side = 'side',\r\n SideColor = 'side_color',\r\n Line = 'line',\r\n LineWithEnding = 'lineWithEnding',\r\n}\r\n\r\nexport enum TileStyle {\r\n Map = 'map',\r\n MapCondensed = 'mapCondensed',\r\n BorderTile = 'borderTile',\r\n}\r\n","import * as d3 from 'd3'\r\n\r\nvar redGreenGradient = {\r\n colors: [\r\n '#fd0001',\r\n '#fd0101',\r\n '#fc0101',\r\n '#fa0101',\r\n '#f90103',\r\n '#f70203',\r\n '#f60203',\r\n '#f40204',\r\n '#f20304',\r\n '#f10304',\r\n '#ef0404',\r\n '#ee0405',\r\n '#ec0405',\r\n '#ea0505',\r\n '#e80505',\r\n '#e70506',\r\n '#e50606',\r\n '#e30706',\r\n '#e20706',\r\n '#e00807',\r\n '#df0708',\r\n '#dd0808',\r\n '#db0808',\r\n '#d90809',\r\n '#d80909',\r\n '#d60909',\r\n '#d40a09',\r\n '#d30a0a',\r\n '#d10a0a',\r\n '#cf0a0a',\r\n '#ce0b0b',\r\n '#cc0b0b',\r\n '#cb0c0b',\r\n '#c90b0c',\r\n '#c70c0c',\r\n '#c60c0c',\r\n '#c40c0d',\r\n '#c20d0d',\r\n '#c10e0e',\r\n '#bf0e0e',\r\n '#be0e0e',\r\n '#bc0f0f',\r\n '#ba0f0f',\r\n '#b90f10',\r\n '#b71010',\r\n '#b51010',\r\n '#b41010',\r\n '#b21111',\r\n '#b11111',\r\n '#af1111',\r\n '#ad1112',\r\n '#ab1212',\r\n '#aa1212',\r\n '#a81313',\r\n '#a61313',\r\n '#a51313',\r\n '#a31413',\r\n '#a21414',\r\n '#a01514',\r\n '#9e1414',\r\n '#9d1515',\r\n '#9b1616',\r\n '#9a1616',\r\n '#981616',\r\n '#961716',\r\n '#951717',\r\n '#931717',\r\n '#911818',\r\n '#8f1818',\r\n '#8e1818',\r\n '#8d1919',\r\n '#8b1919',\r\n '#8a1a1a',\r\n '#881a19',\r\n '#861b1a',\r\n '#841b1b',\r\n '#831b1b',\r\n '#811c1b',\r\n '#801c1b',\r\n '#7e1c1c',\r\n '#7c1d1c',\r\n '#7a1d1d',\r\n '#791d1d',\r\n '#781d1e',\r\n '#761e1e',\r\n '#741f1e',\r\n '#721f1e',\r\n '#711f1f',\r\n '#6f1f1f',\r\n '#6e1f20',\r\n '#6c1f20',\r\n '#6a2020',\r\n '#682020',\r\n '#682221',\r\n '#662222',\r\n '#652222',\r\n '#622323',\r\n '#612223',\r\n '#602323',\r\n '#5e2323',\r\n '#5c2424',\r\n '#5a2425',\r\n '#582424',\r\n '#572525',\r\n '#552525',\r\n '#542626',\r\n '#522627',\r\n '#502626',\r\n '#4e2627',\r\n '#4d2727',\r\n '#4b2728',\r\n '#4a2828',\r\n '#482828',\r\n '#462929',\r\n '#452929',\r\n '#432929',\r\n '#422a29',\r\n '#40292a',\r\n '#3f2a2a',\r\n '#3d2b2b',\r\n '#3b2b2b',\r\n '#3a2b2c',\r\n '#372c2c',\r\n '#362c2c',\r\n '#352d2c',\r\n '#332d2d',\r\n '#312d2e',\r\n '#302e2e',\r\n '#2f2f2f',\r\n '#2e312f',\r\n '#2f322e',\r\n '#2e332e',\r\n '#2e342d',\r\n '#2d372d',\r\n '#2c372c',\r\n '#2d392c',\r\n '#2c3a2b',\r\n '#2b3b2c',\r\n '#2b3d2c',\r\n '#2b3e2b',\r\n '#2a3f2a',\r\n '#2a412a',\r\n '#29432a',\r\n '#294429',\r\n '#294529',\r\n '#284728',\r\n '#284828',\r\n '#284a27',\r\n '#284b27',\r\n '#274d27',\r\n '#264e27',\r\n '#265026',\r\n '#265126',\r\n '#265326',\r\n '#255425',\r\n '#245625',\r\n '#245725',\r\n '#245825',\r\n '#245a24',\r\n '#245b24',\r\n '#245d24',\r\n '#235e23',\r\n '#236023',\r\n '#226123',\r\n '#226322',\r\n '#226421',\r\n '#216621',\r\n '#216721',\r\n '#216821',\r\n '#206920',\r\n '#1f6b20',\r\n '#1f6d1f',\r\n '#1f6f1f',\r\n '#1e701f',\r\n '#1e711e',\r\n '#1d721e',\r\n '#1d741e',\r\n '#1e751e',\r\n '#1d771e',\r\n '#1d781d',\r\n '#1d7a1d',\r\n '#1c7c1c',\r\n '#1c7d1c',\r\n '#1b7e1c',\r\n '#1b801b',\r\n '#1a811b',\r\n '#1a821b',\r\n '#1a841a',\r\n '#1a851b',\r\n '#198719',\r\n '#198819',\r\n '#188919',\r\n '#188b18',\r\n '#188d18',\r\n '#178e18',\r\n '#168f17',\r\n '#169117',\r\n '#179217',\r\n '#169316',\r\n '#159416',\r\n '#159616',\r\n '#159815',\r\n '#159914',\r\n '#149b14',\r\n '#139c14',\r\n '#139e13',\r\n '#129f13',\r\n '#12a013',\r\n '#12a213',\r\n '#12a312',\r\n '#11a411',\r\n '#10a611',\r\n '#10a711',\r\n '#10a911',\r\n '#10ab11',\r\n '#0fac11',\r\n '#0fae10',\r\n '#0faf10',\r\n '#0fb00f',\r\n '#0eb20f',\r\n '#0eb30e',\r\n '#0eb40e',\r\n '#0db60e',\r\n '#0cb70d',\r\n '#0cb90d',\r\n '#0cbb0c',\r\n '#0bbc0d',\r\n '#0bbe0c',\r\n '#0bbf0c',\r\n '#0ac00b',\r\n '#0ac10b',\r\n '#0ac30a',\r\n '#0ac40a',\r\n '#09c609',\r\n '#09c709',\r\n '#09c809',\r\n '#08ca08',\r\n '#07cb08',\r\n '#07cd08',\r\n '#07cf08',\r\n '#06d008',\r\n '#06d107',\r\n '#06d306',\r\n '#05d406',\r\n '#04d505',\r\n '#04d605',\r\n '#04d805',\r\n '#04d904',\r\n '#03da04',\r\n '#03dc03',\r\n '#03dd04',\r\n '#02df03',\r\n '#02e002',\r\n '#01e202',\r\n '#01e302',\r\n '#00e402',\r\n ],\r\n nullColor: '#2f323d',\r\n}\r\n\r\nvar futuresDomains = {\r\n d: 1.5,\r\n w: 2.5,\r\n m: 5,\r\n mtd: 5,\r\n q: 10,\r\n hy: 25,\r\n y: 30,\r\n ytd: 30,\r\n}\r\n\r\nvar forexDomains = {\r\n d: 1,\r\n w: 2.5,\r\n m: 5,\r\n mtd: 5,\r\n q: 10,\r\n hy: 10,\r\n y: 10,\r\n ytd: 10,\r\n}\r\n\r\nvar cryptoDomains = {\r\n d: 5, // TODO refine\r\n w: 2.5,\r\n m: 5,\r\n mtd: 5,\r\n q: 10,\r\n hy: 10,\r\n y: 10,\r\n ytd: 10,\r\n}\r\n\r\nvar generateColorScale = function (domains: Record, domainId: string, gradient = redGreenGradient) {\r\n var domain = {\r\n min: -domains[domainId],\r\n max: +domains[domainId],\r\n }\r\n\r\n var linearScale = d3\r\n .scaleLinear()\r\n .domain([domain.min, domain.max])\r\n .range([0, gradient.colors.length - 1])\r\n\r\n return function (value: number) {\r\n if (typeof value === 'undefined' || value === null) {\r\n return gradient.nullColor\r\n }\r\n\r\n if (value > domain.max) value = domain.max\r\n if (value < domain.min) value = domain.min\r\n\r\n var i = Math.round(linearScale(value))\r\n return gradient.colors[i]\r\n }\r\n}\r\n\r\nvar getCookie = function (name: string) {\r\n var re = new RegExp('(?:(?:^|.*;\\\\s*)' + name + '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$')\r\n return document.cookie.replace(re, '$1')\r\n}\r\n\r\nexport const layout = [\r\n ['YM', 'ES', 'NQ', 'ER2', 'NKD', 'EX', 'DY', 'VX'],\r\n ['CL', 'QA', 'RB', 'HO', 'NG', 'ZK'],\r\n ['ZB', 'ZN'],\r\n ['CC', 'CT', 'JO', 'KC', 'LB', 'SB'],\r\n ['ZF', 'ZT'],\r\n ['GC', 'SI', 'PL', 'HG', 'PA'],\r\n ['LC', 'FC', 'LH'],\r\n ['ZS', 'ZM', 'ZL', 'ZC', 'ZW', 'ZR', 'ZO', 'RS'],\r\n ['DX', '6E', '6J', '6B', '6C', '6S', '6A', '6N'],\r\n]\r\n\r\nexport const groups = ['Indices', 'Energy', 'Bonds', 'Softs', 'Metals', 'Meats', 'Grains', 'Currencies'] as const\r\n\r\nexport { generateColorScale, futuresDomains, forexDomains, cryptoDomains, getCookie }\r\n","import { ReactNode } from 'react'\r\n\r\nexport enum MapTypeId {\r\n Sector = 'sec',\r\n World = 'geo',\r\n SectorFull = 'sec_all',\r\n ETF = 'etf',\r\n Screener = 'screener',\r\n Portfolio = 'portfolio',\r\n ETFHoldings = 'etf_holdings',\r\n}\r\n\r\nexport enum MapSubtypeId {\r\n DayPerf = 'd1',\r\n WeekPerf = 'w1',\r\n MonthPerf = 'w4',\r\n ThreeMonthPerf = 'w13',\r\n SixMonthPerf = 'w26',\r\n YearPerf = 'w52',\r\n YearToDatePerf = 'ytd',\r\n RelativeVolume = 'relvol',\r\n PriceToEarnings = 'pe',\r\n ForwardPriceToEearnings = 'fpe',\r\n PriceEarningsToGrowth = 'peg',\r\n PriceToSellsRatio = 'ps',\r\n PriceToBookRatio = 'pb',\r\n DividendYield = 'div',\r\n EPSGrowth5y = 'eps5y',\r\n FloatShort = 'short',\r\n AnalystRecommendation = 'rec',\r\n EarningsPerf = 'earnperf',\r\n EarningsDate = 'earndate',\r\n // Portfolio\r\n PortfolioGainPct = 'portfolioGainPct',\r\n PortfolioGainUsd = 'portfolioGainUsd',\r\n PortfolioChangePct = 'portfolioChangePct',\r\n PortfolioChangeUsd = 'portfolioChangeUsd',\r\n}\r\n\r\nexport enum ScaleId {\r\n DayPerf = 'default',\r\n WeekPerf = '_5',\r\n MonthPerf = '_10',\r\n ThreeMonthPerf = '_15',\r\n SixMonthPerf = '_20',\r\n YearPerf = '_25',\r\n RelativeVolume = '_relvol',\r\n PriceToEarnings = '_pe',\r\n ForwardPriceToEearnings = '_fpe',\r\n PriceEarningsToGrowth = '_peg',\r\n PriceToSellsRatio = '_ps',\r\n PriceToBookRatio = '_pb',\r\n DividendYield = '_div',\r\n EPSGrowth5y = '_eps5y',\r\n FloatShort = '_short',\r\n AnalystRecommendation = '_rec',\r\n EarningsDate = '_earndate',\r\n // Portfolio\r\n PortfolioPct = '_portfolioPct',\r\n PortfolioUsd = '_portfolioUsd',\r\n}\r\n\r\nexport const enum NodeDepth {\r\n Root,\r\n Sector,\r\n Industry,\r\n Node,\r\n}\r\n\r\nexport interface MapDataRow {\r\n name: string\r\n perf?: number\r\n x: number\r\n y: number\r\n dx: number\r\n dy: number\r\n data: any\r\n depth: NodeDepth\r\n}\r\n\r\nexport interface MapDataRoot {\r\n name: string\r\n children: MapDataSector[]\r\n duplicateTickers: number\r\n hash: string\r\n}\r\n\r\nexport interface MapDataSector extends MapDataRow {\r\n children: MapDataIndustry[]\r\n parent: MapDataRoot\r\n}\r\n\r\nexport interface MapDataIndustry extends MapDataRow {\r\n children: MapDataNode[]\r\n parent: MapDataSector\r\n}\r\n\r\nexport interface MapDataNode extends MapDataRow {\r\n parent: MapDataIndustry\r\n additional?: string\r\n description: string\r\n perfText: string\r\n value: number\r\n}\r\n\r\nexport interface MapData {\r\n sectors: MapDataSector[]\r\n industries: MapDataIndustry[]\r\n nodes: MapDataNode[]\r\n}\r\n\r\nexport type PerfData = {\r\n nodes: Record | Array\r\n additional: Record\r\n subtype: MapSubtypeId\r\n version?: number\r\n hash: string\r\n}\r\n\r\nexport interface MapSubtype {\r\n id: MapSubtypeId\r\n name: string\r\n scaleId: ScaleId\r\n tooltip: string\r\n countIndustryPerf: boolean\r\n countSectorPerf: boolean\r\n}\r\n\r\nexport interface MapType {\r\n name: string\r\n pageTitle: string\r\n nameShort?: string\r\n description: string\r\n type: MapTypeId\r\n subtypes: MapSubtype[]\r\n}\r\n\r\nexport interface Scale {\r\n name: string\r\n tooltip: ReactNode\r\n id: ScaleId\r\n}\r\n","import React from 'react'\r\n\r\nimport { Button } from '../../../main/components/button'\r\nimport { Delayed } from '../../../main/components/delayed'\r\nimport { getExtendedDialogState } from '../../../main/components/dialog'\r\nimport { Icon } from '../../../main/components/icon'\r\nimport { Popover, PopoverStateReturn, PopoverTrigger, usePopoverState } from '../../../main/components/popover'\r\nimport { PopoverPlacement } from '../../../main/components/popover/types'\r\nimport { Spinner } from '../../../main/components/spinner'\r\nimport { useAsyncModule, withSuspense } from '../../../main/services/async-modules-utils'\r\nimport {\r\n chartSettingsAsyncModule,\r\n preventClosingUnsavedChangesAsyncModule,\r\n useChartLayoutGlobalModelAsync,\r\n} from '../../charts-lib'\r\nimport { useOnSettingsClick } from '../hooks/use-on-settings-click'\r\n\r\nconst BUTTON_POPOVER_GUTTER = 16\r\nconst SETTINGS_POPOVER_ID = 'settings-popover'\r\n\r\ntype PopoverStylesType = { body?: React.CSSProperties; wrapper?: React.CSSProperties }\r\n\r\nexport function ScrollableChartSettingsPopover({ state }: { state: PopoverStateReturn; page: string }) {\r\n const [chartSettingsModule] = useAsyncModule({\r\n ...chartSettingsAsyncModule,\r\n shouldLoadModule: state.visible,\r\n errorSeverity: 'medium',\r\n onError: () => state.hide(),\r\n })\r\n const [preventClosingUnsavedChangesModule] = useAsyncModule({\r\n ...preventClosingUnsavedChangesAsyncModule,\r\n shouldLoadModule: state.visible,\r\n errorSeverity: 'medium',\r\n onError: () => state.hide(),\r\n })\r\n\r\n /**\r\n * The reason for this workaround is that the popover with a loader while fetching async modules remounts and resets\r\n * all animations when all async modules are loaded and the popover is rerendered inside PreventClosingUnsavedChanges\r\n * */\r\n const checkForUnsavedChangesAndCloseRef = React.useRef(() => {})\r\n\r\n const { ChartSettings } = chartSettingsModule ?? {}\r\n const { PreventClosingUnsavedChanges } = preventClosingUnsavedChangesModule ?? {}\r\n const { isFullyClosed } = getExtendedDialogState(state)\r\n const chartElement = document.getElementById('chart')\r\n const popoverContentElement = document.getElementById(SETTINGS_POPOVER_ID)\r\n const settingsButton = state.unstable_referenceRef.current\r\n\r\n const popoverStyles = React.useMemo(() => {\r\n let newPopoverStyles: PopoverStylesType = {}\r\n if (!settingsButton || !chartElement) {\r\n return newPopoverStyles\r\n }\r\n const settingsButtonBoundingClientRect = settingsButton.getBoundingClientRect()\r\n const topOffset = settingsButtonBoundingClientRect.top + settingsButtonBoundingClientRect.height\r\n newPopoverStyles.body = {\r\n maxHeight: window.innerHeight - topOffset - BUTTON_POPOVER_GUTTER * 2,\r\n position: 'sticky',\r\n top: -topOffset + BUTTON_POPOVER_GUTTER - window.scrollY,\r\n }\r\n if (!popoverContentElement) {\r\n return newPopoverStyles\r\n }\r\n const chartHeight = chartElement.clientHeight\r\n const popoverContentHeight = popoverContentElement.offsetHeight\r\n const isRedesign = FinvizSettings.hasRedesignEnabled\r\n newPopoverStyles.wrapper = {\r\n height: popoverContentHeight < chartHeight ? chartHeight : undefined,\r\n ...(!isRedesign && {\r\n transform: `translate(${BUTTON_POPOVER_GUTTER}px, ${topOffset + BUTTON_POPOVER_GUTTER + window.scrollY}px)`,\r\n }),\r\n }\r\n\r\n return newPopoverStyles\r\n }, [settingsButton, chartElement, popoverContentElement])\r\n\r\n return (\r\n \r\n {!!(PreventClosingUnsavedChanges && ChartSettings) ? (\r\n \r\n {({ checkForUnsavedChangesAndClose }) => {\r\n checkForUnsavedChangesAndCloseRef.current = checkForUnsavedChangesAndClose\r\n return !isFullyClosed ? : null\r\n }}\r\n \r\n ) : (\r\n \r\n
\r\n \r\n
\r\n
\r\n )}\r\n \r\n )\r\n}\r\n\r\ninterface Props {\r\n isPremium: boolean\r\n page: string\r\n placement?: PopoverPlacement\r\n}\r\n\r\nfunction ForexFuturesCryptoSettingsRaw({ isPremium, page }: Props) {\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n const settingsPopoverState = usePopoverState({ placement: 'bottom-start' })\r\n const onSettingsClick = useOnSettingsClick({ isPremium, page, openSettingsCallback: settingsPopoverState.show })\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\n// charts bundle may not be fetched and therefore withSuspense is undefined but on those pages components in this file are not used at all\r\nexport const ForexFuturesCryptoSettings = withSuspense?.(ForexFuturesCryptoSettingsRaw)\r\n","import * as React from 'react'\r\n\r\nimport { encodeQueryString } from '../../queryString'\r\n\r\ninterface IUseOnSettingsClick {\r\n openSettingsCallback: () => void\r\n isPremium: boolean\r\n page: string\r\n isFreeSettingsAvailable?: boolean\r\n}\r\n\r\n/**\r\n * Hook which provides settings open handler function\r\n */\r\nexport function useOnSettingsClick({\r\n openSettingsCallback,\r\n isPremium,\r\n page,\r\n isFreeSettingsAvailable,\r\n}: IUseOnSettingsClick) {\r\n const onSettingsClick = React.useCallback(\r\n (e: React.MouseEvent) => {\r\n e.preventDefault()\r\n if (isPremium || isFreeSettingsAvailable) {\r\n openSettingsCallback()\r\n } else {\r\n document.location = `/elite.ashx?${encodeQueryString({\r\n utm_source: 'finviz',\r\n utm_medium: 'banner',\r\n utm_campaign: `${page}-settings-button`,\r\n })}`\r\n }\r\n },\r\n [isPremium, page, openSettingsCallback, isFreeSettingsAvailable]\r\n )\r\n return onSettingsClick\r\n}\r\n","import * as React from 'react'\r\nimport { useLocation, useNavigate, useSearchParams } from 'react-router-dom'\r\n\r\nimport {\r\n CustomDateRange,\r\n TimeframeBar,\r\n daterangeUtm,\r\n generatePathForTimeframeDateRange,\r\n getDateRangeGroupsWithHref,\r\n getTimeframeFromDateRange,\r\n timeframeUtm,\r\n useCustomDateRangeDialog,\r\n useFavoriteTimeframes,\r\n} from '../../../main/components/timeframe-bar'\r\nimport { SpecificChartFunctionality, TIMEFRAME } from '../../../main/constants'\r\nimport { useTrackPageView } from '../../../main/hooks/use-track-pageview'\r\nimport { Instrument } from '../../../main/types'\r\nimport { StockDetailTimeframeBar, getTimeframeGroupsWithHref } from '../../charts-lib'\r\nimport { encodeQueryString } from '../../queryString'\r\n\r\nconst IMAGE_SELECTOR = '.charts-gal'\r\n\r\nfunction updateUrlString(urlString: string, query: Record) {\r\n const url = new URL(urlString)\r\n\r\n Object.keys(query).forEach((key: keyof typeof query) => {\r\n const value = query[key]\r\n if (value === undefined) {\r\n url.searchParams.delete(key)\r\n } else {\r\n url.searchParams.set(key, value)\r\n }\r\n })\r\n\r\n return url.toString()\r\n}\r\n\r\nfunction updateImageSrc(image: HTMLImageElement, query: Record) {\r\n image.src = updateUrlString(image.src, query)\r\n\r\n if (image.srcset) {\r\n image.srcset = image.srcset\r\n .split(', ')\r\n .map((dyna) => {\r\n const [url, rule] = dyna.trim().split(' ')\r\n return `${updateUrlString(url.trim(), query)} ${rule}`\r\n })\r\n .join(', ')\r\n }\r\n}\r\n\r\nfunction updateLinkhref(linkElement: HTMLAnchorElement | null, query: Record) {\r\n if (!linkElement) return\r\n\r\n linkElement.href = updateUrlString(linkElement.href, query)\r\n}\r\n\r\nfunction getPageTitle(isDetail?: boolean, pageType?: string, ticker?: string, timeframe?: string) {\r\n return [pageType, ticker, isDetail ? 'Chart' : 'Charts', timeframe].filter(Boolean).join(' ')\r\n}\r\n\r\nexport function FuturesForexCryptoTimeframeBar({\r\n isDetail = false,\r\n title,\r\n group,\r\n specificChartFunctionality,\r\n instrument,\r\n onTimeframeChange,\r\n onDateRangeChange,\r\n}: {\r\n isDetail?: boolean\r\n title: string\r\n group?: string\r\n instrument: Instrument\r\n specificChartFunctionality: SpecificChartFunctionality\r\n onTimeframeChange?: (value: TIMEFRAME) => void\r\n onDateRangeChange?: (value: string | undefined) => void\r\n}) {\r\n useTrackPageView({ trackAutomatically: !isDetail })\r\n const isPremium = true // Force show all timeframes for all users\r\n const navigate = useNavigate()\r\n const location = useLocation()\r\n const [searchParams] = useSearchParams()\r\n const query = React.useMemo(() => Object.fromEntries(searchParams) as { p: string; r?: string }, [searchParams])\r\n const { favoriteTimeframes, toggleFavoriteTimeframe } = useFavoriteTimeframes()\r\n const dateRange = query.r ?? undefined\r\n const { timeFrameGroups, dateRangeGroupsWithHref } = React.useMemo(() => {\r\n const timeFrameGroups = getTimeframeGroupsWithHref({\r\n isPremium,\r\n generatePath: (timeFrame) =>\r\n generatePathForTimeframeDateRange({\r\n isPremium,\r\n pathname: location.pathname,\r\n timeframe: timeFrame.value,\r\n dateRange: null,\r\n utmCampaign: timeframeUtm[specificChartFunctionality],\r\n }),\r\n })\r\n const dateRangeGroupsWithHref = getDateRangeGroupsWithHref({\r\n isPremium,\r\n customRange: dateRange,\r\n isCustomAvailable: true,\r\n instrument,\r\n generatePath: (dateRange) =>\r\n generatePathForTimeframeDateRange({\r\n isPremium,\r\n pathname: window.location.pathname,\r\n timeframe: dateRange.timeframe!,\r\n dateRange: dateRange.value,\r\n utmCampaign: daterangeUtm[specificChartFunctionality],\r\n }),\r\n })\r\n\r\n return { timeFrameGroups, dateRangeGroupsWithHref }\r\n }, [isPremium, location.pathname, dateRange, instrument, specificChartFunctionality])\r\n\r\n const { onDialogSubmit, customDateRangeDialogState, handleDateRangeSelect } = useCustomDateRangeDialog({\r\n instrument,\r\n anchorDate: new Date(),\r\n shouldReloadOnNavigate: false,\r\n pathGenerator: ({ dateRange, timeframe }) => ({\r\n pathname: window.location.pathname,\r\n search: new URLSearchParams({ ...query, p: timeframe, r: dateRange ?? '' }).toString(),\r\n }),\r\n })\r\n\r\n const handleTimeframeDateRangeChange = ({\r\n timeframe,\r\n dateRange,\r\n }: {\r\n timeframe: TIMEFRAME\r\n dateRange: string | undefined\r\n }) => {\r\n document.querySelectorAll(IMAGE_SELECTOR).forEach((image) => {\r\n updateImageSrc(image, { tf: timeframe, r: dateRange })\r\n updateLinkhref(image.closest('a'), { p: timeframe, r: dateRange })\r\n })\r\n onTimeframeChange?.(timeframe)\r\n onDateRangeChange?.(dateRange)\r\n }\r\n\r\n if (isDetail) {\r\n return (\r\n {\r\n document.title = getPageTitle(isDetail, title, group, timeframe.labelPageTitle ?? timeframe.label)\r\n onTimeframeChange?.(timeframe.value)\r\n }}\r\n onDateRangeSelect={(option) => {\r\n if (option) {\r\n document.title = getPageTitle(isDetail, title, group, option.label)\r\n }\r\n onDateRangeChange?.(option.value)\r\n }}\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n toggleFavoriteTimeframe(timeframe.value)}\r\n selectedTimeframe={query.p ?? TIMEFRAME.d}\r\n timeFrameGroups={timeFrameGroups}\r\n onTimeframeSelect={(option) => {\r\n if (option.value === 'intraday') {\r\n // intraday option is only available for free users, and it redirects them to elite page\r\n return\r\n }\r\n document.title = getPageTitle(isDetail, title, group, option.labelPageTitle ?? option.label)\r\n navigate(`${location.pathname}?${encodeQueryString({ ...query, p: option.value })}`)\r\n handleTimeframeDateRangeChange({ timeframe: option.value, dateRange: undefined })\r\n }}\r\n selectedDateRange={query['r'] ?? null}\r\n dateRangeGroups={dateRangeGroupsWithHref}\r\n onDateRangeSelect={(option) => {\r\n handleDateRangeSelect(option, ({ timeframe, value: dateRange }) => {\r\n document.title = getPageTitle(isDetail, title, group, option.label)\r\n handleTimeframeDateRangeChange({ timeframe, dateRange })\r\n })\r\n }}\r\n onCustomDateRangeClick={() => {\r\n if (isPremium) customDateRangeDialogState.show()\r\n }}\r\n />\r\n {\r\n const value = dateRange ?? ''\r\n const timeframe = getTimeframeFromDateRange({\r\n dateRange: value,\r\n instrument: Instrument.Stock,\r\n anchorDate: new Date(),\r\n isPremium: isPremium,\r\n })\r\n handleTimeframeDateRangeChange({ timeframe, dateRange: value || undefined })\r\n return onDialogSubmit({ value, timeframe })\r\n }}\r\n />\r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport * as d3 from 'd3'\r\nimport PropTypes from 'prop-types'\r\nimport { Component } from 'react'\r\n\r\ninterface SparklineProps {\r\n className?: string\r\n data: number[]\r\n width: number\r\n height: number\r\n}\r\n\r\nclass Sparkline extends Component {\r\n static propTypes = {\r\n width: PropTypes.number.isRequired,\r\n height: PropTypes.number.isRequired,\r\n data: PropTypes.arrayOf(PropTypes.number).isRequired,\r\n }\r\n\r\n shouldComponentUpdate(nextProps: SparklineProps) {\r\n // eslint-disable-next-line eqeqeq\r\n return nextProps.data != this.props.data\r\n }\r\n\r\n render() {\r\n var data = this.props.data\r\n var x = d3.scaleLinear().range([0, this.props.width]).domain([0, data.length])\r\n\r\n var y = d3\r\n .scaleLinear()\r\n .range([this.props.height - 4, 0])\r\n .domain(d3.extent(data, (d) => d) as [number, number])\r\n\r\n var line = d3\r\n .line()\r\n .curve(d3.curveBasis)\r\n .x((d, i) => x(i))\r\n .y((d) => y(d))\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Sparkline\r\n","import { Utils, convertTa } from '../charts-lib'\r\n\r\nexport function getInitChartConfig() {\r\n window.globalChartConfig.scrollable = false\r\n if (FinvizSettings.hasUserPremium) {\r\n window.globalChartConfig.scrollable = window.globalChartConfig.editable || !Utils.isMobile()\r\n }\r\n\r\n if (FinvizSettings.TA) {\r\n const COTs = FinvizSettings.COTs\r\n convertTa.mergeChartAndTAConfig(window.globalChartConfig, FinvizSettings.TA, COTs ? { COTs } : undefined)\r\n }\r\n\r\n return window.globalChartConfig\r\n}\r\n","import { ScaleId } from '../maps/types'\r\n\r\nexport interface GradientDefinition {\r\n colors: string[]\r\n nullColor: string\r\n}\r\n\r\nconst redGreenGradientSmall = {\r\n colors: [\r\n '#e01427',\r\n '#ce252b',\r\n '#bb2f30',\r\n '#aa3534',\r\n '#993938',\r\n '#853c3c',\r\n '#743d3f',\r\n '#414554',\r\n '#3e5f50',\r\n '#3f704f',\r\n '#3f814d',\r\n '#3c924a',\r\n '#36a446',\r\n '#2bb642',\r\n '#12c93b',\r\n ],\r\n nullColor: '#2f323d',\r\n}\r\nexport const redGreenGradient = {\r\n colors: [\r\n '#f63538',\r\n '#ee373a',\r\n '#e6393b',\r\n '#df3a3d',\r\n '#d73c3f',\r\n '#ce3d41',\r\n '#c73e43',\r\n '#bf4045',\r\n '#b64146',\r\n '#ae4248',\r\n '#a5424a',\r\n '#9d434b',\r\n '#94444d',\r\n '#8b444e',\r\n '#824450',\r\n '#784551',\r\n '#6f4552',\r\n '#644553',\r\n '#5a4554',\r\n '#4f4554',\r\n '#414554',\r\n '#3f4c53',\r\n '#3d5451',\r\n '#3b5a50',\r\n '#3a614f',\r\n '#38694f',\r\n '#366f4e',\r\n '#35764e',\r\n '#347d4e',\r\n '#32844e',\r\n '#31894e',\r\n '#31904e',\r\n '#30974f',\r\n '#2f9e4f',\r\n '#2fa450',\r\n '#2faa51',\r\n '#2fb152',\r\n '#2fb854',\r\n '#30be56',\r\n '#30c558',\r\n '#30cc5a',\r\n ],\r\n nullColor: '#2f323d',\r\n}\r\nconst greenRedGradient = { colors: redGreenGradient.colors.slice().reverse(), nullColor: redGreenGradient.nullColor }\r\nconst redGradient = { colors: redGreenGradient.colors.slice(0, 22).reverse(), nullColor: redGreenGradient.nullColor }\r\nconst greenGradient = { colors: redGreenGradient.colors.slice(21), nullColor: redGreenGradient.nullColor }\r\nconst blueGradient = {\r\n colors: [\r\n '#3d4251',\r\n '#3d4250',\r\n '#3d4250',\r\n '#3e4251',\r\n '#3e4251',\r\n '#3d4350',\r\n '#3d4350',\r\n '#3d4350',\r\n '#3e4351',\r\n '#3e4350',\r\n '#3d4351',\r\n '#3d4352',\r\n '#3f4353',\r\n '#3f4353',\r\n '#3f4453',\r\n '#3f4554',\r\n '#3e4354',\r\n '#3e4354',\r\n '#3f4454',\r\n '#3f4454',\r\n '#3f4454',\r\n '#3f4454',\r\n '#3f4454',\r\n '#3f4555',\r\n '#3f4556',\r\n '#3f4457',\r\n '#3f4457',\r\n '#3f4457',\r\n '#3f4557',\r\n '#3f4657',\r\n '#3f4657',\r\n '#3f4657',\r\n '#3f4557',\r\n '#3e4557',\r\n '#3e4558',\r\n '#3f465a',\r\n '#3f4659',\r\n '#3f4759',\r\n '#3f4759',\r\n '#3f475a',\r\n '#3f4759',\r\n '#3f465a',\r\n '#3f465a',\r\n '#3f4759',\r\n '#3f475b',\r\n '#40475b',\r\n '#40475b',\r\n '#40465b',\r\n '#40465c',\r\n '#40465d',\r\n '#40485d',\r\n '#40485c',\r\n '#40475c',\r\n '#40465c',\r\n '#40465c',\r\n '#40465c',\r\n '#40485d',\r\n '#40485d',\r\n '#40485e',\r\n '#40485f',\r\n '#40495e',\r\n '#40495e',\r\n '#40485e',\r\n '#40485f',\r\n '#40495e',\r\n '#40485e',\r\n '#40485f',\r\n '#404960',\r\n '#404960',\r\n '#404860',\r\n '#404861',\r\n '#404a62',\r\n '#404962',\r\n '#404962',\r\n '#404a62',\r\n '#404a62',\r\n '#404861',\r\n '#404961',\r\n '#404a63',\r\n '#404a64',\r\n '#404a65',\r\n '#404b64',\r\n '#404b64',\r\n '#404a65',\r\n '#404a65',\r\n '#404a65',\r\n '#404a65',\r\n '#404b65',\r\n '#404b65',\r\n '#414c65',\r\n '#424c65',\r\n '#424b65',\r\n '#414b66',\r\n '#414b67',\r\n '#414b67',\r\n '#414c67',\r\n '#424b67',\r\n '#424c67',\r\n '#414c67',\r\n '#414b67',\r\n '#414c67',\r\n '#414c67',\r\n '#414c69',\r\n '#414c6a',\r\n '#414c6a',\r\n '#414c6a',\r\n '#414d6a',\r\n '#424e6a',\r\n '#414d6a',\r\n '#414d6a',\r\n '#414d6a',\r\n '#414d6a',\r\n '#414d6a',\r\n '#414d6b',\r\n '#414d6c',\r\n '#414e6c',\r\n '#414f6c',\r\n '#414e6c',\r\n '#414d6c',\r\n '#414d6c',\r\n '#414e6c',\r\n '#424e6d',\r\n '#424e6d',\r\n '#414f6d',\r\n '#424f6f',\r\n '#414e6f',\r\n '#414e6f',\r\n '#424f70',\r\n '#414f6f',\r\n '#414f6f',\r\n '#414f6f',\r\n '#414e6f',\r\n '#414e6f',\r\n '#414f6f',\r\n '#414f6f',\r\n '#414f71',\r\n '#414f72',\r\n '#425073',\r\n '#425173',\r\n '#415072',\r\n '#425173',\r\n '#425173',\r\n '#425173',\r\n '#415072',\r\n '#415072',\r\n '#415172',\r\n '#415173',\r\n '#415174',\r\n '#415174',\r\n '#415074',\r\n '#415074',\r\n '#415174',\r\n '#415074',\r\n '#415074',\r\n '#415074',\r\n '#415175',\r\n '#415275',\r\n '#425276',\r\n '#425277',\r\n '#415177',\r\n '#415177',\r\n '#425278',\r\n '#425378',\r\n '#415277',\r\n '#415378',\r\n '#415378',\r\n '#415277',\r\n '#415378',\r\n '#42537a',\r\n '#42537c',\r\n '#42537b',\r\n '#41537a',\r\n '#41527a',\r\n '#41537a',\r\n '#41547a',\r\n '#42547b',\r\n '#41547a',\r\n '#41547a',\r\n '#41547c',\r\n '#41547c',\r\n '#41557c',\r\n '#41557c',\r\n '#41557c',\r\n '#41557c',\r\n '#41557d',\r\n '#41547d',\r\n '#41547c',\r\n '#42557d',\r\n '#41557d',\r\n '#41557d',\r\n '#41557f',\r\n '#415580',\r\n '#41567f',\r\n '#41567f',\r\n '#415580',\r\n '#41567f',\r\n '#415580',\r\n '#415580',\r\n '#41557f',\r\n '#415680',\r\n '#415680',\r\n '#415680',\r\n '#415681',\r\n '#415681',\r\n '#415781',\r\n '#415781',\r\n '#415681',\r\n '#415781',\r\n '#415781',\r\n '#415781',\r\n '#415782',\r\n '#415784',\r\n '#415784',\r\n '#425885',\r\n '#425885',\r\n '#415784',\r\n '#415784',\r\n '#415784',\r\n '#415784',\r\n '#425885',\r\n '#425885',\r\n '#415885',\r\n '#415885',\r\n '#425987',\r\n '#415887',\r\n '#415887',\r\n '#415987',\r\n '#415887',\r\n '#425988',\r\n '#425988',\r\n '#415887',\r\n '#415987',\r\n '#415988',\r\n '#415988',\r\n '#415988',\r\n '#415989',\r\n '#415989',\r\n '#415989',\r\n '#415989',\r\n '#415989',\r\n '#415989',\r\n '#41598a',\r\n '#405a8b',\r\n '#405a8c',\r\n '#405b8c',\r\n '#405b8c',\r\n '#405b8c',\r\n '#405a8c',\r\n '#405a8c',\r\n '#405a8c',\r\n '#405a8c',\r\n '#405b8c',\r\n '#415c8d',\r\n '#415c8e',\r\n '#405b8e',\r\n '#415c90',\r\n '#405b8f',\r\n '#405c8f',\r\n '#415d90',\r\n '#405b8f',\r\n '#405c8f',\r\n '#405c8f',\r\n '#405b8f',\r\n '#405c8f',\r\n '#405c90',\r\n '#405c91',\r\n '#405c91',\r\n '#405c91',\r\n '#405d91',\r\n '#405e91',\r\n '#405d91',\r\n '#415e91',\r\n '#405e91',\r\n '#415e91',\r\n '#415e92',\r\n '#3f5d94',\r\n '#3f5d93',\r\n '#3f5d93',\r\n '#3f5e94',\r\n '#405e94',\r\n '#3f5d94',\r\n '#3f5d94',\r\n '#3f5d94',\r\n '#3f5e94',\r\n '#3f5e95',\r\n '#3f5e96',\r\n '#3f5e96',\r\n '#3f5e96',\r\n '#405f97',\r\n '#405f97',\r\n '#3f5e96',\r\n '#3f5e97',\r\n '#3f5f97',\r\n '#3f6097',\r\n '#3f5f97',\r\n '#3f6097',\r\n '#3f5f98',\r\n '#3f5f99',\r\n '#3e5f99',\r\n '#3e6199',\r\n '#3e6099',\r\n '#3e5f99',\r\n '#3e5f99',\r\n '#3e5f98',\r\n '#3e6099',\r\n '#3d609a',\r\n '#3d6099',\r\n '#3e609b',\r\n '#3e619c',\r\n '#3e619c',\r\n '#3e619c',\r\n '#3e609b',\r\n '#3e609c',\r\n '#3e609c',\r\n '#3e619b',\r\n '#3e629c',\r\n '#3e629c',\r\n '#3e619c',\r\n '#3d619d',\r\n '#3d639f',\r\n '#3d629f',\r\n '#3d629f',\r\n '#3d639f',\r\n '#3d629f',\r\n '#3c619e',\r\n '#3c619e',\r\n '#3d629f',\r\n '#3d62a0',\r\n '#3d63a0',\r\n '#3d63a0',\r\n '#3d62a0',\r\n '#3d63a1',\r\n '#3d62a0',\r\n '#3d63a0',\r\n '#3d64a1',\r\n '#3d63a0',\r\n '#3c63a0',\r\n '#3b63a2',\r\n '#3c64a3',\r\n '#3c65a3',\r\n '#3b63a3',\r\n '#3b63a3',\r\n '#3b63a3',\r\n '#3b63a3',\r\n '#3c63a3',\r\n '#3c65a3',\r\n '#3c65a3',\r\n '#3b64a4',\r\n '#3a65a5',\r\n '#3b66a6',\r\n '#3c65a6',\r\n '#3a65a5',\r\n '#3a64a5',\r\n '#3a64a5',\r\n '#3b65a5',\r\n '#3a65a5',\r\n '#3a66a6',\r\n '#3b66a6',\r\n '#3b66a6',\r\n '#3a66a8',\r\n '#3a67a8',\r\n '#3b67a8',\r\n '#3b66a8',\r\n '#3b66a8',\r\n '#3b66a8',\r\n '#3b67a8',\r\n '#3a66a8',\r\n '#3966a9',\r\n '#3967a9',\r\n '#3a67aa',\r\n '#3a67ab',\r\n '#3967ab',\r\n '#3a68ab',\r\n '#3a68ab',\r\n '#3968ab',\r\n '#3966aa',\r\n '#3966aa',\r\n '#3968ab',\r\n '#3968ab',\r\n '#3867ac',\r\n '#3867ac',\r\n '#3868ac',\r\n '#3869ad',\r\n '#3969ad',\r\n '#3968ad',\r\n '#3868ac',\r\n '#3868ac',\r\n '#3869ae',\r\n '#3868ad',\r\n '#3868ad',\r\n '#3769af',\r\n '#3869b0',\r\n '#3769af',\r\n '#3769af',\r\n '#386ab0',\r\n '#386ab0',\r\n '#376aaf',\r\n '#376aaf',\r\n '#376ab0',\r\n '#366ab1',\r\n '#366ab2',\r\n '#366ab2',\r\n '#366ab2',\r\n '#366ab3',\r\n '#366bb3',\r\n '#366ab2',\r\n '#3669b2',\r\n '#366ab2',\r\n '#366ab2',\r\n '#366ab2',\r\n '#356bb3',\r\n '#346bb4',\r\n '#356cb4',\r\n '#356cb4',\r\n '#346bb4',\r\n '#356cb4',\r\n '#356cb5',\r\n '#356cb5',\r\n '#356cb5',\r\n '#346cb5',\r\n '#346cb5',\r\n '#346cb6',\r\n '#336db7',\r\n '#326cb7',\r\n '#326db7',\r\n '#336db7',\r\n '#336cb7',\r\n '#326bb6',\r\n '#326cb6',\r\n '#326db7',\r\n '#326db8',\r\n '#316dba',\r\n '#316eb9',\r\n '#316eb9',\r\n '#326eba',\r\n '#316eba',\r\n '#316db9',\r\n '#316db9',\r\n '#316eb9',\r\n '#306eba',\r\n '#306dba',\r\n '#306dba',\r\n '#306ebb',\r\n '#306dbb',\r\n '#306dbc',\r\n '#306fbc',\r\n '#306fbc',\r\n '#306ebb',\r\n '#306eba',\r\n '#306fbc',\r\n '#2f6fbd',\r\n '#2d6ebe',\r\n '#2d6ebe',\r\n '#2d6fbe',\r\n '#2e70be',\r\n '#2e70be',\r\n '#2e6fbe',\r\n '#2e6fbe',\r\n '#2e6fbe',\r\n '#2c6fc0',\r\n '#2d70c0',\r\n '#2d70c0',\r\n '#2b70c1',\r\n '#2b70c1',\r\n '#2c70c1',\r\n '#2c70c1',\r\n '#2b71c1',\r\n '#2c70c1',\r\n '#2c70c1',\r\n '#2c71c1',\r\n '#2c71c1',\r\n '#2a72c3',\r\n '#2971c3',\r\n '#2a71c2',\r\n '#2972c3',\r\n '#2a71c3',\r\n '#2a71c3',\r\n '#2972c3',\r\n '#2972c3',\r\n '#2972c3',\r\n '#2872c5',\r\n '#2872c6',\r\n '#2872c5',\r\n '#2773c6',\r\n '#2773c6',\r\n '#2772c6',\r\n '#2772c5',\r\n '#2672c5',\r\n '#2673c5',\r\n '#2673c5',\r\n '#2673c7',\r\n '#2472c8',\r\n '#2473c8',\r\n '#2474c8',\r\n '#2573c9',\r\n '#2573c9',\r\n '#2573c9',\r\n '#2573c9',\r\n '#2474c8',\r\n '#2374c9',\r\n '#2374c9',\r\n '#2374c9',\r\n '#2375c9',\r\n '#2374c9',\r\n '#2374c9',\r\n '#2475c9',\r\n '#2575ca',\r\n '#2476ca',\r\n '#2476ca',\r\n '#2476ca',\r\n '#2575cb',\r\n '#2577ca',\r\n '#2577ca',\r\n '#2576ca',\r\n '#2577ca',\r\n '#2577ca',\r\n '#2577ca',\r\n '#2677ca',\r\n '#2678ca',\r\n '#2678cb',\r\n '#2778cb',\r\n '#2778cb',\r\n '#2679cb',\r\n '#2779cb',\r\n '#2779cb',\r\n '#2779cb',\r\n '#2779cb',\r\n '#2879cb',\r\n '#287acb',\r\n '#287acb',\r\n '#2879cb',\r\n '#287acb',\r\n '#287bcb',\r\n '#287acb',\r\n '#287acb',\r\n '#287bcc',\r\n '#287bcc',\r\n '#297bcc',\r\n '#297bcc',\r\n '#297bcc',\r\n '#297bcc',\r\n '#297ccc',\r\n '#297ccc',\r\n '#297dcc',\r\n '#297dcc',\r\n '#2a7dcc',\r\n '#2a7dcc',\r\n '#2a7ecd',\r\n '#2a7ecd',\r\n '#2a7ecc',\r\n '#2a7ecc',\r\n '#2b7ecd',\r\n '#2c7ecd',\r\n '#2c7fcd',\r\n '#2c7fcd',\r\n '#2b7ecc',\r\n '#2b7ecc',\r\n '#2c7fcd',\r\n '#2c7fcd',\r\n '#2c7fcd',\r\n '#2c7fcd',\r\n '#2b7fcd',\r\n '#2b80cd',\r\n '#2c80ce',\r\n '#2d80ce',\r\n '#2d80ce',\r\n '#2c81cd',\r\n '#2d82ce',\r\n '#2d82ce',\r\n '#2d81ce',\r\n '#2d82ce',\r\n '#2d82ce',\r\n '#2d82cd',\r\n '#2e82cd',\r\n '#2e83ce',\r\n '#2e82ce',\r\n '#2d82cd',\r\n '#2d83cd',\r\n '#2e83cf',\r\n '#2e84cf',\r\n '#2e84cf',\r\n '#2e83ce',\r\n '#2e83ce',\r\n '#3084cf',\r\n '#3085cf',\r\n '#2f85ce',\r\n '#3085cf',\r\n '#2f86ce',\r\n '#2f86ce',\r\n '#2f86cf',\r\n '#2f85cf',\r\n '#2f86ce',\r\n '#2f86cf',\r\n '#2f86cf',\r\n '#2f87cf',\r\n '#2f86d0',\r\n '#2f86d0',\r\n '#2f86d0',\r\n '#3087cf',\r\n '#3088d0',\r\n '#3088d0',\r\n '#3087cf',\r\n '#3088cf',\r\n '#3188d0',\r\n '#3188d1',\r\n '#3088d0',\r\n '#3089d0',\r\n '#3089d0',\r\n '#3088d0',\r\n '#3188d0',\r\n '#3189d0',\r\n '#3289d0',\r\n '#3289d0',\r\n '#328ad1',\r\n '#328ad1',\r\n '#318ad0',\r\n '#318ad0',\r\n '#318ad0',\r\n '#328bd1',\r\n '#328ad1',\r\n '#328ad1',\r\n '#338bd2',\r\n '#338bd2',\r\n '#338cd1',\r\n '#338cd1',\r\n '#338cd2',\r\n '#338cd2',\r\n '#338dd1',\r\n '#338dd1',\r\n '#338dd2',\r\n '#338dd1',\r\n '#338ed2',\r\n '#338ed2',\r\n '#338ed2',\r\n '#348ed2',\r\n '#348ed2',\r\n '#348ed2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#3390d2',\r\n '#3391d2',\r\n '#3491d3',\r\n '#3490d3',\r\n '#3491d3',\r\n '#3491d3',\r\n '#3591d3',\r\n '#3591d3',\r\n '#3691d4',\r\n '#3690d4',\r\n '#3590d3',\r\n '#3592d3',\r\n '#3592d4',\r\n '#3592d4',\r\n '#3592d3',\r\n '#3593d3',\r\n '#3592d4',\r\n '#3592d4',\r\n '#3592d4',\r\n '#3593d4',\r\n '#3694d4',\r\n '#3695d4',\r\n '#3694d4',\r\n '#3693d4',\r\n '#3693d4',\r\n '#3695d4',\r\n '#3695d4',\r\n '#3695d4',\r\n '#3796d4',\r\n '#3796d4',\r\n '#3695d4',\r\n '#3695d5',\r\n '#3696d5',\r\n '#3696d5',\r\n '#3696d5',\r\n '#3695d4',\r\n '#3696d4',\r\n '#3797d5',\r\n '#3796d5',\r\n '#3797d5',\r\n '#3898d5',\r\n '#3898d5',\r\n '#3797d5',\r\n '#3798d5',\r\n '#3899d5',\r\n '#3899d5',\r\n '#3899d6',\r\n '#3799d6',\r\n '#3799d6',\r\n '#3799d6',\r\n '#389ad6',\r\n '#389ad6',\r\n '#3799d5',\r\n '#3799d5',\r\n '#3799d6',\r\n '#379ad6',\r\n '#379ad6',\r\n '#399ad6',\r\n '#399ad6',\r\n '#389bd5',\r\n '#389bd5',\r\n '#389bd6',\r\n '#389bd6',\r\n '#399cd7',\r\n '#399bd7',\r\n '#399cd7',\r\n '#399dd7',\r\n '#389cd7',\r\n '#389cd6',\r\n '#389dd6',\r\n '#399ed7',\r\n '#389dd6',\r\n '#389dd6',\r\n '#389fd6',\r\n '#399fd7',\r\n '#399ed6',\r\n '#399ed6',\r\n '#399fd7',\r\n '#399fd7',\r\n '#399fd7',\r\n '#3aa0d8',\r\n '#3aa0d8',\r\n '#3a9fd8',\r\n '#3a9fd8',\r\n '#3a9fd8',\r\n '#3aa0d8',\r\n '#3aa1d8',\r\n '#3aa1d8',\r\n '#3aa1d8',\r\n '#3aa1d8',\r\n '#3aa1d8',\r\n '#3aa2d9',\r\n '#3aa1d9',\r\n '#3aa1d8',\r\n '#39a2d8',\r\n '#3aa2d9',\r\n '#3aa3d9',\r\n '#3ba3d9',\r\n '#3ba3d9',\r\n '#3ba2d8',\r\n '#3aa2d8',\r\n '#3aa4d8',\r\n '#3ba4d9',\r\n '#3aa3d8',\r\n '#3aa3d9',\r\n '#3ba5da',\r\n '#3ba5d9',\r\n '#3ba4d9',\r\n '#3ba4d9',\r\n '#3ba4d9',\r\n '#3aa5d9',\r\n '#3ba5da',\r\n '#3ba6da',\r\n '#3ba6da',\r\n '#3ba6da',\r\n '#3ba6d9',\r\n '#3ba6d9',\r\n '#3ba6da',\r\n '#3aa5da',\r\n '#3ba6da',\r\n '#3ca7da',\r\n '#3ca7da',\r\n '#3ba7da',\r\n '#3ba6da',\r\n '#3ca7da',\r\n '#3ca8da',\r\n '#3ca8da',\r\n '#3ca8da',\r\n '#3ca9db',\r\n '#3ca9db',\r\n '#3ca9da',\r\n '#3ca8db',\r\n '#3ba8db',\r\n '#3baadb',\r\n '#3caadb',\r\n '#3ca9db',\r\n '#3caadb',\r\n '#3caadb',\r\n '#3ca9db',\r\n '#3ca9db',\r\n '#3ca9db',\r\n '#3cabdb',\r\n '#3cabdc',\r\n '#3caadb',\r\n '#3cabdb',\r\n '#3cacdc',\r\n '#3cacdc',\r\n '#3cacdc',\r\n '#3caddc',\r\n '#3caddc',\r\n '#3caddc',\r\n '#3caedc',\r\n '#3caddd',\r\n '#3caddd',\r\n '#3caedc',\r\n '#3eaedd',\r\n '#3eaddd',\r\n '#3daddc',\r\n '#3daedc',\r\n '#3daedc',\r\n '#3dafdd',\r\n '#3dafdd',\r\n '#3daedd',\r\n '#3dafdd',\r\n '#3dafdd',\r\n '#3dafdd',\r\n '#3db0dd',\r\n '#3db0dd',\r\n '#3db0dc',\r\n '#3db0dc',\r\n '#3db1dd',\r\n '#3db1dd',\r\n '#3db0dd',\r\n '#3db0dd',\r\n '#3db1dd',\r\n '#3db1de',\r\n '#3db1de',\r\n '#3db1de',\r\n '#3db2de',\r\n '#3db2de',\r\n '#3db2dd',\r\n '#3db2dd',\r\n '#3db3dd',\r\n '#3db2de',\r\n '#3db3de',\r\n '#3db4de',\r\n '#3db3dd',\r\n '#3db4de',\r\n '#3db4de',\r\n '#3db4de',\r\n '#3db5df',\r\n '#3db5df',\r\n '#3db4df',\r\n '#3db4df',\r\n '#3db5df',\r\n '#3db5de',\r\n '#3db5de',\r\n '#3db5de',\r\n '#3db6df',\r\n '#3db6df',\r\n '#3db6de',\r\n '#3db6de',\r\n '#3db7df',\r\n '#3db7e0',\r\n '#3db8e0',\r\n '#3db8e0',\r\n '#3db7e0',\r\n '#3db7df',\r\n '#3db7df',\r\n '#3eb7df',\r\n '#3eb8df',\r\n '#3eb8df',\r\n '#3eb9e0',\r\n '#3eb9e0',\r\n '#3eb8df',\r\n '#3eb9df',\r\n '#3fb9df',\r\n '#3fb9e0',\r\n '#3ebae1',\r\n '#3ebae0',\r\n '#3ebae0',\r\n '#3ebae0',\r\n '#3eb9e0',\r\n '#3fbae1',\r\n '#3fbbe1',\r\n '#3ebae0',\r\n '#3ebbe1',\r\n '#3ebae0',\r\n '#3ebbe0',\r\n '#3ebce1',\r\n '#3fbce1',\r\n '#3ebce0',\r\n '#3ebce2',\r\n '#3ebce2',\r\n '#3ebde2',\r\n '#3fbde2',\r\n '#3fbde2',\r\n '#3ebde1',\r\n '#3ebee1',\r\n '#3ebde2',\r\n '#3fbde2',\r\n '#3fbde2',\r\n '#3ebee1',\r\n '#3ebfe1',\r\n '#3ebfe1',\r\n '#3ebfe1',\r\n '#3fbfe2',\r\n '#3ebfe1',\r\n '#3ebee1',\r\n '#3ebee2',\r\n '#3ebfe2',\r\n '#3ebfe2',\r\n '#3ebfe2',\r\n '#3ec0e2',\r\n '#3ec1e2',\r\n '#3fc0e3',\r\n '#3fc0e3',\r\n '#3ec0e2',\r\n '#3ec1e2',\r\n '#3ec2e2',\r\n '#3ec2e2',\r\n '#3ec2e2',\r\n '#3ec3e3',\r\n '#3ec3e3',\r\n '#3ec3e3',\r\n '#3ec2e3',\r\n '#3ec2e3',\r\n '#3fc3e3',\r\n '#3fc4e3',\r\n '#3ec4e3',\r\n '#3ec3e3',\r\n '#3ec3e3',\r\n '#3ec5e4',\r\n '#3fc5e4',\r\n '#3fc5e3',\r\n '#3fc4e4',\r\n '#3fc5e4',\r\n '#3ec6e4',\r\n '#3ec5e4',\r\n '#3ec4e4',\r\n '#3ec5e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec7e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec7e4',\r\n '#3dc8e4',\r\n '#3dc8e4',\r\n '#3dc7e5',\r\n '#3dc7e5',\r\n '#3dc8e5',\r\n '#3dc8e4',\r\n '#3dc8e4',\r\n '#3dc9e5',\r\n '#3dc9e5',\r\n '#3dc9e5',\r\n '#3dc9e5',\r\n '#3dc9e5',\r\n '#3dc9e4',\r\n '#3dc9e5',\r\n '#3dcae6',\r\n '#3dcbe6',\r\n '#3dcae6',\r\n '#3dcae6',\r\n '#3dcae6',\r\n '#3dcbe6',\r\n '#3dcce6',\r\n '#3ecce6',\r\n '#3ecce6',\r\n '#3dcbe6',\r\n '#3dcce6',\r\n '#3dcce6',\r\n '#3dcce6',\r\n '#3dcce5',\r\n '#3dcce5',\r\n '#3dcce6',\r\n '#3dcde7',\r\n '#3dcde7',\r\n '#3dcde7',\r\n '#3dcfe7',\r\n '#3dcfe7',\r\n '#3dcfe7',\r\n '#3dcee7',\r\n '#3dcee6',\r\n '#3dcee6',\r\n '#3dcfe7',\r\n '#3dcfe7',\r\n '#3dcfe6',\r\n '#3dcfe6',\r\n '#3dd0e8',\r\n '#3ed1e8',\r\n '#3ed1e7',\r\n '#3dd0e7',\r\n '#3dd0e8',\r\n '#3dd0e7',\r\n '#3dd1e7',\r\n '#3dd1e7',\r\n '#3dd0e7',\r\n '#3cd1e8',\r\n '#3cd2e8',\r\n '#3cd1e8',\r\n '#3cd1e7',\r\n '#3cd1e7',\r\n '#3cd2e8',\r\n '#3cd3e9',\r\n '#3cd2e8',\r\n '#3cd2e9',\r\n '#3cd2e9',\r\n '#3cd3e8',\r\n '#3cd4e8',\r\n '#3cd3e8',\r\n '#3cd3e8',\r\n ],\r\n nullColor: '#2f323d',\r\n}\r\nconst earningsGradient = {\r\n colors: [\r\n '#592d48',\r\n '#592d49',\r\n '#5b2d49',\r\n '#5b2d49',\r\n '#5b2d49',\r\n '#5b2e49',\r\n '#5b2e49',\r\n '#5b2e4a',\r\n '#5c2e4a',\r\n '#5d2f4b',\r\n '#5c2f4b',\r\n '#5c2e4b',\r\n '#5f2f4c',\r\n '#5f2f4c',\r\n '#5e2e4c',\r\n '#5e2e4c',\r\n '#60304d',\r\n '#60304d',\r\n '#5f2f4d',\r\n '#5f2f4d',\r\n '#62304f',\r\n '#62304f',\r\n '#61304f',\r\n '#62314f',\r\n '#62314f',\r\n '#633150',\r\n '#633150',\r\n '#63314f',\r\n '#63304f',\r\n '#643150',\r\n '#643151',\r\n '#643151',\r\n '#653152',\r\n '#653051',\r\n '#653051',\r\n '#663152',\r\n '#673253',\r\n '#673253',\r\n '#673253',\r\n '#673253',\r\n '#683254',\r\n '#683254',\r\n '#683254',\r\n '#693254',\r\n '#693354',\r\n '#6a3354',\r\n '#6a3354',\r\n '#6a3355',\r\n '#6a3356',\r\n '#6a3456',\r\n '#6c3456',\r\n '#6c3356',\r\n '#6c3457',\r\n '#6c3457',\r\n '#6c3457',\r\n '#6c3457',\r\n '#6d3458',\r\n '#6e3559',\r\n '#6f3559',\r\n '#6f3459',\r\n '#6f345a',\r\n '#70355b',\r\n '#70365b',\r\n '#6f355a',\r\n '#70365b',\r\n '#71355a',\r\n '#71355a',\r\n '#71365b',\r\n '#72355b',\r\n '#72365c',\r\n '#72365d',\r\n '#72355c',\r\n '#73355c',\r\n '#73355d',\r\n '#73375d',\r\n '#73375d',\r\n '#76375e',\r\n '#76375f',\r\n '#76375f',\r\n '#76375f',\r\n '#76365e',\r\n '#76365e',\r\n '#76375f',\r\n '#763860',\r\n '#773861',\r\n '#783860',\r\n '#783860',\r\n '#783861',\r\n '#793861',\r\n '#793862',\r\n '#793762',\r\n '#793761',\r\n '#7b3962',\r\n '#7b3962',\r\n '#7a3962',\r\n '#7a3962',\r\n '#7b3963',\r\n '#7c3964',\r\n '#7d3a64',\r\n '#7d3b64',\r\n '#7d3a65',\r\n '#7d3a65',\r\n '#7d3a65',\r\n '#7e3b65',\r\n '#803b66',\r\n '#7f3a66',\r\n '#7e3a66',\r\n '#7f3a67',\r\n '#7f3b67',\r\n '#803c67',\r\n '#803c67',\r\n '#7f3b67',\r\n '#813c68',\r\n '#823b69',\r\n '#823b69',\r\n '#813b69',\r\n '#823c69',\r\n '#823c69',\r\n '#823c69',\r\n '#823c69',\r\n '#843d6a',\r\n '#843d6a',\r\n '#843d6a',\r\n '#843c6b',\r\n '#863c6c',\r\n '#853c6c',\r\n '#853d6c',\r\n '#863e6c',\r\n '#863d6c',\r\n '#873d6c',\r\n '#873d6c',\r\n '#873d6d',\r\n '#893e6e',\r\n '#8a3e6f',\r\n '#8a3e6f',\r\n '#893e6e',\r\n '#893d6e',\r\n '#893e6e',\r\n '#8a3f6f',\r\n '#8b3f70',\r\n '#8b3f71',\r\n '#8b3e70',\r\n '#8b3e70',\r\n '#8c3f70',\r\n '#8c4071',\r\n '#8c4070',\r\n '#8c4070',\r\n '#8d4071',\r\n '#8d4072',\r\n '#8d4072',\r\n '#8f4073',\r\n '#8f4074',\r\n '#8f4073',\r\n '#8f4173',\r\n '#8f4173',\r\n '#904173',\r\n '#904174',\r\n '#904175',\r\n '#904175',\r\n '#914175',\r\n '#924175',\r\n '#924275',\r\n '#924275',\r\n '#914175',\r\n '#924277',\r\n '#934277',\r\n '#934277',\r\n '#944278',\r\n '#954277',\r\n '#954278',\r\n '#954278',\r\n '#954278',\r\n '#954378',\r\n '#964378',\r\n '#964379',\r\n '#96447a',\r\n '#96437a',\r\n '#96437a',\r\n '#98437a',\r\n '#98447b',\r\n '#98457b',\r\n '#98457b',\r\n '#98457b',\r\n '#99447b',\r\n '#9a457d',\r\n '#9b457d',\r\n '#9b457d',\r\n '#9a447c',\r\n '#9a457c',\r\n '#9b457c',\r\n '#9b457e',\r\n '#9b467e',\r\n '#9c467e',\r\n '#9d467f',\r\n '#9e467f',\r\n '#9d467f',\r\n '#9e467e',\r\n '#9e477f',\r\n '#9e4780',\r\n '#9e477f',\r\n '#9f4680',\r\n '#a04680',\r\n '#a04880',\r\n '#a04881',\r\n '#a04881',\r\n '#a04881',\r\n '#a24883',\r\n '#a24883',\r\n '#a24882',\r\n '#a24883',\r\n '#a24883',\r\n '#a24883',\r\n '#a24883',\r\n '#a34983',\r\n '#a34983',\r\n '#a34984',\r\n '#a44985',\r\n '#a54986',\r\n '#a54986',\r\n '#a54986',\r\n '#a54a85',\r\n '#a54a85',\r\n '#a54a85',\r\n '#a64a86',\r\n '#a74a87',\r\n '#a84a88',\r\n '#a84a88',\r\n '#a74a87',\r\n '#a84b87',\r\n '#a84b88',\r\n '#a84b88',\r\n '#a84b88',\r\n '#a94b89',\r\n '#aa4b89',\r\n '#ab4b89',\r\n '#ab4b89',\r\n '#ab4c8a',\r\n '#aa4c8a',\r\n '#aa4c8a',\r\n '#ab4c8a',\r\n '#ad4c8b',\r\n '#ad4c8b',\r\n '#ad4c8b',\r\n '#ad4c8c',\r\n '#ae4d8d',\r\n '#ae4c8c',\r\n '#ae4d8d',\r\n '#af4e8e',\r\n '#af4e8d',\r\n '#b04e8d',\r\n '#b04e8d',\r\n '#b04d8e',\r\n '#b04e8e',\r\n '#b04d8e',\r\n '#b04e8e',\r\n '#b14f8f',\r\n '#b14e90',\r\n '#b14e90',\r\n '#b14f90',\r\n '#b25090',\r\n '#b34f90',\r\n '#b34f90',\r\n '#b34f90',\r\n '#b35091',\r\n '#b44f91',\r\n '#b55092',\r\n '#b55092',\r\n '#b55092',\r\n '#b55192',\r\n '#b55092',\r\n '#b55092',\r\n '#b55093',\r\n '#b65094',\r\n '#b75194',\r\n '#b85193',\r\n '#b75093',\r\n '#b85095',\r\n '#b85095',\r\n '#b85295',\r\n '#b85295',\r\n '#ba5296',\r\n '#b95197',\r\n '#b95197',\r\n '#ba5297',\r\n '#ba5297',\r\n '#ba5296',\r\n '#ba5296',\r\n '#bb5397',\r\n '#bc5297',\r\n '#bd5298',\r\n '#bd5499',\r\n '#bc5499',\r\n '#bc5499',\r\n '#bc5499',\r\n '#bd5499',\r\n '#be549a',\r\n '#bf549b',\r\n '#bf549b',\r\n '#bf549b',\r\n '#bf549b',\r\n '#c0559b',\r\n '#c0559b',\r\n '#c0559b',\r\n '#c0559b',\r\n '#c0549c',\r\n '#c0549c',\r\n '#c2569c',\r\n '#c2569d',\r\n '#c2569e',\r\n '#c2569e',\r\n '#c4569e',\r\n '#c4569e',\r\n '#c4569f',\r\n '#c3579e',\r\n '#c3579e',\r\n '#c5579e',\r\n '#c658a0',\r\n '#c5579f',\r\n '#c4579f',\r\n '#c557a0',\r\n '#c757a0',\r\n '#c657a0',\r\n '#c658a1',\r\n '#c759a2',\r\n '#c758a2',\r\n '#c758a2',\r\n '#c858a2',\r\n '#c959a3',\r\n '#ca59a3',\r\n '#c958a2',\r\n '#c958a2',\r\n '#c959a3',\r\n '#ca59a4',\r\n '#cb59a4',\r\n '#cb59a4',\r\n '#cb59a4',\r\n '#cb5aa5',\r\n '#cc5ba5',\r\n '#cc5ba5',\r\n '#cc5aa5',\r\n '#cd5ba6',\r\n '#cd5ba6',\r\n '#cd5ba6',\r\n '#ce5ba7',\r\n '#ce5ca7',\r\n '#cf5ca7',\r\n '#cf5ca7',\r\n '#cf5ca7',\r\n '#d05ca8',\r\n '#d05ba9',\r\n '#d05ba9',\r\n '#d05ba9',\r\n '#d15ca9',\r\n '#d15da9',\r\n '#d15da9',\r\n '#d15ca9',\r\n '#d25caa',\r\n '#d25dab',\r\n '#d25eab',\r\n '#d25eab',\r\n '#d35eab',\r\n '#d35dab',\r\n '#d35dab',\r\n '#d45eac',\r\n '#d45dac',\r\n '#d55ead',\r\n '#d55ead',\r\n '#d55dad',\r\n '#d65eac',\r\n '#d65fad',\r\n '#d65fae',\r\n '#d65fae',\r\n '#d75fae',\r\n '#d75fae',\r\n '#d75fae',\r\n '#d75fae',\r\n '#d75faf',\r\n '#d760b0',\r\n '#d960b0',\r\n '#d95fb0',\r\n '#d961b0',\r\n '#d961b1',\r\n '#d961b1',\r\n '#da61b0',\r\n '#dc61b2',\r\n '#dc60b2',\r\n '#db60b2',\r\n '#db61b2',\r\n '#dc61b2',\r\n '#dd61b3',\r\n '#dd61b3',\r\n '#dd62b3',\r\n '#de62b3',\r\n '#de63b4',\r\n '#de63b5',\r\n '#dd62b4',\r\n '#de62b4',\r\n '#df63b5',\r\n '#e063b5',\r\n '#e063b5',\r\n '#e063b6',\r\n '#e164b6',\r\n '#e164b6',\r\n '#e164b6',\r\n '#e164b7',\r\n '#e264b7',\r\n '#e264b7',\r\n '#e264b7',\r\n '#e264b8',\r\n '#e265b8',\r\n '#e265b8',\r\n '#e365b8',\r\n '#e364b8',\r\n '#e465b9',\r\n '#e565ba',\r\n '#e565ba',\r\n '#e566b9',\r\n '#e566ba',\r\n '#e566bb',\r\n '#e666ba',\r\n '#e766bb',\r\n '#e665bb',\r\n '#e665bb',\r\n '#e666bb',\r\n '#e867bc',\r\n '#e867bc',\r\n '#e867bc',\r\n '#e867bc',\r\n '#e968bd',\r\n '#e967be',\r\n '#e968be',\r\n '#e969bd',\r\n '#ea68bf',\r\n '#ea69bf',\r\n '#ea69bf',\r\n '#eb69c0',\r\n '#eb69c0',\r\n '#eb6ac0',\r\n '#eb6ac0',\r\n '#ec6ac1',\r\n '#ed6ac2',\r\n '#ec6bc2',\r\n '#ec6bc2',\r\n '#ed6bc2',\r\n '#ed6bc3',\r\n '#ed6bc3',\r\n '#ed6bc3',\r\n '#ee6bc2',\r\n '#ef6bc3',\r\n '#ef6cc3',\r\n '#ef6cc3',\r\n '#f06cc4',\r\n '#f06cc5',\r\n '#f16cc4',\r\n '#f16cc4',\r\n '#f16cc5',\r\n '#f16dc6',\r\n '#f16dc6',\r\n '#f36dc6',\r\n '#f36dc7',\r\n '#f36dc6',\r\n '#f36dc7',\r\n '#f36dc7',\r\n '#f46dc7',\r\n '#f56ec7',\r\n '#f46ec7',\r\n '#f46ec7',\r\n '#f46ec8',\r\n '#f56ec8',\r\n '#f56fc8',\r\n '#f66fc8',\r\n '#f76fc9',\r\n '#f76fc9',\r\n '#f76fc9',\r\n '#f86fca',\r\n '#f970cb',\r\n '#f971cb',\r\n '#f870cb',\r\n '#f870cb',\r\n '#f870cc',\r\n '#f970cd',\r\n '#fa71cd',\r\n '#fa71cd',\r\n '#fa71cd',\r\n '#fa72ce',\r\n '#fb71ce',\r\n '#fb71ce',\r\n '#fb71ce',\r\n '#fc72cf',\r\n '#fb72ce',\r\n '#fb72ce',\r\n '#fc72cf',\r\n '#fd72d0',\r\n '#fe73d1',\r\n '#ff73d1',\r\n '#ff72d1',\r\n '#fe72d1',\r\n '#ff73d2',\r\n '#ff74d2',\r\n '#fe74d2',\r\n '#02dfce',\r\n '#02dece',\r\n '#02dece',\r\n '#03dfce',\r\n '#03dfce',\r\n '#03dfcd',\r\n '#03ddcd',\r\n '#03ddcd',\r\n '#03ddcc',\r\n '#02dccb',\r\n '#02dccb',\r\n '#03dccc',\r\n '#03dbcb',\r\n '#03dbca',\r\n '#03dbca',\r\n '#03dbca',\r\n '#03daca',\r\n '#04dbcb',\r\n '#04dacb',\r\n '#03d9ca',\r\n '#03d8c9',\r\n '#04d9c9',\r\n '#04dac9',\r\n '#04d9c9',\r\n '#04d9c8',\r\n '#04d7c7',\r\n '#04d6c7',\r\n '#04d7c8',\r\n '#05d7c7',\r\n '#05d6c7',\r\n '#05d6c7',\r\n '#04d6c7',\r\n '#05d5c6',\r\n '#05d5c6',\r\n '#05d5c6',\r\n '#05d5c5',\r\n '#06d4c5',\r\n '#05d4c5',\r\n '#05d4c5',\r\n '#06d4c5',\r\n '#06d3c4',\r\n '#06d2c4',\r\n '#06d2c4',\r\n '#06d2c3',\r\n '#06d2c3',\r\n '#07d2c2',\r\n '#07d0c1',\r\n '#07d0c2',\r\n '#07d0c1',\r\n '#07cfc1',\r\n '#07cfc1',\r\n '#07d0c1',\r\n '#09cfc0',\r\n '#08cfc0',\r\n '#09cfc0',\r\n '#0acec1',\r\n '#0acec0',\r\n '#09cdbf',\r\n '#09cdbf',\r\n '#0acebf',\r\n '#0accbe',\r\n '#0bccbf',\r\n '#0bccbf',\r\n '#0bccbe',\r\n '#0bcbbe',\r\n '#0bcbbe',\r\n '#0bcbbd',\r\n '#0ccabc',\r\n '#0ccbbd',\r\n '#0dcbbd',\r\n '#0dcabc',\r\n '#0cc9bb',\r\n '#0dc8ba',\r\n '#0ec9bb',\r\n '#0ec9bb',\r\n '#0dc8ba',\r\n '#0ec8bb',\r\n '#0dc7ba',\r\n '#0ec7ba',\r\n '#0fc7ba',\r\n '#0ec6b9',\r\n '#0fc6b9',\r\n '#0fc6b9',\r\n '#0fc5b8',\r\n '#0fc6b8',\r\n '#0fc6b8',\r\n '#0fc4b8',\r\n '#10c4b7',\r\n '#10c4b7',\r\n '#10c3b6',\r\n '#10c3b6',\r\n '#10c3b6',\r\n '#12c2b6',\r\n '#11c2b6',\r\n '#11c2b6',\r\n '#12c3b6',\r\n '#12c2b5',\r\n '#12c1b5',\r\n '#12c0b5',\r\n '#13c0b4',\r\n '#13c1b4',\r\n '#13c0b3',\r\n '#13bfb3',\r\n '#13c0b4',\r\n '#13bfb2',\r\n '#13beb3',\r\n '#13beb3',\r\n '#13bfb2',\r\n '#14beb1',\r\n '#14beb1',\r\n '#14beb1',\r\n '#14bdb1',\r\n '#14bdb1',\r\n '#15bdb1',\r\n '#16bdb1',\r\n '#15bcb0',\r\n '#16baaf',\r\n '#16bab0',\r\n '#16bbb0',\r\n '#15bbaf',\r\n '#15b9ae',\r\n '#15b9ae',\r\n '#16baae',\r\n '#17baae',\r\n '#17b9ae',\r\n '#17b8ae',\r\n '#17b8ac',\r\n '#17b8ac',\r\n '#18b8ac',\r\n '#18b7ab',\r\n '#18b7ab',\r\n '#18b7ab',\r\n '#19b7ac',\r\n '#18b7ac',\r\n '#18b5ac',\r\n '#18b5ab',\r\n '#18b5aa',\r\n '#19b4aa',\r\n '#1ab4aa',\r\n '#1ab5aa',\r\n '#19b3a9',\r\n '#19b3a9',\r\n '#19b4a9',\r\n '#19b4a9',\r\n '#19b2a8',\r\n '#1ab3a8',\r\n '#1ab3a8',\r\n '#1ab2a7',\r\n '#1bb1a7',\r\n '#1ab0a7',\r\n '#1ab0a7',\r\n '#1ab0a7',\r\n '#1bb1a6',\r\n '#1bb1a6',\r\n '#1bafa6',\r\n '#1bafa6',\r\n '#1cafa5',\r\n '#1cafa5',\r\n '#1cafa5',\r\n '#1caea4',\r\n '#1caea4',\r\n '#1caea4',\r\n '#1caea4',\r\n '#1cada3',\r\n '#1caca2',\r\n '#1caca2',\r\n '#1caca2',\r\n '#1caca2',\r\n '#1eaba2',\r\n '#1eaca2',\r\n '#1eaca2',\r\n '#1eaba2',\r\n '#1daaa1',\r\n '#1ea9a1',\r\n '#1ea9a1',\r\n '#1daaa0',\r\n '#1ea89f',\r\n '#1fa9a0',\r\n '#1fa8a0',\r\n '#1ea79f',\r\n '#1fa79e',\r\n '#1fa89f',\r\n '#1fa79e',\r\n '#1ea69d',\r\n '#1ea79d',\r\n '#1ea79c',\r\n '#1ea59c',\r\n '#1ea59c',\r\n '#20a59c',\r\n '#1fa59c',\r\n '#1fa59c',\r\n '#20a49b',\r\n '#20a49c',\r\n '#1fa49c',\r\n '#1fa49a',\r\n '#1fa39a',\r\n '#20a29a',\r\n '#20a39a',\r\n '#20a39a',\r\n '#20a29a',\r\n '#21a199',\r\n '#21a099',\r\n '#21a099',\r\n '#21a198',\r\n '#21a098',\r\n '#219f98',\r\n '#219f98',\r\n '#21a098',\r\n '#219f97',\r\n '#219f97',\r\n '#219e97',\r\n '#219d96',\r\n '#219d97',\r\n '#229d96',\r\n '#229d96',\r\n '#229d96',\r\n '#229c95',\r\n '#239d95',\r\n '#239d95',\r\n '#239c95',\r\n '#229a94',\r\n '#229a93',\r\n '#229a93',\r\n '#239b93',\r\n '#229a93',\r\n '#239892',\r\n '#239892',\r\n '#239992',\r\n '#249991',\r\n '#249991',\r\n '#249791',\r\n '#239791',\r\n '#249791',\r\n '#249791',\r\n '#249791',\r\n '#239690',\r\n '#239590',\r\n '#24968f',\r\n '#24968f',\r\n '#23958f',\r\n '#24958e',\r\n '#24948e',\r\n '#24948e',\r\n '#24958e',\r\n '#25938d',\r\n '#25938d',\r\n '#25938d',\r\n '#24938c',\r\n '#24928c',\r\n '#25928c',\r\n '#25928c',\r\n '#25928c',\r\n '#25918c',\r\n '#25908b',\r\n '#25908b',\r\n '#25908b',\r\n '#248f8a',\r\n '#258f8a',\r\n '#258f8a',\r\n '#25908b',\r\n '#258f8a',\r\n '#248e89',\r\n '#258e89',\r\n '#268e89',\r\n '#268e88',\r\n '#268e88',\r\n '#268d88',\r\n '#268c88',\r\n '#268c86',\r\n '#268c86',\r\n '#268c87',\r\n '#268c87',\r\n '#268b86',\r\n '#268a87',\r\n '#268a86',\r\n '#268a85',\r\n '#268a86',\r\n '#268a86',\r\n '#268884',\r\n '#268884',\r\n '#268884',\r\n '#278783',\r\n '#278783',\r\n '#268883',\r\n '#278682',\r\n '#278682',\r\n '#278682',\r\n '#278682',\r\n '#278681',\r\n '#278681',\r\n '#278581',\r\n '#278480',\r\n '#278580',\r\n '#278480',\r\n '#278381',\r\n '#278481',\r\n '#27837f',\r\n '#288480',\r\n '#288380',\r\n '#27827f',\r\n '#27827f',\r\n '#27817e',\r\n '#27817e',\r\n '#27817e',\r\n '#27807d',\r\n '#27807d',\r\n '#27807d',\r\n '#28807d',\r\n '#27807c',\r\n '#277f7b',\r\n '#277f7b',\r\n '#277f7b',\r\n '#287e7b',\r\n '#287d7a',\r\n '#287d7a',\r\n '#297e7b',\r\n '#297d7b',\r\n '#297c7b',\r\n '#297c7b',\r\n '#297d7b',\r\n '#287b79',\r\n '#287c79',\r\n '#287b79',\r\n '#297a79',\r\n '#297a78',\r\n '#297b78',\r\n '#297b78',\r\n '#287a77',\r\n '#287976',\r\n '#287876',\r\n '#287876',\r\n '#287876',\r\n '#287775',\r\n '#297876',\r\n '#297976',\r\n '#297776',\r\n '#287675',\r\n '#297776',\r\n '#297775',\r\n '#287674',\r\n '#297574',\r\n '#297574',\r\n '#297574',\r\n '#297474',\r\n '#287472',\r\n '#297472',\r\n '#297472',\r\n '#297472',\r\n '#297271',\r\n '#287271',\r\n '#287271',\r\n '#297271',\r\n '#297271',\r\n '#287171',\r\n '#28716f',\r\n '#29716f',\r\n '#28706f',\r\n '#297070',\r\n '#297070',\r\n '#296f6f',\r\n '#296f6f',\r\n '#286e6e',\r\n '#286e6e',\r\n '#286f6e',\r\n '#296e6e',\r\n '#286d6d',\r\n '#286d6d',\r\n '#296d6d',\r\n '#296e6d',\r\n '#296e6d',\r\n '#296c6b',\r\n '#286c6b',\r\n '#286c6b',\r\n '#296c6b',\r\n '#296a6b',\r\n '#286a6a',\r\n '#286a6a',\r\n '#296969',\r\n '#2a6969',\r\n '#296969',\r\n '#296869',\r\n '#2a6969',\r\n '#2a6969',\r\n '#2a6969',\r\n '#2a6868',\r\n '#296768',\r\n '#296768',\r\n '#2a6767',\r\n '#2a6767',\r\n '#2a6767',\r\n '#2a6567',\r\n '#296566',\r\n '#286666',\r\n '#286565',\r\n '#286565',\r\n '#296565',\r\n '#286465',\r\n '#296464',\r\n '#296464',\r\n '#286364',\r\n '#286263',\r\n '#286263',\r\n '#286263',\r\n '#286163',\r\n '#286062',\r\n '#286062',\r\n '#286162',\r\n '#296163',\r\n '#285f62',\r\n '#296062',\r\n '#296062',\r\n '#295f61',\r\n '#296061',\r\n '#285f60',\r\n '#285d5f',\r\n '#285d5f',\r\n '#285d60',\r\n '#285c5f',\r\n '#285c5e',\r\n '#285c5f',\r\n '#295b5e',\r\n '#285b5d',\r\n '#285b5d',\r\n '#285c5d',\r\n '#295c5d',\r\n '#285b5c',\r\n '#285b5c',\r\n '#285b5c',\r\n '#285a5d',\r\n '#28595d',\r\n '#28595b',\r\n '#28595b',\r\n '#29585c',\r\n '#28585b',\r\n '#28585a',\r\n '#28575a',\r\n '#29585b',\r\n '#29585b',\r\n '#29575a',\r\n '#295659',\r\n '#285558',\r\n '#285658',\r\n '#285658',\r\n '#295558',\r\n '#295557',\r\n '#285457',\r\n '#285357',\r\n '#285457',\r\n '#285356',\r\n '#295456',\r\n '#295356',\r\n '#285256',\r\n '#295256',\r\n '#285255',\r\n '#285255',\r\n '#295255',\r\n '#295155',\r\n '#284f54',\r\n '#274f54',\r\n '#275054',\r\n '#275054',\r\n '#275054',\r\n '#274e52',\r\n '#274e52',\r\n '#284e52',\r\n '#274d51',\r\n '#274d51',\r\n '#274e52',\r\n '#274c50',\r\n '#274c50',\r\n '#274e51',\r\n '#284e51',\r\n '#274c50',\r\n '#284c50',\r\n '#284b50',\r\n '#274a50',\r\n '#284a50',\r\n '#284a50',\r\n '#28494e',\r\n '#27484e',\r\n '#274a4e',\r\n '#274a4d',\r\n '#27494d',\r\n '#28484e',\r\n '#27474c',\r\n '#26484d',\r\n '#26484d',\r\n '#26484c',\r\n '#25464b',\r\n '#26464b',\r\n '#26474b',\r\n '#26474b',\r\n '#26454a',\r\n '#26454a',\r\n '#26464a',\r\n '#26464a',\r\n '#254349',\r\n '#264349',\r\n '#264349',\r\n '#26444a',\r\n ],\r\n nullColor: '#414554',\r\n}\r\n\r\nconst redGreenGradientBubbles = {\r\n colors: [\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f43538',\r\n '#f43538',\r\n '#f43538',\r\n '#f43538',\r\n '#f43538',\r\n '#f43538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f23538',\r\n '#f23538',\r\n '#f23538',\r\n '#f23538',\r\n '#f13538',\r\n '#f13538',\r\n '#f13538',\r\n '#f13538',\r\n '#f03538',\r\n '#f03538',\r\n '#f03538',\r\n '#f03538',\r\n '#f03538',\r\n '#f03538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ee3639',\r\n '#ee3639',\r\n '#ee3639',\r\n '#ed3639',\r\n '#ed3639',\r\n '#ed3639',\r\n '#ec3639',\r\n '#ec3639',\r\n '#ec3639',\r\n '#eb3639',\r\n '#eb3639',\r\n '#eb3639',\r\n '#eb3639',\r\n '#eb3639',\r\n '#ea3639',\r\n '#ea3639',\r\n '#ea3639',\r\n '#e93639',\r\n '#e93639',\r\n '#e83538',\r\n '#e83538',\r\n '#e83538',\r\n '#e73538',\r\n '#e73538',\r\n '#e73538',\r\n '#e63538',\r\n '#e63639',\r\n '#e63639',\r\n '#e63639',\r\n '#e63639',\r\n '#e53639',\r\n '#e53639',\r\n '#e53639',\r\n '#e53639',\r\n '#e53639',\r\n '#e53639',\r\n '#e43639',\r\n '#e43639',\r\n '#e43639',\r\n '#e33639',\r\n '#e33639',\r\n '#e33639',\r\n '#e23639',\r\n '#e23639',\r\n '#e23639',\r\n '#e13639',\r\n '#e13639',\r\n '#e13639',\r\n '#e03639',\r\n '#e0363a',\r\n '#e0363a',\r\n '#e0363a',\r\n '#df363a',\r\n '#df363a',\r\n '#df363a',\r\n '#de363a',\r\n '#de363a',\r\n '#de363a',\r\n '#de363a',\r\n '#de363a',\r\n '#de363a',\r\n '#dd363a',\r\n '#dd373b',\r\n '#dd373b',\r\n '#dc373b',\r\n '#dc373b',\r\n '#dc373b',\r\n '#db373b',\r\n '#db373b',\r\n '#db373b',\r\n '#da373b',\r\n '#da373d',\r\n '#da373d',\r\n '#d9373d',\r\n '#d9373d',\r\n '#d9373d',\r\n '#d9373d',\r\n '#d9373d',\r\n '#d8373e',\r\n '#d8373e',\r\n '#d7383e',\r\n '#d7383e',\r\n '#d7383e',\r\n '#d6383e',\r\n '#d6383e',\r\n '#d5383e',\r\n '#d5383e',\r\n '#d4383e',\r\n '#d4383e',\r\n '#d4383f',\r\n '#d3383f',\r\n '#d3383f',\r\n '#d3393f',\r\n '#d33940',\r\n '#d23940',\r\n '#d23940',\r\n '#d13940',\r\n '#d13941',\r\n '#d03941',\r\n '#d03941',\r\n '#cf3941',\r\n '#cf3942',\r\n '#cf3942',\r\n '#cf3a42',\r\n '#ce3a42',\r\n '#cd3a43',\r\n '#cd3a43',\r\n '#cc3943',\r\n '#cc3943',\r\n '#cb3944',\r\n '#cb3944',\r\n '#ca3944',\r\n '#ca3944',\r\n '#c93a45',\r\n '#c93a45',\r\n '#c83a45',\r\n '#c73a45',\r\n '#c73a45',\r\n '#c53a45',\r\n '#c53a45',\r\n '#c43a45',\r\n '#c43a46',\r\n '#c43a46',\r\n '#c43c46',\r\n '#c33c47',\r\n '#c33c47',\r\n '#c23c47',\r\n '#c23c47',\r\n '#c13c48',\r\n '#c13c48',\r\n '#c03c48',\r\n '#c03c48',\r\n '#bf3c48',\r\n '#bf3d4a',\r\n '#be3d4a',\r\n '#be3d4a',\r\n '#bd3d4a',\r\n '#bd3d4b',\r\n '#bc3d4b',\r\n '#bc3d4b',\r\n '#bb3d4b',\r\n '#bb3d4b',\r\n '#bb3d4c',\r\n '#bb3d4c',\r\n '#ba3d4c',\r\n '#ba3e4c',\r\n '#b83e4c',\r\n '#b83e4c',\r\n '#b83e4c',\r\n '#b73e4c',\r\n '#b73e4c',\r\n '#b63e4c',\r\n '#b63e4c',\r\n '#b53e4d',\r\n '#b53e4d',\r\n '#b53e4d',\r\n '#b43e4d',\r\n '#b43e4d',\r\n '#b33e4d',\r\n '#b33f4d',\r\n '#b23f4e',\r\n '#b23f4e',\r\n '#b23f4e',\r\n '#b13f4e',\r\n '#b13f4e',\r\n '#b03e4e',\r\n '#b03e4e',\r\n '#b03e4f',\r\n '#b03e4f',\r\n '#b03e4f',\r\n '#ae3e4f',\r\n '#ae3e4f',\r\n '#ad3e4f',\r\n '#ad3e4f',\r\n '#ac3e4f',\r\n '#ac3f50',\r\n '#ab3f50',\r\n '#ab3f50',\r\n '#aa3f50',\r\n '#aa3f50',\r\n '#a93f50',\r\n '#a93f50',\r\n '#a73f50',\r\n '#a73f50',\r\n '#a63f50',\r\n '#a63f51',\r\n '#a53f51',\r\n '#a53f51',\r\n '#a43f50',\r\n '#a43f50',\r\n '#a43f50',\r\n '#a43f50',\r\n '#a24050',\r\n '#a24050',\r\n '#a14050',\r\n '#a04051',\r\n '#a04051',\r\n '#9f4051',\r\n '#9f4051',\r\n '#9e4051',\r\n '#9c4051',\r\n '#9c4051',\r\n '#9b4051',\r\n '#9a4051',\r\n '#9a4053',\r\n '#994053',\r\n '#994153',\r\n '#984153',\r\n '#974153',\r\n '#974153',\r\n '#964153',\r\n '#954153',\r\n '#954153',\r\n '#934054',\r\n '#934054',\r\n '#924054',\r\n '#914054',\r\n '#914054',\r\n '#904053',\r\n '#8e4053',\r\n '#8e4153',\r\n '#8d4153',\r\n '#8d4153',\r\n '#8d4154',\r\n '#8b4154',\r\n '#8b4154',\r\n '#8a4154',\r\n '#894154',\r\n '#894154',\r\n '#884154',\r\n '#884154',\r\n '#864154',\r\n '#864154',\r\n '#854154',\r\n '#844155',\r\n '#844255',\r\n '#824255',\r\n '#824255',\r\n '#824255',\r\n '#824255',\r\n '#814255',\r\n '#814255',\r\n '#804255',\r\n '#804255',\r\n '#7e4255',\r\n '#7e4255',\r\n '#7d4255',\r\n '#7d4256',\r\n '#7c4256',\r\n '#7c4256',\r\n '#7b4256',\r\n '#7b4256',\r\n '#7b4256',\r\n '#794256',\r\n '#794256',\r\n '#784256',\r\n '#784356',\r\n '#774256',\r\n '#774256',\r\n '#774256',\r\n '#764256',\r\n '#764256',\r\n '#764256',\r\n '#754256',\r\n '#754256',\r\n '#744255',\r\n '#744255',\r\n '#744255',\r\n '#734255',\r\n '#734255',\r\n '#734255',\r\n '#724255',\r\n '#724255',\r\n '#724255',\r\n '#714255',\r\n '#714255',\r\n '#6f4255',\r\n '#6f4255',\r\n '#6f4255',\r\n '#6e4255',\r\n '#6e4255',\r\n '#6e4255',\r\n '#6d4255',\r\n '#6d4255',\r\n '#6d4255',\r\n '#6c4255',\r\n '#6c4255',\r\n '#6c4255',\r\n '#6b4155',\r\n '#6b4155',\r\n '#694155',\r\n '#694155',\r\n '#694155',\r\n '#684155',\r\n '#684155',\r\n '#684155',\r\n '#684155',\r\n '#684155',\r\n '#674155',\r\n '#674155',\r\n '#674155',\r\n '#664154',\r\n '#664154',\r\n '#654154',\r\n '#654154',\r\n '#654154',\r\n '#634154',\r\n '#634154',\r\n '#624154',\r\n '#624154',\r\n '#614154',\r\n '#614154',\r\n '#614154',\r\n '#604054',\r\n '#604054',\r\n '#5f4054',\r\n '#5f4054',\r\n '#5f4054',\r\n '#5e4054',\r\n '#5e4054',\r\n '#5d4054',\r\n '#5d4054',\r\n '#5d4054',\r\n '#5c4053',\r\n '#5c4053',\r\n '#5c4053',\r\n '#5b4053',\r\n '#5b4053',\r\n '#5a4053',\r\n '#5a4053',\r\n '#5a4053',\r\n '#593f53',\r\n '#593f53',\r\n '#593f53',\r\n '#583f53',\r\n '#583f53',\r\n '#583f53',\r\n '#573f53',\r\n '#573e53',\r\n '#573e53',\r\n '#563e53',\r\n '#563e53',\r\n '#563e53',\r\n '#563e53',\r\n '#553e52',\r\n '#553e52',\r\n '#553e52',\r\n '#543e52',\r\n '#543e52',\r\n '#543e52',\r\n '#543e52',\r\n '#543e52',\r\n '#533e52',\r\n '#533e52',\r\n '#533e52',\r\n '#533e52',\r\n '#533e52',\r\n '#523e51',\r\n '#523e51',\r\n '#523e51',\r\n '#523e51',\r\n '#523e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503f51',\r\n '#503f51',\r\n '#4f3f51',\r\n '#4f3f51',\r\n '#4f3f51',\r\n '#4d3f51',\r\n '#4d3f51',\r\n '#4d4151',\r\n '#4b4151',\r\n '#4b4151',\r\n '#4a4152',\r\n '#494152',\r\n '#484253',\r\n '#484253',\r\n '#474253',\r\n '#474253',\r\n '#464353',\r\n '#454353',\r\n '#454353',\r\n '#444454',\r\n '#444454',\r\n '#434454',\r\n '#434454',\r\n '#424454',\r\n '#424554',\r\n '#424554',\r\n '#424554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#404654',\r\n '#404654',\r\n '#404654',\r\n '#404653',\r\n '#404653',\r\n '#3f4653',\r\n '#3f4753',\r\n '#3f4753',\r\n '#3e4753',\r\n '#3e4753',\r\n '#3e4852',\r\n '#3d4852',\r\n '#3d4852',\r\n '#3c4951',\r\n '#3c4951',\r\n '#3b4951',\r\n '#3b4a51',\r\n '#3b4a50',\r\n '#3b4a50',\r\n '#3a4c50',\r\n '#394c50',\r\n '#394c50',\r\n '#394c50',\r\n '#394c50',\r\n '#394c50',\r\n '#384c4f',\r\n '#384c4f',\r\n '#384c4f',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384e50',\r\n '#364e50',\r\n '#364e4f',\r\n '#364e4f',\r\n '#364e4f',\r\n '#364e4f',\r\n '#364e4f',\r\n '#364f4f',\r\n '#364f4f',\r\n '#354f4f',\r\n '#354f4f',\r\n '#354f4f',\r\n '#354f4f',\r\n '#35514f',\r\n '#35514f',\r\n '#35514f',\r\n '#34514f',\r\n '#34514f',\r\n '#34524f',\r\n '#34524f',\r\n '#34524f',\r\n '#34524f',\r\n '#33524e',\r\n '#33534e',\r\n '#33534e',\r\n '#33534e',\r\n '#32534e',\r\n '#32544e',\r\n '#32544e',\r\n '#32544e',\r\n '#32544e',\r\n '#31554e',\r\n '#31554e',\r\n '#31554e',\r\n '#31564d',\r\n '#31564d',\r\n '#31564d',\r\n '#31564d',\r\n '#31574d',\r\n '#30574d',\r\n '#30574d',\r\n '#30584d',\r\n '#30584d',\r\n '#2f584d',\r\n '#2f594d',\r\n '#2f594d',\r\n '#2f594c',\r\n '#2e5a4c',\r\n '#2e5a4c',\r\n '#2e5a4c',\r\n '#2d5b4c',\r\n '#2d5b4c',\r\n '#2d5b4c',\r\n '#2d5b4c',\r\n '#2c5c4c',\r\n '#2c5c4c',\r\n '#2c5c4c',\r\n '#2b5d4b',\r\n '#2b5d4b',\r\n '#2b5d4b',\r\n '#2b5e4b',\r\n '#2a5e4b',\r\n '#2a5e4b',\r\n '#2a5f4b',\r\n '#2a5f4b',\r\n '#2a5f4b',\r\n '#2a604b',\r\n '#2a604b',\r\n '#2a604b',\r\n '#29624b',\r\n '#29624b',\r\n '#29624b',\r\n '#29624b',\r\n '#29634b',\r\n '#29634b',\r\n '#29634b',\r\n '#29644b',\r\n '#28644b',\r\n '#28644b',\r\n '#28644b',\r\n '#28654b',\r\n '#28654a',\r\n '#27654a',\r\n '#27664a',\r\n '#27664a',\r\n '#27664a',\r\n '#27664a',\r\n '#26684a',\r\n '#26684a',\r\n '#26684a',\r\n '#26684a',\r\n '#26694a',\r\n '#25694a',\r\n '#25694a',\r\n '#25694a',\r\n '#256a4a',\r\n '#256a4a',\r\n '#256a4a',\r\n '#256a4a',\r\n '#246a4a',\r\n '#246b49',\r\n '#246b49',\r\n '#246b49',\r\n '#246b49',\r\n '#246c49',\r\n '#246c49',\r\n '#236c49',\r\n '#236c49',\r\n '#236e49',\r\n '#236e49',\r\n '#236e49',\r\n '#236e49',\r\n '#236f49',\r\n '#236f49',\r\n '#236f49',\r\n '#226f49',\r\n '#227049',\r\n '#227049',\r\n '#227049',\r\n '#227149',\r\n '#227149',\r\n '#227149',\r\n '#227149',\r\n '#227349',\r\n '#217349',\r\n '#217349',\r\n '#217449',\r\n '#217449',\r\n '#217449',\r\n '#217449',\r\n '#217549',\r\n '#217549',\r\n '#217549',\r\n '#207649',\r\n '#207649',\r\n '#207649',\r\n '#207847',\r\n '#207847',\r\n '#207847',\r\n '#207947',\r\n '#207947',\r\n '#207947',\r\n '#207947',\r\n '#207947',\r\n '#207947',\r\n '#207b47',\r\n '#207b47',\r\n '#207b47',\r\n '#207c47',\r\n '#207c47',\r\n '#207c47',\r\n '#207d47',\r\n '#207d47',\r\n '#207e48',\r\n '#207e48',\r\n '#207e48',\r\n '#208048',\r\n '#208048',\r\n '#208048',\r\n '#208148',\r\n '#208148',\r\n '#208148',\r\n '#208248',\r\n '#1f8247',\r\n '#1f8247',\r\n '#1f8347',\r\n '#1f8347',\r\n '#1f8347',\r\n '#1f8547',\r\n '#1f8547',\r\n '#1f8547',\r\n '#1f8647',\r\n '#1f8647',\r\n '#1f8647',\r\n '#1e8747',\r\n '#1e8747',\r\n '#1e8747',\r\n '#1e8747',\r\n '#1e8947',\r\n '#1e8947',\r\n '#1e8947',\r\n '#1e8a47',\r\n '#1e8a47',\r\n '#1e8a47',\r\n '#1e8b47',\r\n '#1e8b47',\r\n '#1e8b47',\r\n '#1e8b47',\r\n '#1e8c47',\r\n '#1e8c47',\r\n '#1e8c47',\r\n '#1e8c47',\r\n '#1e8e47',\r\n '#1e8e47',\r\n '#1e8e47',\r\n '#1e8f47',\r\n '#1d8f47',\r\n '#1d8f47',\r\n '#1d8f47',\r\n '#1d9047',\r\n '#1d9047',\r\n '#1e9047',\r\n '#1e9047',\r\n '#1e9147',\r\n '#1e9147',\r\n '#1e9147',\r\n '#1e9347',\r\n '#1e9347',\r\n '#1e9347',\r\n '#1e9347',\r\n '#1e9447',\r\n '#1e9447',\r\n '#1e9447',\r\n '#1e9548',\r\n '#1e9548',\r\n '#1e9548',\r\n '#1e9648',\r\n '#1e9648',\r\n '#1e9648',\r\n '#1f9848',\r\n '#1f9848',\r\n '#1f9848',\r\n '#209948',\r\n '#209948',\r\n '#209948',\r\n '#209a48',\r\n '#209a48',\r\n '#209a48',\r\n '#209b48',\r\n '#209b48',\r\n '#209b48',\r\n '#209b48',\r\n '#219c48',\r\n '#219c48',\r\n '#219d48',\r\n '#219d48',\r\n '#219e48',\r\n '#219e48',\r\n '#219e48',\r\n '#219f48',\r\n '#219f48',\r\n '#21a048',\r\n '#21a048',\r\n '#21a048',\r\n '#21a148',\r\n '#21a148',\r\n '#21a348',\r\n '#21a348',\r\n '#22a449',\r\n '#22a449',\r\n '#22a449',\r\n '#22a549',\r\n '#22a549',\r\n '#22a649',\r\n '#22a649',\r\n '#22a64a',\r\n '#23a74a',\r\n '#23a74a',\r\n '#23a84a',\r\n '#23a84a',\r\n '#23aa4a',\r\n '#23aa4a',\r\n '#23aa4a',\r\n '#24ab4a',\r\n '#24ab4a',\r\n '#24ab4a',\r\n '#25ac4a',\r\n '#25ac4a',\r\n '#25ad4a',\r\n '#25ad4a',\r\n '#25ad4a',\r\n '#26ae4a',\r\n '#26ae4a',\r\n '#26ae4a',\r\n '#26af4a',\r\n '#26af4a',\r\n '#26b04a',\r\n '#26b04a',\r\n '#26b04a',\r\n '#27b14a',\r\n '#27b14a',\r\n '#27b14a',\r\n '#27b24a',\r\n '#27b24a',\r\n '#27b24a',\r\n '#27b24a',\r\n '#27b34a',\r\n '#27b34a',\r\n '#27b34a',\r\n '#28b54b',\r\n '#28b54b',\r\n '#28b54b',\r\n '#28b54b',\r\n '#28b64b',\r\n '#28b64b',\r\n '#28b64d',\r\n '#28b64d',\r\n '#28b74d',\r\n '#28b74d',\r\n '#28b74d',\r\n '#29b74d',\r\n '#29b84d',\r\n '#29b84d',\r\n '#29b84d',\r\n '#29b84d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2abb4e',\r\n '#2abb4e',\r\n '#2abb4f',\r\n '#2abb4f',\r\n '#2abc4f',\r\n '#2abc4f',\r\n '#2abc4f',\r\n '#2bbc4f',\r\n '#2bbc4f',\r\n '#2bbd4f',\r\n '#2bbd4f',\r\n '#2bbd50',\r\n '#2bbd50',\r\n '#2bbd50',\r\n '#2bbe50',\r\n '#2bbe50',\r\n '#2bbe50',\r\n '#2bbe50',\r\n '#2bbe50',\r\n '#2bbf51',\r\n '#2cbf51',\r\n '#2cbf51',\r\n '#2cbf51',\r\n '#2cc051',\r\n '#2cc051',\r\n '#2cc051',\r\n '#2cc052',\r\n '#2cc052',\r\n '#2cc152',\r\n '#2cc152',\r\n '#2cc152',\r\n '#2cc152',\r\n '#2dc353',\r\n '#2dc353',\r\n '#2dc353',\r\n '#2dc353',\r\n '#2dc353',\r\n '#2ec453',\r\n '#2ec453',\r\n '#2ec454',\r\n '#2ec454',\r\n '#2ec454',\r\n '#2ec554',\r\n '#2ec554',\r\n '#2fc554',\r\n '#2fc554',\r\n '#2fc655',\r\n '#2fc655',\r\n '#2fc655',\r\n '#2fc655',\r\n '#2fc655',\r\n '#2fc755',\r\n '#2fc755',\r\n '#2fc756',\r\n '#2fc756',\r\n '#2fc756',\r\n '#2fc756',\r\n '#2fc856',\r\n '#2fc856',\r\n '#2fc856',\r\n '#2fc856',\r\n '#2fc856',\r\n '#2fc858',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fca58',\r\n '#2fca58',\r\n '#2fca58',\r\n '#2fca59',\r\n '#2fca59',\r\n '#2fca59',\r\n '#2fca59',\r\n '#2fca59',\r\n '#30ca59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb5a',\r\n '#30cb5a',\r\n '#30cb5a',\r\n '#30cb5a',\r\n '#30cb5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n ],\r\n nullColor: 'pink',\r\n}\r\nconst blueGradientBubbles = {\r\n colors: [\r\n '#0c3574',\r\n '#0b3475',\r\n '#0b3475',\r\n '#0c3475',\r\n '#0c3575',\r\n '#0c3475',\r\n '#0c3475',\r\n '#0c3576',\r\n '#0c3677',\r\n '#0c3677',\r\n '#0d3776',\r\n '#0d3676',\r\n '#0e3677',\r\n '#0e3576',\r\n '#0d3576',\r\n '#0d3677',\r\n '#0d3777',\r\n '#0e3778',\r\n '#0e3778',\r\n '#0d3877',\r\n '#0d3878',\r\n '#0d3878',\r\n '#0d3878',\r\n '#0d3878',\r\n '#0d3978',\r\n '#0e3778',\r\n '#0e3779',\r\n '#0e397a',\r\n '#0f3979',\r\n '#0f3a7a',\r\n '#0f3a7b',\r\n '#0f3a7b',\r\n '#0e3a7a',\r\n '#0e3a7a',\r\n '#0f3a7a',\r\n '#0e3a7a',\r\n '#0f3a7c',\r\n '#0f3a7c',\r\n '#0f3a7b',\r\n '#0f3b7b',\r\n '#0f3a7b',\r\n '#0e3a7b',\r\n '#0e3b7c',\r\n '#0f3c7c',\r\n '#0f3c7c',\r\n '#0f3d7d',\r\n '#0f3d7d',\r\n '#0f3c7d',\r\n '#0f3c7e',\r\n '#0f3d7e',\r\n '#0f3d7e',\r\n '#0f3d7e',\r\n '#0f3e7e',\r\n '#0f3d7e',\r\n '#103e7e',\r\n '#113e7f',\r\n '#103e7e',\r\n '#103d7e',\r\n '#103e7f',\r\n '#103e7e',\r\n '#113e80',\r\n '#113f80',\r\n '#103f7f',\r\n '#114080',\r\n '#113f81',\r\n '#114081',\r\n '#113f81',\r\n '#103e80',\r\n '#103f81',\r\n '#104181',\r\n '#104181',\r\n '#103f81',\r\n '#114082',\r\n '#103f82',\r\n '#103f81',\r\n '#114081',\r\n '#114282',\r\n '#114282',\r\n '#114282',\r\n '#124182',\r\n '#114082',\r\n '#114182',\r\n '#114283',\r\n '#124384',\r\n '#114384',\r\n '#114383',\r\n '#124383',\r\n '#124485',\r\n '#114384',\r\n '#114384',\r\n '#114384',\r\n '#114484',\r\n '#124585',\r\n '#124585',\r\n '#124585',\r\n '#134587',\r\n '#134586',\r\n '#134586',\r\n '#134687',\r\n '#134687',\r\n '#134586',\r\n '#134686',\r\n '#134687',\r\n '#134787',\r\n '#134788',\r\n '#134688',\r\n '#134688',\r\n '#134687',\r\n '#124788',\r\n '#124789',\r\n '#134688',\r\n '#134688',\r\n '#134688',\r\n '#134788',\r\n '#134889',\r\n '#13488a',\r\n '#13488a',\r\n '#13488a',\r\n '#134889',\r\n '#134789',\r\n '#13478a',\r\n '#13498a',\r\n '#14498a',\r\n '#15498b',\r\n '#14488b',\r\n '#14498c',\r\n '#15498c',\r\n '#14498b',\r\n '#15498c',\r\n '#15498c',\r\n '#14498c',\r\n '#154a8d',\r\n '#144b8c',\r\n '#144b8c',\r\n '#154b8d',\r\n '#144c8d',\r\n '#154b8d',\r\n '#154b8d',\r\n '#154c8d',\r\n '#144c8d',\r\n '#154c8d',\r\n '#154c8d',\r\n '#164c8e',\r\n '#164c8e',\r\n '#164c8e',\r\n '#164c8e',\r\n '#154d8e',\r\n '#154d8f',\r\n '#164e90',\r\n '#164e90',\r\n '#164e90',\r\n '#154e8f',\r\n '#154d90',\r\n '#154e90',\r\n '#164e90',\r\n '#154e91',\r\n '#154f91',\r\n '#155091',\r\n '#165091',\r\n '#164f91',\r\n '#164f92',\r\n '#165092',\r\n '#165092',\r\n '#165092',\r\n '#165092',\r\n '#155192',\r\n '#155192',\r\n '#175093',\r\n '#175293',\r\n '#175293',\r\n '#175093',\r\n '#175093',\r\n '#175293',\r\n '#175293',\r\n '#175193',\r\n '#175294',\r\n '#175394',\r\n '#175394',\r\n '#175294',\r\n '#175395',\r\n '#175295',\r\n '#175295',\r\n '#175395',\r\n '#175395',\r\n '#185495',\r\n '#185495',\r\n '#175396',\r\n '#175497',\r\n '#175397',\r\n '#175497',\r\n '#175597',\r\n '#175597',\r\n '#175597',\r\n '#175497',\r\n '#185497',\r\n '#195698',\r\n '#195798',\r\n '#185597',\r\n '#185497',\r\n '#185599',\r\n '#195799',\r\n '#195799',\r\n '#185799',\r\n '#185699',\r\n '#195699',\r\n '#195799',\r\n '#195799',\r\n '#19589a',\r\n '#185899',\r\n '#185899',\r\n '#18589a',\r\n '#18589a',\r\n '#18599a',\r\n '#18589a',\r\n '#18579a',\r\n '#19589b',\r\n '#19599b',\r\n '#19599a',\r\n '#18599a',\r\n '#1a5a9c',\r\n '#1a5a9d',\r\n '#1a5a9c',\r\n '#1a599d',\r\n '#1a5a9d',\r\n '#1a5a9e',\r\n '#1a5a9e',\r\n '#195a9d',\r\n '#195a9d',\r\n '#195a9d',\r\n '#195a9d',\r\n '#1a5a9e',\r\n '#1a5b9f',\r\n '#1a5b9e',\r\n '#1a5b9e',\r\n '#1a5d9e',\r\n '#1a5c9f',\r\n '#195c9f',\r\n '#195c9f',\r\n '#195da0',\r\n '#195d9f',\r\n '#195ca0',\r\n '#1a5ca0',\r\n '#1a5d9f',\r\n '#1a5ea1',\r\n '#1a5ea1',\r\n '#1a5da0',\r\n '#1a5da0',\r\n '#195ea0',\r\n '#195ea0',\r\n '#1a5ea0',\r\n '#1a5ea1',\r\n '#1c5fa3',\r\n '#1c5fa3',\r\n '#1b5fa3',\r\n '#1b5ea2',\r\n '#1b5ea2',\r\n '#1b5ea2',\r\n '#1b5fa3',\r\n '#1b60a3',\r\n '#1b60a3',\r\n '#1b5fa3',\r\n '#1b60a3',\r\n '#1c61a4',\r\n '#1b60a4',\r\n '#1b60a4',\r\n '#1b61a4',\r\n '#1b60a4',\r\n '#1b60a4',\r\n '#1b60a4',\r\n '#1b62a4',\r\n '#1b62a5',\r\n '#1b61a5',\r\n '#1b62a5',\r\n '#1b62a5',\r\n '#1b61a5',\r\n '#1d61a6',\r\n '#1d63a6',\r\n '#1c62a6',\r\n '#1d63a6',\r\n '#1d62a6',\r\n '#1c62a6',\r\n '#1c63a7',\r\n '#1d64a8',\r\n '#1c64a7',\r\n '#1c64a7',\r\n '#1d65a8',\r\n '#1c63a8',\r\n '#1d64a9',\r\n '#1d65a9',\r\n '#1d65a9',\r\n '#1d65a9',\r\n '#1d65a9',\r\n '#1d66a9',\r\n '#1d66a9',\r\n '#1c65a9',\r\n '#1d66aa',\r\n '#1d66aa',\r\n '#1c65aa',\r\n '#1c66aa',\r\n '#1c66aa',\r\n '#1d66aa',\r\n '#1c66ab',\r\n '#1c68ab',\r\n '#1c67ab',\r\n '#1c67ab',\r\n '#1d68ab',\r\n '#1d68ac',\r\n '#1e68ac',\r\n '#1e67ab',\r\n '#1d67ab',\r\n '#1e69ac',\r\n '#1e69ac',\r\n '#1d68ac',\r\n '#1d68ac',\r\n '#1e69ae',\r\n '#1e6aae',\r\n '#1e6aad',\r\n '#1e69ad',\r\n '#1e6aae',\r\n '#1d69ae',\r\n '#1d6aae',\r\n '#1e6bae',\r\n '#1e6aaf',\r\n '#1e6baf',\r\n '#1e6baf',\r\n '#1e6bb0',\r\n '#1e6cb0',\r\n '#1d6baf',\r\n '#1d6baf',\r\n '#1e6bb0',\r\n '#1d6ab0',\r\n '#1d6cb0',\r\n '#1d6db1',\r\n '#1e6cb1',\r\n '#1e6db0',\r\n '#1e6cb1',\r\n '#1d6cb1',\r\n '#1d6cb0',\r\n '#1f6db1',\r\n '#1f6cb1',\r\n '#1f6cb1',\r\n '#1f6db2',\r\n '#1f6cb1',\r\n '#1f6db1',\r\n '#1f6eb3',\r\n '#1f6fb3',\r\n '#1f6eb3',\r\n '#1f6eb3',\r\n '#1f6fb3',\r\n '#1f6fb3',\r\n '#1f6fb4',\r\n '#1f6fb4',\r\n '#1f6fb4',\r\n '#2070b5',\r\n '#1f70b4',\r\n '#1f70b4',\r\n '#1f70b4',\r\n '#1f71b5',\r\n '#1f71b5',\r\n '#1f71b5',\r\n '#1f71b5',\r\n '#1f70b5',\r\n '#1f71b5',\r\n '#1f72b6',\r\n '#1f72b6',\r\n '#1f71b6',\r\n '#1f71b6',\r\n '#1f72b5',\r\n '#2072b6',\r\n '#2172b7',\r\n '#2172b7',\r\n '#2172b6',\r\n '#2172b6',\r\n '#2172b7',\r\n '#2072b7',\r\n '#2073b8',\r\n '#2173b9',\r\n '#2173b9',\r\n '#2075b8',\r\n '#2075b8',\r\n '#2174b8',\r\n '#2174b9',\r\n '#2175ba',\r\n '#2174ba',\r\n '#2174ba',\r\n '#2175ba',\r\n '#2175ba',\r\n '#2176bb',\r\n '#2176bb',\r\n '#2076ba',\r\n '#2076ba',\r\n '#2176bb',\r\n '#2176bb',\r\n '#2076bb',\r\n '#2077bb',\r\n '#2177bc',\r\n '#2077bb',\r\n '#2077bb',\r\n '#2077bc',\r\n '#2077bc',\r\n '#2077bc',\r\n '#2177bd',\r\n '#2078bc',\r\n '#2078bc',\r\n '#2178bd',\r\n '#2279be',\r\n '#2178be',\r\n '#2179be',\r\n '#2179be',\r\n '#2279bf',\r\n '#2278bf',\r\n '#2179bf',\r\n '#217abf',\r\n '#227ac0',\r\n '#2279c0',\r\n '#227ac0',\r\n '#227abf',\r\n '#227ac0',\r\n '#217bc0',\r\n '#227bc0',\r\n '#227bc0',\r\n '#217bc0',\r\n '#217ac0',\r\n '#217bc0',\r\n '#217cc1',\r\n '#227cc1',\r\n '#217cc1',\r\n '#217cc1',\r\n '#227cc1',\r\n '#217cc1',\r\n '#227cc2',\r\n '#227cc2',\r\n '#227dc2',\r\n '#217dc1',\r\n '#217dc2',\r\n '#217dc2',\r\n '#217dc3',\r\n '#217ec3',\r\n '#217ec3',\r\n '#217ec3',\r\n '#227ec4',\r\n '#237fc4',\r\n '#237ec5',\r\n '#237ec5',\r\n '#237ec5',\r\n '#237ec4',\r\n '#237ec4',\r\n '#237ec6',\r\n '#237fc6',\r\n '#2380c6',\r\n '#237fc5',\r\n '#237fc5',\r\n '#2380c5',\r\n '#2380c7',\r\n '#2381c6',\r\n '#2381c6',\r\n '#2380c6',\r\n '#2381c7',\r\n '#2380c6',\r\n '#2380c7',\r\n '#2381c8',\r\n '#2382c7',\r\n '#2381c7',\r\n '#2381c7',\r\n '#2382c8',\r\n '#2382c8',\r\n '#2383c8',\r\n '#2384c9',\r\n '#2384c9',\r\n '#2383c8',\r\n '#2383c9',\r\n '#2383ca',\r\n '#2384ca',\r\n '#2384ca',\r\n '#2383ca',\r\n '#2383ca',\r\n '#2384ca',\r\n '#2384ca',\r\n '#2484cb',\r\n '#2485cb',\r\n '#2385cb',\r\n '#2384cb',\r\n '#2385cb',\r\n '#2485cb',\r\n '#2585cc',\r\n '#2586cc',\r\n '#2485cc',\r\n '#2485cc',\r\n '#2485cc',\r\n '#2486cd',\r\n '#2586cd',\r\n '#2587cd',\r\n '#2487cc',\r\n '#2486cd',\r\n '#2587cd',\r\n '#2587cd',\r\n '#2487ce',\r\n '#2588ce',\r\n '#2588ce',\r\n '#2588ce',\r\n '#2488cf',\r\n '#2588cf',\r\n '#2589ce',\r\n '#2589ce',\r\n '#2688cf',\r\n '#2589ce',\r\n '#2789cf',\r\n '#2889d0',\r\n '#2889d0',\r\n '#288ad0',\r\n '#2889d0',\r\n '#298ad0',\r\n '#2b8bd0',\r\n '#2a89cf',\r\n '#2989cf',\r\n '#2b8bcf',\r\n '#2c8cd0',\r\n '#2c8ccf',\r\n '#2d8cd0',\r\n '#2d8cd0',\r\n '#2c8bd0',\r\n '#2e8cd1',\r\n '#2e8cd1',\r\n '#2e8cd0',\r\n '#2e8cd1',\r\n '#2e8dd0',\r\n '#308ed0',\r\n '#318ed1',\r\n '#318dd1',\r\n '#308dd0',\r\n '#308dd0',\r\n '#318fd0',\r\n '#338fd1',\r\n '#328dd1',\r\n '#338ed1',\r\n '#348fd1',\r\n '#348fd2',\r\n '#338ed2',\r\n '#338ed1',\r\n '#348fd1',\r\n '#3590d1',\r\n '#368fd2',\r\n '#3690d1',\r\n '#3690d1',\r\n '#3690d2',\r\n '#3791d3',\r\n '#3791d3',\r\n '#3791d2',\r\n '#3790d2',\r\n '#3790d2',\r\n '#3892d2',\r\n '#3892d2',\r\n '#3992d2',\r\n '#3a92d3',\r\n '#3a93d3',\r\n '#3b92d3',\r\n '#3b92d3',\r\n '#3a93d3',\r\n '#3a93d3',\r\n '#3b93d3',\r\n '#3c94d3',\r\n '#3d94d3',\r\n '#3d94d3',\r\n '#3d94d3',\r\n '#3d93d3',\r\n '#3f93d4',\r\n '#3f96d4',\r\n '#3f96d4',\r\n '#3e95d3',\r\n '#3e96d3',\r\n '#3f96d4',\r\n '#4095d4',\r\n '#4095d4',\r\n '#3f96d4',\r\n '#3f96d4',\r\n '#4096d4',\r\n '#4297d4',\r\n '#4197d4',\r\n '#4096d3',\r\n '#4196d3',\r\n '#4397d5',\r\n '#4398d5',\r\n '#4397d5',\r\n '#4398d5',\r\n '#4398d5',\r\n '#4499d5',\r\n '#4499d5',\r\n '#4499d5',\r\n '#4499d5',\r\n '#459ad5',\r\n '#459ad4',\r\n '#459ad4',\r\n '#459ad4',\r\n '#459ad5',\r\n '#459ad6',\r\n '#469bd6',\r\n '#469bd5',\r\n '#469ad5',\r\n '#469ad5',\r\n '#479bd5',\r\n '#499cd6',\r\n '#499cd6',\r\n '#499cd5',\r\n '#499cd5',\r\n '#499cd6',\r\n '#4a9dd6',\r\n '#4a9fd6',\r\n '#4a9ed6',\r\n '#4a9ed5',\r\n '#4a9ed6',\r\n '#4b9ed7',\r\n '#4b9ed7',\r\n '#4b9fd7',\r\n '#4a9ed7',\r\n '#4b9ed7',\r\n '#4ca0d7',\r\n '#4c9ed7',\r\n '#4b9ed7',\r\n '#4c9fd7',\r\n '#4da0d7',\r\n '#4da0d8',\r\n '#4da0d8',\r\n '#4c9fd8',\r\n '#4c9fd7',\r\n '#4da0d7',\r\n '#4ea2d8',\r\n '#4ea2d8',\r\n '#4ea1d8',\r\n '#4ea2d7',\r\n '#4ea2d7',\r\n '#4ea2d8',\r\n '#4ea2d7',\r\n '#4ea2d7',\r\n '#4fa3d9',\r\n '#50a3d9',\r\n '#50a3d8',\r\n '#4fa2d8',\r\n '#4fa3d8',\r\n '#51a3d8',\r\n '#51a3d8',\r\n '#51a3d9',\r\n '#51a3d8',\r\n '#51a3d8',\r\n '#52a4d9',\r\n '#52a5da',\r\n '#52a4d9',\r\n '#52a4d9',\r\n '#52a5da',\r\n '#53a5da',\r\n '#53a5da',\r\n '#53a5da',\r\n '#54a5da',\r\n '#54a5da',\r\n '#54a6d9',\r\n '#54a7d9',\r\n '#54a6d9',\r\n '#54a7d9',\r\n '#55a8da',\r\n '#55a8da',\r\n '#56a8db',\r\n '#55a7da',\r\n '#56a8db',\r\n '#57a8db',\r\n '#56a7da',\r\n '#57a8db',\r\n '#57a8db',\r\n '#57a8db',\r\n '#58a9da',\r\n '#58aada',\r\n '#57a9da',\r\n '#57a8da',\r\n '#57a9da',\r\n '#58aadb',\r\n '#59aadb',\r\n '#59aadb',\r\n '#59aadc',\r\n '#59abdb',\r\n '#5aacdb',\r\n '#5aabdb',\r\n '#59abdb',\r\n '#5babdb',\r\n '#5babdc',\r\n '#5babdc',\r\n '#5aabdc',\r\n '#5baddc',\r\n '#5bacdc',\r\n '#5cacdc',\r\n '#5bacdc',\r\n '#5caedc',\r\n '#5caddc',\r\n '#5cacdc',\r\n '#5caddc',\r\n '#5dafdc',\r\n '#5dafdc',\r\n '#5caedc',\r\n '#5daedc',\r\n '#5eb0dd',\r\n '#5db0dd',\r\n '#5eafdd',\r\n '#5eafdd',\r\n '#5fb1dd',\r\n '#5fb1dd',\r\n '#5fafdd',\r\n '#5fafdd',\r\n '#60b1dd',\r\n '#60b1dd',\r\n '#60b1dd',\r\n '#60b1dd',\r\n '#60b1dd',\r\n '#61b1de',\r\n '#61b1de',\r\n '#61b1de',\r\n '#61b1de',\r\n '#61b2dd',\r\n '#61b2dd',\r\n '#62b2dd',\r\n '#62b2de',\r\n '#62b2de',\r\n '#62b2de',\r\n '#63b3dd',\r\n '#63b4de',\r\n '#63b4df',\r\n '#63b4df',\r\n '#63b3df',\r\n '#63b4de',\r\n '#63b4de',\r\n '#63b4df',\r\n '#63b5df',\r\n '#64b6df',\r\n '#64b6df',\r\n '#64b6df',\r\n '#64b5de',\r\n '#65b6e0',\r\n '#65b7e0',\r\n '#65b7df',\r\n '#65b6e0',\r\n '#65b6e0',\r\n '#65b6df',\r\n '#66b6df',\r\n '#67b7e0',\r\n '#67b8e0',\r\n '#66b8df',\r\n '#66b8e0',\r\n '#67b8df',\r\n '#67b7df',\r\n '#67b8e0',\r\n '#67b9e0',\r\n '#67b8e0',\r\n '#68b9e1',\r\n '#69bae1',\r\n '#69bae1',\r\n '#68b8e0',\r\n '#69b9e0',\r\n '#69bae0',\r\n '#69bae0',\r\n '#6abbe1',\r\n '#69bbe0',\r\n '#69bbe0',\r\n '#69bbe1',\r\n '#6abce1',\r\n '#6abbe0',\r\n '#6abbe0',\r\n '#6abbe1',\r\n '#6abce1',\r\n '#6abce2',\r\n '#6bbde2',\r\n '#6bbee1',\r\n '#6cbde2',\r\n '#6cbde2',\r\n '#6bbde1',\r\n '#6cbde1',\r\n '#6cbde2',\r\n '#6cbde2',\r\n '#6cbde2',\r\n '#6cbee2',\r\n '#6cbee2',\r\n '#6dbfe2',\r\n '#6dbfe2',\r\n '#6dbee2',\r\n '#6ebee3',\r\n '#6fbfe3',\r\n '#6fc0e3',\r\n '#6fc0e2',\r\n '#6ebfe3',\r\n '#6ec0e3',\r\n '#6ec1e3',\r\n '#6ec1e3',\r\n '#6ec1e4',\r\n '#6fc0e3',\r\n '#70c1e3',\r\n '#70c2e3',\r\n '#70c2e4',\r\n '#6fc1e3',\r\n '#6fc1e3',\r\n '#70c2e3',\r\n '#71c2e4',\r\n '#70c3e4',\r\n '#70c2e4',\r\n '#70c2e4',\r\n '#72c4e4',\r\n '#72c4e4',\r\n '#71c2e4',\r\n '#71c2e4',\r\n '#73c4e4',\r\n '#72c3e4',\r\n '#72c3e4',\r\n '#72c3e4',\r\n '#72c4e4',\r\n '#73c5e4',\r\n '#73c5e4',\r\n '#72c5e4',\r\n '#73c6e4',\r\n '#73c5e4',\r\n '#73c6e4',\r\n '#74c7e5',\r\n '#73c6e4',\r\n '#75c8e5',\r\n '#74c7e5',\r\n '#74c7e5',\r\n '#74c6e5',\r\n '#75c6e5',\r\n '#76c7e5',\r\n '#75c7e5',\r\n '#76c8e5',\r\n '#75c8e5',\r\n '#75c8e6',\r\n '#76c8e6',\r\n '#77c8e5',\r\n '#76c9e6',\r\n '#76c9e5',\r\n '#76c9e5',\r\n '#77cae6',\r\n '#77c9e6',\r\n '#77c9e6',\r\n '#77c9e6',\r\n '#78cae6',\r\n '#77cbe7',\r\n '#77cbe7',\r\n '#78cbe7',\r\n '#78cbe7',\r\n '#79cae6',\r\n '#78cae6',\r\n '#78cbe7',\r\n '#78cae6',\r\n '#79cae6',\r\n '#7acce6',\r\n '#7acde7',\r\n '#7acbe7',\r\n '#79cce6',\r\n '#79cee7',\r\n '#7acee8',\r\n '#7acde8',\r\n '#79cde7',\r\n '#7acde7',\r\n '#7bcee8',\r\n '#7acee7',\r\n '#7acfe7',\r\n '#7acee7',\r\n '#7ccee8',\r\n '#7bcee7',\r\n '#7bcfe7',\r\n '#7bcfe7',\r\n '#7bcfe8',\r\n '#7dd0e9',\r\n '#7dd0e9',\r\n '#7ccfe8',\r\n '#7ccfe8',\r\n '#7cd1e8',\r\n '#7cd1e8',\r\n '#7cd0e8',\r\n '#7cd0e8',\r\n '#7dd1e8',\r\n '#7dd2e9',\r\n '#7dd2e9',\r\n '#7ed2e9',\r\n '#7dd1e8',\r\n '#7dd2e8',\r\n '#7fd3ea',\r\n '#7fd3ea',\r\n '#7ed3e9',\r\n '#7ed2ea',\r\n '#80d2ea',\r\n '#7fd3e9',\r\n '#7fd2e9',\r\n '#80d4ea',\r\n '#80d5ea',\r\n '#7fd4e9',\r\n '#7fd4e9',\r\n '#80d4e9',\r\n '#81d6ea',\r\n '#81d6eb',\r\n '#80d4ea',\r\n '#80d5ea',\r\n '#80d6ea',\r\n '#80d5ea',\r\n '#81d6ea',\r\n '#81d6ea',\r\n '#82d6ea',\r\n '#82d7ea',\r\n '#82d8ea',\r\n '#81d6ea',\r\n '#81d6ea',\r\n '#82d8ea',\r\n '#82d7eb',\r\n '#82d8eb',\r\n '#82d8eb',\r\n '#82d7eb',\r\n '#83d9eb',\r\n '#84d9ec',\r\n '#84d9ec',\r\n '#83d8eb',\r\n '#83d8eb',\r\n '#85d8eb',\r\n '#85d9eb',\r\n '#84daeb',\r\n '#85daeb',\r\n '#85dbec',\r\n '#85dbec',\r\n '#84daec',\r\n '#85dbec',\r\n '#86dbec',\r\n '#86dbec',\r\n '#85dbec',\r\n '#85dbec',\r\n '#85dbec',\r\n '#85dcec',\r\n '#86ddec',\r\n '#86dceb',\r\n '#86dceb',\r\n '#87ddec',\r\n '#86dced',\r\n '#86dcec',\r\n '#86deec',\r\n '#86deed',\r\n '#87ddec',\r\n '#87deed',\r\n '#87dfec',\r\n '#87deec',\r\n '#88deed',\r\n '#89deec',\r\n '#88deec',\r\n '#88dfed',\r\n '#88dfec',\r\n '#89e0ed',\r\n '#89e0ee',\r\n '#88dfee',\r\n '#89e0ee',\r\n '#88dfed',\r\n '#88dfed',\r\n '#8ae1ee',\r\n '#89e1ed',\r\n '#8ae2ee',\r\n '#8ae2ee',\r\n '#8ae2ee',\r\n '#8ae1ee',\r\n '#8be3ee',\r\n '#8be3ee',\r\n '#8be2ee',\r\n '#8be2ee',\r\n '#8be2ef',\r\n '#8ce2ef',\r\n '#8ce3ef',\r\n '#8be3ee',\r\n '#8ce4ef',\r\n '#8be3ef',\r\n '#8be3ee',\r\n '#8de5ef',\r\n '#8de4ef',\r\n '#8de4ef',\r\n '#8de5ef',\r\n '#8ce4ef',\r\n '#8de4ef',\r\n '#8de4ef',\r\n '#8de4f0',\r\n '#8ee6f0',\r\n '#8ee6f0',\r\n '#8ee6ef',\r\n '#8ee6ef',\r\n '#8de7ef',\r\n '#8de6ef',\r\n '#8fe7f0',\r\n '#8fe8f1',\r\n '#8ee6ef',\r\n '#8ee6ef',\r\n '#8ee8f1',\r\n '#8fe8f1',\r\n '#8fe7f0',\r\n '#90e8f1',\r\n '#90e8f1',\r\n '#8fe8f0',\r\n '#90eaf1',\r\n '#8fe9f0',\r\n '#8fe9f0',\r\n '#90eaf1',\r\n '#90eaf1',\r\n '#91eaf1',\r\n '#91eaf1',\r\n '#91eaf1',\r\n '#92ebf2',\r\n '#91eaf1',\r\n ],\r\n nullColor: 'pink',\r\n}\r\n\r\nexport const gradients: Record = {\r\n [ScaleId.DayPerf]: redGreenGradient,\r\n _5: redGreenGradient,\r\n _10: redGreenGradient,\r\n _15: redGreenGradient,\r\n _20: redGreenGradient,\r\n _25: redGreenGradient,\r\n _relvol: blueGradient,\r\n _pe: greenRedGradient,\r\n _fpe: greenRedGradient,\r\n _peg: greenRedGradient,\r\n _ps: greenRedGradient,\r\n _pb: greenRedGradient,\r\n _div: greenGradient,\r\n _eps5y: redGreenGradient,\r\n _short: redGradient,\r\n _rec: redGreenGradient,\r\n _earndate: earningsGradient,\r\n _portfolioPct: redGreenGradient,\r\n _portfolioUsd: redGreenGradient,\r\n}\r\n\r\nexport const bubbleGradients: Record = {\r\n [ScaleId.DayPerf]: redGreenGradientBubbles,\r\n _5: redGreenGradientBubbles,\r\n _10: redGreenGradientBubbles,\r\n _15: redGreenGradientBubbles,\r\n _20: redGreenGradientBubbles,\r\n _25: redGreenGradientBubbles,\r\n _relvol: blueGradientBubbles,\r\n _pe: redGreenGradientBubbles,\r\n _fpe: redGreenGradientBubbles,\r\n _peg: redGreenGradientBubbles,\r\n _ps: redGreenGradientBubbles,\r\n _pb: redGreenGradientBubbles,\r\n _div: redGreenGradientBubbles,\r\n _eps5y: redGreenGradientBubbles,\r\n _short: redGreenGradientBubbles, // TODO red skala\r\n _rec: redGreenGradientBubbles,\r\n _earndate: redGreenGradientBubbles,\r\n _portfolioPct: redGreenGradientBubbles,\r\n _portfolioUsd: redGreenGradientBubbles,\r\n}\r\n\r\nexport const gradientSmall = redGreenGradientSmall\r\n","import { HTMLAttributeReferrerPolicy } from 'react'\r\n\r\nimport { encodeQueryString } from '../queryString'\r\n\r\nconst DEFAULT_OVERLAYS =\r\n '&o[0][ot]=sma&o[0][op]=50&o[0][oc]=FF8F33C6&o[1][ot]=sma&o[1][op]=200&o[1][oc]=DCB3326D&o[2][ot]=patterns&o[2][op]=&o[2][oc]=000'\r\n\r\nexport function getHoverChartUrl(\r\n ticker: string,\r\n escaped: boolean = false,\r\n timeframe = FinvizSettings.hoverCharts?.stock?.timeframe,\r\n dateRange = FinvizSettings.hoverCharts?.stock?.dateRange\r\n): string {\r\n const theme = FinvizSettings.hasDarkTheme ? 'd' : undefined\r\n const overlays = FinvizSettings.hasUserPremium && FinvizSettings.hoverCharts?.stock?.patterns ? DEFAULT_OVERLAYS : ''\r\n const query = encodeQueryString({\r\n cs: 'm',\r\n t: ticker,\r\n tf: timeframe ?? 'd',\r\n ct: 'candle_stick',\r\n r: dateRange,\r\n tm: theme,\r\n })\r\n\r\n let imgUrl = `${FinvizSettings.nodeChartsDomain}/chart.ashx?${query}${overlays}`\r\n\r\n if (escaped) {\r\n // \"Escaping\" [ and ] because of how boxover.js works\r\n imgUrl = imgUrl.replace(/\\[/g, '[[').replace(/]/g, ']]')\r\n }\r\n return imgUrl\r\n}\r\n\r\nexport function getHoverChartDimensions() {\r\n switch (FinvizSettings.hoverCharts?.stock?.timeframe) {\r\n case 'i3':\r\n case 'i15':\r\n return { width: 584, height: 180 }\r\n case 'i5':\r\n return { width: 376, height: 180 }\r\n case 'd':\r\n if (FinvizSettings.hoverCharts?.stock?.patterns) return { width: 464, height: 230 }\r\n return { width: 324, height: 180 }\r\n default:\r\n return { width: 324, height: 180 }\r\n }\r\n}\r\n\r\nexport function getReferrerPolicy(): HTMLAttributeReferrerPolicy {\r\n return 'no-referrer-when-downgrade'\r\n}\r\n\r\nexport function getHoverChartImg(\r\n ticker: string,\r\n escaped: boolean = false,\r\n timeframe = FinvizSettings.hoverCharts?.stock?.timeframe,\r\n dateRange?: string\r\n) {\r\n const chartSize = getHoverChartDimensions()\r\n const referrerPolicy = getReferrerPolicy()\r\n const url = getHoverChartUrl(ticker, escaped, timeframe, dateRange)\r\n const srcSet = getSrcSet(url)\r\n const srcsetString = srcSet?.length ? ` srcset='${srcSet}'` : ''\r\n\r\n return {\r\n img: ``,\r\n ...chartSize,\r\n }\r\n}\r\n\r\nexport function getSrcSet(url: string) {\r\n // You must keep a space after , for refresh to work\r\n return `${url} 1x, ${url}&sf=2 2x`\r\n}\r\n","export function getScaleRatio() {\r\n return window.devicePixelRatio ?? 1\r\n}\r\n\r\nexport function retinafy(\r\n canvas: HTMLCanvasElement | undefined | null,\r\n context: CanvasRenderingContext2D | undefined,\r\n width: number,\r\n height: number\r\n) {\r\n if (!canvas || !context) return\r\n\r\n const ratio = getScaleRatio()\r\n\r\n canvas.width = width * ratio\r\n canvas.height = height * ratio\r\n canvas.style.width = width + 'px'\r\n canvas.style.height = height + 'px'\r\n context.scale(ratio, ratio)\r\n\r\n return ratio\r\n}\r\n","import * as React from 'react'\r\n\r\nexport interface DelayedProps {\r\n /**\r\n * The delay in milliseconds before the component is rendered.\r\n *\r\n * @default 300\r\n */\r\n delay?: number\r\n\r\n /**\r\n * Delay in milliseconds before rendering timeout state.\r\n */\r\n timeout?: number\r\n\r\n /**\r\n * Throw on timeout (suspense)\r\n */\r\n throwOnTimeout?: boolean\r\n\r\n /**\r\n * Component visible during the delay.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n delayComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when timeout is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n timeoutComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when delay is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n children?: React.ReactNode\r\n}\r\n\r\nexport function Delayed({\r\n delay = 300,\r\n timeout = 0,\r\n throwOnTimeout = false,\r\n delayComponent,\r\n timeoutComponent,\r\n children,\r\n}: DelayedProps) {\r\n const [visible, setVisible] = React.useState(false)\r\n const [hasTimedOut, setHasTimedOut] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n const visibilityTimeout = window.setTimeout(() => setVisible(true), delay)\r\n\r\n let failedTimeout: number\r\n if (timeout > 0) {\r\n failedTimeout = window.setTimeout(() => {\r\n setHasTimedOut(true)\r\n if (throwOnTimeout) throw new Error()\r\n }, timeout)\r\n }\r\n\r\n return () => {\r\n clearTimeout(visibilityTimeout)\r\n clearTimeout(failedTimeout)\r\n }\r\n }, [delay, timeout, throwOnTimeout])\r\n\r\n if (!visible) return <>{delayComponent}\r\n\r\n if (hasTimedOut) {\r\n return <>{timeoutComponent}\r\n }\r\n\r\n return <>{children}\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nexport type SVGProps = React.SVGProps\r\n\r\nexport function SVG({ className, width = 16, height = width, ...props }: SVGProps) {\r\n return (\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nexport type NotificationContextType = ReturnType\r\n\r\nexport enum NotificationPosition {\r\n TopLeft,\r\n TopRight,\r\n BottomLeft,\r\n BottomRight,\r\n}\r\n\r\nexport interface NotificationOptions {\r\n position?: NotificationPosition\r\n inline?: boolean\r\n}\r\n\r\nexport const NotificationContext = React.createContext<{\r\n show: (element: JSX.Element, options?: NotificationOptions) => void\r\n hide: () => void\r\n}>({\r\n show: () => {},\r\n hide: () => {},\r\n})\r\n\r\nexport function useNotification() {\r\n return React.useContext(NotificationContext)\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { getVisualViewport, useVisualViewport } from '../../hooks/useVisualViewport'\r\nimport { NotificationContext, NotificationOptions, NotificationPosition } from './hooks'\r\n\r\ninterface NotificationState {\r\n element: JSX.Element\r\n options: Partial\r\n}\r\n\r\nexport function NotificationWrapper(props: React.PropsWithChildren) {\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n const [notification, setNotification] = React.useState(null)\r\n const { viewport, setViewport } = useVisualViewport({ enabled: !!notification })\r\n\r\n const context = React.useRef({\r\n show: (element: JSX.Element, options: Partial = {}) => {\r\n setViewport(() => getVisualViewport(window.visualViewport))\r\n setNotification({ element, options })\r\n setIsOpen(true)\r\n },\r\n hide: () => setIsOpen(false),\r\n })\r\n\r\n const positionClass = React.useMemo(() => {\r\n const { position = NotificationPosition.BottomLeft } = notification?.options ?? {}\r\n return {\r\n '[--inset-t:1rem] items-start pt-inset-top': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.TopRight,\r\n ].includes(position),\r\n '[--inset-r:1rem] justify-end landscape-secondary:pr-inset-right': [\r\n NotificationPosition.TopRight,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-b:1rem] items-end pb-inset-bottom': [\r\n NotificationPosition.BottomLeft,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-l:1rem] justify-start landscape-primary:pl-inset-left': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.BottomLeft,\r\n ].includes(position),\r\n }\r\n }, [notification?.options])\r\n\r\n const WrapperComponent = React.useMemo(\r\n () => (notification?.options.inline ? React.Fragment : Ariakit.Portal),\r\n [notification?.options.inline]\r\n )\r\n\r\n return (\r\n \r\n {props.children}\r\n {isOpen && (\r\n \r\n \r\n {notification?.element}\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { NotificationContextType, useNotification } from './hooks'\r\n\r\nexport function withNotificationContext(\r\n WrappedComponent: React.ComponentType\r\n) {\r\n const displayName = WrappedComponent.displayName ?? WrappedComponent.name ?? 'Component'\r\n const WithNotificationContext = (props: Omit) => {\r\n const notification = useNotification()\r\n return \r\n }\r\n\r\n WithNotificationContext.displayName = `withNotificationContext(${displayName})`\r\n\r\n return WithNotificationContext\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button } from '../button'\r\nimport { useNotification } from './hooks'\r\n\r\ninterface NotificationProps {\r\n className?: string\r\n /**\r\n * Default button text\r\n * @default Close\r\n */\r\n closeText?: string\r\n\r\n /**\r\n * Custom buttons. Overrides `closeText`\r\n */\r\n actions?: JSX.Element\r\n\r\n /**\r\n * When set, the notification will automatically close\r\n */\r\n timeoutInMs?: number\r\n}\r\n\r\nexport function Notification({\r\n className,\r\n closeText = 'Close',\r\n actions,\r\n timeoutInMs,\r\n children,\r\n}: React.PropsWithChildren) {\r\n const notification = useNotification()\r\n\r\n React.useEffect(() => {\r\n let timeoutId: number\r\n if (timeoutInMs) {\r\n timeoutId = window.setTimeout(() => {\r\n notification.hide()\r\n }, timeoutInMs)\r\n }\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId)\r\n }\r\n }\r\n }, [notification, timeoutInMs])\r\n\r\n return (\r\n \r\n
{children}
\r\n
\r\n {actions ?? (\r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nmodule.exports.Dispatcher = require('./lib/Dispatcher')\n","/*\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Dispatcher\n * @typechecks\n */\n\n\"use strict\";\n\nvar invariant = require('./invariant');\n\nvar _lastID = 1;\nvar _prefix = 'ID_';\n\n/**\n * Dispatcher is used to broadcast payloads to registered callbacks. This is\n * different from generic pub-sub systems in two ways:\n *\n * 1) Callbacks are not subscribed to particular events. Every payload is\n * dispatched to every registered callback.\n * 2) Callbacks can be deferred in whole or part until other callbacks have\n * been executed.\n *\n * For example, consider this hypothetical flight destination form, which\n * selects a default city when a country is selected:\n *\n * var flightDispatcher = new Dispatcher();\n *\n * // Keeps track of which country is selected\n * var CountryStore = {country: null};\n *\n * // Keeps track of which city is selected\n * var CityStore = {city: null};\n *\n * // Keeps track of the base flight price of the selected city\n * var FlightPriceStore = {price: null}\n *\n * When a user changes the selected city, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'city-update',\n * selectedCity: 'paris'\n * });\n *\n * This payload is digested by `CityStore`:\n *\n * flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'city-update') {\n * CityStore.city = payload.selectedCity;\n * }\n * });\n *\n * When the user selects a country, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'country-update',\n * selectedCountry: 'australia'\n * });\n *\n * This payload is digested by both stores:\n *\n * CountryStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * CountryStore.country = payload.selectedCountry;\n * }\n * });\n *\n * When the callback to update `CountryStore` is registered, we save a reference\n * to the returned token. Using this token with `waitFor()`, we can guarantee\n * that `CountryStore` is updated before the callback that updates `CityStore`\n * needs to query its data.\n *\n * CityStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * // `CountryStore.country` may not be updated.\n * flightDispatcher.waitFor([CountryStore.dispatchToken]);\n * // `CountryStore.country` is now guaranteed to be updated.\n *\n * // Select the default city for the new country\n * CityStore.city = getDefaultCityForCountry(CountryStore.country);\n * }\n * });\n *\n * The usage of `waitFor()` can be chained, for example:\n *\n * FlightPriceStore.dispatchToken =\n * flightDispatcher.register(function(payload) {\n * switch (payload.actionType) {\n * case 'country-update':\n * flightDispatcher.waitFor([CityStore.dispatchToken]);\n * FlightPriceStore.price =\n * getFlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n *\n * case 'city-update':\n * FlightPriceStore.price =\n * FlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n * }\n * });\n *\n * The `country-update` payload will be guaranteed to invoke the stores'\n * registered callbacks in order: `CountryStore`, `CityStore`, then\n * `FlightPriceStore`.\n */\n\n function Dispatcher() {\n this.$Dispatcher_callbacks = {};\n this.$Dispatcher_isPending = {};\n this.$Dispatcher_isHandled = {};\n this.$Dispatcher_isDispatching = false;\n this.$Dispatcher_pendingPayload = null;\n }\n\n /**\n * Registers a callback to be invoked with every dispatched payload. Returns\n * a token that can be used with `waitFor()`.\n *\n * @param {function} callback\n * @return {string}\n */\n Dispatcher.prototype.register=function(callback) {\n var id = _prefix + _lastID++;\n this.$Dispatcher_callbacks[id] = callback;\n return id;\n };\n\n /**\n * Removes a callback based on its token.\n *\n * @param {string} id\n */\n Dispatcher.prototype.unregister=function(id) {\n invariant(\n this.$Dispatcher_callbacks[id],\n 'Dispatcher.unregister(...): `%s` does not map to a registered callback.',\n id\n );\n delete this.$Dispatcher_callbacks[id];\n };\n\n /**\n * Waits for the callbacks specified to be invoked before continuing execution\n * of the current callback. This method should only be used by a callback in\n * response to a dispatched payload.\n *\n * @param {array} ids\n */\n Dispatcher.prototype.waitFor=function(ids) {\n invariant(\n this.$Dispatcher_isDispatching,\n 'Dispatcher.waitFor(...): Must be invoked while dispatching.'\n );\n for (var ii = 0; ii < ids.length; ii++) {\n var id = ids[ii];\n if (this.$Dispatcher_isPending[id]) {\n invariant(\n this.$Dispatcher_isHandled[id],\n 'Dispatcher.waitFor(...): Circular dependency detected while ' +\n 'waiting for `%s`.',\n id\n );\n continue;\n }\n invariant(\n this.$Dispatcher_callbacks[id],\n 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.',\n id\n );\n this.$Dispatcher_invokeCallback(id);\n }\n };\n\n /**\n * Dispatches a payload to all registered callbacks.\n *\n * @param {object} payload\n */\n Dispatcher.prototype.dispatch=function(payload) {\n invariant(\n !this.$Dispatcher_isDispatching,\n 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.'\n );\n this.$Dispatcher_startDispatching(payload);\n try {\n for (var id in this.$Dispatcher_callbacks) {\n if (this.$Dispatcher_isPending[id]) {\n continue;\n }\n this.$Dispatcher_invokeCallback(id);\n }\n } finally {\n this.$Dispatcher_stopDispatching();\n }\n };\n\n /**\n * Is this Dispatcher currently dispatching.\n *\n * @return {boolean}\n */\n Dispatcher.prototype.isDispatching=function() {\n return this.$Dispatcher_isDispatching;\n };\n\n /**\n * Call the callback stored with the given id. Also do some internal\n * bookkeeping.\n *\n * @param {string} id\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_invokeCallback=function(id) {\n this.$Dispatcher_isPending[id] = true;\n this.$Dispatcher_callbacks[id](this.$Dispatcher_pendingPayload);\n this.$Dispatcher_isHandled[id] = true;\n };\n\n /**\n * Set up bookkeeping needed when dispatching.\n *\n * @param {object} payload\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_startDispatching=function(payload) {\n for (var id in this.$Dispatcher_callbacks) {\n this.$Dispatcher_isPending[id] = false;\n this.$Dispatcher_isHandled[id] = false;\n }\n this.$Dispatcher_pendingPayload = payload;\n this.$Dispatcher_isDispatching = true;\n };\n\n /**\n * Clear bookkeeping used for dispatching.\n *\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_stopDispatching=function() {\n this.$Dispatcher_pendingPayload = null;\n this.$Dispatcher_isDispatching = false;\n };\n\n\nmodule.exports = Dispatcher;\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\"use strict\";\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (false) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n 'Invariant Violation: ' +\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\"use strict\";\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n var ret = {};\n var key;\n if (!(obj instanceof Object && !Array.isArray(obj))) {\n throw new Error('keyMirror(...): Argument must be an object.');\n }\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n ret[key] = key;\n }\n return ret;\n};\n\nmodule.exports = keyMirror;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * React Router DOM v6.16.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { UNSAFE_mapRouteProperties, Router, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, UNSAFE_DataRouterStateContext, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, unstable_useBlocker, UNSAFE_DataRouterContext } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, RouterProvider, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, resolvePath, unstable_useBlocker, useActionData, useAsyncError, useAsyncValue, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && (\n // Ignore everything but left clicks\n !target || target === \"_self\") &&\n // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0);\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for `
`/`` \" + (\"and will default to \\\"\" + defaultEncType + \"\\\"\")) : void 0;\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\"Cannot submit a