{"version":3,"file":"quote.0b529398.js","mappings":"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kC,OAAQgkC,EAAiBhkC,OAAO2N,QAAQ7D,UAAW3F,UAAW6/B,EAAiB7/B,WACpG+/B,EAAc,CAAElkC,OAAQgkC,EAAiBhkC,OAAO2N,MAAM,EAAG,IAAI7D,UAAW3F,UAAW6/B,EAAiB7/B,WACpGggC,EAAgB,CAAEnkC,OAAQgkC,EAAiBhkC,OAAO2N,MAAM,IAAKxJ,UAAW6/B,EAAiB7/B,WA49DzFigC,EAA0B,CAC9BpkC,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,WAEFmE,UAAW,QAg/BAkgC,EAAiD,CAC5D,CAAC//B,EAAAA,GAAQggC,iBAAkBN,EAC3B,CAAC1/B,EAAAA,GAAQC,SAAUy/B,EACnBO,GAAIP,EACJQ,IAAKR,EACLS,IAAKT,EACLU,IAAKV,EACLW,IAAKX,EACLY,QA97HmB,CACnB5kC,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,WAEFmE,UAAW,WAo9FX0gC,IAAKZ,EACLa,KAAMb,EACNc,KAAMd,EACNe,IAAKf,EACLgB,IAAKhB,EACLiB,KAAMf,EACNgB,OAAQnB,EACRoB,OAAQlB,EACRmB,KAAMrB,EACNsB,UA39FuB,CACvBtlC,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,WAEFmE,UAAW,WAi/DXohC,cAAevB,EACfwB,cAAexB,GAGJ9/B,EAAuD,CAClE,CAACI,EAAAA,GAAQggC,iBAAkBF,EAC3B,CAAC9/B,EAAAA,GAAQC,SAAU6/B,EACnBG,GAAIH,EACJI,IAAKJ,EACLK,IAAKL,EACLM,IAAKN,EACLO,IAAKP,EACLQ,QA7gC0B,CAC1B5kC,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,WAEFmE,UAAW,QAmCX0gC,IAAKT,EACLU,KAAMV,EACNW,KAAMX,EACNY,IAAKZ,EACLa,IAAKb,EACLc,KAAMd,EACNe,OAAQf,EACRgB,OAAQhB,EACRiB,KAAMjB,EACNkB,UAAWlB,EACXmB,cAAenB,EACfoB,cAAepB,GAGJqB,EAziIiB,CAC5BzlC,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFmE,UAAW,gECzBN,IAAKizB,EAAU,SAAVA,GAAU,OAAVA,EAAU,cAAVA,EAAU,eAAVA,CAAU,MAKVsO,EAAW,SAAXA,GAAW,OAAXA,EAAW,UAAXA,EAAW,cAAXA,CAAW,MAKXC,EAAc,SAAdA,GAAc,OAAdA,EAAc,QAAdA,EAAc,QAAdA,EAAc,UAAdA,CAAc,mHCGnB,SAAS5S,EAAU/oB,GAA6C,IAA5C,SAAEpE,EAAQ,MAAE9F,EAAK,KAAEuB,EAAI,SAAE+tB,GAAiBplB,EACnE,OACEa,EAAAA,EAAAA,MAAA,OAAKlF,UAAU,yCAAwCC,SAAA,CACpD9F,IACC4F,EAAAA,EAAAA,KAACkgC,EAAAA,GAAS,CAACvkC,KAAK,QAAQsE,UAAU,gCAA+BC,SAC9D9F,IAIJgc,EAAAA,SAAe/X,IAAI6B,GAAW0L,IAC6B,IAAAu0B,EAA1D,OAAI/pB,EAAAA,eAAqBxK,IAAUA,EAAM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","sources":["webpack://@finviz/website/./js/app/backtest/utils.tsx","webpack://@finviz/website/./js/app/bubbles/selects.ts","webpack://@finviz/website/./js/app/bubbles/utils.ts","webpack://@finviz/website/./js/app/quote/etf-holdings/async-modules.ts","webpack://@finviz/website/./js/app/quote/etf-holdings/index.tsx","webpack://@finviz/website/./js/app/quote/barChart.tsx","webpack://@finviz/website/./js/app/quote/fundamentalCharts.tsx","webpack://@finviz/website/../node_modules/recharts/es6/component/ResponsiveContainer.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/CartesianGrid.js","webpack://@finviz/website/./js/app/quote/insider-trading-volume-chart/constants.ts","webpack://@finviz/website/./js/app/quote/insider-trading-volume-chart/ChartTooltip.tsx","webpack://@finviz/website/./js/app/quote/insider-trading-volume-chart/InsiderVolumeBar.tsx","webpack://@finviz/website/./js/app/quote/insider-trading-volume-chart/InsiderTradingVolumeChart.tsx","webpack://@finviz/website/./js/app/quote/insider-trading-volume-chart/utils.ts","webpack://@finviz/website/./js/app/quote/quote.tsx","webpack://@finviz/website/./js/main/components/QuotePrice.tsx","webpack://@finviz/website/./js/app/quote/quote-header/constants.ts","webpack://@finviz/website/./js/app/quote/quote-header/hooks.ts","webpack://@finviz/website/./js/app/quote/quote-header/QuoteHeader.tsx","webpack://@finviz/website/../node_modules/date-fns/esm/isBefore/index.js","webpack://@finviz/website/./js/app/quote/use-chart-timeframe-path-watch.ts","webpack://@finviz/website/./js/app/quote/quote-links/ComparePerfLink.tsx","webpack://@finviz/website/./js/app/quote/quote-links/FinancialsLink.tsx","webpack://@finviz/website/./js/app/quote/quote-links/OptionsChainLink.tsx","webpack://@finviz/website/./js/app/quote/quote-links/ShortInterestLink.tsx","webpack://@finviz/website/./js/app/quote/quote-links/StockDetailLink.tsx","webpack://@finviz/website/./js/app/quote/chart-type-select/utils.ts","webpack://@finviz/website/./js/app/quote/chart-type-select/chart-type-select.tsx","webpack://@finviz/website/./js/app/quote/chart-type-select/use-chart-type.tsx","webpack://@finviz/website/./js/app/quote/quote-menu/quote-menu.tsx","webpack://@finviz/website/./js/app/quote/statements-constants.ts","webpack://@finviz/website/./js/app/quote/statements.tsx","webpack://@finviz/website/./js/app/quote/use-stock-detail-updater.tsx","webpack://@finviz/website/./js/app/quote/index.tsx","webpack://@finviz/website/./js/app/quote/quote-links/SaveToPortfolioLink.tsx","webpack://@finviz/website/./js/app/quote/quote-links/CreateAlertLink.tsx","webpack://@finviz/website/./js/app/quote/use-chart-layout-width-watch.ts","webpack://@finviz/website/./js/main/hooks/use-window-size.tsx","webpack://@finviz/website/./js/app/shared/chartLayoutConfig.ts","webpack://@finviz/website/./js/app/shared/components/Ads.tsx","webpack://@finviz/website/./js/app/shared/getInitChartConfig.ts","webpack://@finviz/website/./js/app/shared/gradients.ts","webpack://@finviz/website/./js/app/stats/types.ts","webpack://@finviz/website/./js/main/components/ChipSwitch.tsx","webpack://@finviz/website/./js/main/components/delayed.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTableContext.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTableRow.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTable.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsWidget.tsx","webpack://@finviz/website/./js/main/components/financials-table/utils.ts","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/./js/main/hooks/use-check-non-idea-chart-missing-config.ts","webpack://@finviz/website/./js/main/hooks/useVisualViewport.ts","webpack://@finviz/website/./js/main/modules/charts/util.ts","webpack://@finviz/website/../node_modules/react-router-dom/dist/index.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/Area.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/ZAxis.js","webpack://@finviz/website/../node_modules/recharts/es6/util/ScatterUtils.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/Scatter.js","webpack://@finviz/website/../node_modules/recharts/es6/chart/ComposedChart.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/5KB2YIDT.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/JJ3MV4KB.js"],"sourcesContent":["export function round(n: number, places: number = 2) {\r\n return (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n}\r\n\r\nexport const format = {\r\n totalReturn: (totalReturn: number | string) => round(Number(totalReturn) * 100) + '%',\r\n maxDrawdown: (maxDrawdown: number | string) => round(Number(maxDrawdown) * 100) + '%',\r\n sharpeRatio: (sharpeRatio: number) => round(sharpeRatio),\r\n calmarRatio: (calmarRatio: number) => round(calmarRatio),\r\n CAGR: (CAGR: number) => round(CAGR * 100) + '%',\r\n cagr: (CAGR: number) => round(CAGR * 100) + '%',\r\n volatility: (volatility: number) => round(volatility * 100) + '%',\r\n numberOfTrades: (numberOfTrades: any) => numberOfTrades,\r\n positiveDays: (positiveDays: any) => positiveDays,\r\n negativeDays: (negativeDays: any) => negativeDays,\r\n bestMonth: (bestMonth: number) => round(bestMonth * 100) + '%',\r\n worstMonth: (worstMonth: number) => round(worstMonth * 100) + '%',\r\n}\r\n\r\nexport const figureSpace = ' '\r\n\r\nexport const BACKTEST_MIN_MAX_DATES = Object.freeze({\r\n min: new Date(1996, 5, 3),\r\n max: new Date(2023, 0, 31),\r\n})\r\n","import { SelectItem } from '../../main/components'\r\n\r\nexport type BubbleSelectOption = SelectItem & { format?: string }\r\n\r\nexport const ETF_MARKET_CAP_LABEL = 'Assets under management'\r\nexport const MARKET_CAP_VALUE = 'marketCap'\r\nexport const ETF_SECTOR_VALUE = 'financial'\r\nexport const ETF_INDUSTRY_IDS = [\r\n 'exchangetradedfund',\r\n 'closedendfunddebt',\r\n 'closedendfundequity',\r\n 'closedendfundforeign',\r\n]\r\n\r\nvar xys = [\r\n { value: 'sector', label: 'Sector' },\r\n { value: 'ticker', label: 'Ticker' },\r\n { value: 'order', label: 'Order' },\r\n { value: MARKET_CAP_VALUE, label: 'Market Capitalization' },\r\n { value: 'dividendYield', label: 'Dividend Yield', format: '%' },\r\n { value: 'payoutRatio', label: 'Payout Ratio', format: '%' },\r\n { value: 'employees', label: 'Employees' },\r\n { value: 'income', label: 'Income' },\r\n { value: 'sales', label: 'Sales' },\r\n { value: 'epsQoQ', label: 'EPS growth Q/Q', format: '%' },\r\n { value: 'epsYoY', label: 'EPS growth this Y/Y', format: '%' },\r\n { value: 'epsYoY1', label: 'EPS growth next Y/Y', format: '%' },\r\n { value: 'eps5Years', label: 'EPS growth past 5 years', format: '%' },\r\n { value: 'estLTGrowth', label: 'EPS growth long term est.', format: '%' },\r\n { value: 'salesQoQ', label: 'Sales growth Q/Q', format: '%' },\r\n { value: 'sales5Years', label: 'Sales growth past 5 years', format: '%' },\r\n { value: 'PE', label: 'P/E' },\r\n { value: 'forwardPE', label: 'Forward P/E' },\r\n { value: 'PEG', label: 'PEG' },\r\n { value: 'PS', label: 'P/S' },\r\n { value: 'PB', label: 'P/B' },\r\n { value: 'PC', label: 'P/C' },\r\n { value: 'PFCF', label: 'P/FCF' },\r\n { value: 'roi', label: 'ROI' },\r\n { value: 'roe', label: 'ROE' },\r\n { value: 'roa', label: 'ROA' },\r\n { value: 'grossMargin', label: 'Gross Margin', format: '%' },\r\n { value: 'operMargin', label: 'Operating Margin', format: '%' },\r\n { value: 'netMargin', label: 'Profit Margin', format: '%' },\r\n { value: 'curRatio', label: 'Current Ratio' },\r\n { value: 'quickRatio', label: 'Quick Ratio' },\r\n { value: 'ltdebtEq', label: 'Long Term Debt to Equity' },\r\n { value: 'debtEq', label: 'Total Debt to Equity' },\r\n { value: 'lastChange', label: 'Change', format: '%' },\r\n { value: 'changeOpen', label: 'Change from Open', format: '%' },\r\n { value: 'gap', label: 'Gap', format: '%' },\r\n { value: 'lastVolume', label: 'Volume' },\r\n { value: 'lastVolumeUsd', label: 'Volume USD' },\r\n { value: 'averageVolume', label: 'Average Volume' },\r\n { value: 'averageVolumeUsd', label: 'Average Volume USD' },\r\n { value: 'relativeVolume', label: 'Relative Volume' },\r\n { value: 'perf1w', label: '1 Week Performance', format: '%' },\r\n { value: 'perf4w', label: '1 Month Performance', format: '%' },\r\n { value: 'perf13w', label: '3 Month Performance', format: '%' },\r\n { value: 'perf26w', label: '6 Month Performance', format: '%' },\r\n { value: 'perf52w', label: '1 Year Performance', format: '%' },\r\n { value: 'perfYtd', label: 'Year To Date Performance', format: '%' },\r\n { value: 'volatility1w', label: 'Weekly Volatility', format: '%' },\r\n { value: 'volatility4w', label: 'Monthly Volatlity', format: '%' },\r\n { value: 'beta', label: 'Beta' },\r\n { value: 'low52w', label: '52-Week Low', format: '%' },\r\n { value: 'high52w', label: '52-Week High', format: '%' },\r\n { value: 'sma20', label: 'Simple Moving Average 20', format: '%' },\r\n { value: 'sma50', label: 'Simple Moving Average 50', format: '%' },\r\n { value: 'sma200', label: 'Simple Moving Average 200', format: '%' },\r\n { value: 'rsi', label: 'Relative Strength Index 14' },\r\n { value: 'insiderOwn', label: 'Insider Ownership', format: '%' },\r\n { value: 'insiderTrans', label: 'Insider Transactions', format: '%' },\r\n { value: 'instOwn', label: 'Institutional Ownership', format: '%' },\r\n { value: 'instTrans', label: 'Institutional Transactions', format: '%' },\r\n { value: 'shortInterestShare', label: 'Short Interest Share', format: '%' },\r\n { value: 'shortInterestRatio', label: 'Short Interest Ratio' },\r\n { value: 'consRecom', label: 'Analyst Recommendation' },\r\n { value: 'targetPrice', label: 'Target Price', format: '%' },\r\n]\r\n\r\nvar sizes = [\r\n { value: 'const', label: 'Constant' },\r\n { value: 'marketCap', label: 'Market Capitalization' },\r\n { value: 'lastVolume', label: 'Volume' },\r\n { value: 'lastVolumeUsd', label: 'Volume USD' },\r\n { value: 'averageVolume', label: 'Average Volume' },\r\n { value: 'averageVolumeUsd', label: 'Average Volume USD' },\r\n { value: 'relativeVolume', label: 'Relative Volume' },\r\n]\r\n\r\nvar colors = [\r\n { value: 'const', label: 'Constant' },\r\n { value: 'sector', label: 'Sector' },\r\n { value: 'industry', label: 'Industry' },\r\n { value: 'country', label: 'Country' },\r\n { value: 'marketCap', label: 'Market Capitalization' },\r\n { value: 'lastChange', label: 'Change', format: '%' },\r\n { value: 'perf1w', label: '1 Week Performance', format: '%' },\r\n { value: 'perf4w', label: '1 Month Performance', format: '%' },\r\n { value: 'perf13w', label: '3 Month Performance', format: '%' },\r\n { value: 'perf26w', label: '6 Month Performance', format: '%' },\r\n { value: 'perf52w', label: '1 Year Performance', format: '%' },\r\n { value: 'perfYtd', label: 'Year To Date Performance', format: '%' },\r\n { value: 'lastVolume', label: 'Volume' },\r\n { value: 'lastVolumeUsd', label: 'Volume USD' },\r\n { value: 'averageVolume', label: 'Average Volume' },\r\n { value: 'averageVolumeUsd', label: 'Average Volume USD' },\r\n { value: 'relativeVolume', label: 'Relative Volume' },\r\n { value: 'consRecom', label: 'Analyst Recommendation' },\r\n]\r\n\r\nvar indexes = [\r\n { value: 'any', label: 'Any' },\r\n { value: 'sp500', label: 'S&P 500' },\r\n { value: 'ndx', label: 'NASDAQ 100' },\r\n { value: 'dji', label: 'DJIA' },\r\n { value: 'rut', label: 'RUSSELL 2000' },\r\n]\r\n\r\nvar sectors = [\r\n { value: '', label: 'Any' },\r\n { value: 'basicmaterials', label: 'Basic Materials' },\r\n { value: 'communicationservices', label: 'Communication Services' },\r\n { value: 'consumercyclical', label: 'Consumer Cyclical' },\r\n { value: 'consumerdefensive', label: 'Consumer Defensive' },\r\n { value: 'energy', label: 'Energy' },\r\n { value: ETF_SECTOR_VALUE, label: 'Financial' },\r\n { value: 'healthcare', label: 'Healthcare' },\r\n { value: 'industrials', label: 'Industrials' },\r\n { value: 'realestate', label: 'Real Estate' },\r\n { value: 'technology', label: 'Technology' },\r\n { value: 'utilities', label: 'Utilities' },\r\n]\r\n\r\nvar industries = [\r\n { value: '', label: 'Any' },\r\n { value: 'stocksonly', label: 'Stocks only (ex-Funds)' },\r\n { value: 'exchangetradedfund', label: 'Exchange Traded Fund' },\r\n { value: 'advertisingagencies', label: 'Advertising Agencies' },\r\n { value: 'aerospacedefense', label: 'Aerospace & Defense' },\r\n { value: 'agriculturalinputs', label: 'Agricultural Inputs' },\r\n { value: 'airlines', label: 'Airlines' },\r\n { value: 'airportsairservices', label: 'Airports & Air Services' },\r\n { value: 'aluminum', label: 'Aluminum' },\r\n { value: 'apparelmanufacturing', label: 'Apparel Manufacturing' },\r\n { value: 'apparelretail', label: 'Apparel Retail' },\r\n { value: 'assetmanagement', label: 'Asset Management' },\r\n { value: 'automanufacturers', label: 'Auto Manufacturers' },\r\n { value: 'autoparts', label: 'Auto Parts' },\r\n { value: 'autotruckdealerships', label: 'Auto & Truck Dealerships' },\r\n { value: 'banksdiversified', label: 'Banks - Diversified' },\r\n { value: 'banksregional', label: 'Banks - Regional' },\r\n { value: 'beveragesbrewers', label: 'Beverages - Brewers' },\r\n { value: 'beveragesnonalcoholic', label: 'Beverages - Non-Alcoholic' },\r\n { value: 'beverageswineriesdistilleries', label: 'Beverages - Wineries & Distilleries' },\r\n { value: 'biotechnology', label: 'Biotechnology' },\r\n { value: 'broadcasting', label: 'Broadcasting' },\r\n { value: 'buildingmaterials', label: 'Building Materials' },\r\n { value: 'buildingproductsequipment', label: 'Building Products & Equipment' },\r\n { value: 'businessequipmentsupplies', label: 'Business Equipment & Supplies' },\r\n { value: 'capitalmarkets', label: 'Capital Markets' },\r\n { value: 'chemicals', label: 'Chemicals' },\r\n { value: 'closedendfunddebt', label: 'Closed-End Fund - Debt' },\r\n { value: 'closedendfundequity', label: 'Closed-End Fund - Equity' },\r\n { value: 'closedendfundforeign', label: 'Closed-End Fund - Foreign' },\r\n { value: 'cokingcoal', label: 'Coking Coal' },\r\n { value: 'communicationequipment', label: 'Communication Equipment' },\r\n { value: 'computerhardware', label: 'Computer Hardware' },\r\n { value: 'confectioners', label: 'Confectioners' },\r\n { value: 'conglomerates', label: 'Conglomerates' },\r\n { value: 'consultingservices', label: 'Consulting Services' },\r\n { value: 'consumerelectronics', label: 'Consumer Electronics' },\r\n { value: 'copper', label: 'Copper' },\r\n { value: 'creditservices', label: 'Credit Services' },\r\n { value: 'departmentstores', label: 'Department Stores' },\r\n { value: 'diagnosticsresearch', label: 'Diagnostics & Research' },\r\n { value: 'discountstores', label: 'Discount Stores' },\r\n { value: 'drugmanufacturersgeneral', label: 'Drug Manufacturers - General' },\r\n { value: 'drugmanufacturersspecialtygeneric', label: 'Drug Manufacturers - Specialty & Generic' },\r\n { value: 'educationtrainingservices', label: 'Education & Training Services' },\r\n { value: 'electricalequipmentparts', label: 'Electrical Equipment & Parts' },\r\n { value: 'electroniccomponents', label: 'Electronic Components' },\r\n { value: 'electronicgamingmultimedia', label: 'Electronic Gaming & Multimedia' },\r\n { value: 'electronicscomputerdistribution', label: 'Electronics & Computer Distribution' },\r\n { value: 'engineeringconstruction', label: 'Engineering & Construction' },\r\n { value: 'entertainment', label: 'Entertainment' },\r\n { value: 'farmheavyconstructionmachinery', label: 'Farm & Heavy Construction Machinery' },\r\n { value: 'farmproducts', label: 'Farm Products' },\r\n { value: 'financialconglomerates', label: 'Financial Conglomerates' },\r\n { value: 'financialdatastockexchanges', label: 'Financial Data & Stock Exchanges' },\r\n { value: 'fooddistribution', label: 'Food Distribution' },\r\n { value: 'footwearaccessories', label: 'Footwear & Accessories' },\r\n { value: 'furnishingsfixturesappliances', label: 'Furnishings, Fixtures & Appliances' },\r\n { value: 'gambling', label: 'Gambling' },\r\n { value: 'gold', label: 'Gold' },\r\n { value: 'grocerystores', label: 'Grocery Stores' },\r\n { value: 'healthcareplans', label: 'Healthcare Plans' },\r\n { value: 'healthinformationservices', label: 'Health Information Services' },\r\n { value: 'homeimprovementretail', label: 'Home Improvement Retail' },\r\n { value: 'householdpersonalproducts', label: 'Household & Personal Products' },\r\n { value: 'industrialdistribution', label: 'Industrial Distribution' },\r\n { value: 'informationtechnologyservices', label: 'Information Technology Services' },\r\n { value: 'infrastructureoperations', label: 'Infrastructure Operations' },\r\n { value: 'insurancebrokers', label: 'Insurance Brokers' },\r\n { value: 'insurancediversified', label: 'Insurance - Diversified' },\r\n { value: 'insurancelife', label: 'Insurance - Life' },\r\n { value: 'insurancepropertycasualty', label: 'Insurance - Property & Casualty' },\r\n { value: 'insurancereinsurance', label: 'Insurance - Reinsurance' },\r\n { value: 'insurancespecialty', label: 'Insurance - Specialty' },\r\n { value: 'integratedfreightlogistics', label: 'Integrated Freight & Logistics' },\r\n { value: 'internetcontentinformation', label: 'Internet Content & Information' },\r\n { value: 'internetretail', label: 'Internet Retail' },\r\n { value: 'leisure', label: 'Leisure' },\r\n { value: 'lodging', label: 'Lodging' },\r\n { value: 'lumberwoodproduction', label: 'Lumber & Wood Production' },\r\n { value: 'luxurygoods', label: 'Luxury Goods' },\r\n { value: 'marineshipping', label: 'Marine Shipping' },\r\n { value: 'medicalcarefacilities', label: 'Medical Care Facilities' },\r\n { value: 'medicaldevices', label: 'Medical Devices' },\r\n { value: 'medicaldistribution', label: 'Medical Distribution' },\r\n { value: 'medicalinstrumentssupplies', label: 'Medical Instruments & Supplies' },\r\n { value: 'metalfabrication', label: 'Metal Fabrication' },\r\n { value: 'mortgagefinance', label: 'Mortgage Finance' },\r\n { value: 'oilgasdrilling', label: 'Oil & Gas Drilling' },\r\n { value: 'oilgasep', label: 'Oil & Gas E&P' },\r\n { value: 'oilgasequipmentservices', label: 'Oil & Gas Equipment & Services' },\r\n { value: 'oilgasintegrated', label: 'Oil & Gas Integrated' },\r\n { value: 'oilgasmidstream', label: 'Oil & Gas Midstream' },\r\n { value: 'oilgasrefiningmarketing', label: 'Oil & Gas Refining & Marketing' },\r\n { value: 'otherindustrialmetalsmining', label: 'Other Industrial Metals & Mining' },\r\n { value: 'otherpreciousmetalsmining', label: 'Other Precious Metals & Mining' },\r\n { value: 'packagedfoods', label: 'Packaged Foods' },\r\n { value: 'packagingcontainers', label: 'Packaging & Containers' },\r\n { value: 'paperpaperproducts', label: 'Paper & Paper Products' },\r\n { value: 'personalservices', label: 'Personal Services' },\r\n { value: 'pharmaceuticalretailers', label: 'Pharmaceutical Retailers' },\r\n { value: 'pollutiontreatmentcontrols', label: 'Pollution & Treatment Controls' },\r\n { value: 'publishing', label: 'Publishing' },\r\n { value: 'railroads', label: 'Railroads' },\r\n { value: 'realestatedevelopment', label: 'Real Estate - Development' },\r\n { value: 'realestatediversified', label: 'Real Estate - Diversified' },\r\n { value: 'realestateservices', label: 'Real Estate Services' },\r\n { value: 'recreationalvehicles', label: 'Recreational Vehicles' },\r\n { value: 'reitdiversified', label: 'REIT - Diversified' },\r\n { value: 'reithealthcarefacilities', label: 'REIT - Healthcare Facilities' },\r\n { value: 'reithotelmotel', label: 'REIT - Hotel & Motel' },\r\n { value: 'reitindustrial', label: 'REIT - Industrial' },\r\n { value: 'reitmortgage', label: 'REIT - Mortgage' },\r\n { value: 'reitoffice', label: 'REIT - Office' },\r\n { value: 'reitresidential', label: 'REIT - Residential' },\r\n { value: 'reitretail', label: 'REIT - Retail' },\r\n { value: 'reitspecialty', label: 'REIT - Specialty' },\r\n { value: 'rentalleasingservices', label: 'Rental & Leasing Services' },\r\n { value: 'residentialconstruction', label: 'Residential Construction' },\r\n { value: 'resortscasinos', label: 'Resorts & Casinos' },\r\n { value: 'restaurants', label: 'Restaurants' },\r\n { value: 'scientifictechnicalinstruments', label: 'Scientific & Technical Instruments' },\r\n { value: 'securityprotectionservices', label: 'Security & Protection Services' },\r\n { value: 'semiconductorequipmentmaterials', label: 'Semiconductor Equipment & Materials' },\r\n { value: 'semiconductors', label: 'Semiconductors' },\r\n { value: 'shellcompanies', label: 'Shell Companies' },\r\n { value: 'silver', label: 'Silver' },\r\n { value: 'softwareapplication', label: 'Software - Application' },\r\n { value: 'softwareinfrastructure', label: 'Software - Infrastructure' },\r\n { value: 'solar', label: 'Solar' },\r\n { value: 'specialtybusinessservices', label: 'Specialty Business Services' },\r\n { value: 'specialtychemicals', label: 'Specialty Chemicals' },\r\n { value: 'specialtyindustrialmachinery', label: 'Specialty Industrial Machinery' },\r\n { value: 'specialtyretail', label: 'Specialty Retail' },\r\n { value: 'staffingemploymentservices', label: 'Staffing & Employment Services' },\r\n { value: 'steel', label: 'Steel' },\r\n { value: 'telecomservices', label: 'Telecom Services' },\r\n { value: 'textilemanufacturing', label: 'Textile Manufacturing' },\r\n { value: 'thermalcoal', label: 'Thermal Coal' },\r\n { value: 'tobacco', label: 'Tobacco' },\r\n { value: 'toolsaccessories', label: 'Tools & Accessories' },\r\n { value: 'travelservices', label: 'Travel Services' },\r\n { value: 'trucking', label: 'Trucking' },\r\n { value: 'uranium', label: 'Uranium' },\r\n { value: 'utilitiesdiversified', label: 'Utilities - Diversified' },\r\n { value: 'utilitiesindependentpowerproducers', label: 'Utilities - Independent Power Producers' },\r\n { value: 'utilitiesregulatedelectric', label: 'Utilities - Regulated Electric' },\r\n { value: 'utilitiesregulatedgas', label: 'Utilities - Regulated Gas' },\r\n { value: 'utilitiesregulatedwater', label: 'Utilities - Regulated Water' },\r\n { value: 'utilitiesrenewable', label: 'Utilities - Renewable' },\r\n { value: 'wastemanagement', label: 'Waste Management' },\r\n]\r\n\r\nvar marketCaps = [\r\n { value: '', label: 'Any' },\r\n { value: 'mega', label: 'Mega ($200bln and more)' },\r\n { value: 'large', label: 'Large ($10bln to $200bln)' },\r\n { value: 'mid', label: 'Mid ($2bln to $10bln)' },\r\n { value: 'small', label: 'Small ($300mln to $2bln)' },\r\n { value: 'micro', label: 'Micro ($50mln to $300mln)' },\r\n { value: 'nano', label: 'Nano (under $50mln)' },\r\n { value: 'largeover', label: '+Large (over $10bln)' },\r\n { value: 'midover', label: '+Mid (over $2bln)' },\r\n { value: 'smallover', label: '+Small (over $300mln)' },\r\n { value: 'microover', label: '+Micro (over $50mln)' },\r\n { value: 'largeunder', label: '-Large (under $200bln)' },\r\n { value: 'midunder', label: '-Mid (under $10bln)' },\r\n { value: 'smallunder', label: '-Small (under $2bln)' },\r\n { value: 'microunder', label: '-Micro (under $300mln)' },\r\n]\r\n\r\nvar averageVolumes = [\r\n { value: '', label: 'Any' },\r\n { value: 'u50', label: 'Under 50K' },\r\n { value: 'u100', label: 'Under 100K' },\r\n { value: 'u500', label: 'Under 500K' },\r\n { value: 'u750', label: 'Under 750K' },\r\n { value: 'u1000', label: 'Under 1M' },\r\n { value: 'o50', label: 'Over 50K' },\r\n { value: 'o100', label: 'Over 100K' },\r\n { value: 'o200', label: 'Over 200K' },\r\n { value: 'o300', label: 'Over 300K' },\r\n { value: 'o400', label: 'Over 400K' },\r\n { value: 'o500', label: 'Over 500K' },\r\n { value: 'o750', label: 'Over 750K' },\r\n { value: 'o1000', label: 'Over 1M' },\r\n { value: 'o2000', label: 'Over 2M' },\r\n { value: '100to500', label: '100K to 500K' },\r\n { value: '100to1000', label: '100K to 1M' },\r\n { value: '500to1000', label: '500K to 1M' },\r\n { value: '500to10000', label: '500K to 10M' },\r\n]\r\n\r\nexport { xys, sizes, colors, indexes, sectors, industries, marketCaps, averageVolumes }\r\n","import * as d3 from 'd3'\r\n\r\nimport { ScaleId } from '../maps/types'\r\nimport { decodeQueryString as decode, encodeQueryString } from '../queryString'\r\nimport { GradientDefinition, bubbleGradients } from '../shared/gradients'\r\nimport {\r\n BubbleSelectOption,\r\n averageVolumes,\r\n colors,\r\n indexes,\r\n industries,\r\n marketCaps,\r\n sectors,\r\n sizes,\r\n xys,\r\n} from './selects'\r\nimport { BubbleNode } from './types'\r\n\r\nconst DEFAULT_COLOR_SCALE = [\r\n '#ff4146',\r\n '#ea580c',\r\n '#ff9300',\r\n '#84cc16',\r\n '#34aa00',\r\n '#00d16d',\r\n '#14b8a6',\r\n '#18a3e0',\r\n '#5963d1',\r\n '#4f46e5',\r\n '#9425c2',\r\n '#c026d3',\r\n '#ff80ff',\r\n '#ff5888',\r\n '#ffe100',\r\n]\r\n\r\nfunction getValueWithFallback(values: BubbleSelectOption[], value: string | undefined, fallback: string) {\r\n const v = values.find((v) => v.value === value)\r\n\r\n return v?.value ?? fallback\r\n}\r\n\r\nfunction getDefaultValues(query: Record = {}, extendedFilters: boolean = false) {\r\n let state: Record = {\r\n x: getValueWithFallback(xys, query.x, 'sector'),\r\n y: getValueWithFallback(xys, query.y, 'lastChange'),\r\n size: getValueWithFallback(sizes, query.size, 'marketCap'),\r\n color: getValueWithFallback(colors, query.color, 'sector'),\r\n idx: getValueWithFallback(indexes, query.idx, 'sp500'),\r\n rangeX: query.rangeX ?? '',\r\n rangeY: query.rangeY ?? '',\r\n }\r\n\r\n if (extendedFilters) {\r\n state = {\r\n ...state,\r\n sec: getValueWithFallback(sectors, query.sec, ''),\r\n ind: getValueWithFallback(industries, query.ind, ''),\r\n cap: getValueWithFallback(marketCaps, query.cap, ''),\r\n sh_avgvol: getValueWithFallback(averageVolumes, query.sh_avgvol, ''),\r\n tickers: query.tickers ?? '',\r\n excludeTickers: query.excludeTickers ?? '',\r\n }\r\n }\r\n\r\n return state\r\n}\r\n\r\nfunction decodeQueryString(extendedFilters?: boolean) {\r\n return getDefaultValues(decode(), extendedFilters)\r\n}\r\n\r\nvar percentile = function (arr: number[], excelPercentile: number) {\r\n var sequence = arr.concat().sort(function (a, b) {\r\n return a - b\r\n })\r\n var N = sequence.length\r\n var n = (N - 1) * excelPercentile + 1\r\n\r\n if (n === 1) {\r\n return sequence[0]\r\n } else if (n === N) {\r\n return sequence[N - 1]\r\n } else {\r\n var k = ~~n\r\n var d = n - k\r\n return sequence[k - 1] + d * (sequence[k] - sequence[k - 1])\r\n }\r\n}\r\n\r\nvar getXScale = function (data: BubbleNode[], width: number) {\r\n var x = d3\r\n .scaleLinear()\r\n .range([0, width])\r\n .domain(d3.extent(data, (d: BubbleNode) => d.x) as [number, number])\r\n .nice(10)\r\n if (data.length === 1) {\r\n x.domain([x.domain()[0] * 0.9, x.domain()[0] * 1.1]).nice(10)\r\n }\r\n return x\r\n}\r\n\r\nvar getYScale = function (data: BubbleNode[], height: number) {\r\n var y = d3\r\n .scaleLinear()\r\n .range([height, 0])\r\n .domain(d3.extent(data, (d: BubbleNode) => d.y) as [number, number])\r\n .nice(10)\r\n if (data.length === 1) {\r\n y.domain([y.domain()[0] * 0.9, y.domain()[0] * 1.1]).nice(10)\r\n }\r\n return y\r\n}\r\n\r\nvar _colorScales: Record = {}\r\nfunction getColorScale(data: BubbleNode[], colorOption: string, colorScale = DEFAULT_COLOR_SCALE) {\r\n if (_colorScales[colorOption]) {\r\n return _colorScales[colorOption]\r\n }\r\n\r\n let c: any\r\n let colors: number[]\r\n let min: number\r\n let max: number\r\n let gradient: GradientDefinition\r\n let linearScale: d3.ScaleLinear\r\n switch (colorOption) {\r\n case 'exchange':\r\n case 'sector':\r\n case 'industry':\r\n case 'country':\r\n c = d3.scaleOrdinal().range(colorScale)\r\n break\r\n case 'marketCap':\r\n case 'averageVolume':\r\n case 'relativeVolume':\r\n case 'lastVolume':\r\n case 'averageVolumeUsd':\r\n case 'lastVolumeUsd':\r\n colors = data.map((d) => Number(d.color)).filter(Number.isFinite)\r\n min = percentile(colors, 0.05)\r\n max = percentile(colors, 0.95)\r\n gradient = bubbleGradients['_relvol']\r\n linearScale = d3\r\n .scaleLinear()\r\n .domain([min, max])\r\n .range([0, gradient.colors.length - 1])\r\n c = (d?: number) => {\r\n if (typeof d === 'undefined' || d === null) {\r\n return gradient.nullColor\r\n }\r\n if (d > max) d = max\r\n if (d < min) d = min\r\n var i = Math.round(linearScale(d))\r\n return gradient.colors[i]\r\n }\r\n c.domain = () => [min, max]\r\n break\r\n case 'lastChange':\r\n case 'perf1w':\r\n case 'perf4w':\r\n case 'perf13w':\r\n case 'perf26w':\r\n case 'perf52w':\r\n case 'perfYtd':\r\n colors = data.map((d) => Number(d.color)).filter(Number.isFinite)\r\n\r\n min = percentile(colors, 0.05)\r\n max = percentile(colors, 0.95)\r\n max = Math.max(Math.abs(min), Math.abs(max))\r\n min = -max\r\n\r\n gradient = bubbleGradients[ScaleId.DayPerf]\r\n linearScale = d3\r\n .scaleLinear()\r\n .domain([min, max])\r\n .range([0, gradient.colors.length - 1])\r\n c = (d?: number) => {\r\n if (typeof d === 'undefined' || d === null) {\r\n return gradient.nullColor\r\n }\r\n if (d > max) d = max\r\n if (d < min) d = min\r\n var i = Math.round(linearScale(d))\r\n return gradient.colors[i]\r\n }\r\n c.domain = () => [min, max]\r\n break\r\n case 'consRecom':\r\n min = 5\r\n max = 1\r\n gradient = bubbleGradients[ScaleId.DayPerf]\r\n linearScale = d3\r\n .scaleLinear()\r\n .domain([min, max])\r\n .range([0, gradient.colors.length - 1])\r\n c = (d?: number) => {\r\n if (typeof d === 'undefined' || d === null) {\r\n return gradient.nullColor\r\n }\r\n if (d < max) d = max\r\n if (d > min) d = min\r\n var i = Math.round(linearScale(d))\r\n return gradient.colors[i]\r\n }\r\n c.domain = () => [min, max]\r\n break\r\n case 'const':\r\n default:\r\n c = function () {\r\n return '#18a3e0'\r\n }\r\n c.domain = () => ['Constant']\r\n break\r\n }\r\n\r\n if (data.length > 0) {\r\n _colorScales[colorOption] = c\r\n }\r\n return c\r\n}\r\n\r\nvar getSizeScale = function (data: BubbleNode[]) {\r\n var r = d3\r\n .scaleSqrt()\r\n .range([0, 40])\r\n .domain(d3.extent(data, (d: BubbleNode) => d.size) as [number, number])\r\n .nice(10)\r\n\r\n if (r.domain()[0] === 1 && r.domain()[1] === 1) {\r\n r.domain([0, 50])\r\n }\r\n return r\r\n}\r\n\r\nvar getScales = function (\r\n data: BubbleNode[],\r\n width: number,\r\n height: number,\r\n colorOption: string,\r\n colorScale?: string[]\r\n) {\r\n return {\r\n x: getXScale(data, width),\r\n y: getYScale(data, height),\r\n r: getSizeScale(data),\r\n c: getColorScale(data, colorOption, colorScale),\r\n }\r\n}\r\n\r\nfunction generatePresetUrl(presetConfig: Record, baseQuery?: URLSearchParams) {\r\n const query = encodeQueryString({ ...Object.fromEntries(baseQuery ?? []), ...presetConfig })\r\n\r\n return `${window.location.pathname}?${query}`\r\n}\r\n\r\nfunction formatValue(value: number | string, format?: string, finiteFormatting?: boolean) {\r\n if (finiteFormatting && !Number.isFinite(value)) {\r\n return '—'\r\n }\r\n\r\n if (typeof value === 'number') {\r\n const absValue = Math.abs(value)\r\n\r\n if (absValue < 1000) {\r\n value = value.toFixed(2)\r\n } else if (absValue < 1000 * 1000) {\r\n value = (value / 1000).toFixed(2) + 'K'\r\n } else if (absValue < 1000 * 1000 * 1000) {\r\n value = (value / 1000000).toFixed(2) + 'M'\r\n } else {\r\n value = (value / 1000000000).toFixed(2) + 'B'\r\n }\r\n }\r\n\r\n if (format === '%') {\r\n value += '%'\r\n }\r\n\r\n return value\r\n}\r\n\r\nexport {\r\n getDefaultValues,\r\n encodeQueryString,\r\n decodeQueryString,\r\n percentile,\r\n getXScale,\r\n getYScale,\r\n getColorScale,\r\n getSizeScale,\r\n getScales,\r\n generatePresetUrl,\r\n formatValue,\r\n}\r\n","export const etfHoldingsAsyncModule = {\r\n importFn: () => import(/* webpackChunkName: \"etf-holdings-widget\" */ './module-entry'),\r\n cacheKey: 'etf-holdings-widget',\r\n}\r\n","import { withNotificationContext } from '../../../main/components/notification'\r\nimport { Spinner } from '../../../main/components/spinner'\r\nimport { useAsyncModule } from '../../../main/services/async-modules-utils'\r\nimport { etfHoldingsAsyncModule } from './async-modules'\r\n\r\nfunction LoadingFallback() {\r\n const widgetClass =\r\n 'ml-3 mt-3 flex max-h-85 min-h-85 min-w-152 max-w-175 shrink grow basis-0 rounded-md border border-primary justify-center items-center'\r\n return (\r\n
\r\n {Array.from(Array(2)).map((_, index) => (\r\n
\r\n \r\n
\r\n ))}\r\n
\r\n )\r\n}\r\n\r\nfunction ETFHoldings() {\r\n const [etfHoldingsModule] = useAsyncModule({\r\n ...etfHoldingsAsyncModule,\r\n shouldLoadModule: true,\r\n errorSeverity: 'high',\r\n })\r\n const ETFHoldingsComponent = etfHoldingsModule?.ETFHoldings\r\n return ETFHoldingsComponent ? : \r\n}\r\n\r\nexport default withNotificationContext(ETFHoldings)\r\n","import * as d3 from 'd3'\r\nimport { Component, RefObject, createRef } from 'react'\r\n\r\nexport interface Bar {\r\n name: string\r\n value: number\r\n}\r\n\r\ninterface BarChartProps {\r\n title?: string\r\n data: Bar[]\r\n width?: number\r\n height?: number\r\n valueFormatter?: (value: number) => string\r\n xAxisRotate?: boolean\r\n marginRight?: number\r\n className?: string\r\n}\r\n\r\nexport default class BarChart extends Component {\r\n svgRef: RefObject = createRef()\r\n\r\n // @ts-ignore\r\n _prevData: Bar[]\r\n\r\n componentDidMount() {\r\n this.renderChart()\r\n }\r\n\r\n componentDidUpdate() {\r\n this.renderChart()\r\n }\r\n\r\n renderChart() {\r\n const { data, title } = this.props\r\n if (data === this._prevData) {\r\n return\r\n }\r\n this._prevData = data\r\n this.svgRef.current!.innerHTML = ''\r\n\r\n const xAxisRotate = this.props.xAxisRotate === true\r\n\r\n var margin = { top: title ? 20 : 10, right: this.props.marginRight || 60, bottom: xAxisRotate ? 70 : 20, left: 15 }\r\n const totalWidth = this.props.width || 440\r\n const totalHeight = this.props.height || 330\r\n var width = totalWidth - margin.left - margin.right\r\n var height = totalHeight - margin.top - margin.bottom\r\n\r\n const x = d3\r\n .scaleBand()\r\n .domain(data.map((d) => d.name))\r\n .rangeRound([0, width])\r\n .padding(0.1)\r\n\r\n let min = d3.min(data, (d: Bar) => d.value)!\r\n if (min < 0) {\r\n min = d3.min(data, (d: Bar) => Math.min(d.value, -d.value))!\r\n } else {\r\n min = 0\r\n }\r\n\r\n const y = d3\r\n .scaleLinear()\r\n .range([height, 0])\r\n .domain([min, d3.max(data, (d: Bar) => Math.abs(d.value))!])\r\n .nice()\r\n const yFormat = this.props.valueFormatter ? this.props.valueFormatter : y.tickFormat()\r\n\r\n const svg = d3\r\n .select(this.svgRef.current)\r\n .property('value', [])\r\n .append('g')\r\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\r\n\r\n var xAxis = d3.axisBottom(x)\r\n var yAxis = d3.axisRight(y).ticks(height > 200 ? 10 : 5)\r\n\r\n const makeYLines = () => d3.axisLeft(y)\r\n // @ts-ignore - tickFormat arg can be any string\r\n svg.append('g').attr('class', 'grid').call(makeYLines().tickSize(-width).tickSizeOuter(0).tickFormat(''))\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'x-axis axis')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .call(xAxis)\r\n\r\n svg\r\n .selectAll('.x-axis text')\r\n .style('text-anchor', xAxisRotate ? 'end' : 'middle')\r\n .attr('dx', xAxisRotate ? '-.8em' : 0)\r\n .attr('dy', xAxisRotate ? '.15em' : '0.8em')\r\n .attr('transform', 'rotate(' + (xAxisRotate ? -65 : 0) + ')')\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'y-axis axis')\r\n .attr('transform', 'translate(' + width + ', 0)')\r\n .call(yAxis)\r\n\r\n if (title) {\r\n svg\r\n .append('text')\r\n .attr('class', 'bar-chart-title')\r\n .attr('x', 4)\r\n .attr('y', -5)\r\n .attr('text-anchor', 'start')\r\n .text(title)\r\n }\r\n\r\n const getHeight = (d: Bar) => {\r\n let height = Math.abs(y(d.value ?? 0) - y(0))\r\n if (d.value > 0 || d.value < 0) {\r\n height = Math.max(height, 0.5)\r\n }\r\n return height\r\n }\r\n const isOutside = (height: number) => height < 14\r\n let bars = svg.selectAll('.bar').data(data)\r\n bars\r\n .enter()\r\n .append('rect')\r\n .attr('class', function (d: Bar) {\r\n return 'bar bar--' + (d.value < 0 ? 'negative' : 'positive')\r\n })\r\n .attr('x', (d: Bar) => x(d.name)!)\r\n .attr('y', (d: Bar) => y(Math.max(0, d.value)))\r\n .attr('height', getHeight)\r\n .attr('width', x.bandwidth())\r\n .attr('ry', FinvizSettings?.hasRedesignEnabled ? 2 : 0)\r\n\r\n svg\r\n .selectAll('.bar-label')\r\n .data(data)\r\n .enter()\r\n .append('text')\r\n .attr('class', 'divergence')\r\n .attr('x', (d: Bar) => x(d.name)! + x.bandwidth() / 2)\r\n .attr('y', (d: Bar) => {\r\n const height = getHeight(d)\r\n const outside = isOutside(height)\r\n if (d.value < 0) {\r\n return y(Math.max(0, d.value)) + height + (outside ? 12 : -4)\r\n }\r\n return y(Math.max(0, d.value)) + (outside ? -4 : 12)\r\n })\r\n .attr('fill', (d: Bar) => (!FinvizSettings.hasDarkTheme && isOutside(getHeight(d)) ? 'black' : 'white'))\r\n .attr('text-anchor', 'middle')\r\n .attr('font-size', '10px')\r\n .text((d: Bar) => (d.value !== null ? yFormat(d.value) : ''))\r\n\r\n this.svgRef.current!.style.width = totalWidth + 'px'\r\n this.svgRef.current!.style.height = totalHeight + 'px'\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n","import { round } from '../backtest/utils'\r\nimport BarChart, { Bar } from './barChart'\r\n\r\nfunction convertData(endYear: number, values: any[]) {\r\n return values\r\n .map((value, index) => ({\r\n name: endYear - index,\r\n value,\r\n }))\r\n .reverse() as unknown as Bar[]\r\n}\r\n\r\ninterface FAChartProps {\r\n id: string\r\n largeRoundPlaces: number\r\n largeScale: number\r\n largeTitleSufix: string\r\n smallRoundPlaces: number\r\n smallScale: number\r\n smallTitleSufix: string\r\n title: string\r\n}\r\n\r\nfunction FAChart({\r\n id,\r\n title,\r\n smallRoundPlaces,\r\n largeRoundPlaces,\r\n smallScale,\r\n largeScale,\r\n smallTitleSufix,\r\n largeTitleSufix,\r\n}: FAChartProps) {\r\n const data: number[] = FinvizFA[id]\r\n\r\n const min = Math.min(...data)\r\n const max = Math.max(...data)\r\n const range = max > -min ? max : -min\r\n\r\n const isLarge = Math.abs(range) >= 1000\r\n\r\n const scale = isLarge ? largeScale : smallScale\r\n const values = data.map((value) =>\r\n value == null ? null : round(scale * value, isLarge ? largeRoundPlaces : smallRoundPlaces)\r\n )\r\n\r\n return (\r\n round(value, isLarge ? largeRoundPlaces : smallRoundPlaces)}\r\n width={280}\r\n height={150}\r\n marginRight={37}\r\n className=\"is-fa\"\r\n />\r\n )\r\n}\r\n\r\nexport default function FundamentalCharts() {\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 \r\n )\r\n}\r\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */\nimport clsx from 'clsx';\nimport React, { forwardRef, cloneElement, useState, useImperativeHandle, useRef, useEffect, useMemo, useCallback } from 'react';\nimport throttle from 'lodash/throttle';\nimport { isElement } from 'react-is';\nimport { isPercent } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { getDisplayName } from '../util/ReactUtils';\nexport var ResponsiveContainer = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var aspect = _ref.aspect,\n _ref$initialDimension = _ref.initialDimension,\n initialDimension = _ref$initialDimension === void 0 ? {\n width: -1,\n height: -1\n } : _ref$initialDimension,\n _ref$width = _ref.width,\n width = _ref$width === void 0 ? '100%' : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === void 0 ? '100%' : _ref$height,\n _ref$minWidth = _ref.minWidth,\n minWidth = _ref$minWidth === void 0 ? 0 : _ref$minWidth,\n minHeight = _ref.minHeight,\n maxHeight = _ref.maxHeight,\n children = _ref.children,\n _ref$debounce = _ref.debounce,\n debounce = _ref$debounce === void 0 ? 0 : _ref$debounce,\n id = _ref.id,\n className = _ref.className,\n onResize = _ref.onResize,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style;\n var containerRef = useRef(null);\n var onResizeRef = useRef();\n onResizeRef.current = onResize;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n useImperativeHandle(ref, function () {\n return containerRef;\n });\n var _useState = useState({\n containerWidth: initialDimension.width,\n containerHeight: initialDimension.height\n }),\n _useState2 = _slicedToArray(_useState, 2),\n sizes = _useState2[0],\n setSizes = _useState2[1];\n var setContainerSize = useCallback(function (newWidth, newHeight) {\n setSizes(function (prevState) {\n var roundedWidth = Math.round(newWidth);\n var roundedHeight = Math.round(newHeight);\n if (prevState.containerWidth === roundedWidth && prevState.containerHeight === roundedHeight) {\n return prevState;\n }\n return {\n containerWidth: roundedWidth,\n containerHeight: roundedHeight\n };\n });\n }, []);\n useEffect(function () {\n var callback = function callback(entries) {\n var _onResizeRef$current;\n var _entries$0$contentRec = entries[0].contentRect,\n containerWidth = _entries$0$contentRec.width,\n containerHeight = _entries$0$contentRec.height;\n setContainerSize(containerWidth, containerHeight);\n (_onResizeRef$current = onResizeRef.current) === null || _onResizeRef$current === void 0 || _onResizeRef$current.call(onResizeRef, containerWidth, containerHeight);\n };\n if (debounce > 0) {\n callback = throttle(callback, debounce, {\n trailing: true,\n leading: false\n });\n }\n var observer = new ResizeObserver(callback);\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n containerWidth = _containerRef$current.width,\n containerHeight = _containerRef$current.height;\n setContainerSize(containerWidth, containerHeight);\n observer.observe(containerRef.current);\n return function () {\n observer.disconnect();\n };\n }, [setContainerSize, debounce]);\n var chartContent = useMemo(function () {\n var containerWidth = sizes.containerWidth,\n containerHeight = sizes.containerHeight;\n if (containerWidth < 0 || containerHeight < 0) {\n return null;\n }\n warn(isPercent(width) || isPercent(height), \"The width(%s) and height(%s) are both fixed numbers,\\n maybe you don't need to use a ResponsiveContainer.\", width, height);\n warn(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n var calculatedWidth = isPercent(width) ? containerWidth : width;\n var calculatedHeight = isPercent(height) ? containerHeight : height;\n if (aspect && aspect > 0) {\n // Preserve the desired aspect ratio\n if (calculatedWidth) {\n // Will default to using width for aspect ratio\n calculatedHeight = calculatedWidth / aspect;\n } else if (calculatedHeight) {\n // But we should also take height into consideration\n calculatedWidth = calculatedHeight * aspect;\n }\n\n // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n if (maxHeight && calculatedHeight > maxHeight) {\n calculatedHeight = maxHeight;\n }\n }\n warn(calculatedWidth > 0 || calculatedHeight > 0, \"The width(%s) and height(%s) of chart should be greater than 0,\\n please check the style of container, or the props width(%s) and height(%s),\\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\\n height and width.\", calculatedWidth, calculatedHeight, width, height, minWidth, minHeight, aspect);\n var isCharts = !Array.isArray(children) && isElement(children) && getDisplayName(children.type).endsWith('Chart');\n return React.Children.map(children, function (child) {\n if (isElement(child)) {\n return /*#__PURE__*/cloneElement(child, _objectSpread({\n width: calculatedWidth,\n height: calculatedHeight\n }, isCharts ? {\n style: _objectSpread({\n height: '100%',\n width: '100%',\n maxHeight: calculatedHeight,\n maxWidth: calculatedWidth\n }, child.props.style)\n } : {}));\n }\n return child;\n });\n }, [aspect, children, height, maxHeight, minHeight, minWidth, sizes, width]);\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id ? \"\".concat(id) : undefined,\n className: clsx('recharts-responsive-container', className),\n style: _objectSpread(_objectSpread({}, style), {}, {\n width: width,\n height: height,\n minWidth: minWidth,\n minHeight: minHeight,\n maxHeight: maxHeight\n }),\n ref: containerRef\n }, chartContent);\n});","var _excluded = [\"x1\", \"y1\", \"x2\", \"y2\", \"key\"],\n _excluded2 = [\"offset\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * @fileOverview Cartesian Grid\n */\nimport React, { PureComponent } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\nexport var CartesianGrid = /*#__PURE__*/function (_PureComponent) {\n _inherits(CartesianGrid, _PureComponent);\n var _super = _createSuper(CartesianGrid);\n function CartesianGrid() {\n _classCallCheck(this, CartesianGrid);\n return _super.apply(this, arguments);\n }\n _createClass(CartesianGrid, [{\n key: \"renderHorizontal\",\n value:\n /**\n * Draw the horizontal grid lines\n * @param {Array} horizontalPoints either passed in as props or generated from function\n * @return {Group} Horizontal lines\n */\n function renderHorizontal(horizontalPoints) {\n var _this = this;\n var _this$props = this.props,\n x = _this$props.x,\n width = _this$props.width,\n horizontal = _this$props.horizontal;\n if (!horizontalPoints || !horizontalPoints.length) {\n return null;\n }\n var items = horizontalPoints.map(function (entry, i) {\n var props = _objectSpread(_objectSpread({}, _this.props), {}, {\n x1: x,\n y1: entry,\n x2: x + width,\n y2: entry,\n key: \"line-\".concat(i),\n index: i\n });\n return CartesianGrid.renderLineItem(horizontal, props);\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-grid-horizontal\"\n }, items);\n }\n\n /**\n * Draw vertical grid lines\n * @param {Array} verticalPoints either passed in as props or generated from function\n * @return {Group} Vertical lines\n */\n }, {\n key: \"renderVertical\",\n value: function renderVertical(verticalPoints) {\n var _this2 = this;\n var _this$props2 = this.props,\n y = _this$props2.y,\n height = _this$props2.height,\n vertical = _this$props2.vertical;\n if (!verticalPoints || !verticalPoints.length) {\n return null;\n }\n var items = verticalPoints.map(function (entry, i) {\n var props = _objectSpread(_objectSpread({}, _this2.props), {}, {\n x1: entry,\n y1: y,\n x2: entry,\n y2: y + height,\n key: \"line-\".concat(i),\n index: i\n });\n return CartesianGrid.renderLineItem(vertical, props);\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-grid-vertical\"\n }, items);\n }\n\n /**\n * Draw vertical grid stripes filled by colors\n * @param {Array} verticalPoints either passed in as props or generated from function\n * @return {Group} Vertical stripes\n */\n }, {\n key: \"renderVerticalStripes\",\n value: function renderVerticalStripes(verticalPoints) {\n var verticalFill = this.props.verticalFill;\n if (!verticalFill || !verticalFill.length) {\n return null;\n }\n var _this$props3 = this.props,\n fillOpacity = _this$props3.fillOpacity,\n x = _this$props3.x,\n y = _this$props3.y,\n width = _this$props3.width,\n height = _this$props3.height;\n var roundedSortedVerticalPoints = verticalPoints.map(function (e) {\n return Math.round(e + x - x);\n }).sort(function (a, b) {\n return a - b;\n });\n if (x !== roundedSortedVerticalPoints[0]) {\n roundedSortedVerticalPoints.unshift(0);\n }\n var items = roundedSortedVerticalPoints.map(function (entry, i) {\n var lastStripe = !roundedSortedVerticalPoints[i + 1];\n var lineWidth = lastStripe ? x + width - entry : roundedSortedVerticalPoints[i + 1] - entry;\n if (lineWidth <= 0) {\n return null;\n }\n var colorIndex = i % verticalFill.length;\n return /*#__PURE__*/React.createElement(\"rect\", {\n key: \"react-\".concat(i) // eslint-disable-line react/no-array-index-key\n ,\n x: entry,\n y: y,\n width: lineWidth,\n height: height,\n stroke: \"none\",\n fill: verticalFill[colorIndex],\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-gridstripes-vertical\"\n }, items);\n }\n\n /**\n * Draw horizontal grid stripes filled by colors\n * @param {Array} horizontalPoints either passed in as props or generated from function\n * @return {Group} Horizontal stripes\n */\n }, {\n key: \"renderHorizontalStripes\",\n value: function renderHorizontalStripes(horizontalPoints) {\n var horizontalFill = this.props.horizontalFill;\n if (!horizontalFill || !horizontalFill.length) {\n return null;\n }\n var _this$props4 = this.props,\n fillOpacity = _this$props4.fillOpacity,\n x = _this$props4.x,\n y = _this$props4.y,\n width = _this$props4.width,\n height = _this$props4.height;\n var roundedSortedHorizontalPoints = horizontalPoints.map(function (e) {\n return Math.round(e + y - y);\n }).sort(function (a, b) {\n return a - b;\n });\n if (y !== roundedSortedHorizontalPoints[0]) {\n roundedSortedHorizontalPoints.unshift(0);\n }\n var items = roundedSortedHorizontalPoints.map(function (entry, i) {\n var lastStripe = !roundedSortedHorizontalPoints[i + 1];\n var lineHeight = lastStripe ? y + height - entry : roundedSortedHorizontalPoints[i + 1] - entry;\n if (lineHeight <= 0) {\n return null;\n }\n var colorIndex = i % horizontalFill.length;\n return /*#__PURE__*/React.createElement(\"rect\", {\n key: \"react-\".concat(i) // eslint-disable-line react/no-array-index-key\n ,\n y: entry,\n x: x,\n height: lineHeight,\n width: width,\n stroke: \"none\",\n fill: horizontalFill[colorIndex],\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-gridstripes-horizontal\"\n }, items);\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var fill = this.props.fill;\n if (!fill || fill === 'none') {\n return null;\n }\n var _this$props5 = this.props,\n fillOpacity = _this$props5.fillOpacity,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height;\n return /*#__PURE__*/React.createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n stroke: \"none\",\n fill: fill,\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n x = _this$props6.x,\n y = _this$props6.y,\n width = _this$props6.width,\n height = _this$props6.height,\n horizontal = _this$props6.horizontal,\n vertical = _this$props6.vertical,\n horizontalCoordinatesGenerator = _this$props6.horizontalCoordinatesGenerator,\n verticalCoordinatesGenerator = _this$props6.verticalCoordinatesGenerator,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n offset = _this$props6.offset,\n chartWidth = _this$props6.chartWidth,\n chartHeight = _this$props6.chartHeight,\n syncWithTicks = _this$props6.syncWithTicks,\n horizontalValues = _this$props6.horizontalValues,\n verticalValues = _this$props6.verticalValues;\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0 || !isNumber(x) || x !== +x || !isNumber(y) || y !== +y) {\n return null;\n }\n var _this$props7 = this.props,\n horizontalPoints = _this$props7.horizontalPoints,\n verticalPoints = _this$props7.verticalPoints;\n\n // No horizontal points are specified\n if ((!horizontalPoints || !horizontalPoints.length) && isFunction(horizontalCoordinatesGenerator)) {\n var isHorizontalValues = horizontalValues && horizontalValues.length;\n horizontalPoints = horizontalCoordinatesGenerator({\n yAxis: yAxis ? _objectSpread(_objectSpread({}, yAxis), {}, {\n ticks: isHorizontalValues ? horizontalValues : yAxis.ticks\n }) : undefined,\n width: chartWidth,\n height: chartHeight,\n offset: offset\n }, isHorizontalValues ? true : syncWithTicks);\n }\n\n // No vertical points are specified\n if ((!verticalPoints || !verticalPoints.length) && isFunction(verticalCoordinatesGenerator)) {\n var isVerticalValues = verticalValues && verticalValues.length;\n verticalPoints = verticalCoordinatesGenerator({\n xAxis: xAxis ? _objectSpread(_objectSpread({}, xAxis), {}, {\n ticks: isVerticalValues ? verticalValues : xAxis.ticks\n }) : undefined,\n width: chartWidth,\n height: chartHeight,\n offset: offset\n }, isVerticalValues ? true : syncWithTicks);\n }\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-grid\"\n }, this.renderBackground(), horizontal && this.renderHorizontal(horizontalPoints), vertical && this.renderVertical(verticalPoints), horizontal && this.renderHorizontalStripes(horizontalPoints), vertical && this.renderVerticalStripes(verticalPoints));\n }\n }], [{\n key: \"renderLineItem\",\n value: function renderLineItem(option, props) {\n var lineItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n lineItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n lineItem = option(props);\n } else {\n var x1 = props.x1,\n y1 = props.y1,\n x2 = props.x2,\n y2 = props.y2,\n key = props.key,\n others = _objectWithoutProperties(props, _excluded);\n var _filterProps = filterProps(others),\n __ = _filterProps.offset,\n restOfFilteredProps = _objectWithoutProperties(_filterProps, _excluded2);\n lineItem = /*#__PURE__*/React.createElement(\"line\", _extends({}, restOfFilteredProps, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n fill: \"none\",\n key: key\n }));\n }\n return lineItem;\n }\n }]);\n return CartesianGrid;\n}(PureComponent);\n_defineProperty(CartesianGrid, \"displayName\", 'CartesianGrid');\n_defineProperty(CartesianGrid, \"defaultProps\", {\n horizontal: true,\n vertical: true,\n // The ordinates of horizontal grid lines\n horizontalPoints: [],\n // The abscissas of vertical grid lines\n verticalPoints: [],\n stroke: '#ccc',\n fill: 'none',\n // The fill of colors of grid lines\n verticalFill: [],\n horizontalFill: []\n});","import colors from '../../../../../config/colors'\r\n\r\nexport const CHART_HEIGHT = 300\r\nexport const BAR_WIDTH = 8\r\nexport const BAR_BORDER_RADIUS: [number, number, number, number] = [2, 2, 0, 0]\r\nexport const STROKE_COLOR = FinvizSettings.hasDarkTheme ? colors.gray[700] : colors.gray[100]\r\nexport const LINE_COLOR = FinvizSettings.hasDarkTheme ? colors.blue[400] : colors.blue[400]\r\nexport const SALE_BAR_COLOR = colors.red[400]\r\nexport const BUY_BAR_COLOR = colors.green[400]\r\nexport const Y_TICK_STYLE = {\r\n fontSize: 10,\r\n fontWeight: 500,\r\n fill: FinvizSettings.hasDarkTheme ? colors.gray[300] : colors.gray[500],\r\n}\r\nexport const X_TICK_STYLE = {\r\n fontSize: 10,\r\n fontWeight: 400,\r\n fill: FinvizSettings.hasDarkTheme ? colors.gray[300] : colors.gray[500],\r\n}\r\nexport const TOOLTIP_WRAPPER_STYLE = { outline: 'none', zIndex: 10 }\r\nexport const CURSOR_STYLE = {\r\n border: 0,\r\n stroke: 0,\r\n fill: FinvizSettings.hasDarkTheme ? colors.gray[700] : colors.gray[50],\r\n opacity: 0.65,\r\n}\r\nexport const TRANSPARENT_CURSOR = { opacity: 0 }\r\n\r\nexport enum BarType {\r\n Buy = 'Buy',\r\n Sale = 'Sale',\r\n}\r\n\r\nexport const BarColorMap: Record = {\r\n [BarType.Buy]: BUY_BAR_COLOR,\r\n [BarType.Sale]: SALE_BAR_COLOR,\r\n}\r\n\r\nexport const BarLabelMap: Record = {\r\n [BarType.Buy]: 'Insider Buy Volume',\r\n [BarType.Sale]: 'Insider Sells Volume',\r\n}\r\n","import classNames from 'classnames'\r\nimport { endOfMonth, startOfMonth } from 'date-fns'\r\n\r\nimport { formatValue } from '../../bubbles/utils'\r\nimport { BarColorMap, BarLabelMap, BarType } from './constants'\r\nimport { ChartData, VolumeChartDataPerTimeframe } from './types'\r\n\r\ntype ChartTooltipProps = {\r\n label?: number\r\n isActive?: boolean\r\n payload?: Array<{ payload?: ChartData }>\r\n activeKey: BarType | null\r\n}\r\n\r\nfunction formatDateTitle(date: number) {\r\n const startDate = startOfMonth(date)\r\n const endDate = endOfMonth(startDate)\r\n\r\n const month = startDate.toLocaleString('en-US', { month: 'short' })\r\n const startDay = startDate.getDate()\r\n const year = startDate.getFullYear()\r\n const endDay = endDate.getDate()\r\n return `${month} ${startDay}-${endDay}, ${year}`\r\n}\r\n\r\nfunction formatDataValue(barType: BarType, payload: Partial = {}) {\r\n const tradeCount = barType === BarType.Buy ? payload.buyTransactionCount : payload.saleTransactionCount\r\n const value = barType === BarType.Buy ? payload.buyAggregated : payload.saleAggregated\r\n return `${formatValue(value ?? 0)} (${tradeCount ?? 0} Trade${tradeCount === 1 ? '' : 's'})`\r\n}\r\n\r\nfunction BarTooltipLabel({\r\n activeKey,\r\n barType,\r\n payload,\r\n}: {\r\n activeKey: BarType | null\r\n barType: BarType\r\n payload?: VolumeChartDataPerTimeframe\r\n}) {\r\n return (\r\n \r\n {BarLabelMap[barType]}\r\n \r\n {formatDataValue(barType, payload)}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default function ChartTooltip({ isActive, activeKey, payload, label }: ChartTooltipProps) {\r\n const cursorPayload = payload?.[0]?.payload?.insider\r\n\r\n if (!isActive) return null\r\n\r\n return (\r\n \r\n {label && (\r\n
\r\n {formatDateTitle(label)}\r\n
\r\n )}\r\n \r\n \r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Rectangle } from 'recharts'\r\n\r\nimport { BAR_WIDTH, BarType } from './constants'\r\n\r\nexport function InsiderVolumeBar({ x, width, ...props }: any) {\r\n let newX = x\r\n const value = props.payload[props.dataKey]\r\n const isCenteredBar = props.payload.saleAggregated === 0 || props.payload.buyAggregated === 0\r\n if (isCenteredBar) {\r\n if (props.name === BarType.Sale) newX += width / 2\r\n else newX -= width / 2\r\n }\r\n\r\n if (value === 0 || !Number.isFinite(value)) {\r\n // Needs to return an element, so return an empty node\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n {props.name === BarType.Sale && (\r\n \r\n )}\r\n {props.name === BarType.Buy && (\r\n \r\n )}\r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport { endOfMonth, format, startOfMonth } from 'date-fns'\r\nimport { getInstrument } from 'finviz-charts/app/utils/chart'\r\nimport * as React from 'react'\r\nimport {\r\n Bar,\r\n CartesianGrid,\r\n ComposedChart,\r\n Line,\r\n Rectangle,\r\n RectangleProps,\r\n ResponsiveContainer,\r\n Tooltip,\r\n XAxis,\r\n YAxis,\r\n} from 'recharts'\r\n\r\nimport { parseRouteInitData } from '../../../main/util'\r\nimport { formatValue } from '../../bubbles/utils'\r\nimport { Quote, TIMEFRAME } from '../../charts-lib'\r\nimport { getDate } from '../../header/utils'\r\nimport { decodeQueryString } from '../../queryString'\r\nimport ChartTooltip from './ChartTooltip'\r\nimport { InsiderVolumeBar } from './InsiderVolumeBar'\r\nimport {\r\n BAR_BORDER_RADIUS,\r\n BUY_BAR_COLOR,\r\n BarType,\r\n CHART_HEIGHT,\r\n CURSOR_STYLE,\r\n LINE_COLOR,\r\n SALE_BAR_COLOR,\r\n STROKE_COLOR,\r\n TOOLTIP_WRAPPER_STYLE,\r\n TRANSPARENT_CURSOR,\r\n X_TICK_STYLE,\r\n Y_TICK_STYLE,\r\n} from './constants'\r\nimport { ChartData, TradingVolumeChartInit } from './types'\r\nimport { filterDataForChart } from './utils'\r\n\r\ninterface InsiderTradingVolumeChartProps {\r\n className?: string\r\n}\r\n\r\ninterface CustomCursorProps extends Partial> {\r\n numberOfDatapoints: number\r\n isActive: boolean\r\n points?: [{ x: number; y: number }]\r\n}\r\n\r\nfunction CustomCursor({ numberOfDatapoints, points, ...props }: CustomCursorProps) {\r\n const cursorWidth = props.width! / numberOfDatapoints\r\n const x = points![0].x - cursorWidth / 2\r\n const y = points![0].y\r\n return (\r\n \r\n )\r\n}\r\n\r\nfunction xAxisTickFormatter(value: any) {\r\n if (!Number.isFinite(value)) return ''\r\n\r\n const date = getDate(value)\r\n return date.getMonth() === 0 ? date.getFullYear().toString() : format(date, 'MMM')\r\n}\r\n\r\nexport function InsiderTradingVolumeChart({ className }: InsiderTradingVolumeChartProps) {\r\n const [isActive, setIsActive] = React.useState(false)\r\n const [chartData, setChartData] = React.useState([])\r\n const [activeKey, setActiveKey] = React.useState(null)\r\n\r\n const initData = React.useMemo(() => {\r\n const data = parseRouteInitData({ elementId: 'insider-init-data' })\r\n\r\n return {\r\n data,\r\n domain: data?.length\r\n ? [\r\n getDate(startOfMonth(getDate(data[0].date))).getTime(),\r\n getDate(endOfMonth(getDate(data[data.length - 1].date))).getTime(),\r\n ]\r\n : [],\r\n }\r\n }, [])\r\n\r\n const hasInsiderTradingHistory = React.useMemo(\r\n () => initData.data?.some((x) => x.saleTransactionCount > 0 || x.buyTransactionCount > 0),\r\n [initData]\r\n )\r\n\r\n React.useEffect(() => {\r\n const { t: ticker } = decodeQueryString()\r\n async function fetchQuoteData() {\r\n if (!initData.data?.length) return\r\n const quote = await Quote.get({ ticker, instrument: getInstrument(ticker), timeframe: TIMEFRAME.d })\r\n const dateFrom = initData.data[0].date\r\n const dateTo = initData.data[initData.data.length - 1]!.date\r\n const data = filterDataForChart(quote, dateFrom, dateTo)\r\n setChartData(data.map((row, index) => ({ ...row, insider: initData.data?.[index] })))\r\n }\r\n\r\n if (hasInsiderTradingHistory) fetchQuoteData()\r\n }, [initData, hasInsiderTradingHistory])\r\n\r\n const commonProps = React.useMemo(\r\n () => ({\r\n bar: {\r\n yAxisId: 'yAxisVolume',\r\n activeBar: false,\r\n shape: InsiderVolumeBar,\r\n radius: BAR_BORDER_RADIUS,\r\n isAnimationActive: false,\r\n onMouseLeave: () => setActiveKey(null),\r\n },\r\n xAxis: {\r\n dataKey: 'date',\r\n scale: 'time' as const,\r\n type: 'number' as const,\r\n dy: 5,\r\n tick: X_TICK_STYLE,\r\n tickLine: false,\r\n axisLine: false,\r\n domain: initData.domain,\r\n tickFormatter: xAxisTickFormatter,\r\n },\r\n yAxis: {\r\n tick: Y_TICK_STYLE,\r\n tickLine: false,\r\n axisLine: false,\r\n tickFormatter: (value: number) => formatValue(value),\r\n },\r\n }),\r\n [initData.domain]\r\n )\r\n\r\n if (!initData.data?.length || !hasInsiderTradingHistory) return null\r\n\r\n return (\r\n
\r\n
\r\n \r\n Insider Trading Volume\r\n \r\n
\r\n setIsActive(true)}\r\n onMouseLeave={() => setIsActive(false)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n content={}\r\n />\r\n \r\n setActiveKey(BarType.Sale)}\r\n />\r\n setActiveKey(BarType.Buy)}\r\n />\r\n \r\n \r\n
\r\n \r\n )\r\n}\r\n","import { endOfMonth, startOfMonth } from 'date-fns'\r\nimport { type Quote } from 'finviz-charts/server/offScreenCanvasRender'\r\n\r\nimport { getDate } from '../../header/utils'\r\nimport { ChartBaseData } from './types'\r\n\r\n/**\r\n * Only get data between from/to range\r\n */\r\nexport function filterDataForChart(quote: Quote, fromDate: number, toDate: number) {\r\n const monthlyData: ChartBaseData[] = []\r\n\r\n const fromTimestamp = getDate(startOfMonth(getDate(fromDate))).getTime()\r\n const toTimestamp = getDate(endOfMonth(getDate(toDate))).getTime()\r\n for (let index = 0; index < quote.date.length; index++) {\r\n const currentTimestamp = quote.date[index] * 1000\r\n const currentClose = quote.close[quote.barToDataIndex[index]]\r\n\r\n if (fromTimestamp > currentTimestamp || currentTimestamp > toTimestamp) continue\r\n\r\n monthlyData.push({ date: currentTimestamp, close: currentClose })\r\n }\r\n\r\n return monthlyData\r\n}\r\n","/* global FinvizQuoteTickers */\r\nimport classnames from 'classnames'\r\nimport * as dateFns from 'date-fns'\r\nimport React, { ChangeEvent, Component, FormEvent } from 'react'\r\nimport { BrowserRouter } from 'react-router-dom'\r\n\r\nimport { DatePicker } from '../../main/components/date-picker'\r\nimport { SpecificChartFunctionality } from '../../main/constants'\r\nimport {\r\n ChartElementType,\r\n ChartLayout,\r\n Instrument,\r\n Quote,\r\n QuoteFetchType,\r\n TIMEFRAME,\r\n Theme,\r\n Utils,\r\n} from '../charts-lib'\r\nimport { decodeQueryString } from '../queryString'\r\nimport { getStaticChartConfig } from '../shared/chartLayoutConfig'\r\nimport { getSanitizedTicker } from '../shared/ticker-sanitizer'\r\nimport { formatDateToStringUS } from '../shared/utils'\r\n\r\nconst redesignEnabled = !!FinvizSettings.hasRedesignEnabled\r\n\r\nvar colorScaleClass = function (value: number) {\r\n if (value < 0) {\r\n return 'color-text is-negative'\r\n } else if (value > 0) {\r\n return 'color-text is-positive'\r\n }\r\n return ''\r\n}\r\n\r\nvar monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\r\n\r\nvar arraysEqual = function (arr1: unknown[], arr2: unknown[]) {\r\n if (arr1.length !== arr2.length) {\r\n return false\r\n }\r\n for (var i = 0; i < arr1.length; i++) {\r\n if (arr1[i] !== arr2[i]) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\n\r\ninterface ChartProps {\r\n tickers: string[]\r\n fromDay: string\r\n toDay: string\r\n}\r\n\r\nclass Chart extends Component {\r\n containerRef = React.createRef()\r\n\r\n shouldComponentUpdate(nextProps: ChartProps) {\r\n return !arraysEqual(this.props.tickers, nextProps.tickers)\r\n }\r\n\r\n render() {\r\n const theme = FinvizSettings.hasDarkTheme ? Theme.dark : Theme.light\r\n const tickerQuote = Quote.select((q) => q.close.length > 0 && this.props.tickers.includes(q.ticker))\r\n const chartConfig = getStaticChartConfig({\r\n ticker: tickerQuote[0]?.ticker ?? '',\r\n timeframe: TIMEFRAME.d,\r\n paneElements: [\r\n {\r\n type: ChartElementType.PerfChart,\r\n tickers: this.props.tickers,\r\n fromDate: this.props.fromDay,\r\n toDate: this.props.toDay,\r\n overlays: [],\r\n },\r\n ],\r\n width: 1000,\r\n height: 450,\r\n refreshData: false,\r\n specificChartFunctionality: SpecificChartFunctionality.quotePerf,\r\n theme,\r\n })\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\ninterface TableProps {\r\n months: string[]\r\n rows: Array<{\r\n ticker: string\r\n months: string[]\r\n total: string\r\n }>\r\n}\r\n\r\n// mozno vyfarbovat tabulku?\r\nclass Table extends Component {\r\n render() {\r\n var { months, rows } = this.props,\r\n groupsCount = Math.ceil(months.length / 12)\r\n rows = rows.slice()\r\n const tdClasses = classnames('text-center', {\r\n 'body-table-nw font-bold': !redesignEnabled,\r\n })\r\n\r\n var trs = []\r\n for (let g = 0; g < groupsCount; g++) {\r\n trs.push(\r\n \r\n \r\n {months.splice(0, 12).map((month) => (\r\n \r\n {month}\r\n \r\n ))}\r\n {g === groupsCount - 1 && Total}\r\n \r\n )\r\n rows.forEach((row, i) => {\r\n trs.push(\r\n \r\n {row.ticker}\r\n {row.months.splice(0, 12).map((col, monthIndex) => (\r\n \r\n {col}\r\n \r\n ))}\r\n {g === groupsCount - 1 && (\r\n \r\n {row.total}\r\n \r\n )}\r\n \r\n )\r\n })\r\n }\r\n\r\n return (\r\n \r\n {trs}\r\n \r\n )\r\n }\r\n}\r\n\r\ninterface PerfState {\r\n tickersInput: string\r\n tickers: string[]\r\n months: Array<{\r\n value: string\r\n label: string\r\n }>\r\n fromMonth: {\r\n value: string\r\n label: string\r\n }\r\n toMonth: {\r\n value: string\r\n label: string\r\n }\r\n minDate: string\r\n maxDate: string\r\n fromDay: string\r\n toDay: string\r\n loading: boolean\r\n}\r\n\r\nexport class Perf extends Component {\r\n constructor(props: any) {\r\n super(props)\r\n var now = new Date(),\r\n months = []\r\n const startYear = new Date().getFullYear() - 36 // We have 37.25 years of data in DB, so leaving some offset\r\n for (var year = startYear; year <= now.getFullYear(); year++) {\r\n for (var month = 1; month <= 12; month++) {\r\n if (year === now.getFullYear() && month > now.getMonth() + 1) {\r\n break\r\n }\r\n months.push({\r\n value: month.toString().padStart(2, '0') + '/01/' + year,\r\n label: monthNames[month - 1] + ' ' + year.toString().substring(2),\r\n })\r\n }\r\n }\r\n\r\n this.state = {\r\n tickersInput: FinvizQuoteTickers.join(','),\r\n tickers: FinvizQuoteTickers,\r\n months: months,\r\n fromMonth: months[months.length - 12],\r\n toMonth: months[months.length - 1],\r\n /**\r\n * DB_BARS_LIMIT - code below is dependent on amount of data we store for specific timeframes\r\n * Search DB_BARS_LIMIT in the project to find other places with such code.\r\n */\r\n // 2510 bars = ±10 years\r\n minDate: formatDateToStringUS(dateFns.sub(new Date(), { years: 9, months: 11 })),\r\n maxDate: formatDateToStringUS(new Date()),\r\n fromDay: formatDateToStringUS(dateFns.subYears(new Date(), 1)),\r\n toDay: formatDateToStringUS(new Date()),\r\n loading: true,\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return (\r\n \r\n Loading...\r\n \r\n )\r\n }\r\n\r\n var from = new Date(this.state.fromMonth.value)\r\n var to = new Date(this.state.toMonth.value)\r\n var monthsToShow = this.state.months\r\n .map((month) => month.value)\r\n .filter((month) => new Date(month) >= from && new Date(month) <= to)\r\n\r\n var quotes = Quote.select((q: any) => q.timeframe === 'm')\r\n var quotesPerf = quotes.map((q: any) => {\r\n var obj: { ticker: string; perf: Record } = { ticker: q.ticker, perf: {} }\r\n q.date.forEach((d: any, i: number) => {\r\n if (i === 0) {\r\n return\r\n }\r\n var date = Utils.dateFromUnixTimestamp(d)\r\n var perf = (q.close[i] * 100) / q.close[i - 1] - 100\r\n obj.perf[(date.getMonth() + 1).toString().padStart(2, '0') + '/01/' + date.getFullYear()] = perf\r\n })\r\n return obj\r\n })\r\n\r\n var months = monthsToShow.map(\r\n (month) => monthNames[new Date(month).getMonth()] + ' ' + new Date(month).getFullYear().toString().substring(2)\r\n )\r\n var rows = quotesPerf.map((quote: any) => {\r\n var cols: string[] = []\r\n var total = 1\r\n monthsToShow.forEach((month) => {\r\n var perf = Math.round(quote.perf[month] * 100) / 100\r\n if (!isNaN(perf)) {\r\n total *= quote.perf[month] / 100 + 1\r\n cols.push((perf > 0 ? '+' : '') + perf.toFixed(2) + '%')\r\n } else {\r\n cols.push('N/A')\r\n }\r\n })\r\n total = (total - 1) * 100\r\n return { ticker: quote.ticker, months: cols, total: (total > 0 ? '+' : '') + total.toFixed(2) + '%' }\r\n })\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 \r\n
Tickers:\r\n {\r\n this.setState({ tickersInput: e.target.value })\r\n }}\r\n style={{ width: '100%' }}\r\n data-testid=\"quote-compare-perf-tickers-input\"\r\n />\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n {\r\n this._onDatePickerChange('from', formatDateToStringUS(newValue))\r\n }}\r\n >\r\n \r\n \r\n
\r\n {' - '}\r\n
\r\n {\r\n this._onDatePickerChange('to', formatDateToStringUS(newValue))\r\n }}\r\n >\r\n \r\n \r\n
\r\n \r\n\r\n

\r\n Monthly performance from  \r\n \r\n {this.state.months.map((option) => (\r\n \r\n ))}\r\n \r\n   to  \r\n \r\n {this.state.months.map((option) => (\r\n \r\n ))}\r\n \r\n

\r\n \r\n\r\n
\r\n \r\n )\r\n }\r\n\r\n refetchQuotes = () => {\r\n this._fetch(this.state.tickers, false)\r\n }\r\n\r\n componentDidMount() {\r\n this._fetch(this.state.tickers)\r\n\r\n // We have to listen to these events to synchrnously update quote data, if we do after awaiting Quote.getAll in _fetch\r\n // there's a visual glitch because it rerenders with new data from the server (there's a complete refetch after 15 requests with no new data)\r\n // and then it rerenders again after updateQuoteData\r\n Quote.bind('refetch newerData', this.updateQuoteData)\r\n document.addEventListener('quoteFetchEvent', this.refetchQuotes)\r\n }\r\n\r\n componentWillUnmount() {\r\n Quote.unbind('refetch newerData', this.updateQuoteData)\r\n document.removeEventListener('quoteFetchEvent', this.refetchQuotes)\r\n }\r\n\r\n updateQuoteData = () => {\r\n const { fromDay, toDay } = this.state\r\n\r\n if (!fromDay || !toDay) {\r\n return\r\n }\r\n\r\n const dailyQuotes = Quote.select((q: any) => q.timeframe === 'd')\r\n const fromDate = new Date(fromDay + ' 00:00')\r\n const toDate = new Date(toDay + ' 23:59')\r\n dailyQuotes.forEach((q: any) => {\r\n const o = [],\r\n h = [],\r\n l = [],\r\n c = [],\r\n d = [],\r\n v = []\r\n for (let i = 0; i < q.close.length; i++) {\r\n const date = Utils.dateFromUnixTimestamp(q.date[i])\r\n if (fromDate <= date && date <= toDate) {\r\n o.push(q.open[i])\r\n h.push(q.high[i])\r\n l.push(q.low[i])\r\n c.push(q.close[i])\r\n d.push(q.date[i])\r\n v.push(q.volume[i])\r\n }\r\n }\r\n // Clear cache so we'll recalculate values after updating quote data on next line\r\n // Cache invalidates only on quote.fetchedAt change and in this case we mutate quote values and don't change fetchedAt (which is correct)\r\n // Updating quote this way should be an edge case and that's why we have to clear the cache manually\r\n q.clearCachedData()\r\n q.updateAttributes({\r\n open: o,\r\n high: h,\r\n low: l,\r\n close: c,\r\n date: d,\r\n volume: v,\r\n })\r\n })\r\n\r\n // This is to rerender perf table on quote update\r\n this.forceUpdate()\r\n }\r\n\r\n _fetch = async (tickers: string[], isRefetch = true) => {\r\n const { t } = decodeQueryString<{ t: string; p?: TIMEFRAME }>()\r\n if (isRefetch) {\r\n this.setState({ loading: true })\r\n }\r\n\r\n Quote.all().forEach(async (quote) => {\r\n if (quote.ticker === t && quote.timeframe === 'd' && !isRefetch) {\r\n // We don't want to trigger main ticker quote newer data fetch because it's done in withQuotePolling which also triggers this function\r\n // by emmiting quoteFetchEvent\r\n return\r\n }\r\n if (tickers.includes(quote.ticker)) {\r\n await quote.fetchData({ fetchType: isRefetch ? QuoteFetchType.Refetch : QuoteFetchType.NewerData })\r\n this.updateQuoteData()\r\n } else {\r\n quote.destroy()\r\n }\r\n })\r\n\r\n if (isRefetch) {\r\n var d = tickers.map((ticker) => ({ ticker: ticker, timeframe: TIMEFRAME.d, instrument: Instrument.Stock }))\r\n var m = tickers.map((ticker) => ({ ticker: ticker, timeframe: TIMEFRAME.m, instrument: Instrument.Stock }))\r\n await Quote.getAll(d.concat(m))\r\n\r\n this.setState({ loading: false })\r\n }\r\n\r\n this.updateQuoteData()\r\n }\r\n\r\n _onSubmit = (e: FormEvent) => {\r\n e.preventDefault()\r\n const tickersInput = getSanitizedTicker(this.state.tickersInput, true)\r\n const tickers = tickersInput.split(',')\r\n this.setState({ tickers, tickersInput }, () => {\r\n this._fetch(tickers)\r\n })\r\n }\r\n\r\n _onMonthChange = (type: string, e: ChangeEvent) => {\r\n var state: any = {}\r\n state[type + 'Month'] = this.state.months.filter((m) => m.value === e.target.value)[0]\r\n this.setState(state)\r\n }\r\n\r\n _onDatePickerChange = (type: string, date: any) => {\r\n var formattedDate = formatDateToStringUS(new Date(date))\r\n\r\n var state: any = {}\r\n state[type + 'Day'] = formattedDate\r\n state[type + 'DatePickerOpen'] = false\r\n this.setState(state, () => {\r\n this._fetch(this.state.tickers)\r\n })\r\n }\r\n}\r\n","import classnames from 'classnames'\r\n\r\nimport { formatDate } from '../../app/header/utils'\r\nimport { formatNumber } from '../util'\r\nimport { RedGreenMultiline, RedGreenText } from './RedGreenText'\r\n\r\nexport interface QuotePriceProps {\r\n title?: string\r\n date?: Date | null\r\n dateLabel?: string | null\r\n price: number\r\n changeUsd: number\r\n changePct: number\r\n}\r\n\r\nexport function QuotePrice({ title, date, dateLabel, price, changeUsd, changePct }: QuotePriceProps) {\r\n const fractions = !isNaN(price) && price < 1 ? 4 : 2\r\n const hasValue = changeUsd && Number.isFinite(changeUsd)\r\n\r\n return (\r\n
\r\n {title &&
{title}
}\r\n\r\n {(date || dateLabel) && (\r\n \r\n {dateLabel ?? formatDate(date, '', 'MMM dd')}\r\n {date && (\r\n <>\r\n {' '}\r\n • {formatDate(date, '', 'hh:mmaa')} ET\r\n \r\n )}\r\n \r\n )}\r\n\r\n
\r\n {formatNumber(price, { defaultValue: '—', fractions })}\r\n
\r\n \r\n \r\n
Dollar change
\r\n {formatNumber(changeUsd, { showPlusSign: true, fractions })}\r\n
\r\n %}\r\n >\r\n
Percentage change
\r\n {formatNumber(changePct)}\r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","export const QUOTE_HEADER_ROOT = 'js-quote-header-prices'\r\nexport const STATIC_PRICE_SELECTOR = '.js-is-static-price'\r\n","import * as React from 'react'\r\n\r\nimport { useModelState } from '../../charts-lib'\r\nimport { QUOTE_HEADER_ROOT, STATIC_PRICE_SELECTOR } from './constants'\r\n\r\nfunction toggleStaticheader(isReactHeader: boolean) {\r\n if (isReactHeader) {\r\n document.querySelector(STATIC_PRICE_SELECTOR)?.classList.add('hidden')\r\n document.getElementById(QUOTE_HEADER_ROOT)?.classList.remove('hidden')\r\n } else {\r\n document.querySelector(STATIC_PRICE_SELECTOR)?.classList.remove('hidden')\r\n document.getElementById(QUOTE_HEADER_ROOT)?.classList.add('hidden')\r\n }\r\n}\r\n\r\nexport function useReplaceStaticHeader(isLoaded: boolean) {\r\n React.useEffect(() => {\r\n toggleStaticheader(isLoaded)\r\n }, [isLoaded])\r\n}\r\n\r\nconst CHANGE_UPATE_EVENTS = ['change', 'update']\r\nconst QUOTE_MODEL_CHANGE_EVENTS = [...CHANGE_UPATE_EVENTS, 'refetch', 'newerData']\r\n\r\nexport interface HeaderPricesContext {\r\n prevClose: number\r\n lastClose: number\r\n lastTime: number\r\n lastDate?: number\r\n afterClose: number\r\n afterTime: number\r\n}\r\n\r\nexport function useChartContextPrices(chartLayoutModel: any): HeaderPricesContext | null {\r\n const chartModel = useModelState(chartLayoutModel?.charts().first(), {\r\n watchProperties: ['quote'],\r\n listenOnEvents: CHANGE_UPATE_EVENTS,\r\n })\r\n const quoteModel = useModelState(chartModel?.quote() ?? null, {\r\n watchProperties: ['lastClose', 'prevClose', 'afterClose', 'afterTime'],\r\n listenOnEvents: QUOTE_MODEL_CHANGE_EVENTS,\r\n })\r\n\r\n if (!quoteModel) return null\r\n\r\n return {\r\n prevClose: quoteModel.prevClose,\r\n lastClose: quoteModel.lastClose,\r\n lastTime: quoteModel.lastTime,\r\n lastDate: quoteModel.lastDate,\r\n afterClose: quoteModel.afterClose,\r\n afterTime: quoteModel.afterTime,\r\n }\r\n}\r\n","import * as dateFns from 'date-fns'\r\nimport React from 'react'\r\n\r\nimport { QuotePrice } from '../../../main/components/QuotePrice'\r\nimport { Quote, useChartLayoutGlobalModelAsync, withCompleteLayoutModelInit, withQuotePolling } from '../../charts-lib'\r\nimport { formatDate, getDate } from '../../header/utils'\r\nimport { HeaderPricesContext, useChartContextPrices, useReplaceStaticHeader } from './hooks'\r\n\r\nexport function ChartContextQuoteHeader() {\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n const data = useChartContextPrices(chartLayoutModel)\r\n\r\n return \r\n}\r\n\r\ninterface QuoteHeaderWithManualInitProps {\r\n chartLayoutModel: any\r\n config: any\r\n}\r\n\r\nfunction ManualInitQuoteHeaderComponent({ chartLayoutModel, config }: QuoteHeaderWithManualInitProps) {\r\n const data = useChartContextPrices(chartLayoutModel)\r\n\r\n /**\r\n * We need to instantiate layout model in order to use quote refetch on page\r\n * without an actual chart (options.) We also need to manually create a chart model\r\n *\r\n * It is then correctly caught in `useChartContextPrices`\r\n */\r\n React.useEffect(() => {\r\n async function fetchAndMapInitialQuote() {\r\n for (const chartConfig of config.charts) {\r\n const modelProperties = Object.assign({}, chartConfig)\r\n\r\n modelProperties.chart_layout = chartLayoutModel\r\n delete modelProperties.panes\r\n if (modelProperties.refreshData == null) {\r\n modelProperties.refreshData = true\r\n }\r\n chartLayoutModel.charts().create(modelProperties)\r\n }\r\n\r\n const chart = chartLayoutModel.charts().first()\r\n\r\n const quote = await Quote.get({\r\n ticker: chart.ticker,\r\n instrument: chart.instrument,\r\n timeframe: chart.timeframe,\r\n options: { maxBars: 0 },\r\n })\r\n\r\n chart.updateAttributes({ quote })\r\n }\r\n\r\n fetchAndMapInitialQuote()\r\n }, [chartLayoutModel, config.charts])\r\n\r\n return \r\n}\r\n\r\nexport const ManualInitQuoteHeader = withCompleteLayoutModelInit(withQuotePolling(ManualInitQuoteHeaderComponent))\r\n\r\nexport function QuoteHeaderContent({ data }: { data: HeaderPricesContext | null }) {\r\n /**\r\n * Replace static HTML with our react component\r\n */\r\n useReplaceStaticHeader(!!data)\r\n\r\n if (!data) return null\r\n\r\n const isChange = Number.isFinite(data.prevClose)\r\n const isAfterChange = Number.isFinite(data.afterClose) && data.afterClose !== data.lastClose\r\n const lastTime = data.lastTime ? getDate(data.lastTime * 1000) : null\r\n const lastDate = !lastTime && data.lastDate ? formatDate(data.lastDate, 'yyyyMMdd', 'MMM dd, yyyy') : null\r\n const afterDate = data.afterTime ? getDate(data.afterTime * 1000) : null\r\n\r\n let afterhoursTitle\r\n if (lastTime && afterDate) {\r\n if (dateFns.isBefore(afterDate, lastTime)) afterhoursTitle = 'Premarket'\r\n else afterhoursTitle = 'Aftermarket'\r\n }\r\n\r\n return (\r\n <>\r\n {isChange && (\r\n \r\n )}\r\n {isAfterChange && (\r\n \r\n )}\r\n \r\n )\r\n}\r\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import { useChartModelCustomDateRangeValues } from 'finviz-charts/app/controllers/chart-controls/use-chart-model-custom-date-range-values'\r\nimport { useChartLayoutGlobalModelAsync, useModelState } from 'finviz-charts/app/lib-export'\r\n\r\nexport function useChartTimeframePathWatch() {\r\n const isPremium = window.FinvizSettings.hasUserPremium\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n const chartModel = useModelState(chartLayoutModel?.activeChart ?? null, {\r\n watchProperties: ['timeframe', 'dateRange'],\r\n })\r\n const { generateChartLayoutRouterPath } = useChartModelCustomDateRangeValues({\r\n chartModel,\r\n isPremium,\r\n })\r\n\r\n if (!chartModel) return null\r\n\r\n const { pathname, search } = generateChartLayoutRouterPath({\r\n ticker: chartModel?.ticker,\r\n timeframe: chartModel?.timeframe,\r\n dateRange: chartModel?.dateRange,\r\n })\r\n\r\n return `${pathname}${search}`\r\n}\r\n","import { QuoteRoutes } from '../../../main/constants'\r\nimport { StatsQuery } from '../../stats/types'\r\nimport { useChartTimeframePathWatch } from '../use-chart-timeframe-path-watch'\r\n\r\nconst originalElement = document.querySelector('.js-compare-perf-link a')\r\n\r\nexport default function ComparePerfLink() {\r\n const isPremium = window.FinvizSettings.hasUserPremium\r\n const currentTimeframePath = useChartTimeframePathWatch()\r\n if (!currentTimeframePath)\r\n return (\r\n \r\n Compare Perf.\r\n \r\n )\r\n\r\n const newURL = new URL(currentTimeframePath, window.location.origin)\r\n newURL.searchParams.set(StatsQuery.ChartType, QuoteRoutes.Performance)\r\n\r\n return (\r\n \r\n Compare Perf.\r\n \r\n )\r\n}\r\n","import { QuoteRoutes } from '../../../main/constants'\r\nimport { StatsQuery } from '../../stats/types'\r\nimport { useChartTimeframePathWatch } from '../use-chart-timeframe-path-watch'\r\n\r\nconst originalElement = document.querySelector('.js-financials-link a')\r\n\r\nexport default function FinancialsLink() {\r\n const currentTimeframePath = useChartTimeframePathWatch()\r\n if (!currentTimeframePath)\r\n return (\r\n \r\n Financials\r\n \r\n )\r\n\r\n const newURL = new URL(currentTimeframePath, window.location.origin)\r\n newURL.searchParams.set(StatsQuery.ChartType, QuoteRoutes.Dividends)\r\n\r\n return (\r\n \r\n Financials\r\n \r\n )\r\n}\r\n","import { QuoteRoutes } from '../../../main/constants'\r\nimport { StatsQuery } from '../../stats/types'\r\nimport { useChartTimeframePathWatch } from '../use-chart-timeframe-path-watch'\r\n\r\nconst originalElement = document.querySelector('.js-options-chain-link a')\r\n\r\nexport default function OptionsChainLink() {\r\n const currentTimeframePath = useChartTimeframePathWatch()\r\n\r\n const label = 'Options'\r\n\r\n if (!currentTimeframePath)\r\n return (\r\n \r\n {label}\r\n \r\n )\r\n\r\n const newURL = new URL(currentTimeframePath, window.location.origin)\r\n newURL.searchParams.set(StatsQuery.ChartType, QuoteRoutes.OptionsChain)\r\n\r\n return (\r\n \r\n {label}\r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport { useChartLayoutGlobalModelAsync } from 'finviz-charts/app/utils/useChartLayoutGlobalModelAsync'\r\n\r\nimport { QuoteRoutes, SpecificChartFunctionality } from '../../../main/constants'\r\nimport { StatsQuery } from '../../stats/types'\r\nimport { useChartTimeframePathWatch } from '../use-chart-timeframe-path-watch'\r\n\r\nconst originalElement = document.querySelector('.js-short-interest-link a')\r\n\r\nexport default function ShortInterestLink() {\r\n const currentTimeframePath = useChartTimeframePathWatch()\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n const isQuoteFinancials = chartLayoutModel?.specificChartFunctionality === SpecificChartFunctionality.quoteFinancials\r\n const isQuoteOrQuoteFinancials =\r\n isQuoteFinancials || chartLayoutModel?.specificChartFunctionality === SpecificChartFunctionality.quotePage\r\n\r\n if (!currentTimeframePath || !isQuoteOrQuoteFinancials)\r\n return (\r\n \r\n Short Interest\r\n \r\n )\r\n\r\n const newURL = new URL(currentTimeframePath, window.location.origin)\r\n newURL.searchParams.set(StatsQuery.ChartType, QuoteRoutes.ShortInterest)\r\n\r\n return (\r\n \r\n Short Interest\r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport { useChartLayoutGlobalModelAsync } from 'finviz-charts/app/utils/useChartLayoutGlobalModelAsync'\r\n\r\nimport { SpecificChartFunctionality } from '../../../main/constants'\r\nimport { StatsQuery } from '../../stats/types'\r\nimport { useChartTimeframePathWatch } from '../use-chart-timeframe-path-watch'\r\n\r\nconst originalElement = document.querySelector('.js-stock-detail-link a')\r\n\r\nexport default function StockDetailLink() {\r\n const currentTimeframePath = useChartTimeframePathWatch()\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n const isQuotePage = chartLayoutModel?.specificChartFunctionality === SpecificChartFunctionality.quotePage\r\n const isQuoteOrQuoteFinancials =\r\n isQuotePage || chartLayoutModel?.specificChartFunctionality === SpecificChartFunctionality.quoteFinancials\r\n\r\n const label = (\r\n <>\r\n Chart\r\n Stock Detail\r\n \r\n )\r\n\r\n if (!currentTimeframePath || !isQuoteOrQuoteFinancials)\r\n return (\r\n \r\n {label}\r\n \r\n )\r\n\r\n const newURL = new URL(currentTimeframePath, window.location.origin)\r\n newURL.searchParams.delete(StatsQuery.ChartType)\r\n\r\n return (\r\n \r\n {label}\r\n \r\n )\r\n}\r\n","import { SelectItem } from '../../../main/components'\r\nimport { IconNameType } from '../../../main/components/icon'\r\n\r\nexport enum QuoteNodeChartTypes {\r\n candlesticksimple = 'candlesticksimple',\r\n candlestick = 'candlestick',\r\n line = 'line',\r\n ohlc = 'ohlc',\r\n heikinashi = 'heikinashi',\r\n hollowcandlestick = 'hollowcandlestick',\r\n}\r\n\r\nexport enum QuoteUrlChartTypes {\r\n cs = 'cs',\r\n c = 'c',\r\n l = 'l',\r\n o = 'o',\r\n ha = 'ha',\r\n hc = 'hc',\r\n}\r\n\r\nexport const QuoteShortToLongType = {\r\n [QuoteUrlChartTypes.cs]: QuoteNodeChartTypes.candlesticksimple,\r\n [QuoteUrlChartTypes.c]: QuoteNodeChartTypes.candlestick,\r\n [QuoteUrlChartTypes.l]: QuoteNodeChartTypes.line,\r\n [QuoteUrlChartTypes.o]: QuoteNodeChartTypes.ohlc,\r\n [QuoteUrlChartTypes.ha]: QuoteNodeChartTypes.heikinashi,\r\n [QuoteUrlChartTypes.hc]: QuoteNodeChartTypes.hollowcandlestick,\r\n} as const\r\n\r\nexport const QuoteLongToShortType = {\r\n [QuoteNodeChartTypes.candlesticksimple]: QuoteUrlChartTypes.cs,\r\n [QuoteNodeChartTypes.candlestick]: QuoteUrlChartTypes.c,\r\n [QuoteNodeChartTypes.line]: QuoteUrlChartTypes.l,\r\n [QuoteNodeChartTypes.ohlc]: QuoteUrlChartTypes.o,\r\n [QuoteNodeChartTypes.heikinashi]: QuoteUrlChartTypes.ha,\r\n [QuoteNodeChartTypes.hollowcandlestick]: QuoteUrlChartTypes.hc,\r\n} as const\r\n\r\nexport const FREE_TYPES = ['candlesticksimple', 'candlestick', 'line']\r\n\r\nexport const DEFAULT_TYPES = [\r\n { icon: 'candleBarBasic', value: QuoteNodeChartTypes.candlestick, label: 'Candle' },\r\n { icon: 'lineChartType', value: QuoteNodeChartTypes.line, label: 'Line' },\r\n { icon: 'ohlcChartType', value: QuoteNodeChartTypes.ohlc, label: 'OHLC' },\r\n { icon: 'candleBarHollow', value: QuoteNodeChartTypes.hollowcandlestick, label: 'Hollow Candle' },\r\n { icon: 'candleBarHeikinAshi', value: QuoteNodeChartTypes.heikinashi, label: 'Heikin Ashi' },\r\n]\r\n\r\nexport type TypeBaseOption = SelectItem & {\r\n icon: IconNameType\r\n href: string\r\n}\r\n","import { Select } from '../../../main/components'\r\nimport { Icon } from '../../../main/components/icon'\r\nimport { useChartTypes } from './use-chart-type'\r\n\r\nconst hasRedesign = FinvizSettings.hasRedesignEnabled\r\n\r\nexport function ChartTypesSelect({ isPremium }: { isPremium: boolean }) {\r\n const { chartTypes, currentType, setSelectedChartTypeOverwrite } = useChartTypes({ isPremium })\r\n\r\n return (\r\n : undefined}\r\n rounding={hasRedesign ? undefined : 'none'}\r\n onChange={({ value }) => setSelectedChartTypeOverwrite(value)}\r\n items={chartTypes}\r\n />\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\n\r\nimport { decodeQueryString, encodeQueryString } from '../../queryString'\r\nimport {\r\n DEFAULT_TYPES,\r\n FREE_TYPES,\r\n QuoteLongToShortType,\r\n QuoteNodeChartTypes,\r\n QuoteShortToLongType,\r\n QuoteUrlChartTypes,\r\n TypeBaseOption,\r\n} from './utils'\r\n\r\nexport function useChartTypes({ isPremium }: { isPremium: boolean }) {\r\n const location = useLocation()\r\n const { b, t, ta, ty, p = 'd', r } = decodeQueryString(location.search)\r\n const taInt = ta ? Number.parseInt(ta) : 1\r\n const [selectedChartTypeOverwrite, setSelectedChartTypeOverwrite] = React.useState()\r\n\r\n const generateRouterPath = React.useCallback(\r\n (type: QuoteNodeChartTypes) => {\r\n if (isPremium || FREE_TYPES.includes(type)) {\r\n return `/quote.ashx?${encodeQueryString({\r\n b,\r\n t,\r\n r,\r\n ty:\r\n type === QuoteNodeChartTypes.candlesticksimple\r\n ? QuoteLongToShortType.candlestick\r\n : QuoteLongToShortType[type],\r\n ta: type === QuoteNodeChartTypes.candlestick ? '1' : '0',\r\n p,\r\n })}`\r\n }\r\n return `/elite.ashx?${encodeQueryString({\r\n utm_source: 'finviz',\r\n utm_medium: 'banner',\r\n utm_campaign: 'quote-chart-type-select',\r\n })}`\r\n },\r\n [isPremium, b, t, r, p]\r\n )\r\n\r\n const chartTypes = React.useMemo(\r\n () =>\r\n (\r\n [\r\n !isPremium ? { icon: 'candleBarBasic', value: 'candlesticksimple', label: 'Candle - simple' } : null,\r\n ...DEFAULT_TYPES.map((type) =>\r\n !isPremium && type.value === 'candlestick' ? { ...type, label: 'Candle - advanced' } : type\r\n ),\r\n ].filter(Boolean) as TypeBaseOption[]\r\n ).map((item) => ({\r\n ...item,\r\n href: generateRouterPath(item.value as QuoteNodeChartTypes),\r\n reloadDocument: !isPremium,\r\n })),\r\n [generateRouterPath, isPremium]\r\n )\r\n\r\n const currentType = React.useMemo(\r\n () =>\r\n chartTypes.find((type) => {\r\n if (selectedChartTypeOverwrite) {\r\n return type.value === selectedChartTypeOverwrite\r\n }\r\n\r\n const defaultType =\r\n ((ty as QuoteUrlChartTypes | undefined) && QuoteShortToLongType[ty as QuoteUrlChartTypes]) ??\r\n (FinvizQuoteTypeCurrent as QuoteNodeChartTypes)\r\n\r\n return !isPremium && defaultType === QuoteNodeChartTypes.candlestick && taInt === 0\r\n ? type.value === QuoteNodeChartTypes.candlesticksimple\r\n : type.value === defaultType\r\n }),\r\n [chartTypes, selectedChartTypeOverwrite, ty, isPremium, taInt]\r\n )\r\n\r\n return { currentType, chartTypes, setSelectedChartTypeOverwrite }\r\n}\r\n","import classnames from 'classnames'\r\n\r\nimport { Button } from '../../../main/components/button'\r\nimport { NotificationWrapper } from '../../../main/components/notification'\r\nimport { StockDetailTimeframeBar } from '../../charts-lib'\r\nimport { decodeQueryString } from '../../queryString'\r\nimport { ChartTypesSelect } from '../chart-type-select'\r\n\r\ninterface Props {\r\n index: number\r\n isInteractiveChart: boolean\r\n isStockDetailUpdating: boolean\r\n}\r\n\r\nconst hasRedesign = FinvizSettings.hasRedesignEnabled\r\n\r\nexport function QuoteMenu({ index, isInteractiveChart, isStockDetailUpdating }: Props) {\r\n const { t, ty, p } = decodeQueryString()\r\n const urlTickers = t.split(',')\r\n const isPremium = FinvizSettings.hasUserPremium\r\n\r\n return (\r\n \r\n
\r\n {ty !== 'p' && ty !== 'oc' && (\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 {ty !== 'p' && ty !== 'oc' ? (\r\n \r\n Share\r\n \r\n ) : null}\r\n
\r\n
\r\n )\r\n}\r\n","export enum StatementsDataEnum {\r\n yoyChange = 'yoyChange',\r\n yoyChangePct = 'yoyChangePct',\r\n}\r\n\r\nexport enum StatementsTimeframeEnum {\r\n annual = 'annual',\r\n quarterly = 'quarterly',\r\n}\r\n\r\nexport const SETTINGS_COOKIE_KEY = 'quoteStatementsTableSettings'\r\n\r\nexport const DEFAULT_SETTINGS = {\r\n [StatementsDataEnum.yoyChange]: false,\r\n [StatementsDataEnum.yoyChangePct]: false,\r\n statementsTimeframe: StatementsTimeframeEnum.annual,\r\n}\r\n\r\nexport type StatementsType = {\r\n [StatementsDataEnum.yoyChange]: boolean\r\n [StatementsDataEnum.yoyChangePct]: boolean\r\n statementsTimeframe: StatementsTimeframeEnum\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as d3 from 'd3'\r\nimport { isRedesignEnabled } from 'finviz-charts/app/utils'\r\nimport * as React from 'react'\r\nimport { Component, RefObject, createRef } from 'react'\r\n\r\nimport { ChipSwitch, ChipSwitchButton } from '../../main/components/ChipSwitch'\r\nimport { RedGreenText } from '../../main/components/RedGreenText'\r\nimport { FinancialsTableContextProvider, useFinancialsTableContext } from '../../main/components/financials-table'\r\nimport { Icon } from '../../main/components/icon'\r\nimport { getValue, setValue } from '../../main/services/local-storage'\r\nimport { shortFormatNumber } from '../../main/util'\r\nimport { decodeQueryString } from '../queryString'\r\nimport { AdTag, getInvestingChannelPage } from '../shared/components/Ads'\r\nimport BarChartBig from './barChart'\r\nimport {\r\n DEFAULT_SETTINGS,\r\n SETTINGS_COOKIE_KEY,\r\n StatementsDataEnum,\r\n StatementsTimeframeEnum,\r\n StatementsType,\r\n} from './statements-constants'\r\n\r\ninterface Bar {\r\n name: string\r\n value: number\r\n}\r\n\r\ninterface BarChartProps {\r\n data: Bar[]\r\n}\r\n\r\nclass BarChart extends Component {\r\n svgRef: RefObject\r\n\r\n constructor(props: BarChartProps) {\r\n super(props)\r\n this.svgRef = createRef()\r\n }\r\n\r\n componentDidMount() {\r\n this.renderChart()\r\n }\r\n\r\n componentDidUpdate() {\r\n this.renderChart()\r\n }\r\n\r\n renderChart() {\r\n const data = this.props.data\r\n\r\n const barWidth = 3\r\n const width = data.length * (barWidth + 1)\r\n const height = 16\r\n\r\n const x = d3\r\n .scaleBand()\r\n .domain(data.map((d) => d.name))\r\n .range([0, width])\r\n\r\n let min = d3.min(data, (d: Bar) => d.value)!\r\n if (min < 0) {\r\n min = d3.min(data, (d: Bar) => Math.min(d.value, -d.value))!\r\n } else {\r\n min = 0\r\n }\r\n\r\n const y = d3\r\n .scaleLinear()\r\n .range([height, 0])\r\n .domain([min, d3.max(data, (d: Bar) => Math.abs(d.value))] as [number, number])\r\n .nice()\r\n .unknown(height / 2)\r\n\r\n const svg = d3.select(this.svgRef.current).property('value', [])\r\n\r\n let bars = svg.selectAll('.bar').data(data)\r\n bars\r\n .enter()\r\n .append('rect')\r\n .attr('class', function (d: Bar) {\r\n return 'bar bar--' + (d.value < 0 ? 'negative' : 'positive')\r\n })\r\n .attr('x', function (d: Bar) {\r\n return x(d.name)!\r\n })\r\n .attr('y', function (d: Bar) {\r\n return y(Math.max(0, d.value))\r\n })\r\n .attr('height', function (d: Bar) {\r\n let height = Math.abs(y(d.value) - y(0))\r\n if (d.value > 0 || d.value < 0) {\r\n height = Math.max(height, 0.5)\r\n }\r\n return height\r\n })\r\n .attr('width', barWidth)\r\n bars\r\n .transition()\r\n .attr('class', function (d: Bar) {\r\n return 'bar bar--' + (d.value < 0 ? 'negative' : 'positive')\r\n })\r\n .attr('x', function (d: Bar) {\r\n return x(d.name)!\r\n })\r\n .attr('y', function (d: Bar) {\r\n return y(Math.max(0, d.value))\r\n })\r\n .attr('height', function (d: Bar) {\r\n let height = Math.abs(y(d.value) - y(0))\r\n if (d.value > 0 || d.value < 0) {\r\n height = Math.max(height, 0.5)\r\n }\r\n return height\r\n })\r\n .attr('width', barWidth)\r\n bars.exit().remove()\r\n\r\n this.svgRef.current!.style.width = width + 'px'\r\n this.svgRef.current!.style.height = height + 'px'\r\n }\r\n\r\n render() {\r\n return \r\n }\r\n}\r\n\r\nfunction EliteHoverAd() {\r\n return (\r\n
\r\n
\r\n \r\n

Upgrade your FINVIZ experience

\r\n

\r\n Join thousands of traders who make more informed decisions with our premium features. Real-time\r\n quotes, advanced visualizations, historical statements, and much more.\r\n

\r\n \r\n Learn more\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\ninterface BarChartWrapperProps {\r\n data: Bar[]\r\n}\r\n\r\nclass BarChartWrapper extends Component {\r\n state = {\r\n hover: false,\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n x.value !== null)}>\r\n \r\n \r\n \r\n {FinvizSettings.hasUserPremium ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nconst DEFAULT_SOURCE = 'F'\r\n\r\nconst _getDefaultSource = (): 'F' | 'R' => {\r\n if (!FinvizSettings.hasUserPremium) {\r\n return DEFAULT_SOURCE\r\n }\r\n\r\n return getValue('statements-source', DEFAULT_SOURCE) === 'R' ? 'R' : 'F'\r\n}\r\n\r\nconst getTimeframeFromStatementsSettingsTimeframe = (statementsTimeframe: StatementsTimeframeEnum) => {\r\n if (statementsTimeframe === StatementsTimeframeEnum.quarterly) {\r\n return 'Q'\r\n }\r\n\r\n // statementsTimeframe === StatementsTimeframeEnum.annual or fallback\r\n return 'A'\r\n}\r\n\r\ninterface StatementsState {\r\n source: 'F' | 'R'\r\n sheet: string\r\n currency: string | null\r\n data: Record | null\r\n}\r\n\r\nfunction StatementsComponent() {\r\n const { settings } = useFinancialsTableContext()\r\n const pageRef = React.useRef(getInvestingChannelPage())\r\n\r\n const [state, setState] = React.useState({\r\n source: _getDefaultSource(),\r\n sheet: 'I',\r\n currency: null,\r\n data: null,\r\n })\r\n\r\n const timeframe = getTimeframeFromStatementsSettingsTimeframe(settings.statementsTimeframe)\r\n\r\n const { data } = state\r\n const hasData = !data?.error\r\n const hasRedesignEnabled = FinvizSettings?.hasRedesignEnabled\r\n\r\n const _fetch = async () => {\r\n const { source, sheet } = state\r\n const { t } = decodeQueryString()\r\n\r\n try {\r\n const response = await fetch(`/api/statement.ashx?t=${t}&so=${source}&s=${sheet}${timeframe}`)\r\n const json = await response.json()\r\n\r\n setState({\r\n ...state,\r\n currency: json.currency,\r\n data: json.error ? json : json.data,\r\n })\r\n } catch {}\r\n }\r\n\r\n React.useEffect(() => {\r\n pageRef.current = getInvestingChannelPage()\r\n pageRef.current?.create()\r\n\r\n return () => {\r\n pageRef.current?.destroy()\r\n }\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n _fetch()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [state.sheet, state.source, timeframe])\r\n\r\n const _renderSheetLink = (id: string, text: string) => (\r\n {\r\n e.preventDefault()\r\n setState({\r\n ...state,\r\n sheet: id,\r\n })\r\n }}\r\n >\r\n {text}\r\n \r\n )\r\n\r\n if (data === null) {\r\n return null\r\n }\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 {FinvizSettings.hasUserPremium && (\r\n // TODO fix classname when css mixins removal is merged\r\n {\r\n e.preventDefault()\r\n const source = e.target.value === 'R' ? 'R' : 'F'\r\n setState({\r\n ...state,\r\n source: source,\r\n })\r\n setValue('statements-source', source, DEFAULT_SOURCE, false)\r\n }}\r\n >\r\n \r\n \r\n \r\n )}\r\n {FinvizSettings.hasUserPremium && <>   }\r\n\r\n \r\n {_renderSheetLink('I', 'Income Statement')} •{' '}\r\n {_renderSheetLink('B', 'Balance Sheet')} •{' '}\r\n {_renderSheetLink('C', 'Cash Flow')}\r\n \r\n \r\n \r\n
\r\n {hasData && }\r\n {!hasData && (\r\n \r\n \r\n \r\n \r\n The statement is not available. Try switching between FactSet-Reuters source.\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nfunction Statements() {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nfunction StatementsSettingsSection() {\r\n const { settings, setSettings } = useFinancialsTableContext()\r\n\r\n const toggleSetting = (key: keyof StatementsType, value: StatementsType[keyof StatementsType]) => {\r\n setSettings({\r\n ...settings,\r\n [key]: value,\r\n })\r\n }\r\n\r\n const yoyGrowthLabel = React.useMemo(() => {\r\n const isQuarterlyTimeframe = settings.statementsTimeframe === StatementsTimeframeEnum.quarterly\r\n\r\n if (isQuarterlyTimeframe) {\r\n return 'QoQ Growth'\r\n }\r\n\r\n return 'YoY Growth'\r\n }, [settings.statementsTimeframe])\r\n\r\n return (\r\n
\r\n \r\n {\r\n toggleSetting(StatementsDataEnum.yoyChange, !settings[StatementsDataEnum.yoyChange])\r\n }}\r\n >\r\n {yoyGrowthLabel}\r\n \r\n {\r\n toggleSetting(StatementsDataEnum.yoyChangePct, !settings[StatementsDataEnum.yoyChangePct])\r\n }}\r\n >\r\n {`${yoyGrowthLabel} %`}\r\n \r\n \r\n\r\n \r\n {\r\n toggleSetting('statementsTimeframe', StatementsTimeframeEnum.annual)\r\n }}\r\n >\r\n Annual\r\n \r\n {\r\n toggleSetting('statementsTimeframe', StatementsTimeframeEnum.quarterly)\r\n }}\r\n >\r\n Quarterly\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nfunction isChartable(label: string) {\r\n switch (label) {\r\n case 'Period End Date':\r\n case 'Period Length':\r\n return false\r\n }\r\n\r\n return true\r\n}\r\n\r\nfunction parseData(data: Record, skipFirst: boolean) {\r\n let parsed: any = {}\r\n Object.keys(data).forEach((key) => {\r\n parsed[key] = data[key]\r\n .map((value, index) => {\r\n if (isChartable(key)) {\r\n let parsedValue\r\n if (value === '') {\r\n parsedValue = null\r\n } else {\r\n parsedValue = parseFloat(value.replace(/,/g, ''))\r\n }\r\n return {\r\n name: data['Period End Date'][index],\r\n value: parsedValue,\r\n }\r\n }\r\n return null\r\n })\r\n .slice(skipFirst ? 1 : 0)\r\n })\r\n\r\n return parsed as Record>\r\n}\r\n\r\nfunction isHighlightRow(label: string) {\r\n switch (label) {\r\n case 'Period End Date':\r\n case 'Total Revenue':\r\n case 'Total Premiums Earned':\r\n case 'Interest Income':\r\n case 'Gross Profit':\r\n case 'Total Operating Expense':\r\n case 'Operating Income':\r\n case 'Net Income Before Taxes':\r\n case 'Net Income':\r\n case 'Total Current Assets':\r\n case 'Total Assets':\r\n case 'Total Current Liabilities':\r\n case 'Total Liabilities':\r\n case 'Total Equity':\r\n case 'Total Liabilities and Equity':\r\n case 'Cash from Operating Activities':\r\n case 'Cash from Investing Activities':\r\n case 'Cash from Financing Activities':\r\n case 'Net Change in Cash':\r\n case 'Price To Earnings Ratio':\r\n case 'Price to Book Ratio':\r\n case 'Price to Free Cash Flow':\r\n return true\r\n }\r\n\r\n return false\r\n}\r\n\r\ntype StatementsTableProps = Pick\r\n\r\nfunction StatementsTable({ data, currency }: StatementsTableProps) {\r\n const { settings } = useFinancialsTableContext()\r\n const skipFirst = data?.['Period End Date'][0] === 'TTM'\r\n const parsedData = data ? parseData(data, skipFirst) : null\r\n\r\n const yoyData = React.useMemo(\r\n () =>\r\n parsedData\r\n ? Object.entries(parsedData).reduce<\r\n Record<\r\n string,\r\n {\r\n change: Array\r\n changePct: Array\r\n }\r\n >\r\n >((acc, [key, values]) => {\r\n if (!isChartable(key)) {\r\n return acc\r\n }\r\n const yoyData: Array<{ change: number | null; changePct: number | null }> = []\r\n let lastValue: number | null = null\r\n\r\n // values are in DESC order\r\n const reversedValues = [...values].reverse()\r\n\r\n reversedValues.forEach(({ value }) => {\r\n const isValidValue = typeof value === 'number'\r\n if (!isValidValue || lastValue === null || lastValue === 0) {\r\n yoyData.push({ change: null, changePct: null })\r\n } else {\r\n const change = value - lastValue\r\n yoyData.push({ change, changePct: (change / Math.abs(lastValue)) * 100 })\r\n }\r\n\r\n if (isValidValue) lastValue = value\r\n })\r\n\r\n const reversedYoyData = [...yoyData].reverse()\r\n return {\r\n ...acc,\r\n [key]: {\r\n change: reversedYoyData.map(({ change }) => change),\r\n changePct: reversedYoyData.map(({ changePct }) => changePct),\r\n },\r\n }\r\n }, {})\r\n : {},\r\n [parsedData]\r\n )\r\n\r\n const yoyGrowthLabel = React.useMemo(() => {\r\n const isQuarterlyTimeframe = settings.statementsTimeframe === StatementsTimeframeEnum.quarterly\r\n\r\n if (isQuarterlyTimeframe) {\r\n return 'QoQ Growth'\r\n }\r\n\r\n return 'YoY Growth'\r\n }, [settings.statementsTimeframe])\r\n\r\n if (!data || !parsedData) return null\r\n\r\n const hasRedesignEnabled = FinvizSettings?.hasRedesignEnabled\r\n const cellClass = classnames('align-top', {\r\n 'snapshot-td2 h-6 !leading-4 !pt-[4px]': !hasRedesignEnabled,\r\n })\r\n const adRowIndexStart = !hasRedesignEnabled && data['Period Length'] ? 2 : 1\r\n\r\n return (\r\n <>\r\n \r\n \r\n {Object.keys(data).map((key, rowIndex) => {\r\n const hasYoYData = !!yoyData[key] && data[key].some((value) => value)\r\n return (\r\n \r\n \r\n {key}\r\n {hasYoYData && settings[StatementsDataEnum.yoyChange] && (\r\n <>\r\n
\r\n {yoyGrowthLabel}\r\n \r\n )}\r\n {hasYoYData && settings[StatementsDataEnum.yoyChangePct] && (\r\n <>\r\n
\r\n {`${yoyGrowthLabel} %`}\r\n \r\n )}\r\n \r\n \r\n {isChartable(key) && }\r\n \r\n {data[key].map((value, index) => {\r\n const changeIndex = skipFirst ? index - 1 : index\r\n const yoyChangeValue = yoyData[key]?.change[changeIndex] ?? null\r\n const yoyChangePctValue = yoyData[key]?.changePct[changeIndex] ?? null\r\n if (!FinvizSettings.hasUserPremium) {\r\n if (rowIndex === adRowIndexStart && index === 3) {\r\n return (\r\n \r\n \r\n \r\n

Upgrade your FINVIZ experience

\r\n

\r\n Join thousands of traders who make more informed decisions with our premium\r\n features. Real-time quotes, advanced visualizations, historical statements, and much\r\n more.\r\n

\r\n \r\n Learn more\r\n \r\n \r\n )\r\n }\r\n if (\r\n index > 2 &&\r\n ((hasRedesignEnabled && key !== 'Period End Date') ||\r\n (key !== 'Period End Date' && key !== 'Period Length'))\r\n ) {\r\n return null\r\n }\r\n }\r\n\r\n return (\r\n \r\n {value}\r\n {hasYoYData && settings[StatementsDataEnum.yoyChange] && (\r\n <>\r\n
\r\n \r\n {shortFormatNumber(yoyChangeValue, { defaultValue: '—' })}\r\n \r\n \r\n )}\r\n {hasYoYData && settings[StatementsDataEnum.yoyChangePct] && (\r\n <>\r\n
\r\n \r\n {yoyChangePctValue?.toFixed(2) ?? '—'}\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\n \r\n \r\n \r\n \r\n
values in Millions, {currency}
\r\n \r\n )\r\n}\r\n\r\nexport default Statements\r\n","import * as React from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\n\r\nimport { decodeQueryString } from '../queryString'\r\n\r\nconst CORRELATION_LINKS_CONTAINER_SELECTOR = 'js-quote-correlation-links-container'\r\nconst MULTITICKER_CHART_ELEMENT_SELECTOR = 'js-multi-ticker-chart'\r\nconst SET_SEARCH_EXT_SELECTOR = 'js-set-search-ext-argument'\r\n\r\nexport function useStockDetailUpdater() {\r\n const location = useLocation()\r\n const { p, ty } = decodeQueryString(location.search)\r\n const isInitializedRef = React.useRef(false)\r\n const [isStockDetailUpdating, setIsStockDetailUpdating] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n const multiTickerElements = document.getElementsByClassName(MULTITICKER_CHART_ELEMENT_SELECTOR)\r\n const correlationElements = document.getElementsByClassName(CORRELATION_LINKS_CONTAINER_SELECTOR)\r\n const abortController = new AbortController()\r\n\r\n if (isInitializedRef.current) {\r\n if (multiTickerElements.length > 0) setIsStockDetailUpdating(true)\r\n\r\n fetch(location.pathname + location.search, { signal: abortController.signal })\r\n .then((response) => response.text())\r\n .then((text) => {\r\n const virtualDOM = new DOMParser().parseFromString(text, 'text/html')\r\n\r\n // Multiticker update\r\n if (multiTickerElements.length > 0) {\r\n const multiTickerHtmlElements = Array.from(multiTickerElements) as HTMLImageElement[]\r\n const newMultiTickerHtmlElements = Array.from(\r\n virtualDOM.getElementsByClassName(MULTITICKER_CHART_ELEMENT_SELECTOR)\r\n ) as HTMLImageElement[]\r\n\r\n if (newMultiTickerHtmlElements?.length === multiTickerHtmlElements.length) {\r\n multiTickerHtmlElements.forEach((element, index) => {\r\n element.onload = () => setIsStockDetailUpdating(false)\r\n element.src = newMultiTickerHtmlElements[index].src\r\n })\r\n } else {\r\n setIsStockDetailUpdating(false)\r\n }\r\n }\r\n\r\n // Correlation update\r\n const correlationLinksTableCellHtmlElements = Array.from(correlationElements) as HTMLTableCellElement[]\r\n const newCorrelationLinksTableCellHtmlElements = Array.from(\r\n virtualDOM.getElementsByClassName(CORRELATION_LINKS_CONTAINER_SELECTOR)\r\n ) as HTMLTableCellElement[]\r\n\r\n if (newCorrelationLinksTableCellHtmlElements?.length === correlationLinksTableCellHtmlElements.length) {\r\n correlationLinksTableCellHtmlElements.forEach((element, index) => {\r\n element.innerHTML = newCorrelationLinksTableCellHtmlElements[index].innerHTML\r\n })\r\n }\r\n\r\n // Search function update\r\n const newsearchFunctionWrapperElement = virtualDOM.getElementById(SET_SEARCH_EXT_SELECTOR) as HTMLDivElement\r\n if (newsearchFunctionWrapperElement?.dataset.setSearchExtArgument) {\r\n FinvizSettings.quoteSearchExt = newsearchFunctionWrapperElement.dataset.setSearchExtArgument\r\n }\r\n })\r\n .catch((err) => {\r\n setIsStockDetailUpdating(false)\r\n if (err.name !== 'AbortError') {\r\n Sentry.captureException(err)\r\n }\r\n })\r\n }\r\n isInitializedRef.current = true\r\n return () => {\r\n abortController.abort()\r\n }\r\n // We don't want to trigger effect on any location change just if period or type change\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [p, ty])\r\n\r\n return { isStockDetailUpdating }\r\n}\r\n","import { CHART_ELEMENT_ID } from 'finviz-charts/app/constants/common'\r\nimport React, { Suspense } from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport ReactDOMClient from 'react-dom/client'\r\nimport { ErrorBoundary } from 'react-error-boundary'\r\nimport { BrowserRouter } from 'react-router-dom'\r\n\r\nimport { NotificationWrapper } from '../../main/components/notification'\r\nimport { SpecificChartFunctionality, TIMEFRAME } from '../../main/constants'\r\nimport { useCheckNonIdeaChartMissingConfig } from '../../main/hooks/use-check-non-idea-chart-missing-config'\r\nimport { initIdeaQuotes } from '../../main/modules/charts/util'\r\nimport { ChartLayoutWithGlobalState, FREE_DATE_RANGES, Quote, Theme } from '../charts-lib'\r\nimport { decodeQueryString } from '../queryString'\r\nimport { getInitChartConfig } from '../shared/getInitChartConfig'\r\nimport { ready } from '../shared/ready'\r\nimport ETFHoldings from './etf-holdings'\r\nimport FundamentalCharts from './fundamentalCharts'\r\nimport { InsiderTradingVolumeChart as InsiderTradingVolumeChartComponent } from './insider-trading-volume-chart'\r\nimport { Perf } from './quote'\r\nimport { ChartContextQuoteHeader, ManualInitQuoteHeader } from './quote-header'\r\nimport { QUOTE_HEADER_ROOT } from './quote-header/constants'\r\nimport ComparePerfLink from './quote-links/ComparePerfLink'\r\nimport CreateAlertLink from './quote-links/CreateAlertLink'\r\nimport FinancialsLink from './quote-links/FinancialsLink'\r\nimport OptionsChainLink from './quote-links/OptionsChainLink'\r\nimport SaveToPortfolioLink from './quote-links/SaveToPortfolioLink'\r\nimport ShortInterestLink from './quote-links/ShortInterestLink'\r\nimport StockDetailLink from './quote-links/StockDetailLink'\r\nimport { QuoteMenu } from './quote-menu'\r\nimport Statements from './statements'\r\nimport { getChartLayoutSizeConfig, useChartLayoutWidthWatch } from './use-chart-layout-width-watch'\r\nimport { useStockDetailUpdater } from './use-stock-detail-updater'\r\n\r\nif (FinvizSettings.hasUserPremium || FinvizSettings.hasRedesignEnabled) {\r\n import(/* webpackChunkName: \"recent_quotes\" */ '../shared/recent_quotes').then(({ RenderRecentQuotes }) => {\r\n RenderRecentQuotes()\r\n })\r\n}\r\n\r\nconst QuoteMenuPortal = ({ isStockDetailUpdating }: { isStockDetailUpdating: boolean }) => {\r\n const quoteMenuElements = document.getElementsByClassName('quote-menu')\r\n const quoteMenuHtmlElements = Array.from(quoteMenuElements).filter((el) => el instanceof HTMLElement) as HTMLElement[]\r\n\r\n if (quoteMenuHtmlElements.length > 0) {\r\n return (\r\n <>\r\n {quoteMenuHtmlElements.map((quoteMenuElement: HTMLElement, quoteMenuIndex: number) => {\r\n const menuIndex = quoteMenuIndex + 1\r\n return ReactDOM.createPortal(\r\n ,\r\n quoteMenuElement\r\n )\r\n })}\r\n \r\n )\r\n }\r\n return null\r\n}\r\n\r\nconst MENU_LINKS = [\r\n {\r\n selector: 'js-stock-detail-link',\r\n LinkComponent: StockDetailLink,\r\n },\r\n {\r\n selector: 'js-compare-perf-link',\r\n LinkComponent: ComparePerfLink,\r\n },\r\n {\r\n selector: 'js-short-interest-link',\r\n LinkComponent: ShortInterestLink,\r\n },\r\n {\r\n selector: 'js-financials-link',\r\n LinkComponent: FinancialsLink,\r\n },\r\n {\r\n selector: 'js-options-chain-link',\r\n LinkComponent: OptionsChainLink,\r\n },\r\n {\r\n selector: 'js-save-to-portfolio-link',\r\n LinkComponent: SaveToPortfolioLink,\r\n },\r\n {\r\n selector: 'js-create-alert-link',\r\n LinkComponent: CreateAlertLink,\r\n },\r\n]\r\n\r\nconst RenderMenuLinks = () => {\r\n MENU_LINKS.forEach(({ selector, LinkComponent }) => {\r\n const linkElements = document.getElementsByClassName(selector)\r\n const linkHtmlElements = Array.from(linkElements).filter((el) => el instanceof HTMLElement) as HTMLElement[]\r\n\r\n linkHtmlElements.forEach((linkElement, index) => {\r\n const root = ReactDOMClient.createRoot(linkElement)\r\n root.render(\r\n \r\n \r\n \r\n )\r\n })\r\n })\r\n}\r\n\r\nconst ChartLayoutPortal = () => {\r\n useChartLayoutWidthWatch()\r\n const chartEl = document.getElementById(CHART_ELEMENT_ID)\r\n const chartConfig = window.globalChartConfig\r\n const theme = FinvizSettings.hasDarkTheme ? Theme.dark : Theme.light\r\n\r\n if (chartEl && chartConfig) {\r\n const { p = FinvizSettings.defaultPeriod as TIMEFRAME } = decodeQueryString<{ p?: TIMEFRAME }>()\r\n return ReactDOM.createPortal(\r\n ({\r\n ...chart,\r\n dateRange:\r\n FinvizSettings.hasUserPremium || FREE_DATE_RANGES.includes(chart.dateRange ?? '')\r\n ? chart.dateRange\r\n : null,\r\n })),\r\n theme,\r\n }}\r\n parentElement={chartEl}\r\n />,\r\n chartEl\r\n )\r\n }\r\n return null\r\n}\r\n\r\nfunction InsiderTradingVolumeChart() {\r\n const chartEl = document.getElementById('insider-trading-chart')\r\n\r\n if (chartEl)\r\n return ReactDOM.createPortal(\r\n \r\n \r\n ,\r\n chartEl\r\n )\r\n}\r\n\r\nenum QuotePageType {\r\n StockDetail = 'stockDetail',\r\n Idea = 'idea',\r\n Perf = 'perf',\r\n Options = 'options',\r\n}\r\n\r\nfunction getQuotePageType() {\r\n const { ty, i } = decodeQueryString()\r\n\r\n if (ty === 'p') {\r\n return QuotePageType.Perf\r\n }\r\n if (ty === 'oc') {\r\n return QuotePageType.Options\r\n }\r\n if (i) {\r\n return QuotePageType.Idea\r\n }\r\n\r\n return QuotePageType.StockDetail\r\n}\r\n\r\nfunction getQuoteHeaderElement() {\r\n const quotePageType = getQuotePageType()\r\n\r\n if ([QuotePageType.StockDetail, QuotePageType.Idea].includes(quotePageType)) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const config = window.globalChartConfig\r\n if (config) {\r\n return \r\n }\r\n\r\n return null\r\n}\r\n\r\nconst ReactComponentsContainer = () => {\r\n const { isStockDetailUpdating } = useStockDetailUpdater()\r\n const quotePageType = getQuotePageType()\r\n const isPerfQuotePage = quotePageType === QuotePageType.Perf\r\n const isOptionsQuotePage = quotePageType === QuotePageType.Options\r\n const hasConfig = window.globalChartConfig\r\n\r\n useCheckNonIdeaChartMissingConfig()\r\n\r\n return (\r\n \r\n {hasConfig || isPerfQuotePage || isOptionsQuotePage ? (\r\n \r\n \r\n \r\n ) : null}\r\n {hasConfig && !isOptionsQuotePage && !isPerfQuotePage && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nready(() => {\r\n const statementsEl = document.getElementById('statements')\r\n if (statementsEl && window['fetch']) {\r\n const root = ReactDOMClient.createRoot(statementsEl)\r\n root.render()\r\n }\r\n\r\n const etfHoldingsEl = document.getElementById('js-etf-holdings')\r\n if (etfHoldingsEl) {\r\n const root = ReactDOMClient.createRoot(etfHoldingsEl)\r\n root.render(\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const faEl = document.getElementById('js-quote-fa')\r\n if (faEl) {\r\n const root = ReactDOMClient.createRoot(faEl)\r\n root.render()\r\n }\r\n\r\n const reactRootElement = document.getElementById('react-root')\r\n const quoteHeaderRoot = document.getElementById(QUOTE_HEADER_ROOT)\r\n\r\n if (FinvizSettings.quoteData) {\r\n Quote.create(FinvizSettings.quoteData)\r\n }\r\n\r\n if (window.globalChartConfig && !window.globalChartConfig.idea) {\r\n window.globalChartConfig = getInitChartConfig()\r\n }\r\n\r\n if (reactRootElement) {\r\n if (window.globalChartConfig?.ideaQuotes) {\r\n initIdeaQuotes(window.globalChartConfig.ideaQuotes, window.globalChartConfig)\r\n }\r\n\r\n const root = ReactDOMClient.createRoot(reactRootElement)\r\n\r\n root.render(\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n if (quoteHeaderRoot) {\r\n const quoteHeaderElement = getQuoteHeaderElement()\r\n if (quoteHeaderElement) {\r\n const root = ReactDOMClient.createRoot(quoteHeaderRoot)\r\n root.render(quoteHeaderElement)\r\n }\r\n }\r\n\r\n RenderMenuLinks()\r\n\r\n if (document.getElementById('app') && window['FinvizQuoteTickers']) {\r\n const appEl = document.getElementById('app')\r\n const root = ReactDOMClient.createRoot(appEl!)\r\n root.render()\r\n }\r\n})\r\n\r\nconst revealRatingButtonsCollection = document.getElementsByClassName('js-reveal-ratings-button')\r\nconst revealRatingButtons = Array.from(revealRatingButtonsCollection) as HTMLButtonElement[]\r\nrevealRatingButtons.forEach((revealRatingButton) => {\r\n revealRatingButton.onclick = (e) => {\r\n e.preventDefault()\r\n const ratingsRowWithTable = revealRatingButton.previousElementSibling\r\n\r\n ratingsRowWithTable?.querySelectorAll('table tr').forEach((rating, index, rows) => {\r\n if (rating.classList.contains('is-last')) {\r\n rating.classList.remove('is-last')\r\n }\r\n\r\n rating.classList.remove('hidden')\r\n\r\n if (index === rows.length - 1) {\r\n rating.classList.add('is-last')\r\n }\r\n })\r\n\r\n revealRatingButton.classList.add('hidden')\r\n window.gtag && window.gtag('event', 'click', { event_category: 'reveal-ratings' })\r\n }\r\n})\r\n","import React from 'react'\r\n\r\nimport { Dialog, useDialogState } from '../../../main/components/dialog'\r\nimport { Spinner } from '../../../main/components/spinner'\r\nimport { useAsyncModule } from '../../../main/services/async-modules-utils'\r\nimport { decodeQueryString } from '../../queryString'\r\nimport { saveToPortfolioAsyncModule } from '../save-to-portfolio/async-modules'\r\n\r\ntype SaveToPortfolioLinkProps = {\r\n index: number\r\n}\r\n\r\nexport default function SaveToPortfolioLink({ index }: SaveToPortfolioLinkProps) {\r\n const { t } = decodeQueryString()\r\n const urlTicker = t.split(',')[index]\r\n const dialog = useDialogState()\r\n const isVisible = dialog.useState('open')\r\n\r\n const [saveToPortfolioModule] = useAsyncModule({\r\n ...saveToPortfolioAsyncModule,\r\n shouldLoadModule: isVisible,\r\n })\r\n const SaveToPortfolio = saveToPortfolioModule?.SaveToPortfolio\r\n\r\n return (\r\n <>\r\n {\r\n window.gtag?.('event', 'click', { event_category: 'save-to-portfolio' })\r\n if (e.ctrlKey || e.metaKey) return\r\n e.preventDefault() // needed to prevent opening parent link\r\n dialog.show()\r\n }}\r\n >\r\n Save to Portfolio\r\n \r\n \r\n {SaveToPortfolio ? (\r\n \r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { Dialog, useDialogState } from '../../../main/components/dialog'\r\nimport { Spinner } from '../../../main/components/spinner'\r\nimport { useAsyncModule } from '../../../main/services/async-modules-utils'\r\nimport { decodeQueryString } from '../../queryString'\r\nimport { createAlertAsyncModule } from '../create-alert/async-modules'\r\n\r\ntype CreateAlertLinkProps = {\r\n index: number\r\n}\r\n\r\nexport default function CreateAlertLink({ index }: CreateAlertLinkProps) {\r\n const { t } = decodeQueryString()\r\n const urlTicker = t.split(',')[index]\r\n const dialog = useDialogState()\r\n const isVisible = dialog.useState('open')\r\n\r\n const [createAlertModule] = useAsyncModule({\r\n ...createAlertAsyncModule,\r\n shouldLoadModule: isVisible,\r\n })\r\n const CreateAlert = createAlertModule?.CreateAlert\r\n\r\n return (\r\n <>\r\n {\r\n window.gtag?.('event', 'click', { event_category: 'create-alert' })\r\n if (e.ctrlKey || e.metaKey) return\r\n e.preventDefault() // needed to prevent opening parent link\r\n dialog.show()\r\n }}\r\n >\r\n Create Alert\r\n \r\n \r\n {CreateAlert ? (\r\n \r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import { isForexFuturesCryptoPage } from 'finviz-charts/app/utils/chart'\r\nimport * as React from 'react'\r\n\r\nimport { TIMEFRAME } from '../../main/constants'\r\nimport { useWindowSize } from '../../main/hooks/use-window-size'\r\nimport { getIntradayChartConfig, useChartLayoutGlobalModelAsync, useModelState } from '../charts-lib'\r\n\r\nexport function getChartLayoutSizeConfig(\r\n layoutConfig: Pick<\r\n typeof window.globalChartConfig,\r\n 'idea' | 'barWidth' | 'barMargin' | 'charts' | 'specificChartFunctionality'\r\n >,\r\n p = TIMEFRAME.d\r\n) {\r\n const { clientWidth } = document.body\r\n const { premarket, aftermarket, dateRange } = layoutConfig.charts[0]\r\n const maxChartWidth = clientWidth - 40 // 40px left right chart padding = (19px * 2 for margin left/right) + (1px * 2 for border)\r\n let width = 990\r\n let barWidth = 3\r\n let barMargin = 1\r\n let timeframeMinutes = 0\r\n const isForexFuturesCrypto =\r\n layoutConfig.specificChartFunctionality && isForexFuturesCryptoPage(layoutConfig.specificChartFunctionality)\r\n\r\n switch (p) {\r\n case TIMEFRAME.i1:\r\n timeframeMinutes = 1\r\n barWidth = 1\r\n if (premarket || aftermarket || clientWidth < 1650) {\r\n barMargin = 0\r\n }\r\n break\r\n case TIMEFRAME.i2:\r\n timeframeMinutes = 2\r\n break\r\n case TIMEFRAME.i3:\r\n timeframeMinutes = 3\r\n if (premarket && aftermarket && clientWidth <= 1505) {\r\n barWidth = 2\r\n }\r\n break\r\n case TIMEFRAME.i5:\r\n timeframeMinutes = 5\r\n barWidth = 5\r\n barMargin = clientWidth >= 1100 ? 2 : 1\r\n break\r\n case TIMEFRAME.i10:\r\n width = 1058 // 39bars per day * 5days * 5px per bar + 35px left offset + 48px right offset\r\n barMargin = 0\r\n break\r\n case TIMEFRAME.i15:\r\n case TIMEFRAME.i30:\r\n width = 1019\r\n break\r\n case TIMEFRAME.h:\r\n width = 1008\r\n break\r\n case TIMEFRAME.h2:\r\n case TIMEFRAME.h4:\r\n width = 1020\r\n break\r\n case TIMEFRAME.d:\r\n width = 1282\r\n break\r\n case TIMEFRAME.w:\r\n case TIMEFRAME.m:\r\n width = 994\r\n break\r\n }\r\n\r\n switch (p) {\r\n case TIMEFRAME.i1:\r\n case TIMEFRAME.i2:\r\n case TIMEFRAME.i3:\r\n case TIMEFRAME.i5:\r\n const commonProps = {\r\n timeframeMinutes,\r\n barWidthWithMargin: barWidth + 2 + barMargin,\r\n hasAftermarket: aftermarket,\r\n hasPremarket: premarket,\r\n }\r\n width = getIntradayChartConfig({\r\n ...commonProps,\r\n maxWidth: maxChartWidth,\r\n canCropChart: !dateRange,\r\n }).chartWidthWithOffset\r\n break\r\n }\r\n\r\n // If FFC chart use DAILY type width\r\n if (isForexFuturesCrypto) width = 1282\r\n\r\n // If chart is wider than available space in vieport override width\r\n if (maxChartWidth <= width) {\r\n width = Math.max(994, maxChartWidth)\r\n if (p === TIMEFRAME.d) {\r\n barWidth = 2\r\n barMargin = 0\r\n width = 991\r\n }\r\n }\r\n\r\n // If idea chart or FFC chart use bar configs from layout\r\n if (layoutConfig.idea || isForexFuturesCrypto) {\r\n barWidth = layoutConfig.barWidth\r\n barMargin = layoutConfig.barMargin\r\n }\r\n\r\n return {\r\n width,\r\n barWidth,\r\n barMargin,\r\n }\r\n}\r\n\r\nexport function useChartLayoutWidthWatch() {\r\n const { innerWidth } = useWindowSize()\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n const unwatchedFirstChart = React.useMemo(() => chartLayoutModel?.charts().all()[0] ?? null, [chartLayoutModel])\r\n const chartModel = useModelState(unwatchedFirstChart, { watchProperties: ['quote'] })\r\n const quote = useModelState(chartModel?.quote() ?? null, { watchProperties: ['ticker', 'timeframe', 'isFetching'] })\r\n const ideaId = chartLayoutModel?.idea?.id\r\n\r\n React.useEffect(() => {\r\n const settings = !ideaId ? chartLayoutModel?.settings : null\r\n const timeframe = quote?.timeframe\r\n if (chartLayoutModel && timeframe && settings) {\r\n const { width, barWidth, barMargin } = getChartLayoutSizeConfig(chartLayoutModel.toConfig(), timeframe)\r\n const newSettings = JSON.parse(JSON.stringify(settings))\r\n newSettings.ChartSettings.center.barWidth = barWidth\r\n newSettings.IndicatorSettings.center.barWidth = barWidth\r\n newSettings.ChartSettings.center.barMargin = barMargin\r\n newSettings.IndicatorSettings.center.barMargin = barMargin\r\n chartLayoutModel.updateAttributes({ width, settings: newSettings })\r\n }\r\n // We don't want to trigger this effect on any chartLayoutModel change\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [quote?.premarket, quote?.aftermarket, quote?.timeframe, ideaId, innerWidth])\r\n}\r\n","import throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\ninterface Props {\r\n throttleWaitInMs?: number\r\n isWatching?: boolean\r\n}\r\n\r\nexport function useWindowSize({ throttleWaitInMs = 300, isWatching = true }: Props = {}) {\r\n const [size, setSize] = React.useState({\r\n innerWidth: window.innerWidth,\r\n innerHeight: window.innerHeight,\r\n })\r\n\r\n React.useEffect(() => {\r\n if (!isWatching) return\r\n\r\n const handleResize = throttle(() => {\r\n setSize({\r\n innerWidth: window.innerWidth,\r\n innerHeight: window.innerHeight,\r\n })\r\n }, throttleWaitInMs)\r\n\r\n window.addEventListener('resize', handleResize)\r\n\r\n return () => {\r\n handleResize.cancel()\r\n window.removeEventListener('resize', handleResize)\r\n }\r\n }, [throttleWaitInMs, isWatching])\r\n\r\n return size\r\n}\r\n","import { SpecificChartFunctionality } from '../../main/constants'\r\nimport { ChartConfigChartPaneElement, Instrument, LayoutType, ScaleType, TIMEFRAME, Theme } from '../charts-lib'\r\nimport { getParsedCookies } from './cookie'\r\n\r\ninterface PaneElementProps extends ChartConfigChartPaneElement {\r\n label?: string\r\n fromDate?: string\r\n toDate?: string\r\n min?: number\r\n tickers: string[]\r\n}\r\n\r\ninterface StaticChartConfigProps {\r\n width?: number\r\n height?: number\r\n ticker: string\r\n timeframe: TIMEFRAME\r\n paneElements: PaneElementProps[]\r\n specificChartFunctionality?: SpecificChartFunctionality\r\n colorsOverride?: Array\r\n theme?: Theme\r\n colors?: ReturnType\r\n refreshData?: boolean\r\n}\r\n\r\nexport function getStaticChartConfig({\r\n width = 800,\r\n height = 400,\r\n ticker,\r\n timeframe,\r\n paneElements,\r\n specificChartFunctionality = SpecificChartFunctionality.default,\r\n colorsOverride,\r\n theme,\r\n colors = getCustomColorsFromCookies(),\r\n refreshData = false,\r\n}: StaticChartConfigProps) {\r\n return {\r\n layout: LayoutType['1h1v'],\r\n width,\r\n height,\r\n barWidth: 1,\r\n barMargin: 0,\r\n scrollable: false,\r\n editable: false,\r\n specificChartFunctionality,\r\n colorsOverride,\r\n theme,\r\n colors,\r\n charts: [\r\n {\r\n width: 0,\r\n premarket: false,\r\n aftermarket: false,\r\n dateRange: null,\r\n height,\r\n timeframe,\r\n scale: ScaleType.Linear,\r\n ticker: ticker,\r\n leftOffset: 0,\r\n instrument: Instrument.Stock,\r\n refreshData,\r\n stretch: true,\r\n panes: [\r\n {\r\n height,\r\n elements: paneElements,\r\n },\r\n ],\r\n },\r\n ],\r\n }\r\n}\r\n\r\nexport function getCustomColorsFromCookies() {\r\n try {\r\n return JSON.parse(getParsedCookies('customColors') as string)\r\n } catch {\r\n return undefined\r\n }\r\n}\r\n","import * as React from 'react'\r\n\r\nimport * as tracking from '../tracking'\r\n\r\nexport const IC_PUBLISHER_ID = 'df0d0d52-cc7f-11e8-82a5-0abbb61c4a6a'\r\n\r\nenum AdTagName {\r\n IC_TickerInContent = 'IC_D_3x3',\r\n IC_MapsLeftRail = 'IC_D_125x125',\r\n IC_Statements = 'IC_D_300x60',\r\n IC_Groups = 'IC_D_300x250',\r\n}\r\n\r\nconst tagDefinition = {\r\n [AdTagName.IC_TickerInContent]: { placements: 3, style: { width: 970, minHeight: 250 } },\r\n [AdTagName.IC_MapsLeftRail]: { placements: 2, style: { width: 125, minHeight: 125 } },\r\n [AdTagName.IC_Statements]: { placements: 1, style: { width: 300, minHeight: 60 } },\r\n [AdTagName.IC_Groups]: { placements: 1, style: { width: 336, minHeight: 280 } },\r\n}\r\n\r\nconst hasInvestingChannelAds = tracking.getAdsProvider() === tracking.AdsProvider.InvestingChannel\r\n\r\n/**\r\n * Get create/destroy methods to control ads insertion\r\n */\r\nexport function getInvestingChannelPage() {\r\n var page: ICPageReturn\r\n\r\n function create() {\r\n try {\r\n if (hasInvestingChannelAds) {\r\n window.InvestingChannelQueue?.push(() => {\r\n let config = window['FINVIZ_IC_UAT_CONFIG'] ?? {}\r\n page = window.InvestingChannel?.UAT.Run(IC_PUBLISHER_ID, config)\r\n })\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n\r\n function destroy() {\r\n try {\r\n if (hasInvestingChannelAds) {\r\n window.InvestingChannelQueue?.push(() => {\r\n page?.destroy()\r\n })\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n\r\n return { create, destroy }\r\n}\r\n\r\n/**\r\n * Hook which recreates ads on deps change (SPA navigation,…)\r\n */\r\nexport function useInvestingChannelAds(deps: unknown[] = []) {\r\n React.useLayoutEffect(() => {\r\n const page = getInvestingChannelPage()\r\n\r\n page.create()\r\n\r\n return () => page.destroy()\r\n // eslint cannot statically check the dependencies and complains about it\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps)\r\n\r\n return hasInvestingChannelAds\r\n}\r\n\r\ninterface AdTagProps extends Omit, 'name'> {\r\n /**\r\n * Name of the ad tag\r\n */\r\n name: keyof typeof AdTagName\r\n\r\n /**\r\n * Manually set the placement position for this tag\r\n *\r\n * @default 1\r\n */\r\n position?: number\r\n\r\n /**\r\n * Additional class names for the wrapper div\r\n */\r\n className?: string\r\n}\r\n\r\nexport function AdTag({ name, position = 1, ...props }: AdTagProps) {\r\n const tagName = AdTagName[name]\r\n const tagProps = tagDefinition[tagName]\r\n const placementName = `${tagName}_${Math.min(Math.max(position, 1), tagProps.placements)}`\r\n\r\n if (!hasInvestingChannelAds) return null\r\n\r\n return
\r\n}\r\n","import { ShrtflConfig } from 'finviz-charts/app/indicators/configs/shrtfl'\r\nimport { ShrtraConfig } from 'finviz-charts/app/indicators/configs/shrtra'\r\nimport { Position } from 'finviz-charts/types/shared'\r\n\r\nimport { QuoteRoutes } from '../../main/constants'\r\nimport { Utils, convertTa } from '../charts-lib'\r\nimport { decodeQueryString } from '../queryString'\r\n\r\nexport function getInitChartConfig() {\r\n const { ty } = decodeQueryString<{ ty?: string }>()\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 let finvizSettingsTa = FinvizSettings.TA\r\n const COTs = FinvizSettings.COTs\r\n if (ty === QuoteRoutes.ShortInterest) {\r\n finvizSettingsTa = {\r\n ...finvizSettingsTa,\r\n overlays: [],\r\n indicators: [\r\n {\r\n name: ShrtflConfig.abbreviation,\r\n parameters: '',\r\n position: Position.Below,\r\n },\r\n {\r\n name: ShrtraConfig.abbreviation,\r\n parameters: '',\r\n position: Position.Below,\r\n },\r\n ],\r\n }\r\n }\r\n convertTa.mergeChartAndTAConfig(window.globalChartConfig, finvizSettingsTa, 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.IntradayReduced]: redGreenGradient,\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.IntradayReduced]: redGreenGradientBubbles,\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","export enum StatsQuery {\r\n Weighting = 'w',\r\n ChartType = 'ty',\r\n}\r\n\r\nexport enum StatsWeight {\r\n Count = 'c',\r\n MarketCap = 'm',\r\n}\r\n\r\nexport enum StatsChartType {\r\n Pie = 'p',\r\n Bar = 'b',\r\n Table = 't',\r\n}\r\n\r\nexport interface StatsDataRow {\r\n label: string\r\n value: number\r\n}\r\n\r\nexport interface StatsGroup {\r\n [StatsWeight.Count]: StatsDataRow[]\r\n [StatsWeight.MarketCap]: StatsDataRow[]\r\n}\r\n\r\nexport interface StatsData {\r\n sectors: StatsGroup\r\n marketCap: StatsGroup\r\n countries: StatsGroup\r\n industries: StatsGroup\r\n}\r\n\r\nexport type StatsRounding = 'regular' | 'none'\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button, ButtonComponentProps, ButtonProps } from './button'\r\nimport { Paragraph } from './typography'\r\n\r\ninterface Props {\r\n children: (React.ReactElement | null)[]\r\n label: string\r\n size?: ButtonProps['size']\r\n rounding?: ButtonProps['rounding']\r\n}\r\n\r\nexport function ChipSwitch({ children, label, size, rounding }: Props) {\r\n return (\r\n
\r\n {label && (\r\n \r\n {label}\r\n \r\n )}\r\n\r\n {React.Children.map(children, (child: React.ReactElement | null) => {\r\n if (React.isValidElement(child) && child.type === Button) {\r\n return React.cloneElement(child, {\r\n size,\r\n rounding,\r\n theme: child.props.theme ?? 'chipTransparent',\r\n className: classnames(child.props.className, {\r\n // @todo - these style should be applied globally onto all chipTransparent buttons\r\n '!text-gray-600 dark:!text-gray-400': !child.props.active,\r\n '!text-gray-800 dark:!text-white': child.props.active,\r\n }),\r\n })\r\n }\r\n\r\n return child\r\n })}\r\n
\r\n )\r\n}\r\n\r\nexport const ChipSwitchButton = Button\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 * as React from 'react'\r\n\r\nimport { getCookie } from '../../../app/shared/cookie'\r\nimport { setCookieRequest } from '../../services/api'\r\n\r\n/*\r\n * Context.\r\n */\r\nexport type FinancialsTableSettingsType = Record\r\n\r\nexport type FinancialsTableScrollInfo = {\r\n yPosition: number\r\n}\r\n\r\nexport interface FinancialsTableContextProps {\r\n settings: T\r\n setSettings: (settings: T) => void\r\n scrollInfo?: FinancialsTableScrollInfo\r\n}\r\n\r\nexport const FinancialsTableContext = React.createContext>({\r\n settings: {},\r\n setSettings: () => null,\r\n scrollInfo: undefined,\r\n})\r\n\r\n/*\r\n * Hook.\r\n */\r\n\r\nexport function useFinancialsTableContext() {\r\n return React.useContext(FinancialsTableContext) as FinancialsTableContextProps\r\n}\r\n\r\n/*\r\n * Component.\r\n */\r\n\r\ninterface Props {\r\n children: React.ReactNode\r\n defaultSettings: FinancialsTableSettingsType\r\n cookieKey: string\r\n}\r\n\r\nexport const FinancialsTableContextProvider = ({ children, cookieKey, defaultSettings }: Props) => {\r\n const [scrollInfo, setScrollInfo] = React.useState()\r\n const [settings, setSettings] = React.useState(() => {\r\n const cookieValue = decodeURIComponent(getCookie(cookieKey))\r\n if (cookieValue.length === 0) return defaultSettings\r\n\r\n try {\r\n return { ...defaultSettings, ...JSON.parse(cookieValue) } as FinancialsTableSettingsType\r\n } catch {\r\n return defaultSettings\r\n }\r\n })\r\n\r\n const handleSetSettingsChange = (settings: FinancialsTableSettingsType) => {\r\n setScrollInfo({ yPosition: window.scrollY })\r\n setSettings(settings)\r\n setCookieRequest(cookieKey, JSON.stringify(settings))\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import classNames from 'classnames'\r\n\r\nimport { TableAlign, TableBody, TableCell, TableRow } from '../Table'\r\nimport { Checkbox } from '../checkbox'\r\nimport {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubColumnDefinition,\r\n FinancialsSubRowDataType,\r\n} from './types'\r\n\r\ntype FinancialsTableRowProps<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n> = {\r\n data: RowDataType\r\n columns: ColumnDefinition[]\r\n subColumns: Record[]>\r\n onVisibilityChange: (area: string, visibility: boolean) => void\r\n isFirst: boolean\r\n isLast: boolean\r\n}\r\n\r\nexport default function FinancialsTableRow<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n>({\r\n data,\r\n columns,\r\n subColumns,\r\n onVisibilityChange,\r\n isFirst,\r\n isLast,\r\n}: FinancialsTableRowProps) {\r\n const { id, label, isSelected, color, subData } = data\r\n\r\n return (\r\n {\r\n onVisibilityChange(id, !isSelected)\r\n }}\r\n >\r\n \r\n \r\n {label}}\r\n className=\"cursor-pointer\"\r\n color={color}\r\n size=\"none\"\r\n />\r\n \r\n\r\n {columns.map((column) => (\r\n \r\n {column.renderColumn(data)}\r\n \r\n ))}\r\n \r\n {subData.map((item, index, array) => (\r\n \r\n \r\n {item.label}\r\n \r\n {subColumns[item.id].map((column) => (\r\n \r\n {column.renderColumn(item as SubColumnDefinition)}\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { Table } from '../Table'\r\nimport FinancialsTableRow from './FinancialsTableRow'\r\nimport {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubColumnDefinition,\r\n FinancialsSubRowDataType,\r\n} from './types'\r\n\r\ntype FinancialsTableProps<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n> = {\r\n tableHead?: React.ReactNode\r\n tableFooter?: React.ReactNode\r\n data: RowDataType[]\r\n columns: ColumnDefinition[]\r\n subColumns: Record[]>\r\n onVisibilityChange: (area: string, visibility: boolean) => void\r\n}\r\n\r\nexport default function FinancialsTable<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n>({\r\n tableHead,\r\n tableFooter,\r\n columns,\r\n subColumns,\r\n data,\r\n onVisibilityChange,\r\n}: FinancialsTableProps) {\r\n return (\r\n \r\n {tableHead}\r\n {data.map((row, index) => (\r\n \r\n ))}\r\n {tableFooter}\r\n
\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport FinancialsTable from './FinancialsTable'\r\nimport {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubColumnDefinition,\r\n FinancialsSubRowDataType,\r\n} from './types'\r\n\r\ntype FinancialsWidgetProps<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n> = {\r\n children: React.ReactNode\r\n header?: React.ReactNode\r\n tableHead?: React.ReactNode\r\n tableFooter?: React.ReactNode\r\n data: RowDataType[]\r\n columns: ColumnDefinition[]\r\n subColumns: Record[]>\r\n onVisibilityChange: (area: string, visibility: boolean) => void\r\n}\r\n\r\nexport function FinancialsWidget<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n>({\r\n children,\r\n tableHead,\r\n tableFooter,\r\n columns,\r\n subColumns,\r\n header,\r\n data,\r\n onVisibilityChange,\r\n}: FinancialsWidgetProps) {\r\n return (\r\n
\r\n
\r\n {header}\r\n {children}\r\n
\r\n \r\n
\r\n )\r\n}\r\n","import { FinancialsRowValue } from './types'\r\n\r\nexport function getYoYData(data: T[]) {\r\n const yoyData: Array<{ year: string; change: number | null; changePct: number | null }> = []\r\n const valuesHelpArray: number[] = []\r\n\r\n const valuesArray = [...data].sort((a, b) => Number.parseInt(a.year) - Number.parseInt(b.year))\r\n\r\n valuesArray.forEach(({ year, value }, i) => {\r\n if (typeof value !== 'number') return\r\n valuesHelpArray.push(value)\r\n\r\n const prev = valuesHelpArray[i - 1]\r\n if (prev === undefined || value === 0 || prev === 0) {\r\n yoyData.push({ year, change: null, changePct: null })\r\n } else {\r\n yoyData.push({ year, change: value - prev, changePct: ((value - prev) / Math.abs(prev)) * 100 })\r\n }\r\n })\r\n\r\n return yoyData.reduce<{\r\n change: Record\r\n changePct: Record\r\n }>(\r\n (acc, { year, change, changePct }) => ({\r\n change: {\r\n ...acc.change,\r\n [year]: change,\r\n },\r\n changePct: {\r\n ...acc.changePct,\r\n [year]: changePct,\r\n },\r\n }),\r\n { change: {}, changePct: {} }\r\n )\r\n}\r\n\r\nexport function getIsCompact(numOfCols: number, barWidth: number) {\r\n // ~1400 is max container width\r\n const maxContainerWidth = Math.min(window.innerWidth, 1400)\r\n\r\n const barsWindowWidthRatio = (barWidth * numOfCols) / maxContainerWidth\r\n return barsWindowWidthRatio > 0.65\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","import * as React from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\n\r\nimport { decodeQueryString } from '../../app/queryString'\r\n\r\nexport function useCheckNonIdeaChartMissingConfig() {\r\n const location = useLocation()\r\n\r\n React.useEffect(() => {\r\n // Navigation (back/forward) from nonexisting idea page doesn't fully reload the page\r\n // So if we're on non idea page and have still isIdeaNotFoundPage flag we want to reload the page\r\n const { i } = decodeQueryString(location.search)\r\n if (!i && window.isIdeaNotFoundPage) {\r\n window.location.reload()\r\n }\r\n }, [location.search])\r\n}\r\n","import throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nexport function getVisualViewport(visualViewport: VisualViewport | null) {\r\n const width = visualViewport?.width ?? window.innerWidth\r\n const height = visualViewport?.height ?? window.innerHeight\r\n const scale = visualViewport?.scale ?? 1\r\n\r\n return {\r\n top: visualViewport?.offsetTop ?? 0,\r\n left: visualViewport?.offsetLeft ?? 0,\r\n scale: Math.round((1 / scale) * 100) / 100,\r\n width: Math.round(width * scale),\r\n height: Math.round(height * scale),\r\n unscaledWidth: width,\r\n unscaledHeight: height,\r\n }\r\n}\r\n\r\nexport function useVisualViewport({ enabled = true, onScroll = true }: { enabled?: boolean; onScroll?: boolean } = {}) {\r\n const [viewport, setViewport] = React.useState(getVisualViewport(window.visualViewport))\r\n\r\n React.useEffect(() => {\r\n if (!enabled) return\r\n\r\n const handleChange = throttle((ev: Event) => {\r\n const viewport = ev.currentTarget as VisualViewport\r\n if (viewport) {\r\n setViewport(() => getVisualViewport(viewport))\r\n }\r\n }, 50)\r\n\r\n window.visualViewport?.addEventListener('resize', handleChange)\r\n if (onScroll) window.visualViewport?.addEventListener('scroll', handleChange)\r\n handleChange({ currentTarget: window.visualViewport } as Event)\r\n\r\n return () => {\r\n window.visualViewport?.removeEventListener('resize', handleChange)\r\n window.visualViewport?.removeEventListener('scroll', handleChange)\r\n }\r\n }, [enabled, onScroll])\r\n\r\n return React.useMemo(() => ({ viewport, setViewport }), [viewport])\r\n}\r\n","import Quote from 'finviz-charts/app/models/quote'\r\n\r\nimport { convertTa } from '../../../app/charts-lib'\r\nimport { ObjectHash } from '../../components/types'\r\nimport { getInstrumentForTicker } from '../../util'\r\n\r\nconst PADDING = 2 // Border widths\r\n\r\nexport function getChartsDimensions(chartElementId: string) {\r\n const containerElement = document.getElementById(chartElementId)\r\n\r\n const box = containerElement?.getBoundingClientRect()\r\n\r\n return {\r\n width: Math.max((box?.width ?? 0) - PADDING, 0),\r\n height: Math.max((box?.height ?? 0) - PADDING, 0),\r\n }\r\n}\r\n\r\nexport function getChartConfig(idea: any, chartElementId: string) {\r\n const chartsDimensions = getChartsDimensions(chartElementId)\r\n\r\n if (idea) {\r\n const chartConfig = Object.assign({}, FinvizChartsSettings.ideaChart, {\r\n colors: FinvizChartsSettings.colors,\r\n width: chartsDimensions.width,\r\n height: chartsDimensions.height,\r\n scrollable: true,\r\n editors: ['layout', 'settings', 'publish', 'tools'],\r\n })\r\n for (let i = 0; i < chartConfig.charts.length; i++) {\r\n if (!chartConfig.charts[i].instrument) {\r\n chartConfig.charts[i].instrument = 'stock'\r\n }\r\n }\r\n\r\n return chartConfig\r\n }\r\n\r\n return {\r\n newCharts: true,\r\n width: chartsDimensions.width,\r\n height: chartsDimensions.height,\r\n barWidth: 3,\r\n barMargin: 1,\r\n scrollable: true,\r\n alignChartsToRight: true,\r\n theme: FinvizChartsSettings.theme,\r\n colors: FinvizChartsSettings.colors,\r\n editors: ['layout', 'settings', 'publish', 'tools'],\r\n layout: FinvizChartsSettings.layout,\r\n charts: FinvizChartsSettings.tickers.map(function (ticker: string, index: number) {\r\n return {\r\n timeframe: FinvizChartsSettings.periods[index],\r\n dateRange: FinvizChartsSettings.ranges[index],\r\n scale: FinvizChartsSettings.taConfig.scale || 'linear',\r\n ticker: ticker,\r\n instrument: getInstrumentForTicker(ticker),\r\n premarket: FinvizChartsSettings.taConfig.premarket,\r\n aftermarket: FinvizChartsSettings.taConfig.aftermarket,\r\n hasChartEvents: FinvizChartsSettings.taConfig.hasChartEvents,\r\n refreshData: true,\r\n panes: convertTa.getPanes(FinvizChartsSettings.taConfig),\r\n }\r\n }),\r\n }\r\n}\r\n\r\nexport const initIdeaQuotes = (quotes: Array, ideaChart: ObjectHash) => {\r\n const hasPatterns = JSON.stringify(ideaChart).includes('patterns')\r\n\r\n for (let i = 0; i < quotes.length; i++) {\r\n const quote = quotes[i]\r\n\r\n if (quote.timeframe === 'i1' || quote.timeframe === 'i3' || quote.timeframe === 'i5' || quote.timeframe === 'i15') {\r\n if (!quote.hasOwnProperty('drawMinutesPerDay')) {\r\n quote.drawMinutesPerDay = quote.timeframe === 'i15' ? 390 : 420\r\n }\r\n\r\n if (!quote.hasOwnProperty('marketStartMinutes')) {\r\n quote.marketStartMinutes = quote.timeframe === 'i15' ? 570 : 540\r\n }\r\n\r\n if (!quote.hasOwnProperty('premarketLengthMinutes')) {\r\n quote.premarketLengthMinutes = quote.timeframe === 'i15' ? 0 : 30\r\n }\r\n\r\n if (!quote.hasOwnProperty('aftermarketLengthMinutes')) {\r\n quote.aftermarketLengthMinutes = 0\r\n }\r\n }\r\n\r\n if (!quote.hasOwnProperty('hasPatterns')) {\r\n quote.hasPatterns = hasPatterns\r\n }\r\n\r\n quote.ideaID = ideaChart.idea.id\r\n\r\n Quote.create(quote)\r\n }\r\n}\r\n","/**\n * React Router DOM v6.26.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 * as ReactDOM from 'react-dom';\nimport { UNSAFE_mapRouteProperties, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, 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, replace, resolvePath, useActionData, useAsyncError, useAsyncValue, useBlocker, 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, IDLE_FETCHER, matchPath } from '@remix-run/router';\nexport { UNSAFE_ErrorResponseImpl } 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