import re
from functools import lru_cache

keys = {
    'Platts' : 'Code',
    'ICE' : 'Symbol',
}


c = {
'Platts_EB': [
  'AAGMK00',
  'AAGML00',
  'AAGMM00',
  'AAGMN00',
  'AAHYH00',
  'AAHYI00',
  'AAHYJ00',
  'AAHYK00',
  'AAHYL00',
  'AAHYM00',
  'AAIDL00',
  'AAIDM00',
  'AAIDN00',
  'AAIDO00',
  'AAIJH00',
  'AAIJI00',
  'AAIJJ00',
  'AAIJL00',
  'AAIJM00',
  'AAIJN00',
  'AAIJO00',
  'AAIJP00',
  'AAIJQ00',
  'AAIKM00',
  'AAIKN00',
  'AAIKO00',
  'AAIKP00',
  'AAJUS00',
  'AAJUT00',
  'AAJUV00',
  'AAJUW00',
  'AAKOD00',
  'AAKOE00',
  'AAKOF00',
  'AAKOG00',
  'AAKOH00',
  'AAKOI00',
  'AAKUV00',
  'AAKUV03',
  'AAKWP00',
  'AAKWQ00',
  'AAKWR00',
  'AAKWS00',
  'AALBJ00',
  'AALGL00',
  'AANWC00',
  'AANWC03',
  'AANWY00',
  'AANWY03',
  'AAOPW00',
  'AAOPW03',
  'AAOPX00',
  'AAOPX03',
  'AAOPY00',
  'AAOPY03',
  'AAOPZ00',
  'AAOPZ03',
  'AAOQA00',
  'AAOQA03',
  'AAOQB00',
  'AAOQB03',
  'AAOQC00',
  'AAOQC03',
  'AAOQD00',
  'AAOQD03',
  'AAOQZ00',
  'AAOQZ03',
  'AAOVN00',
  'AAOVN03',
  'AAPYV10',
  'AAPYV13',
  'AAPYW10',
  'AAPYW13',
  'AAPYX10',
  'AAPYX13',
  'AAPYY10',
  'AAPYY13',
  'AAQCD00',
  'AAQCD03',
  'AAQCE00',
  'AAQCE03',
  'AAQCF00',
  'AAQCF03',
  'AAQCG00',
  'AAQCG03',
  'AAQCH00',
  'AAQCH03',
  'AAQCI00',
  'AAQCI03',
  'AAQCJ00',
  'AAQCJ03',
  'AAQCK00',
  'AAQCK03',
  'AAQSG00',
  'AAQSH00',
  'AAQSI00',
  'AAQSJ00',
  'AAQSK00',
  'AAQSL00',
  'AAQSM00',
  'AAQZV00',
  'AAQZV03',
  'AARGT00',
  'AARGU00',
  'AARGV00',
  'AARIN00',
  'AARIO00',
  'AARIP00',
  'AARXM00',
  'AARXM03',
  'AARXN00',
  'AARXN03',
  'AASCR00',
  'AASCS00',
  'AASCT00',
  'AASCU00',
  'AASCV00',
  'AASCW00',
  'AASXR00',
  'AASXR03',
  'AAUCA00',
  'AAUCA03',
  'AAUCA04',
  'AAUCB00',
  'AAUCB03',
  'AAUCB04',
  'AAUHE00',
  'AAUHE03',
  'AAUQC00',
  'AAUQC03',
  'AAUQF00',
  'AAUQF03',
  'AAVBF00',
  'AAVBF03',
  'AAVBG00',
  'AAVBG03',
  'AAVBH00',
  'AAVBH03',
  'AAVJE00',
  'AAVJE03',
  'AAVJI00',
  'AAVJI03',
  'AAVJJ00',
  'AAVJJ03',
  'AAWGH00',
  'AAWGH03',
  'AAWGH04',
  'AAWGI00',
  'AAWGI03',
  'AAWGI04',
  'AAWGJ00',
  'AAWGJ03',
  'AAWGJ04',
  'AAWGK00',
  'AAWGK03',
  'AAWGK04',
  'AAWGY00',
  'AAWGY03',
  'AAWGY04',
  'AAWYY00',
  'AAWYY03',
  'AAWYZ00',
  'AAWYZ03',
  'AAWZA00',
  'AAWZA03',
  'AAWZB00',
  'AAWZB03',
  'AAWZC00',
  'AAWZC03',
  'AAWZD00',
  'AAWZD03',
  'AAXFQ00',
  'AAXFQ03',
  'AAXPM00',
  'AAXPM03',
  'AAXPN00',
  'AAXPN03',
  'AAXQL00',
  'AAXQL03',
  'AAXQL04',
  'AAYES00',
  'AAYET00',
  'AAYWR00',
  'AAYWR03',
  'AAYWS00',
  'AAYWS03',
  'AAYWT00',
  'AAYWT03',
  'AAYWY00',
  'AAYWY03',
  'AAZBN00',
  'AAZBN03',
  'AAZBO00',
  'AAZBO03',
  'ABWGF00',
  'ABWGF03',
  'ABWGG00',
  'ABWGG03',
  'ABWGH00',
  'ABWGH03',
  'ABWGI00',
  'ABWGI03',
  'ABWGK00',
  'ABWGK03',
  'ABWGL00',
  'ABWGL03',
  'ABWGM00',
  'ABWGM03',
  'ABWGN00',
  'ABWGN03',
  'ABWGO00',
  'ABWGO03',
  'ABWGP00',
  'ABWGP03',
  'ABWGQ00',
  'ABWGQ03',
  'ABWGR00',
  'ABWGR03',
  'ABWGS00',
  'ABWGS03',
  'ABWGT00',
  'ABWGT03',
  'ABWGU00',
  'ABWGU03',
  'ABWGV00',
  'ABWGV03',
  'ABWGW00',
  'ABWGW03',
  'ABWGX00',
  'ABWGX03',
  'ABWGY00',
  'ABWGY03',
  'ABWGZ00',
  'ABWGZ03',
  'ABWHA00',
  'ABWHA03',
  'ABWHB00',
  'ABWHB03',
  'ABWHC00',
  'ABWHC03',
  'ABWHD00',
  'ABWHD03',
  'ABWHE00',
  'ABWHE03',
  'ABWHF00',
  'ABWHF03',
  'ABWHG00',
  'ABWHG03',
  'ABWHH00',
  'ABWHH03',
  'ABWHI00',
  'ABWHI03',
  'ABWHJ00',
  'ABWHJ03',
  'ABWHK00',
  'ABWHK03',
  'ABWHL00',
  'ABWHL03',
  'ABWHM00',
  'ABWHM03',
  'ABWHO00',
  'ABWHO03',
  'ABWHP00',
  'ABWHP03',
  'ABWHQ00',
  'ABWHQ03',
  'ABXGA00',
  'ABXGA03',
  'ABXGB00',
  'ABXGB03',
  'ABXGC00',
  'ABXGC03',
  'ABXGD00',
  'ABXGD03',
  'ABXGE00',
  'ABXGE03',
  'ABXGF00',
  'ABXGF03',
  'ABXGG00',
  'ABXGG03',
  'ABXGH00',
  'ABXGH03',
  'ABXGI00',
  'ABXGI03',
  'ABXGJ00',
  'ABXGJ03',
  'ABXGK00',
  'ABXGK03',
  'ABXGL00',
  'ABXGL03',
  'ABXGM00',
  'ABXGM03',
  'ABXGN00',
  'ABXGN03',
  'ABXGO00',
  'ABXGO03',
  'ABXGP00',
  'ABXGP03',
  'ABXGQ00',
  'ABXGQ03',
  'ABXGR00',
  'ABXGR03',
  'ABXGS00',
  'ABXGS03',
  'ABXGT00',
  'ABXGT03',
  'ABXGU00',
  'ABXGU03',
  'ABXGV00',
  'ABXGV03',
  'ABXGW00',
  'ABXGW03',
  'ABXGX00',
  'ABXGX03',
  'ABXGY00',
  'ABXGY03',
  'ABXGZ00',
  'ABXGZ03',
  'ABXHA00',
  'ABXHA03',
  'ABXHB00',
  'ABXHB03',
  'ABXHC00',
  'ABXHC03',
  'ABXHD00',
  'ABXHD03',
  'ABXHE00',
  'ABXHE03',
  'ABXHF00',
  'ABXHF03',
  'AGEFA00',
  'AGEFA03',
  'AGEFB00',
  'AGEFB03',
  'AGEFC00',
  'AGEFC03',
  'AGEFE00',
  'AGEFE03',
  'AGEFS00',
  'AGNWA00',
  'AGNWA03',
  'AGNWC00',
  'AGNWC03',
  'AGNWD00',
  'AGNWD03',
  'AGNWE00',
  'AGNWE03',
  'AJWAA00',
  'AJWAB00',
  'FOLNC00',
  'FOLNC03',
  'FOLND00',
  'FOLND03',
  'MFCMM00',
  'MFCMM03',
  'MFFMM00',
  'MFFMM03',
  'PAAAH00',
  'PAAAH03',
  'PAAAI00',
  'PAAAI03',
  'PAAAJ00',
  'PAAAJ03',
  'PAAAK00',
  'PAAAK03',
  'PAAAL00',
  'PAAAL03',
  'PAAAM00',
  'PAAAM03',
  'PAAAN00',
  'PAABH00',
  'PAABH03',
  'PAABI00',
  'PAABI03',
  'PAABL00',
  'PAABL03',
  'PAABM00',
  'PAABM03',
  'PGAAJ00',
  'PGAAJ03',
  'PGAAK00',
  'PGAAK03',
  'PGAAL00',
  'PGAAL03',
  'PGABH00',
  'PGABI00',
  'PGABM00',
  'PGABM03',
  'PGABP00',
  'PGABP03',
  'PGABQ00',
  'PGABQ03',
  'PGABR00',
  'PGABR03',
  'PGABU00',
  'PGABV00',
  'PGABW00',
  'PGABX00',
  'PGABY00',
  'PGACF00',
  'PGACF03',
  'PGACG00',
  'PGACK00',
  'PGACZ00',
  'PGADA00',
  'PGADE00',
  'PGAMJ00',
  'PGAMJ03',
  'PGAML00',
  'PGAML03',
  'PGAMN00',
  'PGAMP00',
  'PGAMR00',
  'PHAKZ00',
  'PJAAT00',
  'PJAAU00',
  'PJAAU03',
  'PJAAV00',
  'PJAAV03',
  'PJABA00',
  'PJABA03',
  'PJADQ00',
  'PKAAE00',
  'PKAAF00',
  'PKAAG00',
  'PKAAG03',
  'PKAAI00',
  'PKAAN00',
  'PKAAN03',
  'PKABA00',
  'PKABA03',
  'PKABE00',
  'POAAA00',
  'POAAA03',
  'POAAB00',
  'POAAB03',
  'POAAC00',
  'POAAC03',
  'POAAD00',
  'POAAG00',
  'POAAH00',
  'POAAH03',
  'POAAI00',
  'POAAI03',
  'POAAJ00',
  'POAAJ03',
  'POAAP00',
  'POAAP03',
  'POAAQ00',
  'POAAQ03',
  'POAAR00',
  'POAAR03',
  'POAAW00',
  'POAAW03',
  'POAAX00',
  'POAAX03',
  'POADX00',
  'POADX03',
  'POAFI00',
  'PPAQB00',
  'PPAQD00',
  'PPAQF00',
  'PPAQH00',
  'PUAAJ00',
  'PUAAJ03',
  'PUAAK00',
  'PUAAK03',
  'PUAAL00',
  'PUAAL03',
  'PUAAM00',
  'PUAAM03',
  'PUAAP00',
  'PUAAP03',
  'PUAAY00',
  'PUAAY03',
  'PUAAZ00',
  'PUAAZ03',
  'PUABA00',
  'PUABA03',
  'PUABB00',
  'PUABB03',
  'PUABC00',
  'PUABC03',
  'PUAGA00',
  'PUAGB00',
  'PUAGN00',
  'PUAGN03',
  'PUAGO00',
  'PUAGO03',
  'PUAYW00',
  'PUAYW03',
  'PUBFW00',
  'PUBFX00',
  'PUBFY00',
  'PUMFD00',
  'PUMFD03',
  'PUMFE00',
  'PUMFE03',
  'PVMFD00',
  'PVMFD03'],
'Platts_RP': ['PCAAT00'],
'Platts_RI': [
  'AAEIY00', 'AAEIZ00', 'AAEJA00', 'AAEJB00', 'AAEJC00', 'AAEJD00', 'AAEJG00', 'AAEJH00', 'AAEJI00', 'AAEUQ00', 'AAEUQ01', 'AAEUQ03', 'AAEUQ04', 'AAGIP00', 'AAGIQ00', 'AAGIR00', 'AAGIS00', 'AAGIW00', 'AAGIZ00', 'AAGJB00', 'AAGJC00', 'AAGJD00', 'AAGJE00', 'AAGJF00', 'AAGJG00', 'AAGLS00', 'AAGLT00', 'AAGLU00', 'AAGLV00', 'AAGVW00', 'AAGVW03', 'AAGVX00', 'AAGVX03', 'AAGVY00', 'AAGVY03', 'AAGWU00', 'AAGWV00', 'AAGWW00', 'AAGWZ00', 'AAGXA00', 'AAGXB00', 'AAGXC00', 'AAGXD00', 'AAGXE00', 'AAGXF00', 'AAGXG00', 'AAGXH00', 'AAGXI00', 'AAGXJ00', 'AAGXK00', 'AAGXL00', 'AAGXM00', 'AAGXN00', 'AAGXO00', 'AAGXP00', 'AAGXQ00', 'AAGXR00', 'AAGXS00', 'AAGXT00', 'AAGXU00', 'AAGXV00', 'AAGXW00', 'AAGXX00', 'AAGXY00', 'AAGXZ00', 'AAGYA00', 'AAGYB00', 'AAGYC00', 'AAGYD00', 'AAGYE00', 'AAGYF00', 'AAGYG00', 'AAGYH00', 'AAGYI00', 'AAGZS00', 'AAGZT00', 'AAGZU00', 'AAGZV00', 'AAGZW00', 'AAGZX00', 'AAGZY00', 'AAGZZ00', 'AAHML00', 'AAHMM00', 'AAHMN00', 'AAHMO00', 'AAHMP00', 'AAHMP03', 'AAHMQ00', 'AAHMR00', 'AAHPH00', 'AAHPI00', 'AAHPJ00', 'AAHPK00', 'AAHPL00', 'AAHPM00', 'AAHPN00', 'AAHPO00', 'AAHPP00', 'AAHPQ00', 'AAHPV00', 'AAHPW00', 'AAHPX00', 'AAHXB00', 'AAHXB03', 'AAHXC00', 'AAHXC03', 'AAHXD00', 'AAHXD03', 'AAHXE00', 'AAHXE03', 'AAHXW00', 'AAHZF00', 'AAHZG00', 'AAHZH00', 'AAHZI00', 'AAHZJ00', 'AAHZK00', 'AAHZL00', 'AAHZM00', 'AAHZN00', 'AAHZO00', 'AAHZP00', 'AAHZQ00', 'AAHZR00', 'AAHZT00', 'AAHZU00', 'AAHZX00', 'AAIHJ00', 'AAIHL00', 'AAIHN00', 'AAIHO00', 'AAIHO03', 'AAIHP00', 'AAIHP03', 'AAIHQ00', 'AAIHS00', 'AAIHT00', 'AAIHU00', 'AAIHV00', 'AAIIK00', 'AAIIP00', 'AAIIT00', 'AAIIZ00', 'AAIJA00', 'AAIJB00', 'AAIJC00', 'AAIJD00', 'AAIJS00', 'AAIJT00', 'AAIJU00', 'AAISU00', 'AAIUG00', 'AAIVI00', 'AAJCO00', 'AAJCP00', 'AAJCQ00', 'AAJCR00', 'AAJHP00', 'AAJHR00', 'AAJHV00', 'AAJHX00', 'AAJHY00', 'AAJHZ00', 'AAJIA00', 'AAJIB00', 'AAJIC00', 'AAJID00', 'AAJIE00', 'AAJIF00', 'AAJIG00', 'AAJIH00', 'AAJJE00', 'AAJJF00', 'AAJJG00', 'AAJJH00', 'AAJJI00', 'AAJJJ00', 'AAJJK00', 'AAJJL00', 'AAJJM00', 'AAJKK00', 'AAJKL00', 'AAJKM00', 'AAJKN00', 'AAJMS00', 'AAJMS03', 'AAJNV00', 'AAJOR00', 'AAJOS00', 'AAJOT00', 'AAJOU00', 'AAJOV00', 'AAJOW00', 'AAJOX00', 'AAJPC00', 'AAJPC03', 'AAJPD00', 'AAJPE00', 'AAJPF00', 'AAJPG00', 'AAJPH00', 'AAJPI00', 'AAJPK00', 'AAJPL00', 'AAJPM00', 'AAJPN00', 'AAJPO00', 'AAJPP00', 'AAJPQ00', 'AAJPR00', 'AAJPS00', 'AAJUH00', 'AAJUI00', 'AAJUJ00', 'AAJUK00', 'AAKWH00', 'AAKWI00', 'AALAT00', 'AALAT03', 'AALAU00', 'AALAU03', 'AALAV00', 'AALAV03', 'AALAW00', 'AALAW03', 'AALAX00', 'AALAX03', 'AALAY00', 'AALAY03', 'AALCZ00', 'AALCZ03', 'AALDA00', 'AALDA03', 'AALDF00', 'AALDG00', 'AALDH00', 'AALDI00', 'AALDJ00', 'AALDK00', 'AALGM00', 'AALGN00', 'AALHU00', 'AALHV00', 'AALIN00', 'AALIO00', 'AALOU00', 'AALOV00', 'AALOW00', 'AALOW03', 'AALOX00', 'AALOY00', 'AALST00', 'AALSU00', 'AALVX00', 'AALVY00', 'AALVZ00', 'AALWC00', 'AALWD00', 'AALWE00', 'AALWF00', 'AALWG00', 'AAMDR00', 'AAMDS00', 'AAMDU00', 'AAMDV00', 'AAMDX00', 'AAMDY00', 'AAMEA00', 'AAMEB00', 'AAMVY00', 'AAMVY03', 'AAOFD00', 'AAOFD03', 'AAOFV00', 'AAOFV03', 'AAOFW00', 'AAOFW03', 'AAOTH00', 'AAOTH03', 'AAOTI00', 'AAOTI03', 'AAOZV00', 'AAOZV03', 'AAOZX00', 'AAOZX03', 'AAPAB00', 'AAPAB03', 'AAPAD00', 'AAPAD03', 'AAPAF00', 'AAPAF03', 'AAPAH00', 'AAPAH03', 'AAPAJ00', 'AAPAJ03', 'AAPAL00', 'AAPAL03', 'AAPAN00', 'AAPAN03', 'AAPAP00', 'AAPAP03', 'AAPAR00', 'AAPAR03', 'AAPAT00', 'AAPAT03', 'AAPAV00', 'AAPAV03', 'AAPAX00', 'AAPAX03', 'AAPAZ00', 'AAPAZ03', 'AAPBB00', 'AAPBB03', 'AAPBD00', 'AAPBD03', 'AAPBF00', 'AAPBF03', 'AAPBH00', 'AAPBH03', 'AAPBJ00', 'AAPBJ03', 'AAPBL00', 'AAPBL03', 'AAPBN00', 'AAPBN03', 'AAPBP00', 'AAPBP03', 'AAPBR00', 'AAPBR03', 'AAPDO00', 'AAPDO03', 'AAPET00', 'AAPET03', 'AAPEU00', 'AAPEU03', 'AAPEW00', 'AAPEW03', 'AAPEX00', 'AAPEX03', 'AAPLC00', 'AAPLC03', 'AAPYR00', 'AAPYR03', 'AAPYS00', 'AAPYS03', 'AAPYT00', 'AAPYT03', 'AAPYU00', 'AAPYU03', 'AAQAR00', 'AAQAR03', 'AAQAR13', 'AAQAS00', 'AAQAS03', 'AAQAS13', 'AAQAT00', 'AAQAT03', 'AAQAT13', 'AAQAU00', 'AAQAU03', 'AAQAU13', 'AAQAV00', 'AAQAV03', 'AAQAV13', 'AAQAW00', 'AAQAW03', 'AAQAW13', 'AAQAX00', 'AAQAX03', 'AAQAX13', 'AAQAY00', 'AAQAY03', 'AAQAY13', 'AAQAZ00', 'AAQAZ03', 'AAQAZ13', 'AAQBA00', 'AAQBA03', 'AAQBA13', 'AAQBB00', 'AAQBB03', 'AAQBB13', 'AAQBC00', 'AAQBC03', 'AAQBC13', 'AAQBD00', 'AAQBD03', 'AAQBD13', 'AAQBE00', 'AAQBE03', 'AAQBE13', 'AAQBF00', 'AAQBF03', 'AAQBG00', 'AAQBH00', 'AAQNI00', 'AAQYX00', 'AAQYX03', 'AAQYY00', 'AAQYY03', 'AAQYZ00', 'AAQYZ03', 'AAQZA00', 'AAQZA03', 'AAQZB00', 'AAQZB03', 'AAQZC00', 'AAQZC03', 'AARAA00', 'AARAA03', 'AARAB00', 'AARAB03', 'AARAC00', 'AARAC03', 'AARAD00', 'AARAD03', 'AARAE00', 'AARAE03', 'AARAF00', 'AARAF03', 'AARAG00', 'AARAG03', 'AARAH00', 'AARAH03', 'AARAI00', 'AARAI03', 'AARAJ00', 'AARAJ03', 'AARAK00', 'AARAK03', 'AARAL00', 'AARAL03', 'AARAM00', 'AARAM03', 'AARAN00', 'AARAN03', 'AARAO00', 'AARAO03', 'AARAP00', 'AARAP03', 'AARAQ00', 'AARAQ03', 'AARAR00', 'AARAR03', 'AARAS00', 'AARAS03', 'AARAT00', 'AARAT03', 'AARAU00', 'AARAU03', 'AARAV00', 'AARAV03', 'AARAW00', 'AARAW03', 'AARAX00', 'AARAX03', 'AARAY00', 'AARAY03', 'AARAZ00', 'AARAZ03', 'AARBA00', 'AARBA03', 'AARBB00', 'AARBB03', 'AARBC00', 'AARBC03', 'AARBD00', 'AARBD03', 'AARBV00', 'AARBV03', 'AARBW00', 'AARBW03', 'AARBX00', 'AARBX03', 'AARBY00', 'AARBY03', 'AAREN00', 'AAREN03', 'AARWD00', 'AARWD03', 'AARWE00', 'AARWE03', 'AARWF00', 'AARWF03', 'AASAS00', 'AASAS03', 'AASAT00', 'AASAT03', 'AASAU00', 'AASAU03', 'AASAV00', 'AASAV03', 'AASCJ00', 'AASCJ03', 'AASCK00', 'AASCK03', 'AASCN00', 'AASCN03', 'AASEU00', 'AASEU03', 'AASJD00', 'AASJD03', 'AASJE00', 'AASJE03', 'AASJF00', 'AASJF03', 'AASLJ00', 'AASLJ03', 'AASLK00', 'AASLK03', 'AASNL00', 'AASNL03', 'AATHM00', 'AATHM03', 'AATHN00', 'AATHN03', 'AAUFH00', 'AAUFH03', 'AAUFI00', 'AAUFI03', 'AAUFJ00', 'AAUFJ03', 'AAUFK00', 'AAUFK03', 'AAUFL00', 'AAUFL03', 'AAUFM00', 'AAUFM03', 'AAUFN00', 'AAUFN03', 'AAUJP00', 'AAUJP03', 'AAUJQ00', 'AAUJQ03', 'AAUJR00', 'AAUJR03', 'AAUJS00', 'AAUJS03', 'AAUJT00', 'AAUJT03', 'AAUXL00', 'AAVJA00', 'AAVJA03', 'AAVJA04', 'AAVJB00', 'AAVJB03', 'AAVJC00', 'AAVJC03', 'AAVJF00', 'AAVJF03', 'AAVJG00', 'AAVJG03', 'AAWEP00', 'AAWEP03', 'AAWEX00', 'AAWEX03', 'AAWEY00', 'AAWEY03', 'AAWEZ00', 'AAWEZ03', 'AAWFH00', 'AAWFH03', 'AAWFI00', 'AAWFI03', 'AAWFJ00', 'AAWFJ03', 'AAWFK00', 'AAWFK03', 'AAWFL00', 'AAWFL03', 'AAWSA00', 'AAWSA03', 'AAWSB00', 'AAWSB03', 'AAWSC00', 'AAWSC03', 'AAWVH00', 'AAWVH03', 'AAWVI00', 'AAWVI03', 'AAWXV00', 'AAWXV03', 'AAWXW00', 'AAWXW03', 'AAWXY00', 'AAWXY03', 'AAXDW00', 'AAXDX00', 'AAXDY00', 'AAXDZ00', 'AAXEZ00', 'AAXEZ03', 'AAXIL00', 'AAXJM00', 'AAXJM03', 'AAXJN00', 'AAXJN03', 'AAXJO00', 'AAXJO03', 'AAXPG00', 'AAXPG03', 'AAXRK00', 'AAXRK03', 'AAXUO00', 'AAXUO03', 'AAXUP00', 'AAXUP03', 'AAXUQ00', 'AAXUQ03', 'AAXUR00', 'AAXUR03', 'AAXUS00', 'AAXUS03', 'AAXUT00', 'AAXUT03', 'AAXUU00', 'AAXUU03', 'AAXUV00', 'AAXUV03', 'AAXYD00', 'AAXYD03', 'AAXZA00', 'AAXZA03', 'AAXZB00', 'AAXZB03', 'AAXZC00', 'AAXZC03', 'AAXZD00', 'AAXZD03', 'AAXZE00', 'AAXZE03', 'AAXZF00', 'AAXZF03', 'AAXZG00', 'AAXZG03', 'AAYRZ00', 'AAYRZ03', 'AAYSA00', 'AAYSA03', 'AAYTA00', 'AAYTA03', 'AAYVA00', 'AAYVA03', 'AAYWA00', 'AAYWA03', 'ABWGE00', 'ABWGE03', 'ADBRA00', 'ADBRA03', 'ADFCD00', 'ADFCD03', 'AEFAA00', 'AEFAA03', 'AEFAB00', 'AEFAB03', 'AEFAC00', 'AEFAC03', 'AEFAD00', 'AEFAD03', 'AFONA00', 'AFONA03', 'AFONB00', 'AFONB03', 'AIHKA00', 'AIHKA03', 'AIHKA04', 'AIHKB00', 'AIHKB03', 'AILKA00', 'AILKA03', 'AILKA04', 'AILKB00', 'AILKB03', 'AJSVA00', 'AJSVA03', 'AJSVB00', 'AJSVB03', 'ALVHA00', 'ALVHA03', 'ALVHB00', 'ALVHB03', 'AODFA00', 'ASGCA00', 'ASGCA03', 'ASGCB00', 'ASGCB03', 'ATFNA00', 'ATFNB00', 'AWTIA00', 'AWTIA03', 'AWTIB00', 'AWTIB03', 'AWTIC00', 'AWTIC03', 'AWTID00', 'AWTID03', 'BVBM012', 'BVBM023', 'BVBM034', 'BVDM021', 'BVDM032', 'CRPOA03', 'CRPOB03', 'CRPOC03', 'CRPOD03', 'CRPOE03', 'CRPOF03', 'CRPOG03', 'CRPOH03', 'CRPOI03', 'CRPOJ03', 'CRPOK03', 'CRPOL03', 'CRPOM03', 'CRPON03', 'CRPOO03', 'CRPOP03', 'CRPOQ03', 'DBVBM00', 'FAFWA00', 'FAFWAM2', 'FHPRM00', 'FHPRM03', 'FHPRM20', 'FHPRM23', 'FMGRM00', 'FMGRM03', 'FMGRM20', 'FMGRM23', 'FSTRM00', 'FSTRM03', 'FSTRM20', 'FSTRM23', 'FSVRM00', 'FSVRM03', 'FSVRM20', 'FSVRM23', 'FTSRM00', 'FTSRM03', 'FTSRM20', 'FTSRM23', 'ICO2010', 'ICO2011', 'ICO2012', 'ICOQ110', 'ICOQ111', 'ICOQ112', 'ICOQ210', 'ICOQ211', 'ICOQ212', 'ICOQ310', 'ICOQ311', 'ICOQ312', 'ICOQ410', 'ICOQ411', 'ICOQ412', 'ICS2010', 'ICS2011', 'ICS2012', 'ICSQ110', 'ICSQ111', 'ICSQ112', 'ICSQ210', 'ICSQ211', 'ICSQ212', 'ICSQ310', 'ICSQ311', 'ICSQ312', 'ICSQ410', 'ICSQ411', 'ICSQ412', 'IDN2010', 'IDN2011', 'IDN2012', 'IDNQ110', 'IDNQ111', 'IDNQ112', 'IDNQ210', 'IDNQ211', 'IDNQ212', 'IDNQ310', 'IDNQ311', 'IDNQ312', 'IDNQ410', 'IDNQ411', 'IDNQ412', 'IDO2010', 'IDO2011', 'IDO2012', 'IDOQ110', 'IDOQ111', 'IDOQ112', 'IDOQ210', 'IDOQ211', 'IDOQ212', 'IDOQ310', 'IDOQ311', 'IDOQ312', 'IDOQ410', 'IDOQ411', 'IDOQ412', 'INS2010', 'INS2011', 'INS2012', 'INSQ110', 'INSQ111', 'INSQ112', 'INSQ210', 'INSQ211', 'INSQ212', 'INSQ310', 'INSQ311', 'INSQ312', 'INSQ410', 'INSQ411', 'INSQ412', 'IOS2010', 'IOS2011', 'IOS2012', 'IOSQ110', 'IOSQ111', 'IOSQ112', 'IOSQ210', 'IOSQ211', 'IOSQ212', 'IOSQ310', 'IOSQ311', 'IOSQ312', 'IOSQ410', 'IOSQ411', 'IOSQ412', 'ISB2010', 'ISB2011', 'ISB2012', 'ISBQ110', 'ISBQ111', 'ISBQ112', 'ISBQ210', 'ISBQ211', 'ISBQ212', 'ISBQ310', 'ISBQ311', 'ISBQ312', 'ISBQ410', 'ISBQ411', 'ISBQ412', 'ISI2010', 'ISI2011', 'ISI2012', 'ISIQ110', 'ISIQ111', 'ISIQ112', 'ISIQ210', 'ISIQ211', 'ISIQ212', 'ISIQ310', 'ISIQ311', 'ISIQ312', 'ISIQ410', 'ISIQ411', 'ISIQ412', 'ITD2010', 'ITD2011', 'ITD2012', 'ITDQ110', 'ITDQ111', 'ITDQ112', 'ITDQ210', 'ITDQ211', 'ITDQ212', 'ITDQ310', 'ITDQ311', 'ITDQ312', 'ITDQ410', 'ITDQ411', 'ITDQ412', 'ITS2010', 'ITS2011', 'ITS2012', 'ITSQ110', 'ITSQ111', 'ITSQ112', 'ITSQ210', 'ITSQ211', 'ITSQ212', 'ITSQ310', 'ITSQ311', 'ITSQ312', 'ITSQ410', 'ITSQ411', 'ITSQ412', 'PBAM1M2', 'PBAM2M3', 'PBBM1M2', 'PBBM2M3', 'PBCAAM1', 'PBCAAM2', 'PBCAAM3', 'PBCABM1', 'PBCABM2', 'PBCABM3', 'PBCACM1', 'PBCACM2', 'PBCACM3', 'PBCADM1', 'PBCADM2', 'PBCADM3', 'PBCM1M2', 'PBCM2M3', 'PBDM1M2', 'PBDM2M3', 'PCAAE00', 'PCAAL00', 'PCAAL03', 'PCAAP00', 'PCAAQ00', 'PCAAR00', 'PCAAS00', 'PCAAU00', 'PCAAV00', 'PCABC00', 'PCABH00', 'PCABI00', 'PCABR00', 'PCABR03', 'PCABS00', 'PCABT00', 'PCACA00', 'PCACE00', 'PCACO00', 'PCACZ00', 'PCADG10', 'PCADI00', 'PCADJ00', 'PCADL00', 'PCADM00', 'PCADV00', 'PCAEC10', 'PCAED10', 'PCAEE00', 'PCAET00', 'PCAEU00', 'PCAEV00', 'PCAEW00', 'PCAFD00', 'PCAFG03', 'PCAFH03', 'PCAFK00', 'PCAFK03', 'PCAFW00', 'PCAGV00', 'PCAIC00', 'PCAID00', 'PCAIU00', 'PCAIW00', 'PCAIY00', 'PCAJ000', 'PCAJ003', 'PCAJA00', 'PCAJC00', 'PCAJE00', 'PCAJG00', 'PCAJI00', 'PCAKA00', 'PCAKC00', 'PCAKE00', 'PCAKG00', 'PCAKM00', 'PCAKM03', 'PCAKN00', 'PCAKN03', 'PCAKP00', 'PCAKP03', 'PCAKQ00', 'PCAKQ03', 'PCAKR00', 'PCAKR03', 'PCAKS00', 'PCAKS03', 'PCAKT00', 'PCAKT03', 'PCAKU00', 'PCAKU03', 'PCAKV00', 'PCAKV03', 'PCAKW00', 'PCAKW03', 'PCALA00', 'PCALA03', 'PCALB00', 'PCALB03', 'PCARR00', 'PCARR03', 'PCNGA00', 'PCNGA03', 'PCNGB00', 'PCNGB03', 'PCNGC00'],
'ICE_EuroFutures' : 'BRN',
'CME_NymexFutures_EOD' : 'CL',

}


@lru_cache(maxsize=None)
def isContinuous(symbol):
  r = re.findall('\d\d\d_M', symbol)
  if len(r) >= 1:
    return True


@lru_cache(maxsize=None)
def resolve_feedname(symbol):
  for feednamec in c:
    if symbol in c[feednamec]:
      if isContinuous(symbol):
        feednamec = '{}_continuous'.format(feednamec)
      return feednamec

  tokens = symbol.split('_')
  if len(tokens) > 0:
    for feednamec in c:
      if tokens[0] in c[feednamec]:
        if isContinuous(symbol):
          feednamec = '{}_continuous'.format(feednamec)
        return feednamec

1a10334f6fbef27739be7ab0a7dbed4ca64ed6a3
<mask token>


@lru_cache(maxsize=None)
def resolve_feedname(symbol):
    for feednamec in c:
        if symbol in c[feednamec]:
            if isContinuous(symbol):
                feednamec = '{}_continuous'.format(feednamec)
            return feednamec
    tokens = symbol.split('_')
    if len(tokens) > 0:
        for feednamec in c:
            if tokens[0] in c[feednamec]:
                if isContinuous(symbol):
                    feednamec = '{}_continuous'.format(feednamec)
                return feednamec

<mask token>


@lru_cache(maxsize=None)
def isContinuous(symbol):
    r = re.findall('\\d\\d\\d_M', symbol)
    if len(r) >= 1:
        return True


@lru_cache(maxsize=None)
def resolve_feedname(symbol):
    for feednamec in c:
        if symbol in c[feednamec]:
            if isContinuous(symbol):
                feednamec = '{}_continuous'.format(feednamec)
            return feednamec
    tokens = symbol.split('_')
    if len(tokens) > 0:
        for feednamec in c:
            if tokens[0] in c[feednamec]:
                if isContinuous(symbol):
                    feednamec = '{}_continuous'.format(feednamec)
                return feednamec

<mask token>
keys = {'Platts': 'Code', 'ICE': 'Symbol'}
c = {'Platts_EB': ['AAGMK00', 'AAGML00', 'AAGMM00', 'AAGMN00', 'AAHYH00',
    'AAHYI00', 'AAHYJ00', 'AAHYK00', 'AAHYL00', 'AAHYM00', 'AAIDL00',
    'AAIDM00', 'AAIDN00', 'AAIDO00', 'AAIJH00', 'AAIJI00', 'AAIJJ00',
    'AAIJL00', 'AAIJM00', 'AAIJN00', 'AAIJO00', 'AAIJP00', 'AAIJQ00',
    'AAIKM00', 'AAIKN00', 'AAIKO00', 'AAIKP00', 'AAJUS00', 'AAJUT00',
    'AAJUV00', 'AAJUW00', 'AAKOD00', 'AAKOE00', 'AAKOF00', 'AAKOG00',
    'AAKOH00', 'AAKOI00', 'AAKUV00', 'AAKUV03', 'AAKWP00', 'AAKWQ00',
    'AAKWR00', 'AAKWS00', 'AALBJ00', 'AALGL00', 'AANWC00', 'AANWC03',
    'AANWY00', 'AANWY03', 'AAOPW00', 'AAOPW03', 'AAOPX00', 'AAOPX03',
    'AAOPY00', 'AAOPY03', 'AAOPZ00', 'AAOPZ03', 'AAOQA00', 'AAOQA03',
    'AAOQB00', 'AAOQB03', 'AAOQC00', 'AAOQC03', 'AAOQD00', 'AAOQD03',
    'AAOQZ00', 'AAOQZ03', 'AAOVN00', 'AAOVN03', 'AAPYV10', 'AAPYV13',
    'AAPYW10', 'AAPYW13', 'AAPYX10', 'AAPYX13', 'AAPYY10', 'AAPYY13',
    'AAQCD00', 'AAQCD03', 'AAQCE00', 'AAQCE03', 'AAQCF00', 'AAQCF03',
    'AAQCG00', 'AAQCG03', 'AAQCH00', 'AAQCH03', 'AAQCI00', 'AAQCI03',
    'AAQCJ00', 'AAQCJ03', 'AAQCK00', 'AAQCK03', 'AAQSG00', 'AAQSH00',
    'AAQSI00', 'AAQSJ00', 'AAQSK00', 'AAQSL00', 'AAQSM00', 'AAQZV00',
    'AAQZV03', 'AARGT00', 'AARGU00', 'AARGV00', 'AARIN00', 'AARIO00',
    'AARIP00', 'AARXM00', 'AARXM03', 'AARXN00', 'AARXN03', 'AASCR00',
    'AASCS00', 'AASCT00', 'AASCU00', 'AASCV00', 'AASCW00', 'AASXR00',
    'AASXR03', 'AAUCA00', 'AAUCA03', 'AAUCA04', 'AAUCB00', 'AAUCB03',
    'AAUCB04', 'AAUHE00', 'AAUHE03', 'AAUQC00', 'AAUQC03', 'AAUQF00',
    'AAUQF03', 'AAVBF00', 'AAVBF03', 'AAVBG00', 'AAVBG03', 'AAVBH00',
    'AAVBH03', 'AAVJE00', 'AAVJE03', 'AAVJI00', 'AAVJI03', 'AAVJJ00',
    'AAVJJ03', 'AAWGH00', 'AAWGH03', 'AAWGH04', 'AAWGI00', 'AAWGI03',
    'AAWGI04', 'AAWGJ00', 'AAWGJ03', 'AAWGJ04', 'AAWGK00', 'AAWGK03',
    'AAWGK04', 'AAWGY00', 'AAWGY03', 'AAWGY04', 'AAWYY00', 'AAWYY03',
    'AAWYZ00', 'AAWYZ03', 'AAWZA00', 'AAWZA03', 'AAWZB00', 'AAWZB03',
    'AAWZC00', 'AAWZC03', 'AAWZD00', 'AAWZD03', 'AAXFQ00', 'AAXFQ03',
    'AAXPM00', 'AAXPM03', 'AAXPN00', 'AAXPN03', 'AAXQL00', 'AAXQL03',
    'AAXQL04', 'AAYES00', 'AAYET00', 'AAYWR00', 'AAYWR03', 'AAYWS00',
    'AAYWS03', 'AAYWT00', 'AAYWT03', 'AAYWY00', 'AAYWY03', 'AAZBN00',
    'AAZBN03', 'AAZBO00', 'AAZBO03', 'ABWGF00', 'ABWGF03', 'ABWGG00',
    'ABWGG03', 'ABWGH00', 'ABWGH03', 'ABWGI00', 'ABWGI03', 'ABWGK00',
    'ABWGK03', 'ABWGL00', 'ABWGL03', 'ABWGM00', 'ABWGM03', 'ABWGN00',
    'ABWGN03', 'ABWGO00', 'ABWGO03', 'ABWGP00', 'ABWGP03', 'ABWGQ00',
    'ABWGQ03', 'ABWGR00', 'ABWGR03', 'ABWGS00', 'ABWGS03', 'ABWGT00',
    'ABWGT03', 'ABWGU00', 'ABWGU03', 'ABWGV00', 'ABWGV03', 'ABWGW00',
    'ABWGW03', 'ABWGX00', 'ABWGX03', 'ABWGY00', 'ABWGY03', 'ABWGZ00',
    'ABWGZ03', 'ABWHA00', 'ABWHA03', 'ABWHB00', 'ABWHB03', 'ABWHC00',
    'ABWHC03', 'ABWHD00', 'ABWHD03', 'ABWHE00', 'ABWHE03', 'ABWHF00',
    'ABWHF03', 'ABWHG00', 'ABWHG03', 'ABWHH00', 'ABWHH03', 'ABWHI00',
    'ABWHI03', 'ABWHJ00', 'ABWHJ03', 'ABWHK00', 'ABWHK03', 'ABWHL00',
    'ABWHL03', 'ABWHM00', 'ABWHM03', 'ABWHO00', 'ABWHO03', 'ABWHP00',
    'ABWHP03', 'ABWHQ00', 'ABWHQ03', 'ABXGA00', 'ABXGA03', 'ABXGB00',
    'ABXGB03', 'ABXGC00', 'ABXGC03', 'ABXGD00', 'ABXGD03', 'ABXGE00',
    'ABXGE03', 'ABXGF00', 'ABXGF03', 'ABXGG00', 'ABXGG03', 'ABXGH00',
    'ABXGH03', 'ABXGI00', 'ABXGI03', 'ABXGJ00', 'ABXGJ03', 'ABXGK00',
    'ABXGK03', 'ABXGL00', 'ABXGL03', 'ABXGM00', 'ABXGM03', 'ABXGN00',
    'ABXGN03', 'ABXGO00', 'ABXGO03', 'ABXGP00', 'ABXGP03', 'ABXGQ00',
    'ABXGQ03', 'ABXGR00', 'ABXGR03', 'ABXGS00', 'ABXGS03', 'ABXGT00',
    'ABXGT03', 'ABXGU00', 'ABXGU03', 'ABXGV00', 'ABXGV03', 'ABXGW00',
    'ABXGW03', 'ABXGX00', 'ABXGX03', 'ABXGY00', 'ABXGY03', 'ABXGZ00',
    'ABXGZ03', 'ABXHA00', 'ABXHA03', 'ABXHB00', 'ABXHB03', 'ABXHC00',
    'ABXHC03', 'ABXHD00', 'ABXHD03', 'ABXHE00', 'ABXHE03', 'ABXHF00',
    'ABXHF03', 'AGEFA00', 'AGEFA03', 'AGEFB00', 'AGEFB03', 'AGEFC00',
    'AGEFC03', 'AGEFE00', 'AGEFE03', 'AGEFS00', 'AGNWA00', 'AGNWA03',
    'AGNWC00', 'AGNWC03', 'AGNWD00', 'AGNWD03', 'AGNWE00', 'AGNWE03',
    'AJWAA00', 'AJWAB00', 'FOLNC00', 'FOLNC03', 'FOLND00', 'FOLND03',
    'MFCMM00', 'MFCMM03', 'MFFMM00', 'MFFMM03', 'PAAAH00', 'PAAAH03',
    'PAAAI00', 'PAAAI03', 'PAAAJ00', 'PAAAJ03', 'PAAAK00', 'PAAAK03',
    'PAAAL00', 'PAAAL03', 'PAAAM00', 'PAAAM03', 'PAAAN00', 'PAABH00',
    'PAABH03', 'PAABI00', 'PAABI03', 'PAABL00', 'PAABL03', 'PAABM00',
    'PAABM03', 'PGAAJ00', 'PGAAJ03', 'PGAAK00', 'PGAAK03', 'PGAAL00',
    'PGAAL03', 'PGABH00', 'PGABI00', 'PGABM00', 'PGABM03', 'PGABP00',
    'PGABP03', 'PGABQ00', 'PGABQ03', 'PGABR00', 'PGABR03', 'PGABU00',
    'PGABV00', 'PGABW00', 'PGABX00', 'PGABY00', 'PGACF00', 'PGACF03',
    'PGACG00', 'PGACK00', 'PGACZ00', 'PGADA00', 'PGADE00', 'PGAMJ00',
    'PGAMJ03', 'PGAML00', 'PGAML03', 'PGAMN00', 'PGAMP00', 'PGAMR00',
    'PHAKZ00', 'PJAAT00', 'PJAAU00', 'PJAAU03', 'PJAAV00', 'PJAAV03',
    'PJABA00', 'PJABA03', 'PJADQ00', 'PKAAE00', 'PKAAF00', 'PKAAG00',
    'PKAAG03', 'PKAAI00', 'PKAAN00', 'PKAAN03', 'PKABA00', 'PKABA03',
    'PKABE00', 'POAAA00', 'POAAA03', 'POAAB00', 'POAAB03', 'POAAC00',
    'POAAC03', 'POAAD00', 'POAAG00', 'POAAH00', 'POAAH03', 'POAAI00',
    'POAAI03', 'POAAJ00', 'POAAJ03', 'POAAP00', 'POAAP03', 'POAAQ00',
    'POAAQ03', 'POAAR00', 'POAAR03', 'POAAW00', 'POAAW03', 'POAAX00',
    'POAAX03', 'POADX00', 'POADX03', 'POAFI00', 'PPAQB00', 'PPAQD00',
    'PPAQF00', 'PPAQH00', 'PUAAJ00', 'PUAAJ03', 'PUAAK00', 'PUAAK03',
    'PUAAL00', 'PUAAL03', 'PUAAM00', 'PUAAM03', 'PUAAP00', 'PUAAP03',
    'PUAAY00', 'PUAAY03', 'PUAAZ00', 'PUAAZ03', 'PUABA00', 'PUABA03',
    'PUABB00', 'PUABB03', 'PUABC00', 'PUABC03', 'PUAGA00', 'PUAGB00',
    'PUAGN00', 'PUAGN03', 'PUAGO00', 'PUAGO03', 'PUAYW00', 'PUAYW03',
    'PUBFW00', 'PUBFX00', 'PUBFY00', 'PUMFD00', 'PUMFD03', 'PUMFE00',
    'PUMFE03', 'PVMFD00', 'PVMFD03'], 'Platts_RP': ['PCAAT00'], 'Platts_RI':
    ['AAEIY00', 'AAEIZ00', 'AAEJA00', 'AAEJB00', 'AAEJC00', 'AAEJD00',
    'AAEJG00', 'AAEJH00', 'AAEJI00', 'AAEUQ00', 'AAEUQ01', 'AAEUQ03',
    'AAEUQ04', 'AAGIP00', 'AAGIQ00', 'AAGIR00', 'AAGIS00', 'AAGIW00',
    'AAGIZ00', 'AAGJB00', 'AAGJC00', 'AAGJD00', 'AAGJE00', 'AAGJF00',
    'AAGJG00', 'AAGLS00', 'AAGLT00', 'AAGLU00', 'AAGLV00', 'AAGVW00',
    'AAGVW03', 'AAGVX00', 'AAGVX03', 'AAGVY00', 'AAGVY03', 'AAGWU00',
    'AAGWV00', 'AAGWW00', 'AAGWZ00', 'AAGXA00', 'AAGXB00', 'AAGXC00',
    'AAGXD00', 'AAGXE00', 'AAGXF00', 'AAGXG00', 'AAGXH00', 'AAGXI00',
    'AAGXJ00', 'AAGXK00', 'AAGXL00', 'AAGXM00', 'AAGXN00', 'AAGXO00',
    'AAGXP00', 'AAGXQ00', 'AAGXR00', 'AAGXS00', 'AAGXT00', 'AAGXU00',
    'AAGXV00', 'AAGXW00', 'AAGXX00', 'AAGXY00', 'AAGXZ00', 'AAGYA00',
    'AAGYB00', 'AAGYC00', 'AAGYD00', 'AAGYE00', 'AAGYF00', 'AAGYG00',
    'AAGYH00', 'AAGYI00', 'AAGZS00', 'AAGZT00', 'AAGZU00', 'AAGZV00',
    'AAGZW00', 'AAGZX00', 'AAGZY00', 'AAGZZ00', 'AAHML00', 'AAHMM00',
    'AAHMN00', 'AAHMO00', 'AAHMP00', 'AAHMP03', 'AAHMQ00', 'AAHMR00',
    'AAHPH00', 'AAHPI00', 'AAHPJ00', 'AAHPK00', 'AAHPL00', 'AAHPM00',
    'AAHPN00', 'AAHPO00', 'AAHPP00', 'AAHPQ00', 'AAHPV00', 'AAHPW00',
    'AAHPX00', 'AAHXB00', 'AAHXB03', 'AAHXC00', 'AAHXC03', 'AAHXD00',
    'AAHXD03', 'AAHXE00', 'AAHXE03', 'AAHXW00', 'AAHZF00', 'AAHZG00',
    'AAHZH00', 'AAHZI00', 'AAHZJ00', 'AAHZK00', 'AAHZL00', 'AAHZM00',
    'AAHZN00', 'AAHZO00', 'AAHZP00', 'AAHZQ00', 'AAHZR00', 'AAHZT00',
    'AAHZU00', 'AAHZX00', 'AAIHJ00', 'AAIHL00', 'AAIHN00', 'AAIHO00',
    'AAIHO03', 'AAIHP00', 'AAIHP03', 'AAIHQ00', 'AAIHS00', 'AAIHT00',
    'AAIHU00', 'AAIHV00', 'AAIIK00', 'AAIIP00', 'AAIIT00', 'AAIIZ00',
    'AAIJA00', 'AAIJB00', 'AAIJC00', 'AAIJD00', 'AAIJS00', 'AAIJT00',
    'AAIJU00', 'AAISU00', 'AAIUG00', 'AAIVI00', 'AAJCO00', 'AAJCP00',
    'AAJCQ00', 'AAJCR00', 'AAJHP00', 'AAJHR00', 'AAJHV00', 'AAJHX00',
    'AAJHY00', 'AAJHZ00', 'AAJIA00', 'AAJIB00', 'AAJIC00', 'AAJID00',
    'AAJIE00', 'AAJIF00', 'AAJIG00', 'AAJIH00', 'AAJJE00', 'AAJJF00',
    'AAJJG00', 'AAJJH00', 'AAJJI00', 'AAJJJ00', 'AAJJK00', 'AAJJL00',
    'AAJJM00', 'AAJKK00', 'AAJKL00', 'AAJKM00', 'AAJKN00', 'AAJMS00',
    'AAJMS03', 'AAJNV00', 'AAJOR00', 'AAJOS00', 'AAJOT00', 'AAJOU00',
    'AAJOV00', 'AAJOW00', 'AAJOX00', 'AAJPC00', 'AAJPC03', 'AAJPD00',
    'AAJPE00', 'AAJPF00', 'AAJPG00', 'AAJPH00', 'AAJPI00', 'AAJPK00',
    'AAJPL00', 'AAJPM00', 'AAJPN00', 'AAJPO00', 'AAJPP00', 'AAJPQ00',
    'AAJPR00', 'AAJPS00', 'AAJUH00', 'AAJUI00', 'AAJUJ00', 'AAJUK00',
    'AAKWH00', 'AAKWI00', 'AALAT00', 'AALAT03', 'AALAU00', 'AALAU03',
    'AALAV00', 'AALAV03', 'AALAW00', 'AALAW03', 'AALAX00', 'AALAX03',
    'AALAY00', 'AALAY03', 'AALCZ00', 'AALCZ03', 'AALDA00', 'AALDA03',
    'AALDF00', 'AALDG00', 'AALDH00', 'AALDI00', 'AALDJ00', 'AALDK00',
    'AALGM00', 'AALGN00', 'AALHU00', 'AALHV00', 'AALIN00', 'AALIO00',
    'AALOU00', 'AALOV00', 'AALOW00', 'AALOW03', 'AALOX00', 'AALOY00',
    'AALST00', 'AALSU00', 'AALVX00', 'AALVY00', 'AALVZ00', 'AALWC00',
    'AALWD00', 'AALWE00', 'AALWF00', 'AALWG00', 'AAMDR00', 'AAMDS00',
    'AAMDU00', 'AAMDV00', 'AAMDX00', 'AAMDY00', 'AAMEA00', 'AAMEB00',
    'AAMVY00', 'AAMVY03', 'AAOFD00', 'AAOFD03', 'AAOFV00', 'AAOFV03',
    'AAOFW00', 'AAOFW03', 'AAOTH00', 'AAOTH03', 'AAOTI00', 'AAOTI03',
    'AAOZV00', 'AAOZV03', 'AAOZX00', 'AAOZX03', 'AAPAB00', 'AAPAB03',
    'AAPAD00', 'AAPAD03', 'AAPAF00', 'AAPAF03', 'AAPAH00', 'AAPAH03',
    'AAPAJ00', 'AAPAJ03', 'AAPAL00', 'AAPAL03', 'AAPAN00', 'AAPAN03',
    'AAPAP00', 'AAPAP03', 'AAPAR00', 'AAPAR03', 'AAPAT00', 'AAPAT03',
    'AAPAV00', 'AAPAV03', 'AAPAX00', 'AAPAX03', 'AAPAZ00', 'AAPAZ03',
    'AAPBB00', 'AAPBB03', 'AAPBD00', 'AAPBD03', 'AAPBF00', 'AAPBF03',
    'AAPBH00', 'AAPBH03', 'AAPBJ00', 'AAPBJ03', 'AAPBL00', 'AAPBL03',
    'AAPBN00', 'AAPBN03', 'AAPBP00', 'AAPBP03', 'AAPBR00', 'AAPBR03',
    'AAPDO00', 'AAPDO03', 'AAPET00', 'AAPET03', 'AAPEU00', 'AAPEU03',
    'AAPEW00', 'AAPEW03', 'AAPEX00', 'AAPEX03', 'AAPLC00', 'AAPLC03',
    'AAPYR00', 'AAPYR03', 'AAPYS00', 'AAPYS03', 'AAPYT00', 'AAPYT03',
    'AAPYU00', 'AAPYU03', 'AAQAR00', 'AAQAR03', 'AAQAR13', 'AAQAS00',
    'AAQAS03', 'AAQAS13', 'AAQAT00', 'AAQAT03', 'AAQAT13', 'AAQAU00',
    'AAQAU03', 'AAQAU13', 'AAQAV00', 'AAQAV03', 'AAQAV13', 'AAQAW00',
    'AAQAW03', 'AAQAW13', 'AAQAX00', 'AAQAX03', 'AAQAX13', 'AAQAY00',
    'AAQAY03', 'AAQAY13', 'AAQAZ00', 'AAQAZ03', 'AAQAZ13', 'AAQBA00',
    'AAQBA03', 'AAQBA13', 'AAQBB00', 'AAQBB03', 'AAQBB13', 'AAQBC00',
    'AAQBC03', 'AAQBC13', 'AAQBD00', 'AAQBD03', 'AAQBD13', 'AAQBE00',
    'AAQBE03', 'AAQBE13', 'AAQBF00', 'AAQBF03', 'AAQBG00', 'AAQBH00',
    'AAQNI00', 'AAQYX00', 'AAQYX03', 'AAQYY00', 'AAQYY03', 'AAQYZ00',
    'AAQYZ03', 'AAQZA00', 'AAQZA03', 'AAQZB00', 'AAQZB03', 'AAQZC00',
    'AAQZC03', 'AARAA00', 'AARAA03', 'AARAB00', 'AARAB03', 'AARAC00',
    'AARAC03', 'AARAD00', 'AARAD03', 'AARAE00', 'AARAE03', 'AARAF00',
    'AARAF03', 'AARAG00', 'AARAG03', 'AARAH00', 'AARAH03', 'AARAI00',
    'AARAI03', 'AARAJ00', 'AARAJ03', 'AARAK00', 'AARAK03', 'AARAL00',
    'AARAL03', 'AARAM00', 'AARAM03', 'AARAN00', 'AARAN03', 'AARAO00',
    'AARAO03', 'AARAP00', 'AARAP03', 'AARAQ00', 'AARAQ03', 'AARAR00',
    'AARAR03', 'AARAS00', 'AARAS03', 'AARAT00', 'AARAT03', 'AARAU00',
    'AARAU03', 'AARAV00', 'AARAV03', 'AARAW00', 'AARAW03', 'AARAX00',
    'AARAX03', 'AARAY00', 'AARAY03', 'AARAZ00', 'AARAZ03', 'AARBA00',
    'AARBA03', 'AARBB00', 'AARBB03', 'AARBC00', 'AARBC03', 'AARBD00',
    'AARBD03', 'AARBV00', 'AARBV03', 'AARBW00', 'AARBW03', 'AARBX00',
    'AARBX03', 'AARBY00', 'AARBY03', 'AAREN00', 'AAREN03', 'AARWD00',
    'AARWD03', 'AARWE00', 'AARWE03', 'AARWF00', 'AARWF03', 'AASAS00',
    'AASAS03', 'AASAT00', 'AASAT03', 'AASAU00', 'AASAU03', 'AASAV00',
    'AASAV03', 'AASCJ00', 'AASCJ03', 'AASCK00', 'AASCK03', 'AASCN00',
    'AASCN03', 'AASEU00', 'AASEU03', 'AASJD00', 'AASJD03', 'AASJE00',
    'AASJE03', 'AASJF00', 'AASJF03', 'AASLJ00', 'AASLJ03', 'AASLK00',
    'AASLK03', 'AASNL00', 'AASNL03', 'AATHM00', 'AATHM03', 'AATHN00',
    'AATHN03', 'AAUFH00', 'AAUFH03', 'AAUFI00', 'AAUFI03', 'AAUFJ00',
    'AAUFJ03', 'AAUFK00', 'AAUFK03', 'AAUFL00', 'AAUFL03', 'AAUFM00',
    'AAUFM03', 'AAUFN00', 'AAUFN03', 'AAUJP00', 'AAUJP03', 'AAUJQ00',
    'AAUJQ03', 'AAUJR00', 'AAUJR03', 'AAUJS00', 'AAUJS03', 'AAUJT00',
    'AAUJT03', 'AAUXL00', 'AAVJA00', 'AAVJA03', 'AAVJA04', 'AAVJB00',
    'AAVJB03', 'AAVJC00', 'AAVJC03', 'AAVJF00', 'AAVJF03', 'AAVJG00',
    'AAVJG03', 'AAWEP00', 'AAWEP03', 'AAWEX00', 'AAWEX03', 'AAWEY00',
    'AAWEY03', 'AAWEZ00', 'AAWEZ03', 'AAWFH00', 'AAWFH03', 'AAWFI00',
    'AAWFI03', 'AAWFJ00', 'AAWFJ03', 'AAWFK00', 'AAWFK03', 'AAWFL00',
    'AAWFL03', 'AAWSA00', 'AAWSA03', 'AAWSB00', 'AAWSB03', 'AAWSC00',
    'AAWSC03', 'AAWVH00', 'AAWVH03', 'AAWVI00', 'AAWVI03', 'AAWXV00',
    'AAWXV03', 'AAWXW00', 'AAWXW03', 'AAWXY00', 'AAWXY03', 'AAXDW00',
    'AAXDX00', 'AAXDY00', 'AAXDZ00', 'AAXEZ00', 'AAXEZ03', 'AAXIL00',
    'AAXJM00', 'AAXJM03', 'AAXJN00', 'AAXJN03', 'AAXJO00', 'AAXJO03',
    'AAXPG00', 'AAXPG03', 'AAXRK00', 'AAXRK03', 'AAXUO00', 'AAXUO03',
    'AAXUP00', 'AAXUP03', 'AAXUQ00', 'AAXUQ03', 'AAXUR00', 'AAXUR03',
    'AAXUS00', 'AAXUS03', 'AAXUT00', 'AAXUT03', 'AAXUU00', 'AAXUU03',
    'AAXUV00', 'AAXUV03', 'AAXYD00', 'AAXYD03', 'AAXZA00', 'AAXZA03',
    'AAXZB00', 'AAXZB03', 'AAXZC00', 'AAXZC03', 'AAXZD00', 'AAXZD03',
    'AAXZE00', 'AAXZE03', 'AAXZF00', 'AAXZF03', 'AAXZG00', 'AAXZG03',
    'AAYRZ00', 'AAYRZ03', 'AAYSA00', 'AAYSA03', 'AAYTA00', 'AAYTA03',
    'AAYVA00', 'AAYVA03', 'AAYWA00', 'AAYWA03', 'ABWGE00', 'ABWGE03',
    'ADBRA00', 'ADBRA03', 'ADFCD00', 'ADFCD03', 'AEFAA00', 'AEFAA03',
    'AEFAB00', 'AEFAB03', 'AEFAC00', 'AEFAC03', 'AEFAD00', 'AEFAD03',
    'AFONA00', 'AFONA03', 'AFONB00', 'AFONB03', 'AIHKA00', 'AIHKA03',
    'AIHKA04', 'AIHKB00', 'AIHKB03', 'AILKA00', 'AILKA03', 'AILKA04',
    'AILKB00', 'AILKB03', 'AJSVA00', 'AJSVA03', 'AJSVB00', 'AJSVB03',
    'ALVHA00', 'ALVHA03', 'ALVHB00', 'ALVHB03', 'AODFA00', 'ASGCA00',
    'ASGCA03', 'ASGCB00', 'ASGCB03', 'ATFNA00', 'ATFNB00', 'AWTIA00',
    'AWTIA03', 'AWTIB00', 'AWTIB03', 'AWTIC00', 'AWTIC03', 'AWTID00',
    'AWTID03', 'BVBM012', 'BVBM023', 'BVBM034', 'BVDM021', 'BVDM032',
    'CRPOA03', 'CRPOB03', 'CRPOC03', 'CRPOD03', 'CRPOE03', 'CRPOF03',
    'CRPOG03', 'CRPOH03', 'CRPOI03', 'CRPOJ03', 'CRPOK03', 'CRPOL03',
    'CRPOM03', 'CRPON03', 'CRPOO03', 'CRPOP03', 'CRPOQ03', 'DBVBM00',
    'FAFWA00', 'FAFWAM2', 'FHPRM00', 'FHPRM03', 'FHPRM20', 'FHPRM23',
    'FMGRM00', 'FMGRM03', 'FMGRM20', 'FMGRM23', 'FSTRM00', 'FSTRM03',
    'FSTRM20', 'FSTRM23', 'FSVRM00', 'FSVRM03', 'FSVRM20', 'FSVRM23',
    'FTSRM00', 'FTSRM03', 'FTSRM20', 'FTSRM23', 'ICO2010', 'ICO2011',
    'ICO2012', 'ICOQ110', 'ICOQ111', 'ICOQ112', 'ICOQ210', 'ICOQ211',
    'ICOQ212', 'ICOQ310', 'ICOQ311', 'ICOQ312', 'ICOQ410', 'ICOQ411',
    'ICOQ412', 'ICS2010', 'ICS2011', 'ICS2012', 'ICSQ110', 'ICSQ111',
    'ICSQ112', 'ICSQ210', 'ICSQ211', 'ICSQ212', 'ICSQ310', 'ICSQ311',
    'ICSQ312', 'ICSQ410', 'ICSQ411', 'ICSQ412', 'IDN2010', 'IDN2011',
    'IDN2012', 'IDNQ110', 'IDNQ111', 'IDNQ112', 'IDNQ210', 'IDNQ211',
    'IDNQ212', 'IDNQ310', 'IDNQ311', 'IDNQ312', 'IDNQ410', 'IDNQ411',
    'IDNQ412', 'IDO2010', 'IDO2011', 'IDO2012', 'IDOQ110', 'IDOQ111',
    'IDOQ112', 'IDOQ210', 'IDOQ211', 'IDOQ212', 'IDOQ310', 'IDOQ311',
    'IDOQ312', 'IDOQ410', 'IDOQ411', 'IDOQ412', 'INS2010', 'INS2011',
    'INS2012', 'INSQ110', 'INSQ111', 'INSQ112', 'INSQ210', 'INSQ211',
    'INSQ212', 'INSQ310', 'INSQ311', 'INSQ312', 'INSQ410', 'INSQ411',
    'INSQ412', 'IOS2010', 'IOS2011', 'IOS2012', 'IOSQ110', 'IOSQ111',
    'IOSQ112', 'IOSQ210', 'IOSQ211', 'IOSQ212', 'IOSQ310', 'IOSQ311',
    'IOSQ312', 'IOSQ410', 'IOSQ411', 'IOSQ412', 'ISB2010', 'ISB2011',
    'ISB2012', 'ISBQ110', 'ISBQ111', 'ISBQ112', 'ISBQ210', 'ISBQ211',
    'ISBQ212', 'ISBQ310', 'ISBQ311', 'ISBQ312', 'ISBQ410', 'ISBQ411',
    'ISBQ412', 'ISI2010', 'ISI2011', 'ISI2012', 'ISIQ110', 'ISIQ111',
    'ISIQ112', 'ISIQ210', 'ISIQ211', 'ISIQ212', 'ISIQ310', 'ISIQ311',
    'ISIQ312', 'ISIQ410', 'ISIQ411', 'ISIQ412', 'ITD2010', 'ITD2011',
    'ITD2012', 'ITDQ110', 'ITDQ111', 'ITDQ112', 'ITDQ210', 'ITDQ211',
    'ITDQ212', 'ITDQ310', 'ITDQ311', 'ITDQ312', 'ITDQ410', 'ITDQ411',
    'ITDQ412', 'ITS2010', 'ITS2011', 'ITS2012', 'ITSQ110', 'ITSQ111',
    'ITSQ112', 'ITSQ210', 'ITSQ211', 'ITSQ212', 'ITSQ310', 'ITSQ311',
    'ITSQ312', 'ITSQ410', 'ITSQ411', 'ITSQ412', 'PBAM1M2', 'PBAM2M3',
    'PBBM1M2', 'PBBM2M3', 'PBCAAM1', 'PBCAAM2', 'PBCAAM3', 'PBCABM1',
    'PBCABM2', 'PBCABM3', 'PBCACM1', 'PBCACM2', 'PBCACM3', 'PBCADM1',
    'PBCADM2', 'PBCADM3', 'PBCM1M2', 'PBCM2M3', 'PBDM1M2', 'PBDM2M3',
    'PCAAE00', 'PCAAL00', 'PCAAL03', 'PCAAP00', 'PCAAQ00', 'PCAAR00',
    'PCAAS00', 'PCAAU00', 'PCAAV00', 'PCABC00', 'PCABH00', 'PCABI00',
    'PCABR00', 'PCABR03', 'PCABS00', 'PCABT00', 'PCACA00', 'PCACE00',
    'PCACO00', 'PCACZ00', 'PCADG10', 'PCADI00', 'PCADJ00', 'PCADL00',
    'PCADM00', 'PCADV00', 'PCAEC10', 'PCAED10', 'PCAEE00', 'PCAET00',
    'PCAEU00', 'PCAEV00', 'PCAEW00', 'PCAFD00', 'PCAFG03', 'PCAFH03',
    'PCAFK00', 'PCAFK03', 'PCAFW00', 'PCAGV00', 'PCAIC00', 'PCAID00',
    'PCAIU00', 'PCAIW00', 'PCAIY00', 'PCAJ000', 'PCAJ003', 'PCAJA00',
    'PCAJC00', 'PCAJE00', 'PCAJG00', 'PCAJI00', 'PCAKA00', 'PCAKC00',
    'PCAKE00', 'PCAKG00', 'PCAKM00', 'PCAKM03', 'PCAKN00', 'PCAKN03',
    'PCAKP00', 'PCAKP03', 'PCAKQ00', 'PCAKQ03', 'PCAKR00', 'PCAKR03',
    'PCAKS00', 'PCAKS03', 'PCAKT00', 'PCAKT03', 'PCAKU00', 'PCAKU03',
    'PCAKV00', 'PCAKV03', 'PCAKW00', 'PCAKW03', 'PCALA00', 'PCALA03',
    'PCALB00', 'PCALB03', 'PCARR00', 'PCARR03', 'PCNGA00', 'PCNGA03',
    'PCNGB00', 'PCNGB03', 'PCNGC00'], 'ICE_EuroFutures': 'BRN',
    'CME_NymexFutures_EOD': 'CL'}


@lru_cache(maxsize=None)
def isContinuous(symbol):
    r = re.findall('\\d\\d\\d_M', symbol)
    if len(r) >= 1:
        return True


@lru_cache(maxsize=None)
def resolve_feedname(symbol):
    for feednamec in c:
        if symbol in c[feednamec]:
            if isContinuous(symbol):
                feednamec = '{}_continuous'.format(feednamec)
            return feednamec
    tokens = symbol.split('_')
    if len(tokens) > 0:
        for feednamec in c:
            if tokens[0] in c[feednamec]:
                if isContinuous(symbol):
                    feednamec = '{}_continuous'.format(feednamec)
                return feednamec

import re
from functools import lru_cache
keys = {'Platts': 'Code', 'ICE': 'Symbol'}
c = {'Platts_EB': ['AAGMK00', 'AAGML00', 'AAGMM00', 'AAGMN00', 'AAHYH00',
    'AAHYI00', 'AAHYJ00', 'AAHYK00', 'AAHYL00', 'AAHYM00', 'AAIDL00',
    'AAIDM00', 'AAIDN00', 'AAIDO00', 'AAIJH00', 'AAIJI00', 'AAIJJ00',
    'AAIJL00', 'AAIJM00', 'AAIJN00', 'AAIJO00', 'AAIJP00', 'AAIJQ00',
    'AAIKM00', 'AAIKN00', 'AAIKO00', 'AAIKP00', 'AAJUS00', 'AAJUT00',
    'AAJUV00', 'AAJUW00', 'AAKOD00', 'AAKOE00', 'AAKOF00', 'AAKOG00',
    'AAKOH00', 'AAKOI00', 'AAKUV00', 'AAKUV03', 'AAKWP00', 'AAKWQ00',
    'AAKWR00', 'AAKWS00', 'AALBJ00', 'AALGL00', 'AANWC00', 'AANWC03',
    'AANWY00', 'AANWY03', 'AAOPW00', 'AAOPW03', 'AAOPX00', 'AAOPX03',
    'AAOPY00', 'AAOPY03', 'AAOPZ00', 'AAOPZ03', 'AAOQA00', 'AAOQA03',
    'AAOQB00', 'AAOQB03', 'AAOQC00', 'AAOQC03', 'AAOQD00', 'AAOQD03',
    'AAOQZ00', 'AAOQZ03', 'AAOVN00', 'AAOVN03', 'AAPYV10', 'AAPYV13',
    'AAPYW10', 'AAPYW13', 'AAPYX10', 'AAPYX13', 'AAPYY10', 'AAPYY13',
    'AAQCD00', 'AAQCD03', 'AAQCE00', 'AAQCE03', 'AAQCF00', 'AAQCF03',
    'AAQCG00', 'AAQCG03', 'AAQCH00', 'AAQCH03', 'AAQCI00', 'AAQCI03',
    'AAQCJ00', 'AAQCJ03', 'AAQCK00', 'AAQCK03', 'AAQSG00', 'AAQSH00',
    'AAQSI00', 'AAQSJ00', 'AAQSK00', 'AAQSL00', 'AAQSM00', 'AAQZV00',
    'AAQZV03', 'AARGT00', 'AARGU00', 'AARGV00', 'AARIN00', 'AARIO00',
    'AARIP00', 'AARXM00', 'AARXM03', 'AARXN00', 'AARXN03', 'AASCR00',
    'AASCS00', 'AASCT00', 'AASCU00', 'AASCV00', 'AASCW00', 'AASXR00',
    'AASXR03', 'AAUCA00', 'AAUCA03', 'AAUCA04', 'AAUCB00', 'AAUCB03',
    'AAUCB04', 'AAUHE00', 'AAUHE03', 'AAUQC00', 'AAUQC03', 'AAUQF00',
    'AAUQF03', 'AAVBF00', 'AAVBF03', 'AAVBG00', 'AAVBG03', 'AAVBH00',
    'AAVBH03', 'AAVJE00', 'AAVJE03', 'AAVJI00', 'AAVJI03', 'AAVJJ00',
    'AAVJJ03', 'AAWGH00', 'AAWGH03', 'AAWGH04', 'AAWGI00', 'AAWGI03',
    'AAWGI04', 'AAWGJ00', 'AAWGJ03', 'AAWGJ04', 'AAWGK00', 'AAWGK03',
    'AAWGK04', 'AAWGY00', 'AAWGY03', 'AAWGY04', 'AAWYY00', 'AAWYY03',
    'AAWYZ00', 'AAWYZ03', 'AAWZA00', 'AAWZA03', 'AAWZB00', 'AAWZB03',
    'AAWZC00', 'AAWZC03', 'AAWZD00', 'AAWZD03', 'AAXFQ00', 'AAXFQ03',
    'AAXPM00', 'AAXPM03', 'AAXPN00', 'AAXPN03', 'AAXQL00', 'AAXQL03',
    'AAXQL04', 'AAYES00', 'AAYET00', 'AAYWR00', 'AAYWR03', 'AAYWS00',
    'AAYWS03', 'AAYWT00', 'AAYWT03', 'AAYWY00', 'AAYWY03', 'AAZBN00',
    'AAZBN03', 'AAZBO00', 'AAZBO03', 'ABWGF00', 'ABWGF03', 'ABWGG00',
    'ABWGG03', 'ABWGH00', 'ABWGH03', 'ABWGI00', 'ABWGI03', 'ABWGK00',
    'ABWGK03', 'ABWGL00', 'ABWGL03', 'ABWGM00', 'ABWGM03', 'ABWGN00',
    'ABWGN03', 'ABWGO00', 'ABWGO03', 'ABWGP00', 'ABWGP03', 'ABWGQ00',
    'ABWGQ03', 'ABWGR00', 'ABWGR03', 'ABWGS00', 'ABWGS03', 'ABWGT00',
    'ABWGT03', 'ABWGU00', 'ABWGU03', 'ABWGV00', 'ABWGV03', 'ABWGW00',
    'ABWGW03', 'ABWGX00', 'ABWGX03', 'ABWGY00', 'ABWGY03', 'ABWGZ00',
    'ABWGZ03', 'ABWHA00', 'ABWHA03', 'ABWHB00', 'ABWHB03', 'ABWHC00',
    'ABWHC03', 'ABWHD00', 'ABWHD03', 'ABWHE00', 'ABWHE03', 'ABWHF00',
    'ABWHF03', 'ABWHG00', 'ABWHG03', 'ABWHH00', 'ABWHH03', 'ABWHI00',
    'ABWHI03', 'ABWHJ00', 'ABWHJ03', 'ABWHK00', 'ABWHK03', 'ABWHL00',
    'ABWHL03', 'ABWHM00', 'ABWHM03', 'ABWHO00', 'ABWHO03', 'ABWHP00',
    'ABWHP03', 'ABWHQ00', 'ABWHQ03', 'ABXGA00', 'ABXGA03', 'ABXGB00',
    'ABXGB03', 'ABXGC00', 'ABXGC03', 'ABXGD00', 'ABXGD03', 'ABXGE00',
    'ABXGE03', 'ABXGF00', 'ABXGF03', 'ABXGG00', 'ABXGG03', 'ABXGH00',
    'ABXGH03', 'ABXGI00', 'ABXGI03', 'ABXGJ00', 'ABXGJ03', 'ABXGK00',
    'ABXGK03', 'ABXGL00', 'ABXGL03', 'ABXGM00', 'ABXGM03', 'ABXGN00',
    'ABXGN03', 'ABXGO00', 'ABXGO03', 'ABXGP00', 'ABXGP03', 'ABXGQ00',
    'ABXGQ03', 'ABXGR00', 'ABXGR03', 'ABXGS00', 'ABXGS03', 'ABXGT00',
    'ABXGT03', 'ABXGU00', 'ABXGU03', 'ABXGV00', 'ABXGV03', 'ABXGW00',
    'ABXGW03', 'ABXGX00', 'ABXGX03', 'ABXGY00', 'ABXGY03', 'ABXGZ00',
    'ABXGZ03', 'ABXHA00', 'ABXHA03', 'ABXHB00', 'ABXHB03', 'ABXHC00',
    'ABXHC03', 'ABXHD00', 'ABXHD03', 'ABXHE00', 'ABXHE03', 'ABXHF00',
    'ABXHF03', 'AGEFA00', 'AGEFA03', 'AGEFB00', 'AGEFB03', 'AGEFC00',
    'AGEFC03', 'AGEFE00', 'AGEFE03', 'AGEFS00', 'AGNWA00', 'AGNWA03',
    'AGNWC00', 'AGNWC03', 'AGNWD00', 'AGNWD03', 'AGNWE00', 'AGNWE03',
    'AJWAA00', 'AJWAB00', 'FOLNC00', 'FOLNC03', 'FOLND00', 'FOLND03',
    'MFCMM00', 'MFCMM03', 'MFFMM00', 'MFFMM03', 'PAAAH00', 'PAAAH03',
    'PAAAI00', 'PAAAI03', 'PAAAJ00', 'PAAAJ03', 'PAAAK00', 'PAAAK03',
    'PAAAL00', 'PAAAL03', 'PAAAM00', 'PAAAM03', 'PAAAN00', 'PAABH00',
    'PAABH03', 'PAABI00', 'PAABI03', 'PAABL00', 'PAABL03', 'PAABM00',
    'PAABM03', 'PGAAJ00', 'PGAAJ03', 'PGAAK00', 'PGAAK03', 'PGAAL00',
    'PGAAL03', 'PGABH00', 'PGABI00', 'PGABM00', 'PGABM03', 'PGABP00',
    'PGABP03', 'PGABQ00', 'PGABQ03', 'PGABR00', 'PGABR03', 'PGABU00',
    'PGABV00', 'PGABW00', 'PGABX00', 'PGABY00', 'PGACF00', 'PGACF03',
    'PGACG00', 'PGACK00', 'PGACZ00', 'PGADA00', 'PGADE00', 'PGAMJ00',
    'PGAMJ03', 'PGAML00', 'PGAML03', 'PGAMN00', 'PGAMP00', 'PGAMR00',
    'PHAKZ00', 'PJAAT00', 'PJAAU00', 'PJAAU03', 'PJAAV00', 'PJAAV03',
    'PJABA00', 'PJABA03', 'PJADQ00', 'PKAAE00', 'PKAAF00', 'PKAAG00',
    'PKAAG03', 'PKAAI00', 'PKAAN00', 'PKAAN03', 'PKABA00', 'PKABA03',
    'PKABE00', 'POAAA00', 'POAAA03', 'POAAB00', 'POAAB03', 'POAAC00',
    'POAAC03', 'POAAD00', 'POAAG00', 'POAAH00', 'POAAH03', 'POAAI00',
    'POAAI03', 'POAAJ00', 'POAAJ03', 'POAAP00', 'POAAP03', 'POAAQ00',
    'POAAQ03', 'POAAR00', 'POAAR03', 'POAAW00', 'POAAW03', 'POAAX00',
    'POAAX03', 'POADX00', 'POADX03', 'POAFI00', 'PPAQB00', 'PPAQD00',
    'PPAQF00', 'PPAQH00', 'PUAAJ00', 'PUAAJ03', 'PUAAK00', 'PUAAK03',
    'PUAAL00', 'PUAAL03', 'PUAAM00', 'PUAAM03', 'PUAAP00', 'PUAAP03',
    'PUAAY00', 'PUAAY03', 'PUAAZ00', 'PUAAZ03', 'PUABA00', 'PUABA03',
    'PUABB00', 'PUABB03', 'PUABC00', 'PUABC03', 'PUAGA00', 'PUAGB00',
    'PUAGN00', 'PUAGN03', 'PUAGO00', 'PUAGO03', 'PUAYW00', 'PUAYW03',
    'PUBFW00', 'PUBFX00', 'PUBFY00', 'PUMFD00', 'PUMFD03', 'PUMFE00',
    'PUMFE03', 'PVMFD00', 'PVMFD03'], 'Platts_RP': ['PCAAT00'], 'Platts_RI':
    ['AAEIY00', 'AAEIZ00', 'AAEJA00', 'AAEJB00', 'AAEJC00', 'AAEJD00',
    'AAEJG00', 'AAEJH00', 'AAEJI00', 'AAEUQ00', 'AAEUQ01', 'AAEUQ03',
    'AAEUQ04', 'AAGIP00', 'AAGIQ00', 'AAGIR00', 'AAGIS00', 'AAGIW00',
    'AAGIZ00', 'AAGJB00', 'AAGJC00', 'AAGJD00', 'AAGJE00', 'AAGJF00',
    'AAGJG00', 'AAGLS00', 'AAGLT00', 'AAGLU00', 'AAGLV00', 'AAGVW00',
    'AAGVW03', 'AAGVX00', 'AAGVX03', 'AAGVY00', 'AAGVY03', 'AAGWU00',
    'AAGWV00', 'AAGWW00', 'AAGWZ00', 'AAGXA00', 'AAGXB00', 'AAGXC00',
    'AAGXD00', 'AAGXE00', 'AAGXF00', 'AAGXG00', 'AAGXH00', 'AAGXI00',
    'AAGXJ00', 'AAGXK00', 'AAGXL00', 'AAGXM00', 'AAGXN00', 'AAGXO00',
    'AAGXP00', 'AAGXQ00', 'AAGXR00', 'AAGXS00', 'AAGXT00', 'AAGXU00',
    'AAGXV00', 'AAGXW00', 'AAGXX00', 'AAGXY00', 'AAGXZ00', 'AAGYA00',
    'AAGYB00', 'AAGYC00', 'AAGYD00', 'AAGYE00', 'AAGYF00', 'AAGYG00',
    'AAGYH00', 'AAGYI00', 'AAGZS00', 'AAGZT00', 'AAGZU00', 'AAGZV00',
    'AAGZW00', 'AAGZX00', 'AAGZY00', 'AAGZZ00', 'AAHML00', 'AAHMM00',
    'AAHMN00', 'AAHMO00', 'AAHMP00', 'AAHMP03', 'AAHMQ00', 'AAHMR00',
    'AAHPH00', 'AAHPI00', 'AAHPJ00', 'AAHPK00', 'AAHPL00', 'AAHPM00',
    'AAHPN00', 'AAHPO00', 'AAHPP00', 'AAHPQ00', 'AAHPV00', 'AAHPW00',
    'AAHPX00', 'AAHXB00', 'AAHXB03', 'AAHXC00', 'AAHXC03', 'AAHXD00',
    'AAHXD03', 'AAHXE00', 'AAHXE03', 'AAHXW00', 'AAHZF00', 'AAHZG00',
    'AAHZH00', 'AAHZI00', 'AAHZJ00', 'AAHZK00', 'AAHZL00', 'AAHZM00',
    'AAHZN00', 'AAHZO00', 'AAHZP00', 'AAHZQ00', 'AAHZR00', 'AAHZT00',
    'AAHZU00', 'AAHZX00', 'AAIHJ00', 'AAIHL00', 'AAIHN00', 'AAIHO00',
    'AAIHO03', 'AAIHP00', 'AAIHP03', 'AAIHQ00', 'AAIHS00', 'AAIHT00',
    'AAIHU00', 'AAIHV00', 'AAIIK00', 'AAIIP00', 'AAIIT00', 'AAIIZ00',
    'AAIJA00', 'AAIJB00', 'AAIJC00', 'AAIJD00', 'AAIJS00', 'AAIJT00',
    'AAIJU00', 'AAISU00', 'AAIUG00', 'AAIVI00', 'AAJCO00', 'AAJCP00',
    'AAJCQ00', 'AAJCR00', 'AAJHP00', 'AAJHR00', 'AAJHV00', 'AAJHX00',
    'AAJHY00', 'AAJHZ00', 'AAJIA00', 'AAJIB00', 'AAJIC00', 'AAJID00',
    'AAJIE00', 'AAJIF00', 'AAJIG00', 'AAJIH00', 'AAJJE00', 'AAJJF00',
    'AAJJG00', 'AAJJH00', 'AAJJI00', 'AAJJJ00', 'AAJJK00', 'AAJJL00',
    'AAJJM00', 'AAJKK00', 'AAJKL00', 'AAJKM00', 'AAJKN00', 'AAJMS00',
    'AAJMS03', 'AAJNV00', 'AAJOR00', 'AAJOS00', 'AAJOT00', 'AAJOU00',
    'AAJOV00', 'AAJOW00', 'AAJOX00', 'AAJPC00', 'AAJPC03', 'AAJPD00',
    'AAJPE00', 'AAJPF00', 'AAJPG00', 'AAJPH00', 'AAJPI00', 'AAJPK00',
    'AAJPL00', 'AAJPM00', 'AAJPN00', 'AAJPO00', 'AAJPP00', 'AAJPQ00',
    'AAJPR00', 'AAJPS00', 'AAJUH00', 'AAJUI00', 'AAJUJ00', 'AAJUK00',
    'AAKWH00', 'AAKWI00', 'AALAT00', 'AALAT03', 'AALAU00', 'AALAU03',
    'AALAV00', 'AALAV03', 'AALAW00', 'AALAW03', 'AALAX00', 'AALAX03',
    'AALAY00', 'AALAY03', 'AALCZ00', 'AALCZ03', 'AALDA00', 'AALDA03',
    'AALDF00', 'AALDG00', 'AALDH00', 'AALDI00', 'AALDJ00', 'AALDK00',
    'AALGM00', 'AALGN00', 'AALHU00', 'AALHV00', 'AALIN00', 'AALIO00',
    'AALOU00', 'AALOV00', 'AALOW00', 'AALOW03', 'AALOX00', 'AALOY00',
    'AALST00', 'AALSU00', 'AALVX00', 'AALVY00', 'AALVZ00', 'AALWC00',
    'AALWD00', 'AALWE00', 'AALWF00', 'AALWG00', 'AAMDR00', 'AAMDS00',
    'AAMDU00', 'AAMDV00', 'AAMDX00', 'AAMDY00', 'AAMEA00', 'AAMEB00',
    'AAMVY00', 'AAMVY03', 'AAOFD00', 'AAOFD03', 'AAOFV00', 'AAOFV03',
    'AAOFW00', 'AAOFW03', 'AAOTH00', 'AAOTH03', 'AAOTI00', 'AAOTI03',
    'AAOZV00', 'AAOZV03', 'AAOZX00', 'AAOZX03', 'AAPAB00', 'AAPAB03',
    'AAPAD00', 'AAPAD03', 'AAPAF00', 'AAPAF03', 'AAPAH00', 'AAPAH03',
    'AAPAJ00', 'AAPAJ03', 'AAPAL00', 'AAPAL03', 'AAPAN00', 'AAPAN03',
    'AAPAP00', 'AAPAP03', 'AAPAR00', 'AAPAR03', 'AAPAT00', 'AAPAT03',
    'AAPAV00', 'AAPAV03', 'AAPAX00', 'AAPAX03', 'AAPAZ00', 'AAPAZ03',
    'AAPBB00', 'AAPBB03', 'AAPBD00', 'AAPBD03', 'AAPBF00', 'AAPBF03',
    'AAPBH00', 'AAPBH03', 'AAPBJ00', 'AAPBJ03', 'AAPBL00', 'AAPBL03',
    'AAPBN00', 'AAPBN03', 'AAPBP00', 'AAPBP03', 'AAPBR00', 'AAPBR03',
    'AAPDO00', 'AAPDO03', 'AAPET00', 'AAPET03', 'AAPEU00', 'AAPEU03',
    'AAPEW00', 'AAPEW03', 'AAPEX00', 'AAPEX03', 'AAPLC00', 'AAPLC03',
    'AAPYR00', 'AAPYR03', 'AAPYS00', 'AAPYS03', 'AAPYT00', 'AAPYT03',
    'AAPYU00', 'AAPYU03', 'AAQAR00', 'AAQAR03', 'AAQAR13', 'AAQAS00',
    'AAQAS03', 'AAQAS13', 'AAQAT00', 'AAQAT03', 'AAQAT13', 'AAQAU00',
    'AAQAU03', 'AAQAU13', 'AAQAV00', 'AAQAV03', 'AAQAV13', 'AAQAW00',
    'AAQAW03', 'AAQAW13', 'AAQAX00', 'AAQAX03', 'AAQAX13', 'AAQAY00',
    'AAQAY03', 'AAQAY13', 'AAQAZ00', 'AAQAZ03', 'AAQAZ13', 'AAQBA00',
    'AAQBA03', 'AAQBA13', 'AAQBB00', 'AAQBB03', 'AAQBB13', 'AAQBC00',
    'AAQBC03', 'AAQBC13', 'AAQBD00', 'AAQBD03', 'AAQBD13', 'AAQBE00',
    'AAQBE03', 'AAQBE13', 'AAQBF00', 'AAQBF03', 'AAQBG00', 'AAQBH00',
    'AAQNI00', 'AAQYX00', 'AAQYX03', 'AAQYY00', 'AAQYY03', 'AAQYZ00',
    'AAQYZ03', 'AAQZA00', 'AAQZA03', 'AAQZB00', 'AAQZB03', 'AAQZC00',
    'AAQZC03', 'AARAA00', 'AARAA03', 'AARAB00', 'AARAB03', 'AARAC00',
    'AARAC03', 'AARAD00', 'AARAD03', 'AARAE00', 'AARAE03', 'AARAF00',
    'AARAF03', 'AARAG00', 'AARAG03', 'AARAH00', 'AARAH03', 'AARAI00',
    'AARAI03', 'AARAJ00', 'AARAJ03', 'AARAK00', 'AARAK03', 'AARAL00',
    'AARAL03', 'AARAM00', 'AARAM03', 'AARAN00', 'AARAN03', 'AARAO00',
    'AARAO03', 'AARAP00', 'AARAP03', 'AARAQ00', 'AARAQ03', 'AARAR00',
    'AARAR03', 'AARAS00', 'AARAS03', 'AARAT00', 'AARAT03', 'AARAU00',
    'AARAU03', 'AARAV00', 'AARAV03', 'AARAW00', 'AARAW03', 'AARAX00',
    'AARAX03', 'AARAY00', 'AARAY03', 'AARAZ00', 'AARAZ03', 'AARBA00',
    'AARBA03', 'AARBB00', 'AARBB03', 'AARBC00', 'AARBC03', 'AARBD00',
    'AARBD03', 'AARBV00', 'AARBV03', 'AARBW00', 'AARBW03', 'AARBX00',
    'AARBX03', 'AARBY00', 'AARBY03', 'AAREN00', 'AAREN03', 'AARWD00',
    'AARWD03', 'AARWE00', 'AARWE03', 'AARWF00', 'AARWF03', 'AASAS00',
    'AASAS03', 'AASAT00', 'AASAT03', 'AASAU00', 'AASAU03', 'AASAV00',
    'AASAV03', 'AASCJ00', 'AASCJ03', 'AASCK00', 'AASCK03', 'AASCN00',
    'AASCN03', 'AASEU00', 'AASEU03', 'AASJD00', 'AASJD03', 'AASJE00',
    'AASJE03', 'AASJF00', 'AASJF03', 'AASLJ00', 'AASLJ03', 'AASLK00',
    'AASLK03', 'AASNL00', 'AASNL03', 'AATHM00', 'AATHM03', 'AATHN00',
    'AATHN03', 'AAUFH00', 'AAUFH03', 'AAUFI00', 'AAUFI03', 'AAUFJ00',
    'AAUFJ03', 'AAUFK00', 'AAUFK03', 'AAUFL00', 'AAUFL03', 'AAUFM00',
    'AAUFM03', 'AAUFN00', 'AAUFN03', 'AAUJP00', 'AAUJP03', 'AAUJQ00',
    'AAUJQ03', 'AAUJR00', 'AAUJR03', 'AAUJS00', 'AAUJS03', 'AAUJT00',
    'AAUJT03', 'AAUXL00', 'AAVJA00', 'AAVJA03', 'AAVJA04', 'AAVJB00',
    'AAVJB03', 'AAVJC00', 'AAVJC03', 'AAVJF00', 'AAVJF03', 'AAVJG00',
    'AAVJG03', 'AAWEP00', 'AAWEP03', 'AAWEX00', 'AAWEX03', 'AAWEY00',
    'AAWEY03', 'AAWEZ00', 'AAWEZ03', 'AAWFH00', 'AAWFH03', 'AAWFI00',
    'AAWFI03', 'AAWFJ00', 'AAWFJ03', 'AAWFK00', 'AAWFK03', 'AAWFL00',
    'AAWFL03', 'AAWSA00', 'AAWSA03', 'AAWSB00', 'AAWSB03', 'AAWSC00',
    'AAWSC03', 'AAWVH00', 'AAWVH03', 'AAWVI00', 'AAWVI03', 'AAWXV00',
    'AAWXV03', 'AAWXW00', 'AAWXW03', 'AAWXY00', 'AAWXY03', 'AAXDW00',
    'AAXDX00', 'AAXDY00', 'AAXDZ00', 'AAXEZ00', 'AAXEZ03', 'AAXIL00',
    'AAXJM00', 'AAXJM03', 'AAXJN00', 'AAXJN03', 'AAXJO00', 'AAXJO03',
    'AAXPG00', 'AAXPG03', 'AAXRK00', 'AAXRK03', 'AAXUO00', 'AAXUO03',
    'AAXUP00', 'AAXUP03', 'AAXUQ00', 'AAXUQ03', 'AAXUR00', 'AAXUR03',
    'AAXUS00', 'AAXUS03', 'AAXUT00', 'AAXUT03', 'AAXUU00', 'AAXUU03',
    'AAXUV00', 'AAXUV03', 'AAXYD00', 'AAXYD03', 'AAXZA00', 'AAXZA03',
    'AAXZB00', 'AAXZB03', 'AAXZC00', 'AAXZC03', 'AAXZD00', 'AAXZD03',
    'AAXZE00', 'AAXZE03', 'AAXZF00', 'AAXZF03', 'AAXZG00', 'AAXZG03',
    'AAYRZ00', 'AAYRZ03', 'AAYSA00', 'AAYSA03', 'AAYTA00', 'AAYTA03',
    'AAYVA00', 'AAYVA03', 'AAYWA00', 'AAYWA03', 'ABWGE00', 'ABWGE03',
    'ADBRA00', 'ADBRA03', 'ADFCD00', 'ADFCD03', 'AEFAA00', 'AEFAA03',
    'AEFAB00', 'AEFAB03', 'AEFAC00', 'AEFAC03', 'AEFAD00', 'AEFAD03',
    'AFONA00', 'AFONA03', 'AFONB00', 'AFONB03', 'AIHKA00', 'AIHKA03',
    'AIHKA04', 'AIHKB00', 'AIHKB03', 'AILKA00', 'AILKA03', 'AILKA04',
    'AILKB00', 'AILKB03', 'AJSVA00', 'AJSVA03', 'AJSVB00', 'AJSVB03',
    'ALVHA00', 'ALVHA03', 'ALVHB00', 'ALVHB03', 'AODFA00', 'ASGCA00',
    'ASGCA03', 'ASGCB00', 'ASGCB03', 'ATFNA00', 'ATFNB00', 'AWTIA00',
    'AWTIA03', 'AWTIB00', 'AWTIB03', 'AWTIC00', 'AWTIC03', 'AWTID00',
    'AWTID03', 'BVBM012', 'BVBM023', 'BVBM034', 'BVDM021', 'BVDM032',
    'CRPOA03', 'CRPOB03', 'CRPOC03', 'CRPOD03', 'CRPOE03', 'CRPOF03',
    'CRPOG03', 'CRPOH03', 'CRPOI03', 'CRPOJ03', 'CRPOK03', 'CRPOL03',
    'CRPOM03', 'CRPON03', 'CRPOO03', 'CRPOP03', 'CRPOQ03', 'DBVBM00',
    'FAFWA00', 'FAFWAM2', 'FHPRM00', 'FHPRM03', 'FHPRM20', 'FHPRM23',
    'FMGRM00', 'FMGRM03', 'FMGRM20', 'FMGRM23', 'FSTRM00', 'FSTRM03',
    'FSTRM20', 'FSTRM23', 'FSVRM00', 'FSVRM03', 'FSVRM20', 'FSVRM23',
    'FTSRM00', 'FTSRM03', 'FTSRM20', 'FTSRM23', 'ICO2010', 'ICO2011',
    'ICO2012', 'ICOQ110', 'ICOQ111', 'ICOQ112', 'ICOQ210', 'ICOQ211',
    'ICOQ212', 'ICOQ310', 'ICOQ311', 'ICOQ312', 'ICOQ410', 'ICOQ411',
    'ICOQ412', 'ICS2010', 'ICS2011', 'ICS2012', 'ICSQ110', 'ICSQ111',
    'ICSQ112', 'ICSQ210', 'ICSQ211', 'ICSQ212', 'ICSQ310', 'ICSQ311',
    'ICSQ312', 'ICSQ410', 'ICSQ411', 'ICSQ412', 'IDN2010', 'IDN2011',
    'IDN2012', 'IDNQ110', 'IDNQ111', 'IDNQ112', 'IDNQ210', 'IDNQ211',
    'IDNQ212', 'IDNQ310', 'IDNQ311', 'IDNQ312', 'IDNQ410', 'IDNQ411',
    'IDNQ412', 'IDO2010', 'IDO2011', 'IDO2012', 'IDOQ110', 'IDOQ111',
    'IDOQ112', 'IDOQ210', 'IDOQ211', 'IDOQ212', 'IDOQ310', 'IDOQ311',
    'IDOQ312', 'IDOQ410', 'IDOQ411', 'IDOQ412', 'INS2010', 'INS2011',
    'INS2012', 'INSQ110', 'INSQ111', 'INSQ112', 'INSQ210', 'INSQ211',
    'INSQ212', 'INSQ310', 'INSQ311', 'INSQ312', 'INSQ410', 'INSQ411',
    'INSQ412', 'IOS2010', 'IOS2011', 'IOS2012', 'IOSQ110', 'IOSQ111',
    'IOSQ112', 'IOSQ210', 'IOSQ211', 'IOSQ212', 'IOSQ310', 'IOSQ311',
    'IOSQ312', 'IOSQ410', 'IOSQ411', 'IOSQ412', 'ISB2010', 'ISB2011',
    'ISB2012', 'ISBQ110', 'ISBQ111', 'ISBQ112', 'ISBQ210', 'ISBQ211',
    'ISBQ212', 'ISBQ310', 'ISBQ311', 'ISBQ312', 'ISBQ410', 'ISBQ411',
    'ISBQ412', 'ISI2010', 'ISI2011', 'ISI2012', 'ISIQ110', 'ISIQ111',
    'ISIQ112', 'ISIQ210', 'ISIQ211', 'ISIQ212', 'ISIQ310', 'ISIQ311',
    'ISIQ312', 'ISIQ410', 'ISIQ411', 'ISIQ412', 'ITD2010', 'ITD2011',
    'ITD2012', 'ITDQ110', 'ITDQ111', 'ITDQ112', 'ITDQ210', 'ITDQ211',
    'ITDQ212', 'ITDQ310', 'ITDQ311', 'ITDQ312', 'ITDQ410', 'ITDQ411',
    'ITDQ412', 'ITS2010', 'ITS2011', 'ITS2012', 'ITSQ110', 'ITSQ111',
    'ITSQ112', 'ITSQ210', 'ITSQ211', 'ITSQ212', 'ITSQ310', 'ITSQ311',
    'ITSQ312', 'ITSQ410', 'ITSQ411', 'ITSQ412', 'PBAM1M2', 'PBAM2M3',
    'PBBM1M2', 'PBBM2M3', 'PBCAAM1', 'PBCAAM2', 'PBCAAM3', 'PBCABM1',
    'PBCABM2', 'PBCABM3', 'PBCACM1', 'PBCACM2', 'PBCACM3', 'PBCADM1',
    'PBCADM2', 'PBCADM3', 'PBCM1M2', 'PBCM2M3', 'PBDM1M2', 'PBDM2M3',
    'PCAAE00', 'PCAAL00', 'PCAAL03', 'PCAAP00', 'PCAAQ00', 'PCAAR00',
    'PCAAS00', 'PCAAU00', 'PCAAV00', 'PCABC00', 'PCABH00', 'PCABI00',
    'PCABR00', 'PCABR03', 'PCABS00', 'PCABT00', 'PCACA00', 'PCACE00',
    'PCACO00', 'PCACZ00', 'PCADG10', 'PCADI00', 'PCADJ00', 'PCADL00',
    'PCADM00', 'PCADV00', 'PCAEC10', 'PCAED10', 'PCAEE00', 'PCAET00',
    'PCAEU00', 'PCAEV00', 'PCAEW00', 'PCAFD00', 'PCAFG03', 'PCAFH03',
    'PCAFK00', 'PCAFK03', 'PCAFW00', 'PCAGV00', 'PCAIC00', 'PCAID00',
    'PCAIU00', 'PCAIW00', 'PCAIY00', 'PCAJ000', 'PCAJ003', 'PCAJA00',
    'PCAJC00', 'PCAJE00', 'PCAJG00', 'PCAJI00', 'PCAKA00', 'PCAKC00',
    'PCAKE00', 'PCAKG00', 'PCAKM00', 'PCAKM03', 'PCAKN00', 'PCAKN03',
    'PCAKP00', 'PCAKP03', 'PCAKQ00', 'PCAKQ03', 'PCAKR00', 'PCAKR03',
    'PCAKS00', 'PCAKS03', 'PCAKT00', 'PCAKT03', 'PCAKU00', 'PCAKU03',
    'PCAKV00', 'PCAKV03', 'PCAKW00', 'PCAKW03', 'PCALA00', 'PCALA03',
    'PCALB00', 'PCALB03', 'PCARR00', 'PCARR03', 'PCNGA00', 'PCNGA03',
    'PCNGB00', 'PCNGB03', 'PCNGC00'], 'ICE_EuroFutures': 'BRN',
    'CME_NymexFutures_EOD': 'CL'}


@lru_cache(maxsize=None)
def isContinuous(symbol):
    r = re.findall('\\d\\d\\d_M', symbol)
    if len(r) >= 1:
        return True


@lru_cache(maxsize=None)
def resolve_feedname(symbol):
    for feednamec in c:
        if symbol in c[feednamec]:
            if isContinuous(symbol):
                feednamec = '{}_continuous'.format(feednamec)
            return feednamec
    tokens = symbol.split('_')
    if len(tokens) > 0:
        for feednamec in c:
            if tokens[0] in c[feednamec]:
                if isContinuous(symbol):
                    feednamec = '{}_continuous'.format(feednamec)
                return feednamec

import re
from functools import lru_cache

keys = {
    'Platts' : 'Code',
    'ICE' : 'Symbol',
}


c = {
'Platts_EB': [
  'AAGMK00',
  'AAGML00',
  'AAGMM00',
  'AAGMN00',
  'AAHYH00',
  'AAHYI00',
  'AAHYJ00',
  'AAHYK00',
  'AAHYL00',
  'AAHYM00',
  'AAIDL00',
  'AAIDM00',
  'AAIDN00',
  'AAIDO00',
  'AAIJH00',
  'AAIJI00',
  'AAIJJ00',
  'AAIJL00',
  'AAIJM00',
  'AAIJN00',
  'AAIJO00',
  'AAIJP00',
  'AAIJQ00',
  'AAIKM00',
  'AAIKN00',
  'AAIKO00',
  'AAIKP00',
  'AAJUS00',
  'AAJUT00',
  'AAJUV00',
  'AAJUW00',
  'AAKOD00',
  'AAKOE00',
  'AAKOF00',
  'AAKOG00',
  'AAKOH00',
  'AAKOI00',
  'AAKUV00',
  'AAKUV03',
  'AAKWP00',
  'AAKWQ00',
  'AAKWR00',
  'AAKWS00',
  'AALBJ00',
  'AALGL00',
  'AANWC00',
  'AANWC03',
  'AANWY00',
  'AANWY03',
  'AAOPW00',
  'AAOPW03',
  'AAOPX00',
  'AAOPX03',
  'AAOPY00',
  'AAOPY03',
  'AAOPZ00',
  'AAOPZ03',
  'AAOQA00',
  'AAOQA03',
  'AAOQB00',
  'AAOQB03',
  'AAOQC00',
  'AAOQC03',
  'AAOQD00',
  'AAOQD03',
  'AAOQZ00',
  'AAOQZ03',
  'AAOVN00',
  'AAOVN03',
  'AAPYV10',
  'AAPYV13',
  'AAPYW10',
  'AAPYW13',
  'AAPYX10',
  'AAPYX13',
  'AAPYY10',
  'AAPYY13',
  'AAQCD00',
  'AAQCD03',
  'AAQCE00',
  'AAQCE03',
  'AAQCF00',
  'AAQCF03',
  'AAQCG00',
  'AAQCG03',
  'AAQCH00',
  'AAQCH03',
  'AAQCI00',
  'AAQCI03',
  'AAQCJ00',
  'AAQCJ03',
  'AAQCK00',
  'AAQCK03',
  'AAQSG00',
  'AAQSH00',
  'AAQSI00',
  'AAQSJ00',
  'AAQSK00',
  'AAQSL00',
  'AAQSM00',
  'AAQZV00',
  'AAQZV03',
  'AARGT00',
  'AARGU00',
  'AARGV00',
  'AARIN00',
  'AARIO00',
  'AARIP00',
  'AARXM00',
  'AARXM03',
  'AARXN00',
  'AARXN03',
  'AASCR00',
  'AASCS00',
  'AASCT00',
  'AASCU00',
  'AASCV00',
  'AASCW00',
  'AASXR00',
  'AASXR03',
  'AAUCA00',
  'AAUCA03',
  'AAUCA04',
  'AAUCB00',
  'AAUCB03',
  'AAUCB04',
  'AAUHE00',
  'AAUHE03',
  'AAUQC00',
  'AAUQC03',
  'AAUQF00',
  'AAUQF03',
  'AAVBF00',
  'AAVBF03',
  'AAVBG00',
  'AAVBG03',
  'AAVBH00',
  'AAVBH03',
  'AAVJE00',
  'AAVJE03',
  'AAVJI00',
  'AAVJI03',
  'AAVJJ00',
  'AAVJJ03',
  'AAWGH00',
  'AAWGH03',
  'AAWGH04',
  'AAWGI00',
  'AAWGI03',
  'AAWGI04',
  'AAWGJ00',
  'AAWGJ03',
  'AAWGJ04',
  'AAWGK00',
  'AAWGK03',
  'AAWGK04',
  'AAWGY00',
  'AAWGY03',
  'AAWGY04',
  'AAWYY00',
  'AAWYY03',
  'AAWYZ00',
  'AAWYZ03',
  'AAWZA00',
  'AAWZA03',
  'AAWZB00',
  'AAWZB03',
  'AAWZC00',
  'AAWZC03',
  'AAWZD00',
  'AAWZD03',
  'AAXFQ00',
  'AAXFQ03',
  'AAXPM00',
  'AAXPM03',
  'AAXPN00',
  'AAXPN03',
  'AAXQL00',
  'AAXQL03',
  'AAXQL04',
  'AAYES00',
  'AAYET00',
  'AAYWR00',
  'AAYWR03',
  'AAYWS00',
  'AAYWS03',
  'AAYWT00',
  'AAYWT03',
  'AAYWY00',
  'AAYWY03',
  'AAZBN00',
  'AAZBN03',
  'AAZBO00',
  'AAZBO03',
  'ABWGF00',
  'ABWGF03',
  'ABWGG00',
  'ABWGG03',
  'ABWGH00',
  'ABWGH03',
  'ABWGI00',
  'ABWGI03',
  'ABWGK00',
  'ABWGK03',
  'ABWGL00',
  'ABWGL03',
  'ABWGM00',
  'ABWGM03',
  'ABWGN00',
  'ABWGN03',
  'ABWGO00',
  'ABWGO03',
  'ABWGP00',
  'ABWGP03',
  'ABWGQ00',
  'ABWGQ03',
  'ABWGR00',
  'ABWGR03',
  'ABWGS00',
  'ABWGS03',
  'ABWGT00',
  'ABWGT03',
  'ABWGU00',
  'ABWGU03',
  'ABWGV00',
  'ABWGV03',
  'ABWGW00',
  'ABWGW03',
  'ABWGX00',
  'ABWGX03',
  'ABWGY00',
  'ABWGY03',
  'ABWGZ00',
  'ABWGZ03',
  'ABWHA00',
  'ABWHA03',
  'ABWHB00',
  'ABWHB03',
  'ABWHC00',
  'ABWHC03',
  'ABWHD00',
  'ABWHD03',
  'ABWHE00',
  'ABWHE03',
  'ABWHF00',
  'ABWHF03',
  'ABWHG00',
  'ABWHG03',
  'ABWHH00',
  'ABWHH03',
  'ABWHI00',
  'ABWHI03',
  'ABWHJ00',
  'ABWHJ03',
  'ABWHK00',
  'ABWHK03',
  'ABWHL00',
  'ABWHL03',
  'ABWHM00',
  'ABWHM03',
  'ABWHO00',
  'ABWHO03',
  'ABWHP00',
  'ABWHP03',
  'ABWHQ00',
  'ABWHQ03',
  'ABXGA00',
  'ABXGA03',
  'ABXGB00',
  'ABXGB03',
  'ABXGC00',
  'ABXGC03',
  'ABXGD00',
  'ABXGD03',
  'ABXGE00',
  'ABXGE03',
  'ABXGF00',
  'ABXGF03',
  'ABXGG00',
  'ABXGG03',
  'ABXGH00',
  'ABXGH03',
  'ABXGI00',
  'ABXGI03',
  'ABXGJ00',
  'ABXGJ03',
  'ABXGK00',
  'ABXGK03',
  'ABXGL00',
  'ABXGL03',
  'ABXGM00',
  'ABXGM03',
  'ABXGN00',
  'ABXGN03',
  'ABXGO00',
  'ABXGO03',
  'ABXGP00',
  'ABXGP03',
  'ABXGQ00',
  'ABXGQ03',
  'ABXGR00',
  'ABXGR03',
  'ABXGS00',
  'ABXGS03',
  'ABXGT00',
  'ABXGT03',
  'ABXGU00',
  'ABXGU03',
  'ABXGV00',
  'ABXGV03',
  'ABXGW00',
  'ABXGW03',
  'ABXGX00',
  'ABXGX03',
  'ABXGY00',
  'ABXGY03',
  'ABXGZ00',
  'ABXGZ03',
  'ABXHA00',
  'ABXHA03',
  'ABXHB00',
  'ABXHB03',
  'ABXHC00',
  'ABXHC03',
  'ABXHD00',
  'ABXHD03',
  'ABXHE00',
  'ABXHE03',
  'ABXHF00',
  'ABXHF03',
  'AGEFA00',
  'AGEFA03',
  'AGEFB00',
  'AGEFB03',
  'AGEFC00',
  'AGEFC03',
  'AGEFE00',
  'AGEFE03',
  'AGEFS00',
  'AGNWA00',
  'AGNWA03',
  'AGNWC00',
  'AGNWC03',
  'AGNWD00',
  'AGNWD03',
  'AGNWE00',
  'AGNWE03',
  'AJWAA00',
  'AJWAB00',
  'FOLNC00',
  'FOLNC03',
  'FOLND00',
  'FOLND03',
  'MFCMM00',
  'MFCMM03',
  'MFFMM00',
  'MFFMM03',
  'PAAAH00',
  'PAAAH03',
  'PAAAI00',
  'PAAAI03',
  'PAAAJ00',
  'PAAAJ03',
  'PAAAK00',
  'PAAAK03',
  'PAAAL00',
  'PAAAL03',
  'PAAAM00',
  'PAAAM03',
  'PAAAN00',
  'PAABH00',
  'PAABH03',
  'PAABI00',
  'PAABI03',
  'PAABL00',
  'PAABL03',
  'PAABM00',
  'PAABM03',
  'PGAAJ00',
  'PGAAJ03',
  'PGAAK00',
  'PGAAK03',
  'PGAAL00',
  'PGAAL03',
  'PGABH00',
  'PGABI00',
  'PGABM00',
  'PGABM03',
  'PGABP00',
  'PGABP03',
  'PGABQ00',
  'PGABQ03',
  'PGABR00',
  'PGABR03',
  'PGABU00',
  'PGABV00',
  'PGABW00',
  'PGABX00',
  'PGABY00',
  'PGACF00',
  'PGACF03',
  'PGACG00',
  'PGACK00',
  'PGACZ00',
  'PGADA00',
  'PGADE00',
  'PGAMJ00',
  'PGAMJ03',
  'PGAML00',
  'PGAML03',
  'PGAMN00',
  'PGAMP00',
  'PGAMR00',
  'PHAKZ00',
  'PJAAT00',
  'PJAAU00',
  'PJAAU03',
  'PJAAV00',
  'PJAAV03',
  'PJABA00',
  'PJABA03',
  'PJADQ00',
  'PKAAE00',
  'PKAAF00',
  'PKAAG00',
  'PKAAG03',
  'PKAAI00',
  'PKAAN00',
  'PKAAN03',
  'PKABA00',
  'PKABA03',
  'PKABE00',
  'POAAA00',
  'POAAA03',
  'POAAB00',
  'POAAB03',
  'POAAC00',
  'POAAC03',
  'POAAD00',
  'POAAG00',
  'POAAH00',
  'POAAH03',
  'POAAI00',
  'POAAI03',
  'POAAJ00',
  'POAAJ03',
  'POAAP00',
  'POAAP03',
  'POAAQ00',
  'POAAQ03',
  'POAAR00',
  'POAAR03',
  'POAAW00',
  'POAAW03',
  'POAAX00',
  'POAAX03',
  'POADX00',
  'POADX03',
  'POAFI00',
  'PPAQB00',
  'PPAQD00',
  'PPAQF00',
  'PPAQH00',
  'PUAAJ00',
  'PUAAJ03',
  'PUAAK00',
  'PUAAK03',
  'PUAAL00',
  'PUAAL03',
  'PUAAM00',
  'PUAAM03',
  'PUAAP00',
  'PUAAP03',
  'PUAAY00',
  'PUAAY03',
  'PUAAZ00',
  'PUAAZ03',
  'PUABA00',
  'PUABA03',
  'PUABB00',
  'PUABB03',
  'PUABC00',
  'PUABC03',
  'PUAGA00',
  'PUAGB00',
  'PUAGN00',
  'PUAGN03',
  'PUAGO00',
  'PUAGO03',
  'PUAYW00',
  'PUAYW03',
  'PUBFW00',
  'PUBFX00',
  'PUBFY00',
  'PUMFD00',
  'PUMFD03',
  'PUMFE00',
  'PUMFE03',
  'PVMFD00',
  'PVMFD03'],
'Platts_RP': ['PCAAT00'],
'Platts_RI': [
  'AAEIY00', 'AAEIZ00', 'AAEJA00', 'AAEJB00', 'AAEJC00', 'AAEJD00', 'AAEJG00', 'AAEJH00', 'AAEJI00', 'AAEUQ00', 'AAEUQ01', 'AAEUQ03', 'AAEUQ04', 'AAGIP00', 'AAGIQ00', 'AAGIR00', 'AAGIS00', 'AAGIW00', 'AAGIZ00', 'AAGJB00', 'AAGJC00', 'AAGJD00', 'AAGJE00', 'AAGJF00', 'AAGJG00', 'AAGLS00', 'AAGLT00', 'AAGLU00', 'AAGLV00', 'AAGVW00', 'AAGVW03', 'AAGVX00', 'AAGVX03', 'AAGVY00', 'AAGVY03', 'AAGWU00', 'AAGWV00', 'AAGWW00', 'AAGWZ00', 'AAGXA00', 'AAGXB00', 'AAGXC00', 'AAGXD00', 'AAGXE00', 'AAGXF00', 'AAGXG00', 'AAGXH00', 'AAGXI00', 'AAGXJ00', 'AAGXK00', 'AAGXL00', 'AAGXM00', 'AAGXN00', 'AAGXO00', 'AAGXP00', 'AAGXQ00', 'AAGXR00', 'AAGXS00', 'AAGXT00', 'AAGXU00', 'AAGXV00', 'AAGXW00', 'AAGXX00', 'AAGXY00', 'AAGXZ00', 'AAGYA00', 'AAGYB00', 'AAGYC00', 'AAGYD00', 'AAGYE00', 'AAGYF00', 'AAGYG00', 'AAGYH00', 'AAGYI00', 'AAGZS00', 'AAGZT00', 'AAGZU00', 'AAGZV00', 'AAGZW00', 'AAGZX00', 'AAGZY00', 'AAGZZ00', 'AAHML00', 'AAHMM00', 'AAHMN00', 'AAHMO00', 'AAHMP00', 'AAHMP03', 'AAHMQ00', 'AAHMR00', 'AAHPH00', 'AAHPI00', 'AAHPJ00', 'AAHPK00', 'AAHPL00', 'AAHPM00', 'AAHPN00', 'AAHPO00', 'AAHPP00', 'AAHPQ00', 'AAHPV00', 'AAHPW00', 'AAHPX00', 'AAHXB00', 'AAHXB03', 'AAHXC00', 'AAHXC03', 'AAHXD00', 'AAHXD03', 'AAHXE00', 'AAHXE03', 'AAHXW00', 'AAHZF00', 'AAHZG00', 'AAHZH00', 'AAHZI00', 'AAHZJ00', 'AAHZK00', 'AAHZL00', 'AAHZM00', 'AAHZN00', 'AAHZO00', 'AAHZP00', 'AAHZQ00', 'AAHZR00', 'AAHZT00', 'AAHZU00', 'AAHZX00', 'AAIHJ00', 'AAIHL00', 'AAIHN00', 'AAIHO00', 'AAIHO03', 'AAIHP00', 'AAIHP03', 'AAIHQ00', 'AAIHS00', 'AAIHT00', 'AAIHU00', 'AAIHV00', 'AAIIK00', 'AAIIP00', 'AAIIT00', 'AAIIZ00', 'AAIJA00', 'AAIJB00', 'AAIJC00', 'AAIJD00', 'AAIJS00', 'AAIJT00', 'AAIJU00', 'AAISU00', 'AAIUG00', 'AAIVI00', 'AAJCO00', 'AAJCP00', 'AAJCQ00', 'AAJCR00', 'AAJHP00', 'AAJHR00', 'AAJHV00', 'AAJHX00', 'AAJHY00', 'AAJHZ00', 'AAJIA00', 'AAJIB00', 'AAJIC00', 'AAJID00', 'AAJIE00', 'AAJIF00', 'AAJIG00', 'AAJIH00', 'AAJJE00', 'AAJJF00', 'AAJJG00', 'AAJJH00', 'AAJJI00', 'AAJJJ00', 'AAJJK00', 'AAJJL00', 'AAJJM00', 'AAJKK00', 'AAJKL00', 'AAJKM00', 'AAJKN00', 'AAJMS00', 'AAJMS03', 'AAJNV00', 'AAJOR00', 'AAJOS00', 'AAJOT00', 'AAJOU00', 'AAJOV00', 'AAJOW00', 'AAJOX00', 'AAJPC00', 'AAJPC03', 'AAJPD00', 'AAJPE00', 'AAJPF00', 'AAJPG00', 'AAJPH00', 'AAJPI00', 'AAJPK00', 'AAJPL00', 'AAJPM00', 'AAJPN00', 'AAJPO00', 'AAJPP00', 'AAJPQ00', 'AAJPR00', 'AAJPS00', 'AAJUH00', 'AAJUI00', 'AAJUJ00', 'AAJUK00', 'AAKWH00', 'AAKWI00', 'AALAT00', 'AALAT03', 'AALAU00', 'AALAU03', 'AALAV00', 'AALAV03', 'AALAW00', 'AALAW03', 'AALAX00', 'AALAX03', 'AALAY00', 'AALAY03', 'AALCZ00', 'AALCZ03', 'AALDA00', 'AALDA03', 'AALDF00', 'AALDG00', 'AALDH00', 'AALDI00', 'AALDJ00', 'AALDK00', 'AALGM00', 'AALGN00', 'AALHU00', 'AALHV00', 'AALIN00', 'AALIO00', 'AALOU00', 'AALOV00', 'AALOW00', 'AALOW03', 'AALOX00', 'AALOY00', 'AALST00', 'AALSU00', 'AALVX00', 'AALVY00', 'AALVZ00', 'AALWC00', 'AALWD00', 'AALWE00', 'AALWF00', 'AALWG00', 'AAMDR00', 'AAMDS00', 'AAMDU00', 'AAMDV00', 'AAMDX00', 'AAMDY00', 'AAMEA00', 'AAMEB00', 'AAMVY00', 'AAMVY03', 'AAOFD00', 'AAOFD03', 'AAOFV00', 'AAOFV03', 'AAOFW00', 'AAOFW03', 'AAOTH00', 'AAOTH03', 'AAOTI00', 'AAOTI03', 'AAOZV00', 'AAOZV03', 'AAOZX00', 'AAOZX03', 'AAPAB00', 'AAPAB03', 'AAPAD00', 'AAPAD03', 'AAPAF00', 'AAPAF03', 'AAPAH00', 'AAPAH03', 'AAPAJ00', 'AAPAJ03', 'AAPAL00', 'AAPAL03', 'AAPAN00', 'AAPAN03', 'AAPAP00', 'AAPAP03', 'AAPAR00', 'AAPAR03', 'AAPAT00', 'AAPAT03', 'AAPAV00', 'AAPAV03', 'AAPAX00', 'AAPAX03', 'AAPAZ00', 'AAPAZ03', 'AAPBB00', 'AAPBB03', 'AAPBD00', 'AAPBD03', 'AAPBF00', 'AAPBF03', 'AAPBH00', 'AAPBH03', 'AAPBJ00', 'AAPBJ03', 'AAPBL00', 'AAPBL03', 'AAPBN00', 'AAPBN03', 'AAPBP00', 'AAPBP03', 'AAPBR00', 'AAPBR03', 'AAPDO00', 'AAPDO03', 'AAPET00', 'AAPET03', 'AAPEU00', 'AAPEU03', 'AAPEW00', 'AAPEW03', 'AAPEX00', 'AAPEX03', 'AAPLC00', 'AAPLC03', 'AAPYR00', 'AAPYR03', 'AAPYS00', 'AAPYS03', 'AAPYT00', 'AAPYT03', 'AAPYU00', 'AAPYU03', 'AAQAR00', 'AAQAR03', 'AAQAR13', 'AAQAS00', 'AAQAS03', 'AAQAS13', 'AAQAT00', 'AAQAT03', 'AAQAT13', 'AAQAU00', 'AAQAU03', 'AAQAU13', 'AAQAV00', 'AAQAV03', 'AAQAV13', 'AAQAW00', 'AAQAW03', 'AAQAW13', 'AAQAX00', 'AAQAX03', 'AAQAX13', 'AAQAY00', 'AAQAY03', 'AAQAY13', 'AAQAZ00', 'AAQAZ03', 'AAQAZ13', 'AAQBA00', 'AAQBA03', 'AAQBA13', 'AAQBB00', 'AAQBB03', 'AAQBB13', 'AAQBC00', 'AAQBC03', 'AAQBC13', 'AAQBD00', 'AAQBD03', 'AAQBD13', 'AAQBE00', 'AAQBE03', 'AAQBE13', 'AAQBF00', 'AAQBF03', 'AAQBG00', 'AAQBH00', 'AAQNI00', 'AAQYX00', 'AAQYX03', 'AAQYY00', 'AAQYY03', 'AAQYZ00', 'AAQYZ03', 'AAQZA00', 'AAQZA03', 'AAQZB00', 'AAQZB03', 'AAQZC00', 'AAQZC03', 'AARAA00', 'AARAA03', 'AARAB00', 'AARAB03', 'AARAC00', 'AARAC03', 'AARAD00', 'AARAD03', 'AARAE00', 'AARAE03', 'AARAF00', 'AARAF03', 'AARAG00', 'AARAG03', 'AARAH00', 'AARAH03', 'AARAI00', 'AARAI03', 'AARAJ00', 'AARAJ03', 'AARAK00', 'AARAK03', 'AARAL00', 'AARAL03', 'AARAM00', 'AARAM03', 'AARAN00', 'AARAN03', 'AARAO00', 'AARAO03', 'AARAP00', 'AARAP03', 'AARAQ00', 'AARAQ03', 'AARAR00', 'AARAR03', 'AARAS00', 'AARAS03', 'AARAT00', 'AARAT03', 'AARAU00', 'AARAU03', 'AARAV00', 'AARAV03', 'AARAW00', 'AARAW03', 'AARAX00', 'AARAX03', 'AARAY00', 'AARAY03', 'AARAZ00', 'AARAZ03', 'AARBA00', 'AARBA03', 'AARBB00', 'AARBB03', 'AARBC00', 'AARBC03', 'AARBD00', 'AARBD03', 'AARBV00', 'AARBV03', 'AARBW00', 'AARBW03', 'AARBX00', 'AARBX03', 'AARBY00', 'AARBY03', 'AAREN00', 'AAREN03', 'AARWD00', 'AARWD03', 'AARWE00', 'AARWE03', 'AARWF00', 'AARWF03', 'AASAS00', 'AASAS03', 'AASAT00', 'AASAT03', 'AASAU00', 'AASAU03', 'AASAV00', 'AASAV03', 'AASCJ00', 'AASCJ03', 'AASCK00', 'AASCK03', 'AASCN00', 'AASCN03', 'AASEU00', 'AASEU03', 'AASJD00', 'AASJD03', 'AASJE00', 'AASJE03', 'AASJF00', 'AASJF03', 'AASLJ00', 'AASLJ03', 'AASLK00', 'AASLK03', 'AASNL00', 'AASNL03', 'AATHM00', 'AATHM03', 'AATHN00', 'AATHN03', 'AAUFH00', 'AAUFH03', 'AAUFI00', 'AAUFI03', 'AAUFJ00', 'AAUFJ03', 'AAUFK00', 'AAUFK03', 'AAUFL00', 'AAUFL03', 'AAUFM00', 'AAUFM03', 'AAUFN00', 'AAUFN03', 'AAUJP00', 'AAUJP03', 'AAUJQ00', 'AAUJQ03', 'AAUJR00', 'AAUJR03', 'AAUJS00', 'AAUJS03', 'AAUJT00', 'AAUJT03', 'AAUXL00', 'AAVJA00', 'AAVJA03', 'AAVJA04', 'AAVJB00', 'AAVJB03', 'AAVJC00', 'AAVJC03', 'AAVJF00', 'AAVJF03', 'AAVJG00', 'AAVJG03', 'AAWEP00', 'AAWEP03', 'AAWEX00', 'AAWEX03', 'AAWEY00', 'AAWEY03', 'AAWEZ00', 'AAWEZ03', 'AAWFH00', 'AAWFH03', 'AAWFI00', 'AAWFI03', 'AAWFJ00', 'AAWFJ03', 'AAWFK00', 'AAWFK03', 'AAWFL00', 'AAWFL03', 'AAWSA00', 'AAWSA03', 'AAWSB00', 'AAWSB03', 'AAWSC00', 'AAWSC03', 'AAWVH00', 'AAWVH03', 'AAWVI00', 'AAWVI03', 'AAWXV00', 'AAWXV03', 'AAWXW00', 'AAWXW03', 'AAWXY00', 'AAWXY03', 'AAXDW00', 'AAXDX00', 'AAXDY00', 'AAXDZ00', 'AAXEZ00', 'AAXEZ03', 'AAXIL00', 'AAXJM00', 'AAXJM03', 'AAXJN00', 'AAXJN03', 'AAXJO00', 'AAXJO03', 'AAXPG00', 'AAXPG03', 'AAXRK00', 'AAXRK03', 'AAXUO00', 'AAXUO03', 'AAXUP00', 'AAXUP03', 'AAXUQ00', 'AAXUQ03', 'AAXUR00', 'AAXUR03', 'AAXUS00', 'AAXUS03', 'AAXUT00', 'AAXUT03', 'AAXUU00', 'AAXUU03', 'AAXUV00', 'AAXUV03', 'AAXYD00', 'AAXYD03', 'AAXZA00', 'AAXZA03', 'AAXZB00', 'AAXZB03', 'AAXZC00', 'AAXZC03', 'AAXZD00', 'AAXZD03', 'AAXZE00', 'AAXZE03', 'AAXZF00', 'AAXZF03', 'AAXZG00', 'AAXZG03', 'AAYRZ00', 'AAYRZ03', 'AAYSA00', 'AAYSA03', 'AAYTA00', 'AAYTA03', 'AAYVA00', 'AAYVA03', 'AAYWA00', 'AAYWA03', 'ABWGE00', 'ABWGE03', 'ADBRA00', 'ADBRA03', 'ADFCD00', 'ADFCD03', 'AEFAA00', 'AEFAA03', 'AEFAB00', 'AEFAB03', 'AEFAC00', 'AEFAC03', 'AEFAD00', 'AEFAD03', 'AFONA00', 'AFONA03', 'AFONB00', 'AFONB03', 'AIHKA00', 'AIHKA03', 'AIHKA04', 'AIHKB00', 'AIHKB03', 'AILKA00', 'AILKA03', 'AILKA04', 'AILKB00', 'AILKB03', 'AJSVA00', 'AJSVA03', 'AJSVB00', 'AJSVB03', 'ALVHA00', 'ALVHA03', 'ALVHB00', 'ALVHB03', 'AODFA00', 'ASGCA00', 'ASGCA03', 'ASGCB00', 'ASGCB03', 'ATFNA00', 'ATFNB00', 'AWTIA00', 'AWTIA03', 'AWTIB00', 'AWTIB03', 'AWTIC00', 'AWTIC03', 'AWTID00', 'AWTID03', 'BVBM012', 'BVBM023', 'BVBM034', 'BVDM021', 'BVDM032', 'CRPOA03', 'CRPOB03', 'CRPOC03', 'CRPOD03', 'CRPOE03', 'CRPOF03', 'CRPOG03', 'CRPOH03', 'CRPOI03', 'CRPOJ03', 'CRPOK03', 'CRPOL03', 'CRPOM03', 'CRPON03', 'CRPOO03', 'CRPOP03', 'CRPOQ03', 'DBVBM00', 'FAFWA00', 'FAFWAM2', 'FHPRM00', 'FHPRM03', 'FHPRM20', 'FHPRM23', 'FMGRM00', 'FMGRM03', 'FMGRM20', 'FMGRM23', 'FSTRM00', 'FSTRM03', 'FSTRM20', 'FSTRM23', 'FSVRM00', 'FSVRM03', 'FSVRM20', 'FSVRM23', 'FTSRM00', 'FTSRM03', 'FTSRM20', 'FTSRM23', 'ICO2010', 'ICO2011', 'ICO2012', 'ICOQ110', 'ICOQ111', 'ICOQ112', 'ICOQ210', 'ICOQ211', 'ICOQ212', 'ICOQ310', 'ICOQ311', 'ICOQ312', 'ICOQ410', 'ICOQ411', 'ICOQ412', 'ICS2010', 'ICS2011', 'ICS2012', 'ICSQ110', 'ICSQ111', 'ICSQ112', 'ICSQ210', 'ICSQ211', 'ICSQ212', 'ICSQ310', 'ICSQ311', 'ICSQ312', 'ICSQ410', 'ICSQ411', 'ICSQ412', 'IDN2010', 'IDN2011', 'IDN2012', 'IDNQ110', 'IDNQ111', 'IDNQ112', 'IDNQ210', 'IDNQ211', 'IDNQ212', 'IDNQ310', 'IDNQ311', 'IDNQ312', 'IDNQ410', 'IDNQ411', 'IDNQ412', 'IDO2010', 'IDO2011', 'IDO2012', 'IDOQ110', 'IDOQ111', 'IDOQ112', 'IDOQ210', 'IDOQ211', 'IDOQ212', 'IDOQ310', 'IDOQ311', 'IDOQ312', 'IDOQ410', 'IDOQ411', 'IDOQ412', 'INS2010', 'INS2011', 'INS2012', 'INSQ110', 'INSQ111', 'INSQ112', 'INSQ210', 'INSQ211', 'INSQ212', 'INSQ310', 'INSQ311', 'INSQ312', 'INSQ410', 'INSQ411', 'INSQ412', 'IOS2010', 'IOS2011', 'IOS2012', 'IOSQ110', 'IOSQ111', 'IOSQ112', 'IOSQ210', 'IOSQ211', 'IOSQ212', 'IOSQ310', 'IOSQ311', 'IOSQ312', 'IOSQ410', 'IOSQ411', 'IOSQ412', 'ISB2010', 'ISB2011', 'ISB2012', 'ISBQ110', 'ISBQ111', 'ISBQ112', 'ISBQ210', 'ISBQ211', 'ISBQ212', 'ISBQ310', 'ISBQ311', 'ISBQ312', 'ISBQ410', 'ISBQ411', 'ISBQ412', 'ISI2010', 'ISI2011', 'ISI2012', 'ISIQ110', 'ISIQ111', 'ISIQ112', 'ISIQ210', 'ISIQ211', 'ISIQ212', 'ISIQ310', 'ISIQ311', 'ISIQ312', 'ISIQ410', 'ISIQ411', 'ISIQ412', 'ITD2010', 'ITD2011', 'ITD2012', 'ITDQ110', 'ITDQ111', 'ITDQ112', 'ITDQ210', 'ITDQ211', 'ITDQ212', 'ITDQ310', 'ITDQ311', 'ITDQ312', 'ITDQ410', 'ITDQ411', 'ITDQ412', 'ITS2010', 'ITS2011', 'ITS2012', 'ITSQ110', 'ITSQ111', 'ITSQ112', 'ITSQ210', 'ITSQ211', 'ITSQ212', 'ITSQ310', 'ITSQ311', 'ITSQ312', 'ITSQ410', 'ITSQ411', 'ITSQ412', 'PBAM1M2', 'PBAM2M3', 'PBBM1M2', 'PBBM2M3', 'PBCAAM1', 'PBCAAM2', 'PBCAAM3', 'PBCABM1', 'PBCABM2', 'PBCABM3', 'PBCACM1', 'PBCACM2', 'PBCACM3', 'PBCADM1', 'PBCADM2', 'PBCADM3', 'PBCM1M2', 'PBCM2M3', 'PBDM1M2', 'PBDM2M3', 'PCAAE00', 'PCAAL00', 'PCAAL03', 'PCAAP00', 'PCAAQ00', 'PCAAR00', 'PCAAS00', 'PCAAU00', 'PCAAV00', 'PCABC00', 'PCABH00', 'PCABI00', 'PCABR00', 'PCABR03', 'PCABS00', 'PCABT00', 'PCACA00', 'PCACE00', 'PCACO00', 'PCACZ00', 'PCADG10', 'PCADI00', 'PCADJ00', 'PCADL00', 'PCADM00', 'PCADV00', 'PCAEC10', 'PCAED10', 'PCAEE00', 'PCAET00', 'PCAEU00', 'PCAEV00', 'PCAEW00', 'PCAFD00', 'PCAFG03', 'PCAFH03', 'PCAFK00', 'PCAFK03', 'PCAFW00', 'PCAGV00', 'PCAIC00', 'PCAID00', 'PCAIU00', 'PCAIW00', 'PCAIY00', 'PCAJ000', 'PCAJ003', 'PCAJA00', 'PCAJC00', 'PCAJE00', 'PCAJG00', 'PCAJI00', 'PCAKA00', 'PCAKC00', 'PCAKE00', 'PCAKG00', 'PCAKM00', 'PCAKM03', 'PCAKN00', 'PCAKN03', 'PCAKP00', 'PCAKP03', 'PCAKQ00', 'PCAKQ03', 'PCAKR00', 'PCAKR03', 'PCAKS00', 'PCAKS03', 'PCAKT00', 'PCAKT03', 'PCAKU00', 'PCAKU03', 'PCAKV00', 'PCAKV03', 'PCAKW00', 'PCAKW03', 'PCALA00', 'PCALA03', 'PCALB00', 'PCALB03', 'PCARR00', 'PCARR03', 'PCNGA00', 'PCNGA03', 'PCNGB00', 'PCNGB03', 'PCNGC00'],
'ICE_EuroFutures' : 'BRN',
'CME_NymexFutures_EOD' : 'CL',

}


@lru_cache(maxsize=None)
def isContinuous(symbol):
  r = re.findall('\d\d\d_M', symbol)
  if len(r) >= 1:
    return True


@lru_cache(maxsize=None)
def resolve_feedname(symbol):
  for feednamec in c:
    if symbol in c[feednamec]:
      if isContinuous(symbol):
        feednamec = '{}_continuous'.format(feednamec)
      return feednamec

  tokens = symbol.split('_')
  if len(tokens) > 0:
    for feednamec in c:
      if tokens[0] in c[feednamec]:
        if isContinuous(symbol):
          feednamec = '{}_continuous'.format(feednamec)
        return feednamec
