{"version":3,"file":"static/js/main-473a05c8.27634ab3.js","mappings":"wKAGO,SAASA,IACZ,OACIC,EAAAA,EAAAA,KAACC,EAAAA,EAAyB,CACtBC,MAAM,oCACNC,MAAM,sBACNC,MAAM,KACNC,QAASC,EAAAA,EAAoBC,sBAGzC,C,mLCaO,SAASN,EAAyBO,GAKL,IAJhCN,EAAKM,EAALN,MACAE,EAAKI,EAALJ,MACAD,EAAKK,EAALL,MACAE,EAAOG,EAAPH,QAEMI,GAAuBC,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,UAAUH,oBAAoB,IAC5FI,GAAmCH,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,UAAUC,gCAAgC,IAEpHC,GAAWC,EAAAA,EAAAA,UAAQ,kBAA0B,OAApBN,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBO,MAAK,SAAAC,GACtD,IAAMC,EAAeD,EAAOb,GAC5B,QAAIc,GAIgBC,OAAOC,OAAOF,GACfF,MAAK,SAAAK,GAAK,QAAMA,CAAK,GAC5C,GAAE,GAAE,CAACZ,EAAsBL,IAErBkB,GAAQP,EAAAA,EAAAA,UAAQ,kBAClBf,EAAAA,EAAAA,KAACuB,EAAAA,EAAmB,CAChBC,QAASf,EACTgB,cAAe,SAAAR,GAAM,OAAIA,EAAOb,EAAM,EACtCF,MAAOA,GACT,GACF,CAACO,EAAsBP,EAAOE,IAElC,OACIJ,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAOA,EAAOwB,UAAU,sBAAqBC,UAC1D5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAalB,GAAkCe,UAC1EI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASA,EACT6B,UAAW/B,EACXgC,iBAAkB,2BAA4BC,EAAAA,EAAAA,WAAUjC,GAAOkC,QAAQ,OAAQ,KAAKT,SAAA,EAEpF5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKzB,OAETH,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAc3B,EACd4B,YAAa3B,GACTd,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACrC,QAASA,EAAQuB,SAAC,yDAGzBe,EACLf,SAEAd,EACGQ,GAEAtB,EAAAA,EAAAA,KAAC4C,EAAAA,EAAe,CACZC,QAAQ,4BACRC,SAAU,IACVC,UAAW,IACXC,KAAK,8BAQrC,C,uDCvFO,IAAKC,EAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,oBAAnBA,EAAmB,oBAAnBA,EAAmB,0BAAnBA,CAAmB,K,wJCMxB,SAASC,EAAU1C,GAA2G,IAAxG2C,EAAI3C,EAAJ2C,KAAMC,EAAK5C,EAAL4C,MAAOC,EAAW7C,EAAX6C,YAAazB,EAAQpB,EAARoB,SAAU0B,EAAa9C,EAAb8C,cAAaC,EAAA/C,EAAEgD,YAAAA,OAAW,IAAAD,EAAG,EAACA,EAAAE,EAAAjD,EAAEkD,uBAAAA,OAAsB,IAAAD,GAAQA,EAC3HE,GAAwCC,EAAAA,EAAAA,UAASJ,GAAYK,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAtDI,EAAYF,EAAA,GAAEG,EAAeH,EAAA,GACpCI,GAA0BL,EAAAA,EAAAA,UAAS,GAAEM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA9BE,EAAKD,EAAA,GAAEE,EAAQF,EAAA,GACtBG,GAAkCT,EAAAA,EAAAA,UAASJ,GAAYc,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAhDE,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAC9BG,GAA4Cb,EAAAA,EAAAA,UAAS,IAAGc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAAjDE,EAAcD,EAAA,GAAEE,EAAiBF,EAAA,GAClCG,EAAazB,GAASD,EAAK2B,QAEjCC,EAAAA,EAAAA,YAAU,WACNX,EAASY,KAAKC,KAAKJ,EAAaxB,GACpC,GAAG,CAACwB,EAAYxB,KAEhB0B,EAAAA,EAAAA,YAAU,WACNf,EAAgBR,GAChBgB,EAAahB,EACjB,GAAG,CAACA,IAEJ,IAqDM0B,EAAoB,SAAC7D,GACvB,KAAIA,GAAS,GAAKA,GAAS8C,GAI3B,MAAM,oBAANgB,OAA2BhB,EAC/B,EAEMiB,EAAwB,SAACC,GAG3B,GAFAb,EAAac,OAAOD,EAAEE,OAAOlE,QAAU,IAEnCsD,EAAgB,CAChB,IAAMa,EAAQN,EAAkBG,EAAEE,OAAOlE,OACzCuD,EAAkBY,EACtB,CACJ,EA+BMC,EAAmB,SAACC,GACtB,IAAMF,EAAQN,EAAkBQ,GAChCd,EAAkBY,GAEbA,IACDxB,EAAgB0B,GAChBpC,GAAiBA,EAAcoC,GAEvC,EAEMC,EAAyB,WAC3B,OAAQtC,GAAeU,EAAe,GAAMV,CAChD,EAUA,OACIrB,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CACyB,oBAAbA,EAA0BA,EA1HlCiD,EACO1B,EAAK0C,MAAMxC,GAAeU,EAAe,GAAI4B,KAEjD,IAuHsD/D,GAEpDwB,EAAQC,GAAeF,EAAK2B,OAASzB,KAClCrB,EAAAA,EAAAA,MAAA,OAAKL,UAAU,sBAAqBC,SAAA,EAChC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,qBAAoBC,SAAA,GAAAuD,OAC1B9B,GAAeU,EAAe,GAAM,EAAC,KAAAoB,OAAIQ,IAA2Bd,EAAaA,EAAac,IAAwB,QAAAR,OAAON,MAEtI7C,EAAAA,EAAAA,MAAA,OAAKL,UAAU,6CAA4CC,SAAA,EACvD5B,EAAAA,EAAAA,KAAA,UACI2B,UAAU,2CACVmE,QApBX,WACbL,EAAiB1B,EAAe,EACpC,EAmB4BgC,SAA2B,IAAjBhC,EAAmBnC,UAE7B5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACrE,UAAWsE,IAAW,CAAE,YAA+B,IAAjBlC,IAAwBmC,KAAK,cAAcC,MAAO,GAAIC,OAAQ,OAvGjH,WACpB,IAAMC,EAXc,WAEpB,IADA,IAjBgBX,EAiBVW,EAAe,GACZC,EAAI,EAAGA,GAAKnC,EAAOmC,KAjBf,KADGZ,EAmBIY,IAlBFZ,IAASvB,GAASuB,IAAS3B,GAA0B,IAAVI,GAGzDuB,IAAS3B,EAAe,GAAK2B,IAAS3B,EAAe,GAAK2B,IAAS3B,EAAe,GAAK2B,IAAS3B,EAAe,GAG/GA,GAAgB,GAAK2B,GAAQ,GAG7B3B,EAAeI,EAAQ,GAAKuB,EAAOvB,EAAQ,IAUvCkC,EAAaE,KAAKD,GAG1B,OAAOD,CACX,CAGyBG,GACfC,EAAS,GAef,OAbAJ,EAAaK,SAAQ,SAACC,EAAGC,GACrBH,EAAOF,MACHvG,EAAAA,EAAAA,KAAA,OAA6B2B,UAAWsE,IAAW,CAC/C,0BAA0B,EAC1B,SAAclC,IAAkB4C,IACjC/E,UACC5B,EAAAA,EAAAA,KAAA,UAAQ2B,UAAU,eAAemE,QAAS,WAAF,OAAQL,EAAiBkB,EAAE,EAAC/E,SAAE+E,KAAW,cAAAxB,OAJ7DwB,KAOxBN,EAAaO,EAAQ,IAAMD,EAAI,IAAMN,EAAaO,EAAQ,IAC1DH,EAAOF,MAAKvG,EAAAA,EAAAA,KAAA,OAAwC2B,UAAU,WAAUC,SAAC,OAAG,qBAAAuD,OAAjCwB,EAAI,IAEvD,IACOF,CACX,CAuFyBI,IACD7G,EAAAA,EAAAA,KAAA,UACI2B,UAAU,4CACVmE,QAxBf,WACTL,EAAiB1B,EAAe,EACpC,EAuB4BgC,SAAWhC,IAAkBI,EAAMvC,UAEnC5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACrE,UAAWsE,IAAW,CAAE,YAAelC,IAAkBI,IAAW+B,KAAK,cAAcC,MAAO,GAAIC,OAAQ,UAG1H1C,IA3Eb1B,EAAAA,EAAAA,MAAA,OAAKL,UAAU,4BAA2BC,SAAA,EACtC5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,wBAAuBC,SAAC,iBACxCI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,gBAAeC,SAAA,EAC1B5B,EAAAA,EAAAA,KAAC8G,IAAW,CACRnF,UAAWsE,IAAW,+BAAgC,CAAE,aAActB,IACtEoC,MAAMC,EAAAA,EAAAA,kBAAiB,CACnBC,OAAQ,GACRC,cAAc,IAElB7F,MAAOkD,EACP4C,SAAU/B,IAEbT,IAAkB3E,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,aAAYC,SAAE+C,QAEpD3E,EAAAA,EAAAA,KAAA,UACI8F,QAAS,WACLL,EAAiBlB,EACrB,EACAwB,SAAUxB,IAAcR,GAAgBY,IAAmBJ,EAC3D5C,UAAU,uBAAsBC,SACnC,eA6DjB,CAEAsB,EAAWkE,aAAe,CACtB9D,cAAe,WAAO,EACtBH,KAAM,GACNE,YAAa,GACbD,MAAO,E,iHC1KEiE,EAAoC,SAAH7G,GAAqD,IAA/CuF,EAAQvF,EAARuF,SAAUuB,EAAa9G,EAAb8G,cAAeC,EAAc/G,EAAd+G,eACnEC,EAAuB,WAAH,OAASF,EAAcG,KAAK,SAAAC,GAAC,OAAAC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAChDD,GAAC,IACJE,SAAS,EACT7B,UAAU,GAAK,GACf,EAmBJ,OAAO/F,EAAAA,EAAAA,KAAC6H,EAAAA,EAAY,CAChB1H,MAAM,cACN4F,SAAUA,EACV+B,UAAWR,EAActG,MAAK,SAAA0G,GAAC,OAAIA,EAAEK,QAAQ,IAC7CC,QAASR,IACTS,YAtBoB,WACpB,IAAAC,EAA4CV,IAAsBW,GAAArE,EAAAA,EAAAA,GAAAoE,EAAA,GAA3DE,EAAQD,EAAA,GAAEE,EAAUF,EAAA,GAAEG,EAAWH,EAAA,IAEvCC,EAASL,UAAYR,GAAcI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAIS,GAAQ,IAAEL,UAAU,MAC7DM,EAAWN,UAAYR,GAAcI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAIU,GAAU,IAAEN,UAAU,MACjEO,EAAYP,UAAYR,GAAcI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAIW,GAAW,IAAEP,UAAU,IACxE,EAiBIQ,WAfmB,WACnB,IAAAC,EAA4ChB,IAAsBiB,GAAA3E,EAAAA,EAAAA,GAAA0E,EAAA,GAA3DJ,EAAQK,EAAA,GAAEJ,EAAUI,EAAA,GAAEH,EAAWG,EAAA,GAExCL,EAASL,UAAYR,GAAcI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAIS,GAAQ,IAAEL,UAAU,KAC7DM,EAAWN,UAAYR,GAAcI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAIU,GAAU,IAAEN,UAAU,KACjEO,EAAYP,UAAYR,GAAcI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAIW,GAAW,IAAEP,UAAU,IACvE,EAUIW,sBAAuB,SAACpC,EAAGyB,GAAQ,OAAKR,EAAe,CACnDlG,MAAOiF,EAAEjF,MACT0G,SAAAA,EACA/E,KAAMsD,EAAEtD,MACV,GAEV,C,0FC7CO,SAAS2F,IAEZ,OACI3I,EAAAA,EAAAA,KAAC4C,EAAAA,EAAe,CACZC,QAAQ,4BACRC,SAAU,IACVC,UAAa,IACbC,KAAK,qGAGjB,C,wJCTO,SAAS4F,IAA4D,IAA1CC,EAAOC,UAAAhE,OAAA,QAAAnC,IAAAmG,UAAA,GAAAA,UAAA,GAAGC,EAAAA,GAAsBF,QACxDG,GAAc,IAAIC,MAAOC,cAC/B,OAAOC,EAAAA,GAAWC,eAAeP,EAASG,GAAaK,SAC3D,CAEO,SAASC,EACZC,EACAC,GAEA,IAAMC,EAAYD,IAAkBE,EAAAA,GAAKC,IACnCC,EAAiB,CACnBxJ,MAAO,mBACPqJ,WAAW,GAGf,OAAKF,EAUDA,IAAWM,EAAAA,EAAqBC,QACzB,EAAAnC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAEIiC,GAAc,IACjBH,UAAAA,KAKL,CACH,CACIrJ,MAAOmJ,EACPE,UAAAA,GAEJG,GAvBO,CACH,CACIxJ,MAAOyJ,EAAAA,EAAqBE,qBAC5BN,UAAAA,GAEJG,EAoBZ,CAEO,SAASI,EACZT,EACAC,GAEA,IAAMC,EAAYD,IAAkBE,EAAAA,GAAKC,IACnCM,EAAkB,CACpB7J,MAAOyJ,EAAAA,EAAqBK,SAC5BT,WAAW,GAGf,OAAKF,EAIU,kBAAXA,EACO,EAAA5B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAEIsC,GAAe,IAClBR,UAAAA,KAKL,CACH,CACIrJ,MAAOmJ,EACPE,UAAAA,GAEJQ,GAjBO,CAACA,EAmBhB,C,wSC/CME,GAAkBC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACnBC,EAAAA,EAASC,IAAM,UACfD,EAAAA,EAASE,IAAM,KAGdC,GAAuDJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxDK,EAAAA,GAAcC,EAAI,CACfC,WAAY,SACZC,MAAO,OAEVH,EAAAA,GAAcI,EAAI,CACfF,WAAY,UACZC,MAAO,OAEVH,EAAAA,GAAcK,EAAI,CACfH,WAAY,KACZC,MAAO,QAITG,EAAmB,aACnBC,EAAkB,UAClBC,EAAiB,OACjBC,EAAe,CACjB,mBACA,qBAGG,SAASC,EAAwB3K,GAML,IAL/B4K,EAAK5K,EAAL4K,MACAC,EAAM7K,EAAN6K,OAAMC,EAAA9K,EACN+K,aAAAA,OAAY,IAAAD,EAAG,GAAEA,EACjBpL,EAAKM,EAALN,MACA4F,EAAOtF,EAAPsF,QAGI0F,EAMAC,EAAAA,GANAD,YACAE,EAKAD,EAAAA,GALAC,UACAC,EAIAF,EAAAA,GAJAE,SACAC,EAGAH,EAAAA,GAHAG,UACAC,EAEAJ,EAAAA,GAFAI,cACAC,EACAL,EAAAA,GADAK,WAGEC,GAAgBhL,EAAAA,EAAAA,UAAQ,kBAAMqK,EAAM3D,KAAI,SAAAuE,GAAA,IAAGC,EAAID,EAAJC,KAAMC,EAAKF,EAALE,MAAUC,GAAIC,EAAAA,EAAAA,GAAAJ,EAAAK,GAAA,OAAA1E,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC9DwE,GAAI,IACPG,KAAMC,IAAAA,IAAW,CAACN,EAAMC,EAAQ,KAAG,GACJ,GAAE,CAACd,IAEhCoB,EAAgB,CAACC,EAAAA,GAAWC,eAAgBD,EAAAA,GAAWE,iBAAiBC,SAASvB,EAAOwB,OA2GxFC,EAAe,SAACR,GAClB,OAAQjB,EAAO0B,UACX,KAAKtC,EAAAA,GAAcK,EACf,OAAOwB,EAAKU,OAAO/B,GACvB,KAAKR,EAAAA,GAAcI,EAEf,MAAM,GAAN1F,OAAUmH,EAAKL,OAAM,KAAA9G,OAAqB,EAAjBmH,EAAKW,UAAgB,GAClD,QACI,OAAOX,EAAKU,OAAOhC,GAE/B,EAEMkC,EAAY,SAACC,GACf,OAAQ9B,EAAOwB,OACX,KAAKJ,EAAAA,GAAWW,MAChB,KAAKX,EAAAA,GAAWC,eACZ,OAAOS,EAAIpD,qBACf,QACI,OAAOoD,EAAIE,iBAEvB,EAEMC,EAAc,SAACC,GACjB,IAAMC,EAAS,SAACL,GAAiC,OAC7C,SAACM,GAAyD,OACtDA,EAASnB,KAAKkB,OAAOL,EAAIb,KAAMoB,EAAAA,EAAcC,qBAAqBtC,EAAO0B,UAAW,CAAD,EAE3F,OAAOQ,EAAKK,QAAO,SAACC,EAAwDV,GACxE,IAAMW,EAAgBD,EAAIE,KAAKP,EAAOL,IAEtC,OAAIW,EACM,GAAN3I,QAAA6I,EAAAA,EAAAA,GACOH,EAAIxC,QAAO,SAAA4C,GAAC,OAAKT,EAAOL,EAAPK,CAAYS,EAAE,KAAC,EAAAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAE5BmG,GAAa,IAChBI,QAAQ,GAAD/I,QAAA6I,EAAAA,EAAAA,GACAF,EAAcI,SAAO,CACxBf,QAMV,GAANhI,QAAA6I,EAAAA,EAAAA,GACOH,GAAG,CACN,CAAEvB,KAAMa,EAAIb,KAAM4B,QAAS,CAACf,KAEpC,GAAG,GACP,EAgKMgB,EA9QqB,WACvB,IAAMC,EAAc,SAACjB,GAAyB,OAAKZ,IAAAA,IAAW,CAACY,EAAIlB,KAAMkB,EAAIjB,MAAQ,GAAI,EACnFmC,EAAalF,EAAAA,EAAWmF,IAAIlD,EAAOgD,GACnCG,EAAapF,EAAAA,EAAWqF,IAAIpD,EAAOgD,GAEnCK,EAAW,SAACpN,GAA4B,OAAKkL,IAAAA,IAAW,CAC1DlL,EAAQA,EAAM4K,KAAO,EACrB5K,EAAQA,EAAM6K,MAAQ,EAAI,GAC3B,EAEH,MAAO,CACHoC,IAAKG,EAASJ,GACdG,IAAKC,EAASF,GAEtB,CAgQwBG,GAClBC,EA/PgB,SAAHC,GAAqC,IAChDC,EACAC,EAFiBR,EAAGM,EAAHN,IAAKE,EAAGI,EAAHJ,IAI1B,OAAQnD,EAAO0B,UACX,KAAKtC,EAAAA,GAAcC,EACfoE,EAAgBN,EAAIO,QAAQC,IAAI,GAAI,QACpCH,EAAgBL,EAAIO,QACfE,SAAS1D,EAAc,UACvByD,IAAI,GAAI,QACb,MACJ,KAAKvE,EAAAA,GAAcI,EACfiE,EAAgBN,EACXO,QACAG,QAAQ,WACRF,IAAI,GAAI,QAEbH,EAAgBL,EACXO,QACAE,SAAS1D,EAAc,YAC5B,MACJ,QACIsD,EAAgBP,EACXS,QACAG,QAAQ,QACRD,SAAS,EAAG,UAEjBH,EAAgBN,EACXO,QACAG,QAAQ,QACRF,IAAI,EAAG,UAGpB,MAAO,CACHV,IAAKO,EACLL,IAAKM,EAEb,CA0NmBK,CAAchB,GAC3BiB,EAzNe,SAACjB,EAAgCQ,GAClD,MAAO,CACHL,IAAKH,EAAgBG,IAAIe,SAASV,EAAWL,KAAOH,EAAgBG,IAAMK,EAAWL,IACrFE,IAAKG,EAAWH,IAExB,CAoNkBc,CAAanB,EAAiBQ,GAC1CpB,EA/De,SAACoB,GAClB,IAAMY,EAAc,CAAC9C,EAAAA,GAAWW,MAAOX,EAAAA,GAAW+C,QAAQ5C,SAASvB,EAAOwB,OAnGtD,SAACU,EAAsCoB,GAC3D,IAAMc,EAAgBtG,EAAAA,EAAWuG,QAC7BnC,GACA,SAACJ,GAAiC,OAAKA,EAAIwC,WAAW,IAG1D,MAAO,CAACC,EAAAA,EAAiBC,MAAOD,EAAAA,EAAiBE,MAAMlC,QAAO,SAACC,EAA4BkC,GACvF,IAAMC,EAA6CP,EAAcQ,IAAIF,IAAqB,GAEpFG,EAAgB5C,EAAY0C,GAE5BG,EAAWzC,EAAAA,EAAc0C,WAAWF,GAAe,SAAA/C,GAAG,OAAIA,EAAIb,IAAI,IAAE,SAAAA,GAAI,MAAK,CAAEA,KAAAA,EAAM4B,QAAS,GAAI,IAIlGmC,GAFsB1B,EAAWL,KAAOK,EAAWH,IAAO2B,EAASxB,EAAYjB,EAAAA,EAAcC,qBAAqBtC,EAAO0B,WAAamD,GAE3GtC,QAAO,SAACC,EAAUV,GAC/C,IAAMmD,EAAYxD,EAAaK,EAAIb,MAC7BiE,EAASpH,EAAAA,EAAWqH,IAAIrD,EAAIe,SAAS,SAAC7M,GAAmC,OAAK6L,EAAU7L,EAAM,IAEpGoP,EAAyB5C,GAAO,GAAE6C,GAAA5M,EAAAA,EAAAA,GAAA2M,EAAA,GAAAE,EAAAD,EAAA,GAA3BzC,OAAC,IAAA0C,EAAG,GAAEA,EAAAC,EAAAF,EAAA,GAAEG,OAAC,IAAAD,EAAG,GAAEA,EAErB,MAAO,CAAC,GAADzL,QAAA6I,EAAAA,EAAAA,GACCC,GAAC,CAAEqC,IAAS,GAAAnL,QAAA6I,EAAAA,EAAAA,GACZ6C,GAAC,CAAEN,IAEf,GAAG,CAAC,GAAI,KAER,OAAA5I,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOkG,GAAG,IAAAzD,EAAAA,EAAAA,GAAA,GACL2F,EAAmBM,GAE5B,IAACjG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACIwF,EAAAA,EAAiBE,KAAO,IACxBF,EAAAA,EAAiBC,MAAQ,IAElC,CAiEUiB,CAAgB/E,EAAe4C,GA/DhB,SAACpB,EAAsCoB,GAC5D,IAAMoC,EAAmB5H,EAAAA,EAAWuG,QAChCnC,GACA,SAACJ,GAAiC,OAAKL,EAAaK,EAAIb,KAAK,IAG3DmD,EAAgBtG,EAAAA,EAAWuG,QAC7BnC,GACA,SAACJ,GAAiC,OAAKA,EAAIwC,WAAW,IAG1D,MAAO,CAACC,EAAAA,EAAiBC,MAAOD,EAAAA,EAAiBE,MAAMlC,QAAO,SAACC,EAA4BkC,GACvF,IAAMC,EAA6CP,EAAcQ,IAAIF,IAAqB,GAEpFG,EAAgB5C,EAAY0C,GAE5BG,EAAWzC,EAAAA,EAAc0C,WAAWF,GAAe,SAAA/C,GAAG,OAAIA,EAAIb,IAAI,IAAE,SAAAA,GAAI,MAAK,CAAEA,KAAAA,EAAM4B,QAAS,GAAI,IAIlGmC,GAFsB1B,EAAWL,KAAOK,EAAWH,IAAO2B,EAASxB,EAAYjB,EAAAA,EAAcC,qBAAqBtC,EAAO0B,WAAamD,GAE3GtC,QAAO,SAACC,EAAUV,GAC/C,IAAM6D,EAAkBD,EAAiBd,IAAInD,EAAaK,EAAIb,QAAU,GAClE2E,EAAW9H,EAAAA,EAAWqH,IAAIQ,GAAiB,SAAC3P,GAAmC,OAAK6L,EAAU7L,EAAM,IACpG6P,EAAsB/H,EAAAA,EAAWqH,IAAIrD,EAAIe,SAAS,SAAC7M,GAAmC,OAAK6L,EAAU7L,EAAM,IAE3GkP,EAASY,EAAAA,GAAaC,MAAOF,EAAsBD,EAAY,KAC/DX,EAAYxD,EAAaK,EAAIb,MAEnC+E,EAAyBxD,GAAO,GAAEyD,GAAAxN,EAAAA,EAAAA,GAAAuN,EAAA,GAAAE,EAAAD,EAAA,GAA3BrD,OAAC,IAAAsD,EAAG,GAAEA,EAAAC,EAAAF,EAAA,GAAET,OAAC,IAAAW,EAAG,GAAEA,EAErB,MAAO,CAAC,GAADrM,QAAA6I,EAAAA,EAAAA,GACCC,GAAC,CAAEqC,IAAS,GAAAnL,QAAA6I,EAAAA,EAAAA,GACZ6C,GAAC,CAAEN,IAEf,GAAG,CAAC,GAAI,KAER,OAAA5I,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOkG,GAAG,IAAAzD,EAAAA,EAAAA,GAAA,GACL2F,EAAmBM,GAE5B,IAACjG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACIwF,EAAAA,EAAiBE,KAAO,IACxBF,EAAAA,EAAiBC,MAAQ,IAElC,CAoBU4B,CAAiB1F,EAAe4C,GAEtC,OApBmB,SAACY,GACpB,OAAOpO,OAAOC,OAAOmO,GAAa9H,KAAI,SAAAiK,EAAS9K,GAAK,IAAA+K,GAAA7N,EAAAA,EAAAA,GAAA4N,EAAA,GAAR,MAAc,CACtDzD,EADqC0D,EAAA,GAErCd,EAFwCc,EAAA,GAGxCzL,KAAMgF,EAAatE,GACnBgL,KAAM,MAENC,cAAc,GAAD1M,OAAK+F,EAAatE,GAAM,yBACrCkL,WAAY,CAAClL,GACbmL,OAAQ,CACJC,MAAOpG,EAAUhF,IAExB,GACL,CAOWqL,CAAe1C,EAC1B,CAyDa2C,CAAa9C,GACpB+C,EA9CY,SAACxD,GACf,IAXmB9B,EAAmBuF,EAWtCC,EAA8B7H,EAAmBa,EAAO0B,UAAhDnC,EAAKyH,EAALzH,MAAOD,EAAU0H,EAAV1H,WAET1D,GAba4F,EAaUxB,EAAOwB,MAbEuF,EAaK/G,EAAO+G,aAZ9C5F,EACO,IAGJK,IAAUJ,EAAAA,GAAW+C,QAAU4C,EAChCjI,EAAmBiI,GACnB,IAQN,OAAAzK,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACO6D,GAAW,IACd8G,YAAY,EACZC,UAAU,EACVC,UAAW1M,EAAU,UAAY,YACjCgG,WAAAA,EACA2G,QAASC,EAAAA,GAAUC,QACnBC,MAAO,CACHC,UAAWnH,EACXkG,KAAM,OACNkB,MAAO,CACHnE,EAAWL,IAAItB,OAAOjC,GACtB4D,EAAWH,IAAIxB,OAAOjC,IAE1BgI,SAAUpH,EACVqH,YAAY,EACZpI,MAAAA,EACAD,WAAAA,EACAsI,YAAa,CACTC,QAAS,4BAGjBC,OAAKxL,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACDyL,UAAU,EACVC,eAAgB,MAChBL,YAAY,EACZM,UAAW5H,EACX6H,MAAO,SACPV,UAAWnH,EACXqH,SAAUpH,EACV6H,cAAe3H,GACXW,EAAgB,CAAEiH,WAAYxM,GAAW,CAAEyM,WAAYzM,IACvDuF,EAAgB,CAAEsG,MAAO,CAAC,EAAG,WAASnQ,IAGtD,CAMegR,CAAUhF,GAEzB,OACI3M,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EACI5B,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDC,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChCjO,QApUY,SAACT,GACrB,GAAKS,GAIAT,EAAE4O,OAAOnP,OAAd,CAIA,IAAOoP,GAAPpQ,EAAAA,EAAAA,GAAgBuB,EAAE4O,OAAM,GAAZ,GAEJhG,EAAYiG,EAAZjG,EAAGV,EAAS2G,EAAT3G,KAEL4G,EAAc5H,IAAAA,IAAW0B,GACzBmG,EAAYD,EAAYpF,QAE9B,OAAQ1D,EAAO0B,UACX,KAAKtC,EAAAA,GAAcC,EACf0J,EAAUC,MAAM,SAASnF,QAAQ,OACjC,MACJ,KAAKzE,EAAAA,GAAcI,EACfuJ,EAAUC,MAAM,WAAWnF,QAAQ,OACnC,MACJ,KAAKzE,EAAAA,GAAcK,EACfsJ,EAAUC,MAAM,QAAQnF,QAAQ,OAIxC,IAAMa,EAA0D,KAAvCuE,EAAAA,EAAAA,OAAM/G,EAAKuE,YAC9BlC,EAAAA,EAAiBE,KACjBF,EAAAA,EAAiBC,MAEvB/J,EAAQ,CACJiK,iBAAAA,EACAoE,YAAaA,EAAYI,SACzBH,UAAWA,EAAUG,SACrBC,gBAAiBnJ,EAAOmJ,kBAAoBC,EAAAA,GAAUC,iBAChD/R,EACA0I,EAAOmJ,gBACbpC,aAAc/G,EAAO+G,cAhCzB,CAkCJ,EA4RYlS,MAAOA,EACPqN,KAAMA,EACN4E,OAAQA,EACRwC,OAAQC,EAAAA,MAEZ5S,EAAAA,EAAAA,MAAA,OAAKL,UAAU,SAAQC,SAAA,EACnB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,cAAaC,SAAEsJ,EAAa,MAC3ClL,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,aAAYC,SAAEsJ,EAAa,UAI1D,CAEAC,EAAyB/D,aAAe,CACpClH,MAAO,gC,yCCjZJ,SAAS2U,EAAyBrU,GAGA,IAFrC2G,EAAQ3G,EAAR2G,SACG/F,GAAMgL,EAAAA,EAAAA,GAAA5L,EAAA6L,GAEHyI,EAAoB,SAACC,GAA0C,OAAK,SAAC1T,GACvE8F,GAAQQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACHvG,GAAM,IAAAgJ,EAAAA,EAAAA,GAAA,GACR2K,EAAO1T,IAEhB,CAAE,EAEI2T,GAAajU,EAAAA,EAAAA,UAAQ,WAOvB,MAAM,CANM,CACRM,MAAOoT,EAAAA,GAAUC,YACjB1R,KAAM,MACN+E,SAAU3G,EAAOoT,kBAAoBC,EAAAA,GAAUC,cAI5CvP,QAAA6I,EAAAA,EAAAA,GACAiH,EAAAA,GAAWxN,KAAI,SAAAuE,GAAA,IAAG3K,EAAK2K,EAAL3K,MAAW,MAAQ,CACpCA,MAAAA,EACA2B,KAF4BgJ,EAAJhJ,KAGxB+E,SAAU3G,EAAOoT,kBAAoBnT,EACxC,KAET,GAAG,CAACD,EAAOoT,kBAELU,GAAanU,EAAAA,EAAAA,UAAQ,kBAAMoU,EAAAA,GAC5B1N,KAAI,SAAAmH,GAAA,IAAGvN,EAAKuN,EAALvN,MAAW,MAAQ,CACvBA,MAAAA,EACA2B,KAFe4L,EAAJ5L,KAGX+E,SAAU3G,EAAOyL,QAAUxL,EAC9B,GAAE,GAAE,CAACD,EAAOyL,QAEjB,OACI7K,EAAAA,EAAAA,MAACoT,EAAAA,GAAW,CAAAxT,SAAA,EACR5B,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOP,EACP7N,SAAU,SAAFsJ,GAAA,IAAKpP,EAAKoP,EAALpP,MAAK,OAAOyT,EAAkB,kBAAlBA,CAAqCzT,EAAM,EACpEM,UAAU,yBACVsF,OAAO,cAGfjH,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOL,EACPM,uBAAuB,EACvBrO,SAAU,SAAFuJ,GAAA,IAAKrP,EAAKqP,EAALrP,MAAK,OAAOyT,EAAkB,QAAlBA,CAA2BzT,EAAM,EAC1DM,UAAU,8BAGlB3B,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4CAA2CC,SACrD,CAACyI,EAAAA,EAASE,IAAKF,EAAAA,EAASC,KAAK7C,KAAI,SAAA2K,GAAY,OAC1CpS,EAAAA,EAAAA,KAACyV,EAAAA,GAAY,CAETC,QAAStD,EACTrK,SAAU3G,EAAOgR,eAAiBA,EAClCrM,UAAU,EACVD,QAAS,WAAF,OAAQgP,EAAkB,eAAlBA,CAAkC1C,EAAa,GAJzDA,EAKX,SAGVpS,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4CAA2CC,SACrD,CACG6I,EAAAA,GAAcC,EACdD,EAAAA,GAAcI,EACdJ,EAAAA,GAAcK,GAChBrD,KAAI,SAAAsF,GAAQ,OACV/M,EAAAA,EAAAA,KAACyV,EAAAA,GAAY,CAETC,QAAS3I,EACThF,SAAU3G,EAAO2L,WAAaA,EAC9BhH,UAAU,EACVD,QAAS,WAAF,OAAQgP,EAAkB,WAAlBA,CAA8B/H,EAAS,GAJjDA,EAKX,UAKtB,C,2FClEO,SAAS4I,EAAyBnV,GAWL,IAVhCoV,EAAoBpV,EAApBoV,qBACAC,EAAQrV,EAARqV,SAAQC,EAAAtV,EACRuV,cAAAA,OAAa,IAAAD,EAAG,CAAC,EAACA,EAClBvK,EAAY/K,EAAZ+K,aACAyK,EAASxV,EAATwV,UAASC,EAAAzV,EACT0V,WAAAA,OAAU,IAAAD,GAAOA,EAAAE,EAAA3V,EACjB4V,gBAAiBC,OAAe,IAAAF,EAAGtB,EAAyBsB,EAAAG,EAAA9V,EAC5DmB,UAAAA,OAAS,IAAA2U,EAAG,uBAAsBA,EAAAC,EAAA/V,EAClCH,QAAAA,OAAO,IAAAkW,EAAGjW,EAAAA,EAAoBkW,4BAA2BD,EACzDE,EAAYjW,EAAZiW,aAEAC,GAGIhW,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,SAAS,IAFhD+V,EAAmBD,EAAnBC,oBACAC,EAA+BF,EAA/BE,gCAGEC,GAAWC,EAAAA,EAAAA,MAEXC,GAAYC,EAAAA,EAAAA,IAAiB3W,GAEnCsD,GAAsCC,EAAAA,EAAAA,WAAQ+D,EAAAA,EAAAA,GAAA,CAC1CoF,SAAUtC,EAAAA,GAAcC,EACxBmC,MAAOJ,EAAAA,GAAW+C,OAClBgF,gBAAiBC,EAAAA,GAAUC,YAC3BtC,aAAc/H,EAAAA,EAASE,KACpBwL,IACLlS,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GANKsT,EAAWpT,EAAA,GAAEqT,EAAcrT,EAAA,IAQlCkB,EAAAA,EAAAA,YAAU,WACNgS,GAAaF,GAASM,EAAAA,EAAAA,KAAoCF,EAAarB,EAAsBI,GACjG,GAAG,CAACe,EAAWF,EAAUI,EAAarB,EAAsBI,IAE5D,IAAM1U,GAAQP,EAAAA,EAAAA,UAAQ,kBAClBf,EAAAA,EAAAA,KAACmL,EAAwB,CACrBE,OAAQ4L,EACR7L,MAAOuL,EACPpL,aAAcA,EACdzF,QAAS2Q,GACX,GACF,CAACE,EAAqBM,EAAa1L,EAAckL,IAE/CvU,EAAY,2BAElB,OACIlC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,EAAWP,UAAWA,EAAUC,UACpD5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAa6U,GAAiChV,UACzEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASA,EACT6B,UAAWA,EACXC,iBAAiB,gDAA+CP,SAAA,EAEhEI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAAAV,SAAA,EAClBI,EAAAA,EAAAA,MAAA,MAAAJ,SAAA,CAAKM,EAAW2T,IAAY7V,EAAAA,EAAAA,KAAA,QAAA4B,SAAOiU,QACnC7V,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACrC,QAASA,EAAQuB,SACrBsU,IAAclW,EAAAA,EAAAA,KAACqW,GAAe1O,EAAAA,EAAAA,GAAA,CAACR,SAAU+P,GAAoBD,UAGtEjX,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAcoU,EACdnU,YACuB,OAAnBkU,QAAmB,IAAnBA,GAAAA,EAAqB7R,QACjB9C,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CAAE,4HAC0H5B,EAAAA,EAAAA,KAAA,SAAM,0EAGlI,KACP4B,SAEmB,OAAnB+U,QAAmB,IAAnBA,GAAAA,EAAqB7R,OAASxD,GAAQtB,EAAAA,EAAAA,KAACoX,EAAAA,EAA0B,YAM1F,C,mNCvGO,SAASC,IACZ,IAAMC,EAAmB,KACnBC,EAAcC,EAAAA,EAAKC,UACnBC,EAAkB,GAAAvS,OAAMoS,EAAYI,UAAS,KAAAxS,OAAIoS,EAAYK,SAAQ,8CAC3EjU,GAA8BC,EAAAA,EAAAA,UAAS8T,GAAmB7T,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAnDkU,EAAOhU,EAAA,GAAEiU,EAAUjU,EAAA,GAC1BI,GAAwCL,EAAAA,EAAAA,UAAS,IAAGM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA7C8T,EAAY7T,EAAA,GAAE8T,EAAe9T,EAAA,GAC9B2S,GAAWC,EAAAA,EAAAA,MACXlP,GAAUlH,EAAAA,EAAAA,KAAY,SAAAuX,GAAC,OAAIA,EAAEC,aAAaC,wBAAwB,IASxE,IAPApT,EAAAA,EAAAA,YAAU,WACD6C,IACDkQ,EAAWJ,GACXM,EAAgB,IAExB,GAAG,CAACpQ,EAAS8P,KAER9P,EACD,OAAO,KAGX,IAAMwQ,EAAc,WAChBvB,EAASwB,EAAAA,IAAoBC,iBAAgB,GACjD,EAkBMC,GAAsBV,EAAQ/S,QAAUiT,EAE9C,OACI/V,EAAAA,EAAAA,MAACwW,EAAAA,GAAK,CACFrY,OAAO6B,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CAAE,iCAA6B5B,EAAAA,EAAAA,KAAA,SAAM,0BAC5CyY,QAASL,EACTM,WAAW,sBAAqB9W,SAAA,EAEhC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,aAAYC,UACvBI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,WAAUC,SAAA,EACrB5B,EAAAA,EAAAA,KAAA,SAAO2B,UAAU,aAAYC,SAAC,aAC9BI,EAAAA,EAAAA,MAAA,OAAAJ,SAAA,EACI5B,EAAAA,EAAAA,KAAA,YACI2B,UAAWsE,IAAW,eAAgB,CAAE,MAAS4R,EAAQ/S,SACzDzD,MAAOwW,EACP1Q,SAzBH,SAAC9B,GAClB,IAAQhE,EAAUgE,EAAEE,OAAZlE,MACJA,EAAMyD,OAASwS,EACfU,EAAgBW,EAAAA,GAAcC,UAAUtB,IAExCU,EAAgB,IAEpBF,EAAWzW,EACf,EAkBwBuX,UAAWtB,OAEdS,IAAgB/X,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,aAAYC,SAAEmW,aAI1D/V,EAAAA,EAAAA,MAAA,OAAKL,UAAU,eAAcC,SAAA,EACzB5B,EAAAA,EAAAA,KAAA,UAAQ4R,KAAK,SAASjQ,UAAU,gBAAgBmE,QAASsS,EAAYxW,SAAC,YACtE5B,EAAAA,EAAAA,KAAA,UACI4R,KAAK,SACLjQ,UAAU,eACVoE,SAAUwS,EACVzS,QA5CG,WACX+R,EAAQ/S,SAAWiT,GACnBlB,EAASwB,EAAAA,IAAoBQ,iBAAiBhB,GAEtD,EAwCoCjW,SACvB,cAMjB,C,oCC1EO,SAASkX,EAAqBtY,GAAuB,IAADuY,EAAAvY,EAAnBuF,SAAAA,OAAQ,IAAAgT,GAAOA,EAC7ClC,GAAWC,EAAAA,EAAAA,MAEjB,OACI9U,EAAAA,EAAAA,MAAA,OAAK8D,QAAS,SAACT,GAAC,OAAKA,EAAE2T,iBAAiB,EAACpX,SAAA,EACrC5B,EAAAA,EAAAA,KAACqX,EAAiB,KAClBrX,EAAAA,EAAAA,KAACiZ,EAAAA,EAAiB,CAACC,MAAO,CAACA,EAAAA,GAAMC,cAAcvX,SAEvC,SAAAwX,GAAO,OACHpZ,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CACXC,QAAQ,+EACRvT,UAAWA,GAAYqT,EAAQxX,UAE/B5B,EAAAA,EAAAA,KAACuZ,EAAAA,EAAa,CACVxT,SAAUA,EACVpE,UAAU,+BACVmE,QAAS,WAAF,OAAQ+Q,EAASwB,EAAAA,IAAoBC,iBAAgB,GAAM,EAAC1W,SACtE,oBAGY,MAKzC,C,4JCvBM4X,EAAqC,WACvC,IAAM3C,GAAW4C,EAAAA,EAAAA,KAEXC,GAAgChZ,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAE0B,QAAQC,wBAAwB,IAC/FC,GAAsCnZ,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAE0B,QAAQG,wBAAwB,IACrGC,GAAqBrZ,EAAAA,EAAAA,IAAYsZ,EAAAA,IAEjCC,GAAoBC,EAAAA,EAAAA,KACpBC,GAA4BC,EAAAA,EAAAA,KAE5BC,GAAaC,EAAAA,EAAAA,cAAY,kBAAMP,EAAmB1O,QAAO,SAACkP,GAAC,OAC7DA,EAAEC,iBACEd,EAA8Be,SACxBF,EAAEG,KAAOhB,EAA8Be,SAErCF,EAAEI,SAAWC,EAAAA,GAAgBC,OAAOC,YACpCb,EAAkB1E,MAAMvU,MAAK,SAAA+Z,GAAO,OAAIA,EAAQC,YAAcT,EAAEG,EAAE,MACjEP,EAA0B5E,MAAMvU,MAAK,SAAAia,GAAS,OAAIA,EAAUC,gBAAgBR,KAAOH,EAAEG,EAAE,IAEnG,GACH,GAAE,CAACX,EAAoBE,EAAkB1E,MAAO4E,EAA0B5E,MAAOmE,EAA8Be,WAWjH,OACIza,EAAAA,EAAAA,KAACmb,EAAAA,EAAO,CACJC,UAXc,WACFf,IAKhBxD,EAASwE,EAAAA,IAAeC,aAJpBC,WAKR,EAKQC,SAAU,WAAF,OAAQ3E,EAASwE,EAAAA,IAAeI,6BAA6B,EACrEC,cAAe,WAAF,OACT1Z,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EACI5B,EAAAA,EAAAA,KAAA,QAAA4B,SAAM,6DACN5B,EAAAA,EAAAA,KAAA,MAAI2B,UAAU,mBAAkBC,SAExByY,IAAa5S,KAAI,SAAAkU,GAAC,OACd3b,EAAAA,EAAAA,KAAA,MAAA4B,SAAgB+Z,EAAEzV,MAATyV,EAAEjB,GAAiB,OAIxC1a,EAAAA,EAAAA,KAAA,QAAA4B,SAAM,mDACP,EAEPmE,SAAU8T,GAGtB,EAEa+B,EAAgC,WAEzC,OADwClb,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAE0B,QAAQC,yBAAyBhS,OAAO,KAEpG5H,EAAAA,EAAAA,KAACwZ,EAAwB,IAE7B,IACX,E,sBCzCaqC,EAAoB,WAC7B,IAAMhF,GAAWC,EAAAA,EAAAA,MACXgF,GAAgBC,EAAAA,EAAAA,KAChBC,GAAuBC,EAAAA,EAAAA,KAA0B1G,MACjD0E,GAAoBC,EAAAA,EAAAA,KAAuB3E,MAC3C2G,GAAiBC,EAAAA,EAAAA,KACjBC,EAAkBF,EAAeG,UACjCC,GAAkBlC,EAAAA,EAAAA,KAClBD,EAA4BmC,EAAgB/G,MAC5CgH,GAA0B7b,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAEC,aAAaqE,uBAAuB,IAC7FC,GAAa9b,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMgZ,QAAQtO,OAAOmR,UAAU,IAC7ElV,GAAgB5G,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMgZ,QAAQtO,OAAO/D,aAAa,IACnFmV,GAAa/b,EAAAA,EAAAA,IAAYsZ,EAAAA,IACzB0C,GAA4Bhc,EAAAA,EAAAA,IAAYic,EAAAA,IAExCC,IADiBpF,EAAAA,EAAKqF,SAAS3D,EAAAA,GAAMC,cAErCuD,IAA6BI,EAAAA,EAAAA,IAC3BR,EAAgB9Z,aAChB0Z,EAAe1Z,aACfsZ,EAActZ,cACdka,IAA6BI,EAAAA,EAAAA,IAAiBhB,EAActZ,gBAEpEuC,EAAAA,EAAAA,YAAU,WACN,OAAO,WACH8R,EAASwE,EAAAA,IAAe0B,SACxBlG,EAASmG,EAAAA,EAAkBD,QAC/B,CACJ,GAAG,CAAClG,IAEJ,IAAQ8C,GAAYsD,EAAAA,EAAAA,GAAiBR,EAAYT,EAAsB/B,EAAmBuC,EAAYlV,EAAe8U,GAA7GzC,QAEFuD,GAAmCnc,EAAAA,EAAAA,UAAQ,kBAAOwb,IAA4B5C,EAAQ7U,SAAW6U,EAAQ3Y,MAAK,SAAAmc,GAChH,IAAMC,EAAiBpB,EAAqB3Q,QAAO,SAAAsQ,GAAC,OAAIA,EAAEX,YAAcmC,EAAOzC,EAAE,IAC3E2C,EAAgBF,EAAOxC,SAAWC,EAAAA,GAAgBC,OAAOC,WACzDwC,EAA2BF,GAAkBA,EAAepc,MAAK,SAAA2a,GAAC,OAAKA,EAAE4B,cAAc,IACvFC,EAAoCH,GAAiBF,EAAOM,mBAAqBN,EAAOO,+BACxFC,EAAiCN,GAAiBF,EAAOS,gBAAkBT,EAAOU,4BACxF,OAAOP,GAA4BE,GAAqCG,CAC5E,GAAE,GAAG,CAACpB,EAAyB5C,EAASqC,IAElC8B,GAAsB/c,EAAAA,EAAAA,UAAQ,kBAChC4Y,EAAQ3Y,MAAK,SAAA2a,GAAC,OACVA,EAAEnB,gBACFmB,EAAEhB,SAAWoD,EAAAA,EAAclD,SAC1BV,EAA0BnZ,MAAK,SAAAuZ,GAAC,OAAIA,EAAEW,gBAAgBR,KAAOiB,EAAEjB,EAAE,GAAC,GACtE,GACD,CAACf,EAASQ,IAGR6D,EAA0B,SAAC3Y,GAC7BA,EAAE2T,kBACFnC,EAASwE,EAAAA,IAAe4C,2BAA2B,MACvD,EA6BA,OACIjc,EAAAA,EAAAA,MAAA,OAAKL,UAAU,yBAAwBC,SAAA,EACnCI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,aAAYC,SAAA,EACvBI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,iCAAgCC,SAAA,EAC3C5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAI,aACJ5B,EAAAA,EAAAA,KAACke,EAAAA,GAAW,CACRC,YAAY,4BACZ9c,MAAOmb,EACPrV,SAAU,SAAC9F,GAAa,OAAKwV,EAASwE,EAAAA,IAAe+C,cAAc/c,GAAO,EAC1Egd,QAAS,WAAF,OAAQxH,EAASwE,EAAAA,IAAe+C,cAAc,IAAI,EACzDrY,UAAW0W,EAAW3X,OACtBwZ,eAAgB,OAEpBte,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,oCAAmCC,UAC9CI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,iCAAgCC,SAAA,EAC3C5B,EAAAA,EAAAA,KAAC8Y,EAAqB,CAAC/S,SAAUmX,KACjCld,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAACC,QAAQ,uDAAuDiF,UAAU,cAAa3c,UAClG5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,OAAOC,MAAO,GAAIC,OAAQ,QAE5CpG,EAAAA,EAAAA,KAACiZ,EAAAA,EAAiB,CAACC,MAAO,CAACA,EAAAA,GAAMC,aAAcD,EAAAA,GAAMsF,oBAAoB5c,SACpE,SAACwX,GAAgB,OACdpZ,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CACXC,QAAQ,iFACRvT,SAAU+X,GAAuB1E,IAAYO,EAAQ7U,OACrDyZ,UAAWE,EAAAA,GAAiBC,YAAY9c,UAExC5B,EAAAA,EAAAA,KAACuZ,EAAAA,EAAa,CACV5X,UAAU,oDACVoE,UAAW+X,EACXhY,QAASkY,EAAwBpc,SACpC,4BAGY,KAGzB5B,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CACXC,QAAQ,4EACRiF,UAAU,cAAa3c,UAEvB5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACrE,UAAU,aAAauE,KAAK,OAAOC,MAAO,GAAIC,OAAQ,gBAK/EpE,EAAAA,EAAAA,MAAA,OAAKL,UAAU,iCAAgCC,SAAA,EAC3C5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,6CAA4CC,UACvD5B,EAAAA,EAAAA,KAACqH,EAAAA,EAAgB,CACbtB,UAAW0W,EAAW3X,OACtBwC,cAAeA,EACfC,eA5DG,SAACoX,GACxB9H,EAASwE,EAAAA,IAAeuD,oBAAoBD,IAC5C9H,EAASmG,EAAAA,EAAkB6B,cAAc,CAAC,GAAG,GACjD,OA4DgB7c,EAAAA,EAAAA,MAAA,OAAKL,UAAU,2BAA0BC,SAAA,EACrC5B,EAAAA,EAAAA,KAAC8e,EAAAA,EAAK,KACN9c,EAAAA,EAAAA,MAAC+c,EAAAA,EAAW,CAACpd,UAAU,WAAWqd,KAAMC,EAAAA,GAAOC,aAAatd,SAAA,EACxD5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,YAAYC,MAAO,GAAIC,OAAQ,KAAM,gBAEvDpE,EAAAA,EAAAA,MAACuX,EAAAA,EAAa,CACVmB,GAAG,aACH/Y,UAAU,WACVmE,QAxFC,WACrB+Q,EAASmG,EAAAA,EAAkBmC,mBACvB,CACIzE,GAAI,EACJM,UAAW,EACXrD,UAAW,GACXC,SAAU,GACVwH,KAAM,GACNC,MAAO,GACPC,MAAO,GACPC,UAAU,EACVC,SAAS,EACTjC,gBAAgB,GACjB,IAEX,EAyEkD3b,SAAA,EAE1B5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,iBAAiBC,MAAO,GAAIC,OAAQ,KAAM,2BAMxEpG,EAAAA,EAAAA,KAACyf,EAAAA,EAAS,CAAC3d,WAAY8a,EAAUhb,UAExBgb,IACD5c,EAAAA,EAAAA,KAAC0f,EAAAA,EAAU,CACP/F,QAASA,EACTgG,SAAU3D,EACV4D,MAAO3F,EACP4F,sBAAsB,EACtBC,oBAAoB,EACpBC,sBAAwBtD,EAAW3X,YAAmDnC,EAA1C,wCAC5Cqd,aAAcvD,EAAW3X,OApFhB,WACzB+R,EAASwE,EAAAA,IAAe4E,sBACxBpJ,EAASwE,EAAAA,IAAe+C,cAAc,IAC1C,OAiF6Ezb,OAIrE3C,EAAAA,EAAAA,KAAC4b,EAAmB,MAGhC,C,iNClIasE,EArD+E,CACxF,CACIC,UAAWtW,EAAAA,EAAqBK,SAChCkW,0BAA2B,WAAF,MAAQ,WAAW,EAC5CC,oBAAqB,SAACC,GAAW,OAC7BtgB,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBkgB,0BAA0B5e,SACjE,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAACC,QAASgH,EAAYG,cAAe1a,SAAUqT,EAAQxX,UAClE5B,EAAAA,EAAAA,KAAC0gB,EAAAA,EAAgB,CAACJ,YAAaA,EAAava,SAAUqT,KACzC,GAET,EAEpBuH,gBAAiB,6BACjBC,cAAe,6BACfC,aAAc,iBAElB,CACIV,UAAWtW,EAAAA,EAAqBiX,oBAChCV,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAF7f,EAA4EugB,GAAO,IAA9EN,EAAajgB,EAAbigB,cAAeO,EAAiBxgB,EAAjBwgB,kBAAoD,OAAAxgB,EAAjCygB,kCAClB,IAChCjhB,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBkgB,0BAA0B5e,SACjE,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACkhB,EAAAA,EAA6B,CAC1BT,cAAeA,EACfO,kBAAmBA,EACnBlb,QAASib,EAAQI,gBACjBpb,SAAUqT,GACZ,GAEM,EACxBuH,gBAAiB,sBACjBC,cAAe,uBAEnB,CACIT,UAAWtW,EAAAA,EAAqBuX,eAChChB,0BAA2B,WAAF,MAAQ,SAAS,EAC1CC,oBAAqB,SAAFrU,GAAA,IAAKoV,EAAcpV,EAAdoV,eAAc,OAAOC,EAAAA,GAAYC,qBAAqBF,EAAe,EAC7FT,gBAAiB,oBACjBC,cAAe,oBACfC,aAAc,kBAElB,CACIV,UAAWtW,EAAAA,EAAqB0X,SAChCnB,0BAA2B,WAAF,MAAQ,KAAK,EACtCC,oBAAqB,SAAFzR,GAAA,IAAK2S,EAAQ3S,EAAR2S,SAAQ,OAAQA,EAAWA,EAASC,KAAO/M,EAAAA,GAAUgN,gBAAgB,EAC7Fd,gBAAiB,oBACjBC,cAAe,oBACfC,aAAc,aAIoCpZ,KAAI,SAACkU,GAC3D,OAAO,IAAI+F,EAAAA,EAAc/F,EAC7B,I,sJCxCMgG,GAA2B/Y,EAAAA,EAAAA,IAAkBG,EAAAA,GAAsB6Y,cAMlE,SAASC,EAAcrhB,GAA8B,IAA3B2gB,EAAe3gB,EAAf2gB,gBAC7Bxd,GAAwBC,EAAAA,EAAAA,UAA6B+d,EAAe,IAAG9d,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAhEsI,EAAIpI,EAAA,GAAEie,EAAOje,EAAA,GACpBI,GAAwBL,EAAAA,EAAAA,UAAS,GAAEM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA5ByB,EAAIxB,EAAA,GAAE6d,EAAO7d,EAAA,GACpBG,GAA4BT,EAAAA,EAAAA,UAAS,IAAGU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAjCkF,EAAMjF,EAAA,GAAE0d,EAAS1d,EAAA,GACxBG,GAA0Cb,EAAAA,EAAAA,UAAS8F,EAAAA,GAAKC,KAAIjF,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAArD+E,EAAa9E,EAAA,GAAEud,EAAgBvd,EAAA,GAEhCwd,GAAiBxhB,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUshB,cAAc,IACxEC,GAAkCzhB,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUuhB,+BAA+B,IAC1GC,GAAgC1hB,EAAAA,EAAAA,KAClC,SAACuX,GAAW,OAAKA,EAAErX,UAAUwhB,6BAA6B,IAGxDrL,GAAYC,EAAAA,EAAAA,IAAiB1W,EAAAA,EAAoB+hB,kBAEjDxL,GAAWC,EAAAA,EAAAA,OAEjB/R,EAAAA,EAAAA,YAAU,WACNgS,GAAaF,GAASyL,EAAAA,EAAAA,IAA6B/V,MAASN,QAChE,GAAG,CAAC4K,EAAUE,IAEd,IAAMwL,EAAyB,aAAXhZ,EAAwBiZ,EAAAA,GAAaC,oBAAsB,GAC/EC,GAA0BC,EAAAA,EAAAA,IAAcT,EAAgB3Y,EAAQC,EAAe+Y,GAAxEK,GAAoF9e,EAAAA,EAAAA,GAAA4e,EAAA,GAArE,GAEhBG,EAAgB,WAClB,MAAO,CACH1B,gBAAiBA,EAEzB,EAEM2B,EAAmB,SAAC1iB,EAAe2iB,GACrCf,EAAU5hB,GACV6hB,EAAiBc,EACrB,EAeMzf,EAAgB,SAACS,GAAoB,OAAKge,EAAQhe,EAAc,EAkChE7B,EAAY,eAElB,OACIlC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,EAAWP,UAAU,eAAcC,UACvD5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAaogB,GAAiCvgB,UACzEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoB+hB,iBAC7BngB,UAAWA,EACXC,iBAAiB,sCAAqCP,SAAA,EAEtDI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAAAV,SAAA,EAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,KACLF,EAAAA,EAAAA,MAACU,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoB+hB,iBAAiBzgB,SAAA,EACnD5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,kBAAiBC,UAC5B5B,EAAAA,EAAAA,KAACgjB,EAAAA,EAAc,CACXC,cAAclhB,EAAAA,EAAAA,IAAaqgB,GAC3Bc,aA1DN,WAAH,OACnBrM,GACIsM,EAAAA,EAAAA,IACIlX,GACAjC,EAAAA,EAAAA,IAAmCT,EAAQC,IAEjD,EAqD0BzD,UAAWmc,EAAepd,YAGlC9E,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,8BAA6BC,UACxC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACojB,EAAAA,EAAY,CACTC,MAAO1B,EACP2B,aAAcrX,EACdsX,kBAAkB,MAClBpc,SAzEX,SAACqc,GACtB1B,EAAQ0B,GACR3M,GAASyL,EAAAA,EAAAA,IAA6BkB,GAC1C,EAuEoCvc,OAAO,SACPwc,eAAa,eAMjCzjB,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAc2f,EACd1f,YACmB,OAAfmgB,QAAe,IAAfA,GAAAA,EAAiB9d,OACX,uEACA,GACTlD,SAEAghB,EAAgB9d,OAzEjC8d,EAAgB9d,OAASiE,EAAAA,GAAsB1F,aAC3CrD,EAAAA,EAAAA,KAACkD,EAAAA,EAAU,CACPC,KAAMyf,EACNvf,YAAa0F,EAAAA,GAAsB1F,YACnCG,YAAakC,EACbpC,cAAeA,EAAc1B,SAE5B,SAAC2T,GAA4C,OAC1CvV,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFC,OAAQb,EACRc,cAAera,EACfsa,uBAAwBra,EACxBsa,UAAWvO,EACXwO,QAAS7D,EACT8D,yBAA0BnB,EAC1BlhB,UAAU,qBACZ,KAIV3B,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFC,OAAQb,EACRc,cAAera,EACfsa,uBAAwBra,EACxBsa,UAAWlB,EACXmB,QAAS7D,EACT8D,yBAA0BnB,EAC1BlhB,UAAU,uBA8CwC3B,EAAAA,EAAAA,KAACoX,EAAAA,EAA0B,YAM7F,C,+JC3Ja6M,EAAoB,WAA+B,IAA9B1E,IAAiBzW,UAAAhE,OAAA,QAAAnC,IAAAmG,UAAA,KAAAA,UAAA,GACzC+N,GAAWC,EAAAA,EAAAA,MACXoN,GAAQC,EAAAA,EAAAA,IAAe,SAAAlM,GAAC,OAAIA,EAAErX,UAAUsjB,KAAK,IAC7CE,GAAUD,EAAAA,EAAAA,IAAe,SAAAlM,GAAC,OAAIA,EAAErX,UAAUwjB,OAAO,IACjDC,GAAyBF,EAAAA,EAAAA,IAAe,SAAAlM,GAAC,OAAIA,EAAErX,UAAUyjB,sBAAsB,IAiBrF,OAfAtf,EAAAA,EAAAA,YAAU,YACFuf,EAAAA,EAAAA,IAAcD,KAA4B9E,IAC1CgF,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAC,SAAAC,IAAA,IAAAje,EAAA,OAAA+d,EAAAA,EAAAA,KAAAG,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAE2D,OAF3DF,EAAAC,KAAA,EAEOhO,GAASkO,EAAAA,EAAAA,KAAoBC,EAAAA,EAAaC,UAAUL,EAAAE,KAAA,EAC/BI,EAAAA,GAAiBC,sBAAsB,KAAD,EAArD1e,EAAMme,EAAAQ,KACZvO,GAASkO,EAAAA,EAAAA,KAAoBC,EAAAA,EAAaK,QAAS5e,IAASme,EAAAE,KAAA,gBAAAF,EAAAC,KAAA,EAAAD,EAAAU,GAAAV,EAAA,SAE5D/N,GAASkO,EAAAA,EAAAA,KAAoBC,EAAAA,EAAaO,UAC1C1O,EAAS2O,EAAAA,IAAahgB,MAAKof,EAAAU,KAAK,yBAAAV,EAAAa,OAAA,GAAAf,EAAA,iBAPxCH,EAYR,GAAG,CAAC1N,EAAU0I,EAAU8E,IACjB,CAAEA,uBAAAA,EAAwBH,MAAAA,EAAOE,QAAAA,EAE5C,C,oHC3BasB,EAA6B,CACtC,CAAErkB,MAAOoT,EAAAA,GAAUC,YAAa1R,KAAM,OACtC,CAAE3B,MAAOskB,EAAAA,GAAgBC,SAAU5iB,KAAM,aACzC,CAAE3B,MAAOskB,EAAAA,GAAgBE,KAAM7iB,KAAM,eACrC,CAAE3B,MAAOskB,EAAAA,GAAgB5I,MAAO/Z,KAAM,UAG7B8iB,EAA0B,CACnC,CACI9iB,KAAM,MACN3B,MAAOoT,EAAAA,GAAUC,aAErB,CACI1R,KAAMqH,EAAAA,EAASE,IACflJ,MAAOgJ,EAAAA,EAASE,KAEpB,CACIvH,KAAMqH,EAAAA,EAASC,IACfjJ,MAAOgJ,EAAAA,EAASC,K,yOCClByb,EAAgB,GAEhBvb,GAAuDJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxDK,EAAAA,GAAcC,EAAI,CACfC,WAAY,SACZC,MAAO,OAEVH,EAAAA,GAAcI,EAAI,CACfF,WAAY,UACZC,MAAO,OAEVH,EAAAA,GAAcK,EAAI,CACfH,WAAY,KACZC,MAAO,QAITI,EAAkB,UAClBC,EAAiB,OAEhB,SAAS+a,EAA0BxlB,GAAyF,IAAtFylB,EAAqBzlB,EAArBylB,sBAAuBC,EAAU1lB,EAAV0lB,WAAY7a,EAAM7K,EAAN6K,OAAQnL,EAAKM,EAALN,MAEhFsL,EAMA2a,EAAAA,GANA3a,YACAE,EAKAya,EAAAA,GALAza,UACAC,EAIAwa,EAAAA,GAJAxa,SACAC,EAGAua,EAAAA,GAHAva,UACAC,EAEAsa,EAAAA,GAFAta,cACAC,EACAqa,EAAAA,GADAra,WAGEsa,EAAmB,SAAC9Z,GACtB,OAAQjB,EAAO0B,UACX,KAAKtC,EAAAA,GAAcK,EACf,OAAOwB,EAAKU,OAAO/B,GACvB,KAAKR,EAAAA,GAAcI,EAEf,MAAM,GAAN1F,OAAUmH,EAAKL,OAAM,KAAA9G,OAAqB,EAAjBmH,EAAKW,UAAgB,GAClD,QACI,OAAOX,EAAKU,OAAOhC,GAE/B,EAEM8B,EAAe,SAACK,GAClB,OAAOZ,IAAAA,IAAW,CAACY,EAAIlB,KAAMkB,EAAIjB,MAAQ,GAC7C,EA2BMma,EAAY,SAAC9Y,GACf,IAAM9F,EAAM0B,EAAAA,EAAWuG,QACnBnC,GACA,SAACJ,GAAgC,SAAAhI,OAAQihB,EAAiBtZ,EAAaK,IAAK,IAGhF,OAAOmZ,MAAMC,KAAK9e,EAAIyG,WACjBN,QAAO,SAACC,EAAgB7B,GAA6B,IAAD4C,GAAA9K,EAAAA,EAAAA,GAAAkI,EAAA,GAAzBsE,EAAS1B,EAAA,GAAE4X,EAAQ5X,EAAA,GACrC6X,EAAUtd,EAAAA,EAAWqH,IAAIgW,GAAU,SAACnlB,GAAkC,OAjCrE8L,EAiCoF9L,EAhC3FgK,EAAOwB,QACNJ,EAAAA,GAAWW,MACLD,EAAIpD,qBAEJoD,EAAIE,iBALL,IAACF,CAiC0F,IAEjG,OAAAxF,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOkG,GAAG,IAAAzD,EAAAA,EAAAA,GAAA,GACLkG,EAAYmW,GAErB,GAAG,CAAC,EACZ,EAEMC,EAA0B,SAACnZ,GAC7B,OAAOpM,OAAO+M,QAAQX,GACjBK,QAAO,SAACC,EAAQ4C,GAAA,IAAAC,GAAA5M,EAAAA,EAAAA,GAAA2M,EAAC,GAAEH,EAASI,EAAA,GAAE+V,EAAO/V,EAAA,SAAO,CACzCzC,EAAE,GAAD9I,QAAA6I,EAAAA,EAAAA,GAAMH,EAAII,GAAC,CAAEqC,IACdO,EAAE,GAAD1L,QAAA6I,EAAAA,EAAAA,GAAMH,EAAIgD,GAAC,CAAE4V,IACjB,GAAG,CAAExY,EAAG,GAAI4C,EAAG,IACxB,EAmKA8V,EAxHiB,WAAkG,IAAD,IAAAC,EAAA9d,UAAAhE,OAA7F+hB,EAAI,IAAAP,MAAAM,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhe,UAAAge,GACrB,IAAMC,EAAUF,EAAKpf,IAAI4e,GAEnBW,GAAaC,EAAAA,EAAAA,SAAQJ,GACtBK,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAElb,KAAOmb,EAAEnb,KACrBkb,EAAElb,KAAOmb,EAAEnb,KACXkb,EAAEjb,MAAQkb,EAAElb,KAAK,IAE3B,MAAM,EACFmb,EAAAA,EAAAA,cAAaL,GAAY,SAAA/Y,GAAC,SAAA9I,OAAO8I,EAAEhC,KAAI,KAAA9G,OAAI8I,EAAE/B,MAAK,KAAG/G,QAAA6I,EAAAA,EAAAA,GAClD+Y,GAEX,CAgHIO,CAASrB,EAAuBC,GAAWqB,GAAAzjB,EAAAA,EAAAA,GAAA6iB,EAAA,GAH3CK,EAAUO,EAAA,GAKRha,EAhHe,SAACia,GAAsF,IAAD,IAAAC,EAAA3e,UAAAhE,OAA3BiiB,EAAO,IAAAT,MAAAmB,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPX,EAAOW,EAAA,GAAA5e,UAAA4e,GACnF,IACIC,EAEAZ,EAAO,GADPa,EACAb,EAAO,GAILc,EAxGY,SAACC,EAA0BC,EAAsCC,GACnF,IAAM5mB,EAAS0mB,EAAergB,KAAI,SAAA6I,GAC9B,IAAM2X,EAAqBF,EAAwBzX,IAAc,EAC3D4X,EAAuBF,EAAqB1X,IAAc,EAEhE,OAAO2X,GAAsBC,EACvB/W,EAAAA,GAAaC,MAAO6W,EAAqBC,EAAwB,KACjE,CACV,IAEA,MAAO,CACHja,EAAG6Z,EACHjX,EAAGzP,EAEX,CA0FuB+mB,CAFSX,EAAuB/f,KAAI,SAAAwG,GAAC,OAAImY,EAAiBtZ,EAAamB,GAAG,IAIzF0Z,EACAC,GAGEQ,EAAmB1B,EAAwBiB,GAC3CU,EAAa3B,EAAwBkB,GAE3C,MAAO,EAAAjgB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAEIygB,GAAgB,IACnBxW,KAAM,MACNC,cAAc,oCACdE,OAAQ,CACJC,MAAOpG,EAAU,OACpBjE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAGE0gB,GAAU,IACbzW,KAAM,MACNC,cAAc,8BACdE,OAAQ,CACJC,MAAOpG,EAAU,OACpBjE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAGEkgB,GAAU,IACbjW,KAAM,UACN0W,KAAM,QACNvW,OAAQ,CACJC,MAAOpG,EAAU,IAErBuH,MAAO,KACPtB,cAAc,iDAG1B,CAmEaK,CAAa8U,EAJJO,EAAA,GACNA,EAAA,IAIVpV,EAlEY,SAACqV,GACf,IAAAe,EAAqB7a,EAAAA,EAAc8a,uBAAuBhB,EAAwB1a,GAA1EwB,EAAGia,EAAHja,IAAKE,EAAG+Z,EAAH/Z,IACPG,EAxGY,SAACL,EAAaE,GAChC,IAAIia,EAAWna,EAAIS,QACf2Z,EAAWla,EAAIO,QAEnB,OAAQ1D,EAAO0B,UACX,KAAKtC,EAAAA,GAAcC,EACf+d,EAAWja,EAAIO,QACVE,SAAS,GAAI,UACbA,SAAS,GAAI,QAClByZ,EAAS1Z,IAAI,GAAI,QACjB,MACJ,KAAKvE,EAAAA,GAAcI,EACf4d,EAAWja,EAAIO,QACVE,SAAS,GAAI,YACbA,SAAS,GAAI,QAClByZ,EAASxZ,QAAQ,WACZF,IAAI,GAAI,QACb,MACJ,SACIyZ,EAAWja,EAAIO,QACVE,SAAS8W,EAAgB,EAAG,SAC5B7W,QAAQ,QACRD,SAAS,EAAG,WAEJI,SAASf,KAClBma,EAAWna,EAAIS,QACVG,QAAQ,QACRD,SAAS,EAAG,WAGrByZ,EAASxZ,QAAQ,QACZF,IAAI,EAAG,UAIpB,MAAO,CACHyZ,EAASzb,SACT0b,EAAS1b,SAEjB,CAiEuBmC,CAAcb,EAAKE,GAChCma,EAAc,CAACra,EAAItB,SAAUwB,EAAIxB,UACvCqF,EAA8B7H,EAAmBa,EAAO0B,UAAhDnC,EAAKyH,EAALzH,MAAOD,EAAU0H,EAAV1H,WAET+I,EAAarI,EAAOwB,QAAUJ,EAAAA,GAAW+C,OAAS,IAAM,GAE9D,OAAA7H,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACO6D,GAAW,IACd8G,YAAY,EACZC,UAAU,EACVC,UAAW,YACX1G,WAAAA,EACA2G,QAASC,EAAAA,GAAUkW,QACnBhW,MAAO,CACHC,UAAWnH,EACXkG,KAAM,OACNmB,SAAUpH,EACVqH,YAAY,EACZpI,MAAAA,EACAD,WAAAA,EACAmI,MAAOnE,EACPsE,YAAa,CACTH,MAAO6V,EACPzV,QAAS,4BAGjBC,MAAO,CACHC,UAAU,EACVC,eAAgB,MAChBL,YAAY,EACZU,WAAAA,EACAJ,UAAW5H,EACX6H,MAAO,SACPV,UAAWnH,EACXqH,SAAUpH,EACV6H,cAAe3H,GAEnBgd,OAAQ,CACJvV,UAAW5H,EACXqH,SAAUpH,EACVmd,UAAU,EACV9V,YAAY,EACZ+V,WAAW,EACXC,YAAY,EACZ5V,UAAU,EACV6V,UAAU,EACVC,UAAU,EACV3V,MAAO,OACP4V,kBAAmB,UACnBC,KAAM,QACNtW,MAAO,CAAC,EAAG,KACXuW,WAAY,IACZ5V,WAAY,MAGxB,CASeE,CAAUqT,GAEzB,OACIhlB,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EACI5B,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDC,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChC7T,MAAOA,EACPqN,KAAMA,EACN4E,OAAQA,EACRwC,OAAQC,EAAAA,MAEZ5S,EAAAA,EAAAA,MAAA,OAAKL,UAAU,SAAQC,SAAA,EACnB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,SAAC,kBAC9B5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,SAAQC,SAAC,YACxB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,gCAA+BC,SAAC,iCAI/D,CAEAokB,EAA2B5e,aAAe,CACtClH,MAAO,8B,oDCpSJ,SAASopB,EAA2B9oB,GAGA,IAFvC2G,EAAQ3G,EAAR2G,SACG/F,GAAMgL,EAAAA,EAAAA,GAAA5L,EAAA6L,GAEHyI,EAAoB,SAACC,GAA4C,OAAK,SAAC1T,GACzE8F,GAAQQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACHvG,GAAM,IAAAgJ,EAAAA,EAAAA,GAAA,GACR2K,EAAO1T,IAEhB,CAAE,EAEI2T,GAAajU,EAAAA,EAAAA,UAAQ,WAOvB,MAAM,CANM,CACRM,MAAOoT,EAAAA,GAAUC,YACjB1R,KAAM,MACN+E,SAAU3G,EAAOoT,kBAAoBC,EAAAA,GAAUC,cAI5CvP,QAAA6I,EAAAA,EAAAA,GACAiH,EAAAA,GAAWxN,KAAI,SAAAuE,GAAA,IAAG3K,EAAK2K,EAAL3K,MAAW,MAAQ,CACpCA,MAAAA,EACA2B,KAF4BgJ,EAAJhJ,KAGxB+E,SAAU3G,EAAOoT,kBAAoBnT,EACxC,KAET,GAAG,CAACD,EAAOoT,kBAEX,OACIxS,EAAAA,EAAAA,MAACoT,EAAAA,GAAW,CAAAxT,SAAA,EACR5B,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOP,EACP7N,SAAU,SAAFyH,GAAA,IAAKvN,EAAKuN,EAALvN,MAAK,OAAOyT,EAAkB,kBAAlBA,CAAqCzT,EAAM,EACpEM,UAAU,yBACVsF,OAAO,cAGfjH,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4CAA2CC,SACrD,CAAC6K,EAAAA,GAAW+C,OAAQ/C,EAAAA,GAAWW,OAAO3F,KAAI,SAAA8hB,GAAI,OAC3CvpB,EAAAA,EAAAA,KAACyV,EAAAA,GAAY,CAETC,QAAS6T,EACTxhB,SAAU3G,EAAOyL,QAAU0c,EAC3BxjB,UAAU,EACVD,QAAS,WAAF,OAAQgP,EAAkB,QAAlBA,CAA2ByU,EAAK,GAJ1CA,EAKP,SAIdvpB,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4CAA2CC,SACrD,CACG6I,EAAAA,GAAcC,EACdD,EAAAA,GAAcI,EACdJ,EAAAA,GAAcK,GAChBrD,KAAI,SAAAsF,GAAQ,OACV/M,EAAAA,EAAAA,KAACyV,EAAAA,GAAY,CAETC,QAAS3I,EACThF,SAAU3G,EAAO2L,WAAaA,EAC9BhH,UAAU,EACVD,QAAS,WAAF,OAAQgP,EAAkB,WAAlBA,CAA8B/H,EAAS,GAJjDA,EAKX,UAKtB,C,2FCjEO,SAASyc,IACZ,IAAMC,GAA6B/oB,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,UAAUqlB,qBAAqB,IACnGyD,GAAoChpB,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,UAAU8oB,iCAAiC,IACpHzD,EAAsCwD,EAAtCxD,sBAAuBC,EAAeuD,EAAfvD,WAEzBrP,GAAWC,EAAAA,EAAAA,MAEXC,GAAYC,EAAAA,EAAAA,IAAiB1W,EAAAA,EAAoBqpB,gCAEvDhmB,GAAsCC,EAAAA,EAAAA,UAA2C,CAC7EmJ,SAAUtC,EAAAA,GAAcC,EACxBmC,MAAOJ,EAAAA,GAAW+C,OAClBgF,gBAAiBC,EAAAA,GAAUC,cAC7B7Q,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAJKsT,EAAWpT,EAAA,GAAEqT,EAAcrT,EAAA,IAMlCkB,EAAAA,EAAAA,YAAU,WACNgS,GAAaF,GAAS+S,EAAAA,EAAAA,KAAsC3S,GAChE,GAAG,CAACF,EAAWF,EAAUI,IAEzB,IAAM3V,GAAQP,EAAAA,EAAAA,UAAQ,kBAClBf,EAAAA,EAAAA,KAACgmB,EAA0B,CACvB3a,OAAQ4L,EACRgP,sBAAuBA,EACvBC,WAAYA,GACd,GACF,CACID,EACAC,EACAjP,IAGF/U,EAAY,2BAElB,OACIlC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,EAAWP,UAAU,uBAAsBC,UAC/D5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAa2nB,GAAmC9nB,UAC3EI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoBqpB,+BAC7BznB,UAAWA,EACXC,iBAAiB,0CAAyCP,SAAA,EAE1DI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAAAV,SAAA,EAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,KACLlC,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoBqpB,+BAA+B/nB,UACjE5B,EAAAA,EAAAA,KAACspB,GAA2B3hB,EAAAA,EAAAA,GAAA,CAACR,SAAU+P,GAAoBD,UAGnEjX,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAcknB,EACdjnB,aACIzC,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoBqpB,+BAA+B/nB,SAAC,yEAGzEA,SAEqB,OAArBqkB,QAAqB,IAArBA,GAAAA,EAAuBnhB,QAAoB,OAAVohB,QAAU,IAAVA,GAAAA,EAAYphB,OAASxD,GAAQtB,EAAAA,EAAAA,KAACoX,EAAAA,EAA0B,YAMlH,C,wKCzEMyS,EAAoB,SAAC5oB,GACvB,IAAAT,EAA6BS,EAArBgL,EAAIzL,EAAJyL,KAAMC,EAAK1L,EAAL0L,MAAO4d,EAAGtpB,EAAHspB,IACrB,OAAQC,EAAAA,EAAAA,OAAM9d,KAAU8d,EAAAA,EAAAA,OAAM7d,KAAW6d,EAAAA,EAAAA,OAAMD,QAEzCnnB,EADA4J,IAAO,CAACN,EAAMC,EAAQ,EAAG4d,IAAM9c,OAAOyH,EAAAA,GAAUuV,YAE1D,EAaO,SAASzoB,EAAmByK,GAKN,IAJzBxK,EAAOwK,EAAPxK,QACAC,EAAauK,EAAbvK,cAAawoB,EAAAje,EACbc,aAAAA,OAAY,IAAAmd,EAAGJ,EAAiBI,EAAAC,EAAAle,EAChC9L,MAAAA,OAAK,IAAAgqB,EAAG,oBAAmBA,EAGvB1e,EAOA2e,EAAAA,EAPA3e,YACAE,EAMAye,EAAAA,EANAze,UACAC,EAKAwe,EAAAA,EALAxe,SACAye,EAIAD,EAAAA,EAJAC,IACAC,EAGAF,EAAAA,EAHAE,OACAxe,EAEAse,EAAAA,EAFAte,cACAC,EACAqe,EAAAA,EADAre,WAGEwe,EAAsB,SAACrpB,GAAc,OACvCA,EAAOqN,MAAQrN,EAAOuN,KACtBvN,EAAOuN,MAAQvN,EAAOspB,QACtBtpB,EAAOspB,SAAWtpB,EAAOupB,IACzBvpB,EAAOupB,KAAOvpB,EAAOwpB,EAAG,EAKtBC,EAAmB,SAACzpB,GACtB,IAUI0pB,EAVExd,EAAM1L,EAAcR,GAC1B,IAAKkM,EAAK,MAAO,GAEjB,GAAImd,EAAoBnd,GACpB,MACI,GAAAhI,OAAG2H,EAAa7L,GAAO,aAAAkE,OACpBylB,EAAAA,GAAWC,MAAM1d,EAAIod,QAAQ,GAAK,WAM7C,GAAIpd,EAAI2d,eAAiB3d,EAAI4d,WACzBJ,EAAWC,EAAAA,GAAWC,MAAM1d,EAAI2d,eAAe,GAAQ,KAAOF,EAAAA,GAAWC,MAAM1d,EAAI4d,YAAY,OAC5F,CACH,IAAMC,EAAU7d,EAAI2d,eAAiB3d,EAAI4d,WACzCJ,EAAWK,EAAUJ,EAAAA,GAAWC,MAAMG,GAAS,QAAQroB,CAC3D,CAEA,MACI,GAAAwC,OAAG2H,EAAa7L,GAAO,kBAAAkE,OACfylB,EAAAA,GAAWC,MAAM1d,EAAImB,KAAK,GAAK,WAAS,OAAAnJ,OACzCylB,EAAAA,GAAWC,MAAM1d,EAAIqd,IAAI,GAAK,WAAS,QAAArlB,OACtCylB,EAAAA,GAAWC,MAAM1d,EAAIod,QAAQ,GAAK,WAAS,OAAAplB,OAC5CylB,EAAAA,GAAWC,MAAM1d,EAAIsd,IAAI,GAAK,WAAS,QAAAtlB,OACtCylB,EAAAA,GAAWC,MAAM1d,EAAIqB,KAAK,GAAK,YACtCmc,EAAQ,eAAAxlB,OAAmBwlB,EAAQ,WAAa,GAEzD,EAuGMpd,EArGK/L,EAAQoM,QAAO,SAACC,EAAU5M,GAC7B,IAAMqP,EAAYxD,EAAa7L,GACzBkM,EAAM1L,EAAcR,GAE1B,IAAKkM,EAAK,OAAOU,EAEjB,IAAMod,EAAgBX,EAAoBnd,GACpC+d,EAzCc,SAACjqB,GAAc,OACtCA,EAA6BkqB,WAAW,CAwCfC,CAAoBje,GAEtCI,GAAIS,EAAAA,EAAAA,GAAOH,GAEf,IAAKqd,EAAe,CAChB,IAAMG,EAAMle,EAAIme,MAAQ,CACpBd,GAAI,CAACrd,EAAIqd,IACTC,GAAI,CAACtd,EAAIsd,IACTF,OAAQ,CAACpd,EAAIod,QACbgB,WAAY,CAACpe,EAAImB,KACjBkd,WAAY,CAACre,EAAIqB,KACjBtI,KAAM+kB,OAAgBtoB,EAAY+nB,EAAiBzpB,GACnDgN,EAAG,CAACqC,GACJsB,KAAM,MACNG,OAAQ,CACJC,MAAOqY,GAEXoB,UAAWrB,EACXsB,UAAWT,EAAgB,OAAS,OACpCU,WAAW,GACX,CAAC,EAECZ,EAAa,CACf9c,EAAG,CAACqC,GACJO,EAAG,CAAC1D,EAAIme,MAAQne,EAAI4d,gBAAapoB,GACjC+oB,UAAW,OACXpD,KAAM,UACN1W,KAAM,UACNG,OAAQ,CACJ6Z,KAAM,EACN5Z,MAAOqY,IAITwB,EAAiB,CACnB5d,EAAG,CAACqC,GACJO,EAAG,CAAC1D,EAAIme,MAAQne,EAAI2d,mBAAgBnoB,GACpC+oB,UAAW,OACXpD,KAAM,UACN1W,KAAM,UACNG,OAAQ,CACJ6Z,KAAM,EACN5Z,MAAOqY,IAIf9c,EAAKhH,KAAK8kB,EAAKN,EAAYc,EAC/B,CAYA,OAVIZ,GAAiBC,IACjB3d,EAAKhH,KAAK,CACN0H,EAAG,CAACqC,GACJO,EAAG,CAAC1D,EAAIod,QACRrkB,KAAMglB,OAAgBvoB,EAAY+nB,EAAiBzpB,GACnDyqB,UAAWR,EAAgB,OAAS,OACpC5C,KAAM,SAIP/a,CACX,GAAG,IAmCD4E,GA/BFxK,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACO6D,GAAW,IACd8G,YAAY,EACZC,UAAU,EACVC,UAAW,UACX1G,WAAAA,EACA8G,MAAO,CACHoW,YAAY,EACZpX,KAAM,WACNiB,UAAWnH,EACXqH,SAAUpH,EACVqH,YAAY,EACZpI,MAAO,KACPD,WAAY,YAEhBwI,MAAO,CACH6V,YAAY,EACZ5V,UAAU,EACVC,eAAgB,MAChBL,YAAY,EACZM,UAAW5H,EACX6H,MAAO,SACPV,UAAWnH,EACXqH,SAAUpH,EACV6H,cAAe3H,EACfigB,mBAAmB,KAQ/B,OACI9rB,EAAAA,EAAAA,KAAA4F,EAAAA,SAAA,CAAAhE,UACI5B,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDC,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChC7T,MAAOA,EACPqN,KAAMA,EACN4E,OAAQA,EACRwC,OAAQC,EAAAA,MAIxB,C,0FCpMO,SAASmX,IACZ,OACI/rB,EAAAA,EAAAA,KAACC,EAAAA,EAAyB,CACtBC,MAAM,sCACNC,MAAM,wBACNC,MAAM,OACNC,QAASC,EAAAA,EAAoB0rB,wBAGzC,C,2JCHO,SAASC,IACZ,IAAMpV,GAAWC,EAAAA,EAAAA,MAEXC,GAAYC,EAAAA,EAAAA,IACd1W,EAAAA,EAAoB4rB,sBACpB5rB,EAAAA,EAAoB0rB,uBACpB1rB,EAAAA,EAAoBC,sBAOxB,OAJAwE,EAAAA,EAAAA,YAAU,WACNgS,GAAaF,GAASsV,EAAAA,EAAAA,OAC1B,GAAG,CAACpV,EAAWF,KAGX7U,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EACI5B,EAAAA,EAAAA,KAACosB,EAAAA,EAAsB,KACvBpsB,EAAAA,EAAAA,KAAC+rB,EAAAA,EAAuB,KACxB/rB,EAAAA,EAAAA,KAACD,EAAAA,EAAqB,MAGlC,C,mPCMO,SAASssB,EAAsB7rB,GAAyE,IAAtE8rB,EAAQ9rB,EAAR8rB,SAAUC,EAAkB/rB,EAAlB+rB,mBAAoBC,EAAShsB,EAATgsB,UAC7DC,GAAUC,EAAAA,EAAAA,MAIRC,EAAeC,EAAAA,GAAfD,WACFE,GAAavS,EAAAA,EAAAA,cAAY,SAACjV,GAC5B,IAAM6O,EAAQ7O,GAAKA,EAAE4O,QAAU5O,EAAE4O,OAAO,GAClC3H,EAAOC,IAAOugB,OAAO5Y,EAAMjG,GAAIwG,EAAAA,GAAUsY,qBAAqB/f,OAAOyH,EAAAA,GAAUuY,iCACrF,GAAI9Y,GAASA,EAAM3G,KAAM,CACrB,IAAM0f,EAAe,CACjBC,SAAU,CAACC,EAAAA,EAAWC,UAAWD,EAAAA,EAAWE,QAASF,EAAAA,EAAWG,UAChE/L,SAAwC,IAA9BgL,EAAmBznB,OAAe,GAAKynB,EAAmB,GACpEgB,SAAUjhB,EACVkhB,OAAQlhB,EACRmhB,SAASC,EAAAA,EAAAA,IAAyBxZ,EAAM3G,KAAKrH,OAE3CynB,EAAoD,EAACF,EAAAA,EAAAA,OAAWP,EAAAA,EAAAA,OAAY3L,EAAAA,EAAAA,IAAS,KAAKgM,EAAAA,EAAAA,OAAYC,EAAAA,EAAAA,OACtGI,EAAcC,EAAAA,EAAsBC,UAAUb,EAAcU,GAClElB,EAAQlmB,KAAK,CACTwnB,SAAU9O,EAAAA,GAAO+O,SACjBC,OAAQL,GAEhB,CACJ,GAAG,CAACrB,EAAoBE,IAElBrb,EAAQ,SAAC+V,EAAW+G,GACtB,OAAO/G,EAAI+G,EAAU/G,EAAI+G,EAAU/G,EAAI+G,EAAU/G,CACrD,EAEMgH,EAAQ,SAACC,GACX,OAAOA,EAAI,IAAM,CACrB,EAEMC,EAAgB,WAClB,IAAMC,EAAK9B,EAAU+B,SAAW,IAC1BC,EAAeF,EAjCH,GAiCwBld,EAAMkd,EAlC9B,EACA,IAiCmEA,EAlCnE,EAmCZG,EAASN,EAAMK,GAnCH,EAmCmBA,EAA+Bpd,EAnClD,EAmCwDod,EAjChD,KAmC1B,MAAO,CAAC,EADiBC,GAAkB9B,EAE/C,EAqBM+B,EAdkBlC,EAAU3b,EAC7BpJ,KAAI,SAAA8F,GAAI,MAAK,CACVU,EAAGue,EAAUve,EACb4C,EAAGtD,EAAKnM,OAAOqG,KAAI,SAAAknB,GAAE,OAAIA,EAAK,GAAO,IACrCzoB,KAAMqH,EAAKrH,KACX0L,KAAM,MACNgd,aAAc,OACd7c,OAAQ,CACJC,MAAOzE,EAAKyE,OAEhB0Z,UAAW,OACX1oB,KAAMuK,EAAKvK,MAAQ,GACtB,IAID6rB,EACAjC,EAAAA,GADAiC,MAAOnjB,EACPkhB,EAAAA,GADOlhB,UAAWC,EAClBihB,EAAAA,GADkBjhB,SAAUE,EAC5B+gB,EAAAA,GAD4B/gB,cAAeijB,EAC3ClC,EAAAA,GAD2CkC,OAAQC,EACnDnC,EAAAA,GADmDmC,SAAUC,EAC7DpC,EAAAA,GAD6DoC,WAAYC,EACzErC,EAAAA,GADyEqC,OAAQC,EACjFtC,EAAAA,GADiFsC,YAG/E/c,EAAS,CACXG,YAAY,EACZG,QAAS,QACTF,UAAU,EACVC,UAAW,UACX1G,WAAY,CACRqjB,YAAaN,EAAMM,YACnBjc,QAAS2b,EAAMO,QACfC,KAAM,CACFrd,MAAO6c,EAAMS,UACbC,OAAQV,EAAMW,WACd5D,KAAMiD,EAAMjD,OAGpByD,KAAM,CAAEzD,KAAMmD,GACdU,OAAQR,EACRS,YAAaR,EACbJ,OAAAA,EACAlc,MAAO,CACHE,MAAOkc,EACPlG,UAAU,EACVjW,UAAWnH,EACXqH,SAAUpH,GAEdwH,MAAO,CACHC,UAAU,EACVN,MAAOub,IACPsB,OAAQ,QACR/kB,MApDS,WACb,IAAM0jB,EAAKD,IAAgB,GAC3B,OAAOF,EAAMG,EA1CK,GA0CiBA,EA1CjB,EA0CqCld,EAAMkd,EA1C3C,EAEQ,IAyC9B,CAiDesB,GACPvc,eAAgB,OAChBG,cAAe3H,EACfmH,YAAY,EACZM,UAAW5H,EACX6H,MAAO,SACPV,UAAWnH,EACXqH,SAAUpH,IAIlB,OACI3L,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDic,cAAe/b,EAAAA,GAAWgc,eAAexD,EAAU,aACnDzY,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChC7T,MAAOosB,EACPxmB,QAAS+mB,EACTtf,KAAMmhB,EACNvc,OAAQA,EACRwC,OAAQC,EAAAA,IAGpB,CAEAyX,EAAuBjlB,aAAe,CAClCklB,SAAU,wB,gDCtIP,SAASyD,IACZ,IAAM1kB,GAAS3K,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyK,MAAM,IAC9D2kB,GAAkEC,EAAAA,EAAAA,GAAqB1jB,OAA/E2jB,EAAkCF,EAAlCE,mCAAoCC,EAAiBH,EAAjBG,kBAC5CC,GAA0CnM,EAAAA,EAAAA,KAAlCC,EAAKkM,EAALlM,MAAOG,EAAsB+L,EAAtB/L,uBACTgM,GAAe3vB,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyvB,YAAY,IAElEC,EAAwCjlB,EAAxCilB,gBAAiB/D,EAAuBlhB,EAAvBkhB,mBAEnBgE,GAAqBxvB,EAAAA,EAAAA,UAAQ,WAC/B,IAAIwtB,EAAW,EACTiC,EAAyBC,EAAAA,GAAkBC,EAAAA,GAAYC,OACvD1iB,EAAIkiB,EAAkB1oB,KAAI,SAAA6E,GAAI,OAAIC,IAAAA,IAAWD,GAAM4C,QAAQ,OAAOlC,OAAOyH,EAAAA,GAAUsY,oBAAoB,IACvGlc,EAAI+f,EAAAA,GAAsBhjB,QAAO,SAACijB,EAA2BpZ,GAC/D,OAAI6Y,EAAgBxrB,SAAgD,IAAtCwrB,EAAgBQ,QAAQrZ,IAGtDoZ,EAAMtqB,KAAK,CACPL,KAAMuR,EACNzF,MAAO+e,EAAAA,EAAajE,OAAOrV,IAC3BrW,OAAQ6M,EAAExG,KAAI,kBAAM,CAAC,IACrBzE,KAAM,KANC6tB,CASf,GAAG,IAmCH,OAjCsB3M,EAAM7Y,QAAO,SAAA2lB,GAC/B,IAAM1kB,EAAOC,IAAAA,IAAWykB,EAAKC,gBAAgBC,QACvCC,EAAYljB,EAAE6iB,QAAQxkB,EAAKU,OAAOyH,EAAAA,GAAUsY,sBAClD,OAAOiE,EAAKI,YAAcJ,EAAKI,WAAWtsB,QAAUqsB,GAAa,CACrE,IAEczqB,SAAQ,SAAAsqB,GAIlB,IAHA,IAzBUK,EAyBFD,EAAeJ,EAAfI,WACF9kB,EAAOC,IAAAA,IAAWykB,EAAKC,gBAAgBC,QACvCC,EAAYljB,EAAE6iB,QAAQxkB,EAAKU,OAAOyH,EAAAA,GAAUsY,sBACzCzmB,EAAI,EAAGA,EAAI8qB,EAAWtsB,OAAQwB,IAAK,CACxC,IAAMgrB,EAAWF,EAAW9qB,GAC5B,IAAIimB,EAAmBznB,SAA6D,IAAnDynB,EAAmBuE,QAAQQ,EAAS/P,UAGrE,IAAK,IAAIgQ,EAAI,EAAGA,EAAI1gB,EAAE/L,OAAQysB,IAAK,CAC/B,IAAMC,EAAQ3gB,EAAE0gB,GACZD,EAASG,SAAWD,EAAMtrB,MAASwqB,EAAAA,GAAYC,QAAUa,EAAMtrB,OAA6D,IAArDsqB,EAAuBM,QAAQQ,EAASG,QAC3GD,EAAMpwB,OAAO+vB,GACbK,EAAMpwB,OAAO+vB,GAAaK,EAAMpwB,OAAO+vB,GAAaG,EAAS1F,KAE7D4F,EAAMpwB,OAAO+vB,GAAaG,EAAS1F,MAAQ,EAEvC4F,EAAMpwB,OAAO+vB,KACrBK,EAAMpwB,OAAO+vB,GAAa,GAE1B5C,EAAWiD,EAAMpwB,OAAO+vB,KACxB5C,EAAWiD,EAAMpwB,OAAO+vB,IAE5BK,EAAMxuB,KAAKmuB,GAAU,GAAAhsB,OAAOqsB,EAAMtrB,OAASwqB,EAAAA,GAAYC,MAAQ,QAAUa,EAAMtrB,KAAI,KAAAf,QA/CjFksB,EA+C8FG,EAAMpwB,OAAO+vB,IA/C/E,IAAU,GAAKE,EAAS,KAASK,QAAQ,GAAKL,EAAS,IA+CmC,KAC5H,CACJ,CACJ,IACO,CAAEpjB,EAAAA,EAAG4C,EAAAA,EAAG0d,SAAAA,EACnB,GAAG,CAAC4B,EAAmBjM,EAAOqI,EAAoB+D,IAE5CqB,GAAkB5wB,EAAAA,EAAAA,UAAQ,kBAC5Bf,EAAAA,EAAAA,KAACqsB,EAAsB,CAACG,UAAW+D,EAAoBhE,mBAAoBA,GAAsB,GAClG,CAACgE,EAAoBhE,IAElBpsB,EAAQ,kBAEd,OACIH,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAAC2uB,aAAcA,EAAclwB,MAAOA,EAAOwB,UAAU,OAAMC,UACvEI,EAAAA,EAAAA,MAACH,EAAAA,EAAiB,CACdC,YACIC,EAAAA,EAAAA,IAAasiB,KACbtiB,EAAAA,EAAAA,IAAamuB,GAChBtuB,SAAA,EAED5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKzB,OAET6B,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CAACC,aAAc6hB,EAAuBziB,SAAA,CACxD+vB,GACD3xB,EAAAA,EAAAA,KAAC4xB,EAAAA,EAAgB,CAACnE,QAAS,CAACoE,EAAAA,GAAOC,IAAKD,EAAAA,GAAOE,GAAIF,EAAAA,GAAOG,EAAGH,EAAAA,GAAOI,IAAKJ,EAAAA,GAAOK,GAAIL,EAAAA,GAAOM,EAAGN,EAAAA,GAAOO,GAAI,kBAK7H,C,0FClGO,SAASR,EAAgBpxB,GAAsC,IAAnCitB,EAAOjtB,EAAPitB,QAC/B,OACIztB,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,SAAQC,SAClB6rB,EAAQhmB,KAAI,SAAAgqB,GAAM,OAAIV,EAAAA,EAAaU,IAE5BzvB,EAAAA,EAAAA,MAAA,OAAkBL,UAAU,sBAAqBC,SAAA,EAC7C5B,EAAAA,EAAAA,KAAA,QAAMqyB,MAAO,CAAEC,WAAYvB,EAAAA,EAAaU,MAAcA,IADhDA,GAGV,IAAI,KAIxB,C,0FCjBO,SAASrF,IACZ,OACIpsB,EAAAA,EAAAA,KAACC,EAAAA,EAAyB,CACtBC,MAAM,qCACNC,MAAM,uBACNC,MAAM,MACNC,QAASC,EAAAA,EAAoB4rB,uBAGzC,C,kNCwDaqG,EA1D4D,CACrE,CACIpS,UAAWtW,EAAAA,EAAqBC,QAChCsW,0BAA2B,WAAF,MAAQ,UAAU,EAC3CC,oBAAqB,SAAF7f,GAAA,IAAKsJ,EAAOtJ,EAAPsJ,QAAO,OAC3B9J,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAACC,QAASxP,EAAQ0oB,UAAU5wB,SACtCkI,EAAQ0oB,WACI,EAErB7R,gBAAiB,6BACjBC,cAAe,6BACfC,aAAchX,EAAAA,EAAqBC,SAEvC,CACIqW,UAAWtW,EAAAA,EAAqB4oB,aAChCrS,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAFrU,EAAgB+U,GAAO,IAAlBjX,EAAOkC,EAAPlC,QAAO,OAC3B9J,EAAAA,EAAAA,KAAC0yB,EAAAA,EAA2B,CAAA9wB,SACvB,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAAC2yB,EAAAA,EAAc,CACXC,cAAe9oB,EAAQ8oB,cACvBJ,UAAW1oB,EAAQ0oB,UACnBhR,KAAM1X,EAAQ0X,KACdnW,OAAQwnB,EAAAA,EAAeC,SACvBhtB,QAASib,EAAQI,gBACjB4R,QAAQ,kCACRhtB,SAAUqT,GACZ,GAEoB,EAClCuH,gBAAiB,sBACjBC,cAAe,uBAEnB,CACIT,UAAWtW,EAAAA,EAAqBwD,iBAChC+S,0BAA2B,WAAF,MAAQ,MAAM,EACvCC,oBAAqB,SAAFzR,EAAyBmS,GAAO,IAA3B1T,EAAgBuB,EAAhBvB,iBAAgB,SAAAlI,OACjC4b,EAAQQ,SAAQ,KAAApc,OAAIylB,EAAAA,GAAWoI,kBAAkB3lB,GAAkB,GAAK,EAC/EsT,gBAAiB,+BACjBC,cAAe,+BACfC,aAAchX,EAAAA,EAAqBwD,kBAEvC,CACI8S,UAAWtW,EAAAA,EAAqBopB,UAChC7S,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,WAAF,MAAQ,EAAE,EAC7BM,gBAAiB,kCACjBC,cAAe,mCAEnB,CACIT,UAAWtW,EAAAA,EAAqBE,qBAChCqW,0BAA2B,WAAF,MAAQ,OAAO,EACxCC,oBAAqB,SAAF5P,GAAyB,OAAAA,EAApB1G,oBAA+C,EACvE4W,gBAAiB,+BACjBC,cAAe,+BACfC,aAAchX,EAAAA,EAAqBE,uBAGkBtC,KAAI,SAACkU,GAC9D,OAAO,IAAI+F,EAAAA,EAAc/F,EAC7B,I,wLCnCMgG,GAA2B/Y,EAAAA,EAAAA,IAAkB,MAE7CsqB,EAAiB,SAAC7xB,GAAa,OACjCA,IAAUoT,EAAAA,GAAUC,iBAAc/R,EAAYtB,CAAM,EAMjD,SAAS8xB,EAAiB3yB,GAA8B,IAA3B2gB,EAAe3gB,EAAf2gB,gBAChCxd,GAAwBC,EAAAA,EAAAA,UAAS6Q,EAAAA,GAAUC,aAAY7Q,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAhDiO,EAAI/N,EAAA,GAAEuvB,EAAOvvB,EAAA,GACpBI,GAAgCL,EAAAA,EAAAA,UAAS6Q,EAAAA,GAAUC,aAAYxQ,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAAxDsd,EAAQrd,EAAA,GAAEmvB,EAAWnvB,EAAA,GAC5BG,GAAwBT,EAAAA,EAAAA,UAA6B+d,EAAe,IAAGrd,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAhE4H,EAAI3H,EAAA,GAAEwd,EAAOxd,EAAA,GACpBG,GAAwBb,EAAAA,EAAAA,UAAS,GAAEc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAA5BiB,EAAIhB,EAAA,GAAEqd,EAAOrd,EAAA,GACpB4uB,GAA4C1vB,EAAAA,EAAAA,UAAS2vB,EAAAA,EAAoB,GAAGlyB,OAAMmyB,GAAA1vB,EAAAA,EAAAA,GAAAwvB,EAAA,GAA3ElS,EAAcoS,EAAA,GAAEC,EAAiBD,EAAA,GAExCE,GAA4B9vB,EAAAA,EAAAA,UAAS,IAAG+vB,GAAA7vB,EAAAA,EAAAA,GAAA4vB,EAAA,GAAjCnqB,EAAMoqB,EAAA,GAAE3R,GAAS2R,EAAA,GACxBC,IAA0ChwB,EAAAA,EAAAA,UAAS8F,EAAAA,GAAKmqB,MAAKC,IAAAhwB,EAAAA,EAAAA,GAAA8vB,GAAA,GAAtDpqB,GAAasqB,GAAA,GAAE7R,GAAgB6R,GAAA,GAEhCC,IAAcrzB,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUmzB,WAAW,IAClEC,IAA+BtzB,EAAAA,EAAAA,KACjC,SAACuX,GAAW,OAAKA,EAAErX,UAAUozB,4BAA4B,IAEvDC,IAAgCvzB,EAAAA,EAAAA,KAClC,SAACuX,GAAW,OAAKA,EAAErX,UAAUqzB,6BAA6B,IAGxDld,IAAYC,EAAAA,EAAAA,IAAiB1W,EAAAA,EAAoB4zB,oBAEjDrd,IAAWC,EAAAA,EAAAA,OAEjB/R,EAAAA,EAAAA,YAAU,WACDgS,KAILF,IACIsd,EAAAA,EAAAA,IACIjB,EAAethB,GACfshB,EAAe3R,GACftV,EACAinB,EAAe9R,KAGvBW,EAAQ,GACZ,GAAG,CAAClL,GAAUE,GAAWnF,EAAM2P,EAAUtV,EAAMmV,IAE/C,IAAMyB,GAAgB,WAAH,MAAU,CACzB1B,gBAAAA,EACAI,SAAAA,EACH,EAGKgB,GADkBhZ,IAAWM,EAAAA,EAAqBC,QAClB0Y,EAAAA,GAAa1Y,QAAU,GAC7D4Y,IAA0BC,EAAAA,EAAAA,IACtBoR,GACAxqB,EACAC,GACA+Y,IAJGK,IAKN9e,EAAAA,EAAAA,GAAA4e,GAAA,GALqB,GAOhB0R,GAAiBxiB,IAAS6C,EAAAA,GAAUC,aAAe6M,IAAa9M,EAAAA,GAAUC,YAM1EoO,GAAmB,SAAC1iB,EAAe2iB,GACrCf,GAAU5hB,GACV6hB,GAAiBc,EACrB,EAYMzf,GAAgB,SAACS,GAAoB,OAAKge,EAAQhe,EAAc,EAEhEswB,GAAeD,GACf7B,EAAmBlnB,QAAO,SAAAsQ,GAAC,OAAIA,EAAE2Y,OAAOnU,YAActW,EAAAA,EAAqBopB,SAAS,IACpFV,EAAmBlnB,QAAO,SAAAsQ,GAAC,OAAIA,EAAE2Y,OAAOnU,YAActW,EAAAA,EAAqBwD,gBAAgB,IAkC3FnL,GAAY,kBAElB,OACIlC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,GAAWP,UAAU,cAAaC,UACtD5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAaiyB,IAA8BpyB,UACtEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoB4zB,mBAC7BhyB,UAAWA,GACXC,iBAAiB,sCAAqCP,SAAA,EAEtDI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAAAV,SAAA,EAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,MACLF,EAAAA,EAAAA,MAACU,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoB4zB,mBAAmBtyB,SAAA,EACrD5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,kBAAiBC,UAC5B5B,EAAAA,EAAAA,KAACgjB,EAAAA,EAAc,CACXC,cAAclhB,EAAAA,EAAAA,IAAakyB,IAC3B/Q,aAhEN,WAAH,OACnBrM,IACI0d,EAAAA,EAAAA,IACIrB,EAAethB,GACfshB,EAAe3R,GACftV,EACAinB,EAAe9R,IACf9X,EAAAA,EAAAA,IAA0BC,EAAQC,KAExC,EAwD0BzD,UAAWguB,GAAYjvB,YAG/B9C,EAAAA,EAAAA,MAAA,OAAKL,UAAU,8BAA6BC,SAAA,EACxC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOmQ,EAAAA,EAA2Bje,KAC9B,SAAAgJ,GAAA,IAAGpP,EAAKoP,EAALpP,MAAW,MAAQ,CAClBA,MAAAA,EACA2B,KAFUyN,EAAJzN,KAGN+E,SAAU1G,IAAUuQ,EACvB,IAELzK,SAvFX,SAAH6E,GAAA,IAAM3K,EAAK2K,EAAL3K,MAAK,OAAyB+xB,EAAQ/xB,EAAMmzB,WAAY,EAwFhD7yB,UAAU,yBACVsF,OAAO,cAGfjH,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,uBAAsBC,UACjC5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOuQ,EAAAA,EAAwBre,KAAI,SAAAiJ,GAAA,IAAGrP,EAAKqP,EAALrP,MAAW,MAAQ,CACrDA,MAAAA,EACA2B,KAF6C0N,EAAJ1N,KAGzC+E,SAAU1G,IAAUkgB,EACvB,IACDpa,SAlGP,SAAHyH,GAAA,IAAMvN,EAAKuN,EAALvN,MAAK,OAAyBgyB,EAAYhyB,EAAMmzB,WAAY,EAmGxD7yB,UAAU,yBACV6T,uBAAuB,EACvBvO,OAAO,aAGfjH,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOge,EAAAA,EAAoB9rB,KAAI,SAAAwG,GAAC,OAAAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACzBsG,GAAC,IACJlG,SAAUqZ,IAAmBnT,EAAE5M,OAAK,IAExCmU,uBAAuB,EACvBrO,SAAU,SAAFkK,GAAA,IAAKhQ,EAAKgQ,EAALhQ,MAAK,OAAOoyB,EAAkBpyB,EAAgB,EAC3DozB,2BAA4B/mB,EAAAA,EAAcgnB,qCAAqC,WAC/E/yB,UAAU,8BAGlB3B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACojB,EAAAA,EAAY,CACTC,MAAO1B,EACP2B,aAAcrX,EACdsX,kBAAkB,MAClBpc,SAxHX,SAACqc,GAAkB,OAAK1B,EAAQ0B,EAAW,EAyHhCvc,OAAO,SACPwc,eAAa,gBAMjCzjB,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAcwxB,GACdvxB,YACImgB,GAAgB9d,OACV,uEACA,GACTlD,SAEAghB,GAAgB9d,OAhHjC8d,GAAgB9d,OAASiE,EAAAA,GAAsB1F,aAC3CrD,EAAAA,EAAAA,KAACkD,EAAAA,EAAU,CACPC,KAAMyf,GACNvf,YAAa0F,EAAAA,GAAsB1F,YACnCG,YAAakC,EACbpC,cAAeA,GAAc1B,SAE5B,SAAC2T,GAAwB,OACtBvV,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFC,OAAQb,GACRc,cAAera,EACfsa,uBAAwBra,GACxBsa,UAAWvO,EACXwO,QAASsQ,GACT1yB,UAAU,oBACVqiB,yBAA0BnB,IAC5B,KAIV7iB,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFC,OAAQb,GACRc,cAAera,EACfsa,uBAAwBra,GACxBsa,UAAWlB,GACXmB,QAASsQ,GACT1yB,UAAU,oBACVqiB,yBAA0BnB,MAqFwB7iB,EAAAA,EAAAA,KAACoX,EAAAA,EAA0B,YAM7F,C,yOC3NM2O,EAAgB,GAEhBvb,GAAuDJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxDK,EAAAA,GAAcC,EAAI,CACfC,WAAY,SACZC,MAAO,OAEVH,EAAAA,GAAcI,EAAI,CACfF,WAAY,UACZC,MAAO,OAEVH,EAAAA,GAAcK,EAAI,CACfH,WAAY,KACZC,MAAO,QAITI,EAAkB,UAClBC,EAAiB,OAEhB,SAAS0pB,EAAqBn0B,GAAkF,IAA/Eo0B,EAAgBp0B,EAAhBo0B,iBAAkBC,EAAar0B,EAAbq0B,cAAexpB,EAAM7K,EAAN6K,OAAQnL,EAAKM,EAALN,MAEzEsL,EAMAspB,EAAAA,GANAtpB,YACAE,EAKAopB,EAAAA,GALAppB,UACAC,EAIAmpB,EAAAA,GAJAnpB,SACAC,EAGAkpB,EAAAA,GAHAlpB,UACAC,EAEAipB,EAAAA,GAFAjpB,cACAC,EACAgpB,EAAAA,GADAhpB,WAGEsa,EAAmB,SAAC9Z,GACtB,OAAQjB,EAAO0B,UACX,KAAKtC,EAAAA,GAAcK,EACf,OAAOwB,EAAKU,OAAO/B,GACvB,KAAKR,EAAAA,GAAcI,EAEf,MAAM,GAAN1F,OAAUmH,EAAKL,OAAM,KAAA9G,OAAqB,EAAjBmH,EAAKW,UAAgB,GAClD,QACI,OAAOX,EAAKU,OAAOhC,GAE/B,EAEM8B,EAAe,SAACK,GAClB,OAAOZ,IAAAA,IAAW,CAACY,EAAIlB,KAAMkB,EAAIjB,MAAQ,GAC7C,EA2BMma,EAAY,SAAC9Y,GACf,IAAM9F,EAAM0B,EAAAA,EAAWuG,QACnBnC,GACA,SAACJ,GAA2B,SAAAhI,OAAQihB,EAAiBtZ,EAAaK,IAAK,IAG3E,OAAOmZ,MAAMC,KAAK9e,EAAIyG,WACjBN,QAAO,SAACC,EAAgB7B,GAA6B,IAAD4C,GAAA9K,EAAAA,EAAAA,GAAAkI,EAAA,GAAzBsE,EAAS1B,EAAA,GAAE4X,EAAQ5X,EAAA,GACrC2B,EAASpH,EAAAA,EAAWqH,IAAIgW,GAAU,SAACnlB,GAA6B,OAjC/D8L,EAiC8E9L,EAhCrFgK,EAAOwB,QACNJ,EAAAA,GAAWW,MACLD,EAAIpD,qBAEJoD,EAAIE,iBALL,IAACF,CAiCoF,IAE3F,OAAAxF,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOkG,GAAG,IAAAzD,EAAAA,EAAAA,GAAA,GACLkG,EAAYC,GAErB,GAAG,CAAC,EACZ,EAEMmW,EAA0B,SAACnZ,GAC7B,OAAOpM,OAAO+M,QAAQX,GACjBK,QAAO,SAACC,EAAQ4C,GAAA,IAAAC,GAAA5M,EAAAA,EAAAA,GAAA2M,EAAC,GAAEH,EAASI,EAAA,GAAEH,EAAMG,EAAA,SAAO,CACxCzC,EAAE,GAAD9I,QAAA6I,EAAAA,EAAAA,GAAMH,EAAII,GAAC,CAAEqC,IACdO,EAAE,GAAD1L,QAAA6I,EAAAA,EAAAA,GAAMH,EAAIgD,GAAC,CAAEN,IACjB,GAAG,CAAEtC,EAAG,GAAI4C,EAAG,IACxB,EAqKA8V,EA1HiB,WAAwF,IAAD,IAAAC,EAAA9d,UAAAhE,OAAnF+hB,EAAI,IAAAP,MAAAM,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhe,UAAAge,GACrB,IAAMC,EAAUF,EAAKpf,IAAI4e,GAEnBW,GAAaC,EAAAA,EAAAA,SAAQJ,GACtBK,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAElb,KAAOmb,EAAEnb,KACrBkb,EAAElb,KAAOmb,EAAEnb,KACXkb,EAAEjb,MAAQkb,EAAElb,KAAK,IAE3B,MAAM,EACFmb,EAAAA,EAAAA,cAAaL,GAAY,SAAA/Y,GAAC,SAAA9I,OAAO8I,EAAEhC,KAAI,KAAA9G,OAAI8I,EAAE/B,MAAK,KAAG/G,QAAA6I,EAAAA,EAAAA,GAClD+Y,GAEX,CAkHIO,CAASsN,EAAkBC,GAActN,GAAAzjB,EAAAA,EAAAA,GAAA6iB,EAAA,GAHzCK,EAAUO,EAAA,GAKRha,EAlHe,SAACia,GAAiF,IAAD,IAAAC,EAAA3e,UAAAhE,OAA3BiiB,EAAO,IAAAT,MAAAmB,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPX,EAAOW,EAAA,GAAA5e,UAAA4e,GAC9E,IACIK,EAEAhB,EAAO,GADPiB,EACAjB,EAAO,GAILc,EAxGY,SAACC,EAA0BC,EAAsCC,GACnF,IAAM5mB,EAAS0mB,EAAergB,KAAI,SAAA6I,GAC9B,IAAM2X,EAAqBF,EAAwBzX,IAAc,EAC3D4X,EAAuBF,EAAqB1X,IAAc,EAEhE,OAAO2X,GAAsBC,EACvB/W,EAAAA,GAAaC,MAAO6W,EAAqBC,EAAwB,KACjE,CACV,IAEA,MAAO,CACHja,EAAG6Z,EACHjX,EAAGzP,EAEX,CA0FuB+mB,CAFSX,EAAuB/f,KAAI,SAAAwG,GAAC,OAAImY,EAAiBtZ,EAAamB,GAAG,IAIzF8Z,EACAC,GAGE+M,EAAwBrO,EAAwBqB,GAChDiN,EAAqBtO,EAAwBsB,GAEnD,MAAO,EAAArgB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAEIotB,GAAqB,IACxB7uB,KAAM,0BACN0L,KAAM,MACNC,cAAc,+CACdE,OAAQ,CACJC,MAAOpG,EAAU,OACpBjE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAGEqtB,GAAkB,IACrB9uB,KAAM,mBACN0L,KAAM,MACNC,cAAc,wCACdE,OAAQ,CACJC,MAAOpG,EAAU,OACpBjE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAGEkgB,GAAU,IACbjW,KAAM,UACN0W,KAAM,QACNvW,OAAQ,CACJC,MAAOpG,EAAU,IAErBuH,MAAO,KACPtB,cAAc,gDAG1B,CAmEaK,CAAa8U,EAJCO,EAAA,GACHA,EAAA,IAIlBpV,EAlEY,SAACqV,GACf,IAAAe,EAAqB7a,EAAAA,EAAc8a,uBAAuBhB,EAAwB1a,GAA1EwB,EAAGia,EAAHja,IAAKE,EAAG+Z,EAAH/Z,IACPG,EA1GY,SAACL,EAAaE,GAChC,IAAIia,EAAWna,EAAIS,QACf2Z,EAAWla,EAAIO,QAEnB,OAAQ1D,EAAO0B,UACX,KAAKtC,EAAAA,GAAcC,EACf+d,EAAWja,EAAIO,QACVE,SAAS,GAAI,UACbA,SAAS,GAAI,QAClByZ,EAAS1Z,IAAI,GAAI,QACjB,MACJ,KAAKvE,EAAAA,GAAcI,EACf4d,EAAWja,EAAIO,QACVE,SAAS,GAAI,YACbA,SAAS,GAAI,QAClByZ,EAASxZ,QAAQ,WACZF,IAAI,GAAI,QACb,MACJ,SACIyZ,EAAWja,EAAIO,QACVE,SAAS8W,EAAgB,EAAG,SAC5B7W,QAAQ,QACRD,SAAS,EAAG,WAEJI,SAASf,KAClBma,EAAWna,EAAIS,QACVG,QAAQ,QACRD,SAAS,EAAG,WAGrByZ,EAASxZ,QAAQ,QACZF,IAAI,EAAG,UAIpB,MAAO,CACHyZ,EAASzb,SACT0b,EAAS1b,SAEjB,CAmEuBmC,CAAcb,EAAKE,GAChCma,EAAc,CAACra,EAAItB,SAAUwB,EAAIxB,UACvCqF,EAA8B7H,EAAmBa,EAAO0B,UAAhDnC,EAAKyH,EAALzH,MAAOD,EAAU0H,EAAV1H,WAET+I,EAAarI,EAAOwB,QAAUJ,EAAAA,GAAW+C,OAAS,IAAM,GAE9D,OAAA7H,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACO6D,GAAW,IACd8G,YAAY,EACZC,UAAU,EACVC,UAAW,YACX1G,WAAAA,EACA2G,QAASC,EAAAA,GAAUkW,QACnBhW,MAAO,CACHC,UAAWnH,EACXkG,KAAM,OACNmB,SAAUpH,EACVqH,YAAY,EACZpI,MAAAA,EACAD,WAAAA,EACAmI,MAAOnE,EACPsE,YAAa,CACTH,MAAO6V,EACPzV,QAAS,4BAGjBC,MAAO,CACHC,UAAU,EACVC,eAAgB,MAChBL,YAAY,EACZU,WAAAA,EACAJ,UAAW5H,EACX6H,MAAO,SACPV,UAAWnH,EACXqH,SAAUpH,EACV6H,cAAe3H,GAEnBgd,OAAQ,CACJvV,UAAW5H,EACXqH,SAAUpH,EACVmd,UAAU,EACV9V,YAAY,EACZ+V,WAAW,EACXC,YAAY,EACZ5V,UAAU,EACV6V,UAAU,EACVC,UAAU,EACV3V,MAAO,OACP4V,kBAAmB,UACnBC,KAAM,QACNtW,MAAO,CAAC,EAAG,KACXuW,WAAY,IACZ5V,WAAY,MAGxB,CASeE,CAAUqT,GAEzB,OACIhlB,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EACI5B,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDC,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChC7T,MAAOA,EACPqN,KAAMA,EACN4E,OAAQA,EACRwC,OAAQC,EAAAA,MAEZ5S,EAAAA,EAAAA,MAAA,OAAKL,UAAU,SAAQC,SAAA,EACnB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,0BAAyBC,SAAC,6BACzC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,mBAAkBC,SAAC,sBAClC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,+BAA8BC,SAAC,gCAI9D,CAEA+yB,EAAsBvtB,aAAe,CACjClH,MAAO,8B,yCC1SJ,SAAS+0B,EAAsBz0B,GAGC,IAFnC2G,EAAQ3G,EAAR2G,SACG/F,GAAMgL,EAAAA,EAAAA,GAAA5L,EAAA6L,GAEHyI,EAAoB,SAACC,GAAY,OAAK,SAAC1T,GACzC8F,GAAQQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACHvG,GAAM,IAAAgJ,EAAAA,EAAAA,GAAA,GACR2K,EAAO1T,IAEhB,CAAE,EAEF,OACIW,EAAAA,EAAAA,MAACoT,EAAAA,GAAW,CAAAxT,SAAA,EACR5B,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4CAA2CC,SACrD,CAAC6K,EAAAA,GAAW+C,OAAQ/C,EAAAA,GAAWW,OAAO3F,KAAI,SAAA8hB,GAAI,OAC3CvpB,EAAAA,EAAAA,KAACyV,EAAAA,GAAY,CAETC,QAAS6T,EACTxhB,SAAU3G,EAAOyL,QAAU0c,EAC3BxjB,UAAU,EACVD,QAAS,WAAF,OAAQgP,EAAkB,QAAlBA,CAA2ByU,EAAK,GAJ1CA,EAKP,SAIdvpB,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4CAA2CC,SACrD,CACG6I,EAAAA,GAAcC,EACdD,EAAAA,GAAcI,EACdJ,EAAAA,GAAcK,GAChBrD,KAAI,SAAAsF,GAAQ,OACV/M,EAAAA,EAAAA,KAACyV,EAAAA,GAAY,CAETC,QAAS3I,EACThF,SAAU3G,EAAO2L,WAAaA,EAC9BhH,UAAU,EACVD,QAAS,WAAF,OAAQgP,EAAkB,WAAlBA,CAA8B/H,EAAS,GAJjDA,EAKX,UAKtB,C,2FCrCO,SAASmoB,IAA0B,IAADC,EAAAC,EAC/BC,GAAmB30B,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,UAAUy0B,gBAAgB,IACpFC,GAA+B50B,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,UAAU00B,4BAA4B,IAE5Gze,GAAWC,EAAAA,EAAAA,MACXC,GAAYC,EAAAA,EAAAA,IAAiB1W,EAAAA,EAAoBi1B,gCAEvD5xB,GAAsCC,EAAAA,EAAAA,UAAsC,CACxEmJ,SAAUtC,EAAAA,GAAcC,EACxBmC,MAAOJ,EAAAA,GAAW+C,SACpB3L,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAHKsT,EAAWpT,EAAA,GAAEqT,EAAcrT,EAAA,GAK5B2xB,KAAmD,QAAjCL,EAAAE,EAAiBT,wBAAgB,IAAAO,GAAjCA,EAAmCrwB,QAAwC,QAAlCswB,EAAIC,EAAiBR,qBAAa,IAAAO,GAA9BA,EAAgCtwB,SAErGC,EAAAA,EAAAA,YAAU,WACFgS,GACAF,GAAS4e,EAAAA,EAAAA,KAAiCxe,EAAYlK,UAE9D,GAAG,CAACkK,EAAaJ,EAAUE,IAE3B,IAAMzV,GAAQP,EAAAA,EAAAA,UAAQ,kBAClBf,EAAAA,EAAAA,KAAC20B,GAAqBhtB,EAAAA,EAAAA,GAAA,CAClB0D,OAAQ4L,GACJoe,GACN,GACF,CAACA,EAAkBpe,IAEjB/U,EAAY,4BAElB,OACIlC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,EAAWP,UAAU,uBAAsBC,UAC/D5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAauzB,GAA8B1zB,UACtEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoBi1B,+BAC7BrzB,UAAWA,EACXC,iBAAiB,2CAA0CP,SAAA,EAE3DI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAAAV,SAAA,EAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,KACLlC,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoBi1B,+BAA+B3zB,UACjE5B,EAAAA,EAAAA,KAACi1B,GAAsBttB,EAAAA,EAAAA,GAAA,CAACR,SAAU+P,GAAoBD,UAG9DjX,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAc8yB,EACd7yB,YAAa+yB,EAAe,uEAAyE,GAAG5zB,SAEvG4zB,EAAel0B,GAAQtB,EAAAA,EAAAA,KAACoX,EAAAA,EAA0B,YAM3E,C,4QC9DO,SAASse,EAAiBl1B,GAA+C,IAA5CwC,EAAIxC,EAAJwC,KAAM0X,EAAEla,EAAFka,GAAIib,EAAKn1B,EAALm1B,MAC1CC,GAAwDC,EAAAA,EAAAA,YAAWC,EAAAA,IAA3DC,EAAsBH,EAAtBG,uBAAwBC,EAAmBJ,EAAnBI,oBAChC,OACIh2B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,cAAaC,UACxB5B,EAAAA,EAAAA,KAACi2B,EAAAA,EAAU,CACPjzB,KAAMA,EACN0X,GAAIA,EACJib,MAAOA,EACPO,UAAUl0B,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EAAE5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,eAAeC,MAAO,GAAIC,OAAQ,KAAM,sBAClE+vB,UAAUn0B,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EAAE5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACrE,UAAU,UAAUuE,KAAK,eAAeC,MAAO,GAAIC,OAAQ,KAAM,sBACtFgwB,aAAa,MACbtwB,QAAS,WAAF,OAAQiwB,GAAwBC,EAAoB,KAI3E,C,+CCVO,SAASK,IACZ,IAAMxf,GAAWC,EAAAA,EAAAA,MAEXwf,GAA0B51B,EAAAA,EAAAA,KAAY,SAAAuX,GAAC,OAAIA,EAAErX,UAAU01B,uBAAuB,KAAK,GACnFC,GAAmC71B,EAAAA,EAAAA,KAAY,SAAAuX,GAAC,OAAIA,EAAErX,UAAU21B,gCAAgC,IAChGC,GAAiB91B,EAAAA,EAAAA,KAAY,SAAAuX,GAAC,OAAIA,EAAErX,UAAU41B,cAAc,IAC5DC,GAAc/1B,EAAAA,EAAAA,KAAY,SAACuX,GAAC,OAAKA,EAAEye,iBAAiBD,WAAW,IAC/Dja,GAAa9b,EAAAA,EAAAA,KAAY,SAACuX,GAAC,OAAKA,EAAEye,iBAAiBla,UAAU,IAE7Dma,EAAe,WACjB,OAAOL,EAAwBt1B,MAAK,SAAAiX,GAAC,OAAKA,EAAEjG,OAAUiG,EAAE2e,SAAW3e,EAAE2e,QAAQ9xB,MAAO,GACxF,EAEM+xB,EAAe,WACjB,OAAOP,EAAwBxxB,QAAUyxB,IAAqCvR,EAAAA,EAAaK,SAAWmR,GAAkBG,GAC5H,EAuDMz0B,EAAY,mDAElB,OACIlC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,EAAWP,UAAU,mBAAkBC,UAC3DI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB60B,SAAU,CAACx2B,EAAAA,EAAoBy2B,0BAA2Bz2B,EAAAA,EAAoB02B,2BAC9EC,oBAAkB,EAClB/0B,UAAWA,EACXC,iBAAiB,uDAAsDP,SAAA,EAEvEI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAACX,UAAU,WAAUC,SAAA,EACvC5B,EAAAA,EAAAA,KAAA,MAAI2B,UAAU,iBAAgBC,SAAEM,KAChClC,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoBy2B,0BAA0Bn1B,SAC3Di1B,KACG72B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4BAA2BC,UACtC5B,EAAAA,EAAAA,KAAA,UACI2B,UAAU,WACViQ,KAAK,SACL9L,QAAS,WAAF,OAAQ+Q,GAASqgB,EAAAA,EAAAA,OAA8B,EAACt1B,UAEvD5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,SAASC,MAAO,GAAIC,OAAQ,SAGlD,WAGZpE,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CAACC,aAAc+zB,EAAiC30B,SAAA,EACnE5B,EAAAA,EAAAA,KAACm3B,EAAAA,GAAqB,CAClBC,kBAAmBZ,EACnBa,cAAc,EACdC,SAAU,WAAF,OAAQzgB,GAAS0gB,EAAAA,EAAAA,OAA8B,EACvD51B,UAAU,oBACViX,UAAU,KACV4e,gBAAiBl3B,EAAAA,EAAoBy2B,4BArFjDF,KAEI70B,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EACI5B,EAAAA,EAAAA,KAACy3B,EAAAA,GAAQ,CACLC,YAAapB,EACb7hB,UAAWkjB,EAAAA,GACXz3B,MAAM,oCACN03B,eAAe,EACfC,sBAAuBrgB,EAAAA,EAAKqF,SAAS3D,EAAAA,GAAM4e,UAE/C93B,EAAAA,EAAAA,KAAC01B,EAAiB,CACdhb,GAAG,yBACHib,MAAO,EACP3yB,KAAK,sYAKhBwzB,IAAmBC,EAAY3xB,QAAY0xB,GAAkBA,EAAe1xB,OAAS,GAElF9E,EAAAA,EAAAA,KAAC4C,EAAAA,EAAe,CACZC,QAAQ,kCACRC,SAAU,IACVC,UAAW,IACXC,KAAK,sCAIZwzB,GAAmBha,GAUnBma,KAAkBJ,IAAqCvR,EAAAA,EAAaK,SAAWmR,GAE5Ex2B,EAAAA,EAAAA,KAAC4C,EAAAA,EAAe,CACZC,QAAQ,4BACRC,SAAU,IACVC,UAAW,IACXC,KAAK,mDAKV,MAnBChD,EAAAA,EAAAA,KAAC4C,EAAAA,EAAe,CACZC,QAAQ,yBACRC,SAAU,IACVC,UAAW,IACXC,MAAMhB,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CAAE,qBAAiB5B,EAAAA,EAAAA,KAAA,SAAM,8BA0DnD,C,+ECvGO,SAAS+3B,EAAWv3B,GAAyD,IAAtD+M,EAAI/M,EAAJ+M,KAAMrN,EAAKM,EAALN,MAAOqsB,EAAkB/rB,EAAlB+rB,mBAEnC/gB,EAEAwsB,EAAAA,GAFAxsB,YAAaE,EAEbssB,EAAAA,GAFatsB,UAAWC,EAExBqsB,EAAAA,GAFwBrsB,SAAUC,EAElCosB,EAAAA,GAFkCpsB,UAAWojB,EAE7CgJ,EAAAA,GAF6ChJ,WAAYnjB,EAEzDmsB,EAAAA,GAFyDnsB,cAAeosB,EAExED,EAAAA,GAFwEC,MAAOnsB,EAE/EksB,EAAAA,GAF+ElsB,WAC/EosB,EACAF,EAAAA,GADAE,oBAAqBC,EACrBH,EAAAA,GADqBG,sBAAuBC,EAC5CJ,EAAAA,GAD4CI,aAE5C7J,EAAW,EAET8J,EAAiB,SAACC,GAA4B,OAAKA,EAAc1qB,QAAO,SAACnH,EAAQgR,GAEnF,OADAhR,GAAUgR,EAAQ8gB,MAEtB,GAAG,EAAG,EAEAC,EAAkB,SAACC,EAAyBhH,GAC9C,IAAMiH,EAAaD,EAASptB,QAAO,SAAAstB,GAAI,OAAIA,EAAKlH,SAAWA,CAAM,IAC3DmH,EAAoBF,EAAWrtB,QAAO,SAAAkP,GAAC,OAAIA,EAAEse,GAAG,IAChDN,EAASF,EAAeK,GACxBI,EAAcT,EAAeO,GAC7BG,EAAe5nB,EAAAA,EAAa6nB,WAAWF,EAAaP,GAC1D,OAAOQ,EAA8B,IAAfA,EAAqB,CAC/C,EAoDME,EAAa,SAAC1rB,GAAmB,MACnC,UAAApI,OAAUkc,EAAAA,GAAY6X,cAAc3rB,EAAK4rB,QAAS,GAAE,qCAAAh0B,OAC1BoH,IAAAA,IAAWgB,EAAK6rB,SAASpsB,OAAOyH,EAAAA,GAAUsY,qBAAoB,WAAS,WAAA5nB,OAC1E,MAAZoI,EAAKhD,IAAc,GAAKuJ,EAAAA,GAAWulB,eAAe9rB,EAAKhD,IAAK,MAAM,GAAApF,OAC9D,MAAZoI,EAAKhD,KAA2B,MAAZgD,EAAKjD,IAAc,GAAK,OAAO,GAAAnF,OACvC,MAAZoI,EAAKjD,IAAc,GAAKwJ,EAAAA,GAAWulB,eAAe9rB,EAAKjD,IAAK,UAAO,EAEpEkiB,EAzDe,WACjB,IAAMve,EAAI2iB,EAAAA,GAmCV,OAlCUrjB,EAAK9F,KAAI,SAAC6xB,EAAO1yB,GACvB,MAAO,CACHV,KAAMU,EACNoL,MAAOpG,EAAUhF,GACjBxF,OAAQ6M,EAAExG,KAAI,SAACgqB,GACX,IAAM0H,EAAUX,EAAgBc,EAAMb,SAAUhH,GAIhD,OAHI0H,EAAU5K,IACVA,EAAW4K,GAERA,CACX,IACAn2B,KAAMiL,EAAExG,KAAI,SAACgqB,GACT,IAAM8H,EAAgBD,EAAMb,SACvBptB,QAAO,SAAAkP,GAAC,MAAoB,QAAfA,EAAEgH,UAAsBhH,EAAEse,KAAOte,EAAEkX,SAAWA,CAAM,IAChE+H,EAAgBF,EAAMb,SACvBptB,QAAO,SAAAkP,GAAC,MAAoB,QAAfA,EAAEgH,UAAsBhH,EAAEse,KAAOte,EAAEkX,SAAWA,CAAM,IAChE0H,EAAUX,EAAgBc,EAAMb,SAAUhH,GAC1CgI,EAAYlN,EAAmBznB,OAC9BynB,EAAmBvrB,MAAK,SAAAugB,GAAQ,MAAiB,QAAbA,CAAkB,IAAI8W,EAAekB,GAAiB,KAC3FlB,EAAekB,GACfG,EAAYnN,EAAmBznB,OAC9BynB,EAAmBvrB,MAAK,SAAAugB,GAAQ,MAAiB,QAAbA,CAAkB,IAAI8W,EAAemB,GAAiB,KAC3FnB,EAAemB,GACrB,OAAOP,EAAW,CACdE,QAAAA,EACAnjB,UAAWsjB,EAAMtjB,UACjBojB,QAASE,EAAMF,QACf7uB,IAAKkvB,EACLnvB,IAAKovB,GAEb,IAER,IAESjyB,KAAI,SAAA8F,GAAI,MAAK,CAClBU,EAAAA,EACA4C,EAAGtD,EAAKnM,OACR8E,KAAMqH,EAAKrH,KACX0L,KAAM,MACNG,OAAQ,CACJC,MAAOzE,EAAKyE,OAEhB0Z,UAAW,OACX1oB,KAAMuK,EAAKvK,MAAQ,GACnB4rB,aAAc,OACjB,GACL,CASkB1c,GAQZC,GAAMxK,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACL6D,GAAW,IACd8G,YAAY,EACZG,QAAS,QACTF,UAAU,EACVC,UAAW,UACX1G,WAAAA,EACA8G,MAAO,CACHE,MAAOkc,EACPnc,UAAWnH,EACXqH,SAAUpH,GAEdwH,MAAO,CACHC,UAAU,EACVN,MApBU,WACd,IAAMtE,EAAMsF,EAAAA,GAAW6lB,cAAcpL,EAAU0J,IAAUE,EAEzD,MAAO,CAAC,EADS3pB,EAAM2C,EAAAA,EAAayoB,cAAcprB,EAAK0pB,GAE3D,CAgBe2B,GACPlK,OAAQ,QACRtc,eAAgB,OAChBL,YAAY,EACZM,UAAW5H,EACX6H,MAAO,SACPV,UAAWnH,EACXqH,SAAUpH,EACV6H,cAAe3H,EACfjB,MAAO2jB,EAAaA,EAAW0J,EAAQA,EAAQG,EAAeH,EAASG,KAwB/E,OACIp2B,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EAXA5B,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDC,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChC7T,MAAOA,EACPqN,KAAMif,EACNra,OAAQA,EACRwC,OAAQC,EAAAA,MAOR5U,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,aAAYC,SAtBxB2L,EAAK9F,KAAI,SAACgxB,EAAU7xB,GAAK,OAC5B5E,EAAAA,EAAAA,MAAA,QAAAJ,SAAA,EACI5B,EAAAA,EAAAA,KAAA,MAAIqyB,MAAO,CAAEC,WAAY1mB,EAAUhF,IAAShF,SAAC,WAC5C2K,IAAOksB,EAASW,QAAS,cAAcpsB,OAAOyH,EAAAA,GAAUsY,uBAFlDnmB,EAGJ,QAqBnB,CAEAmxB,EAAY3wB,aAAe,CACvBlH,MAAO,iB,0BC3JLgC,EAAY,0BAEX,SAAS43B,IACZ,IAAMrB,GAAWtU,EAAAA,EAAAA,IAAe,SAAAlM,GAAC,OAAIA,EAAErX,UAAU63B,QAAQ,IACnDsB,GAA4B5V,EAAAA,EAAAA,IAAe,SAAAlM,GAAC,OAAIA,EAAErX,UAAUm5B,yBAAyB,IACrF1uB,GAAS8Y,EAAAA,EAAAA,IAAe,SAAAlM,GAAC,OAAIA,EAAErX,UAAUyK,MAAM,IAC/CglB,GAAelM,EAAAA,EAAAA,IAAe,SAAAlM,GAAC,OAAIA,EAAErX,UAAUyvB,YAAY,IAEzD9D,EAAwClhB,EAAxCkhB,mBAAoB+D,EAAoBjlB,EAApBilB,gBAEtB0J,GAAmBj5B,EAAAA,EAAAA,UAAQ,kBAAMiN,EAAAA,EAAAA,GAAIyqB,GACtCvR,MAAK,SAACC,EAAGC,GAAC,OAAK,IAAIne,KAAKke,EAAEnR,WAAWikB,UAAY,IAAIhxB,KAAKme,EAAEpR,WAAWikB,SAAS,IAChFxyB,KAAI,SAAA6xB,GAAK,OAAA3xB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACH2xB,GAAK,IACRb,SAAUa,EAAMb,SAASptB,QAAO,SAAAstB,GAC5B,QAAIrI,EAAgBxrB,SAAWwrB,EAAgBtvB,MAAK,SAAAywB,GAAM,OAAIkH,EAAKlH,SAAWA,CAAM,QAG3ElF,EAAmBznB,SAAWynB,EAAmBvrB,MAAK,SAAAugB,GAAQ,OAAIoX,EAAKpX,WAAaA,CAAQ,IACzG,KAAE,GACH,GAAE,CAACkX,EAAUnI,EAAiB/D,IAC/BjrB,GAAQP,EAAAA,EAAAA,UAAQ,kBAAMf,EAAAA,EAAAA,KAAC+3B,EAAW,CAACxqB,KAAMysB,EAAkBzN,mBAAoBA,GAAsB,GACvG,CAACyN,EAAkBzN,IAEvB,OACIvsB,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,EAAWP,UAAU,WAAW0uB,aAAcA,EAAazuB,UAC/E5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAag4B,GAA2Bn4B,UACnEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoB45B,YAC7Bh4B,UAAWA,EACXC,iBAAiB,4CAA2CP,SAAA,EAE5D5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClBI,EAAAA,EAAAA,MAAA,MAAAJ,SAAA,CAAKM,GAAUlC,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,OAAMC,SAAC,6BAE1C5B,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAcu3B,EACdt3B,aACIzC,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoB45B,YAAYt4B,SAAC,6HAItDA,SAEAN,UAMzB,C,+CCnDO,SAAS64B,EAAI35B,GAAwC,IAArC45B,EAAS55B,EAAT45B,UAAWC,EAAU75B,EAAV65B,WAC9B,OACIr4B,EAAAA,EAAAA,MAACs4B,EAAAA,EAAO,CAAA14B,SAAA,EACJ5B,EAAAA,EAAAA,KAACu6B,EAAAA,EAAO,CACJz0B,QAAS,WAAF,OAAQu0B,EAAWG,EAAAA,EAAqBC,IAAI,EACnD5f,OAAQuf,IAAcI,EAAAA,EAAqBC,IAC3Ct6B,MAAM,SAEVH,EAAAA,EAAAA,KAACu6B,EAAAA,EAAO,CACJz0B,QAAS,WAAF,OAAQu0B,EAAWG,EAAAA,EAAqBE,KAAK,EACpD7f,OAAQuf,IAAcI,EAAAA,EAAqBE,KAC3Cv6B,MAAM,WAItB,C,qECwCaw6B,EAvDwD,CACjE,CACIxa,UAAW,cACXC,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAAua,GAAM,OACvB56B,EAAAA,EAAAA,KAAC66B,EAAAA,GAAe,CACZlgB,OAAQigB,EAAOjgB,OACfmgB,YAAaF,EAAOG,mBACpBC,SAAUJ,EAAOI,SACjBC,cAAeL,EAAOM,0BACtBC,WAAYP,EAAOO,YACrB,EACNxa,gBAAiB,oBACjBC,cAAe,+BAEnB,CACIT,UAAW,WACXC,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAAua,GAAM,OACvB56B,EAAAA,EAAAA,KAAA4F,EAAAA,SAAA,CAAAhE,SACKg5B,EAAOQ,gBAAiBp7B,EAAAA,EAAAA,KAACq7B,EAAAA,EAAe,KAC1C,EACP15B,UAAW,uBACZ,CACCwe,UAAW,YACXC,0BAA2B,WAAF,MAAQ,WAAW,EAC5CC,oBAAqB,SAAAua,GACjB,IAAMU,EAAWC,EAAAA,EAAcC,iBAAiBZ,EAAO3J,gBACvD,OACIjxB,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAACC,QAAO,GAAAnU,OAAKm2B,EAAQ,KAAAn2B,OAAIy1B,EAAOa,UAAW75B,UACtD5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,gBAAeC,SAAA,GAAAuD,OAAKm2B,EAAQ,KAAAn2B,OAAIy1B,EAAOa,aAGnE,EACA95B,UAAW,6BACXkf,aAAc,YACf,CACCV,UAAW,YACXC,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAAua,GAAM,OACvB56B,EAAAA,EAAAA,KAAC07B,EAAAA,EAAY,CACTC,OAAK,EACL/I,cAAegI,EAAOgB,kBACtBjhB,OAAQigB,EAAOjgB,OACfkhB,gBAAiBjB,EAAOM,0BACxBC,WAAYP,EAAOO,WACnBW,KAAMlB,EAAOkB,KACbC,cAAenB,EAAOmB,cACtBf,SAAUJ,EAAOI,UACnB,EACNra,gBAAiB,oBACjBC,cAAe,yCAI2BnZ,KAAI,SAAAkU,GAAC,OAAI,IAAI+F,EAAAA,EAAc/F,EAAE,I,mECxCxE,SAASqgB,GAAOx7B,GAAyE,IAAtE4jB,EAAO5jB,EAAP4jB,QAASC,EAAsB7jB,EAAtB6jB,uBAAsB4X,EAAAz7B,EAAE07B,kBAAAA,OAAiB,IAAAD,GAAQA,EAE1ExP,GAAUC,EAAAA,EAAAA,MAEhB/oB,GAA4BC,EAAAA,EAAAA,UAAS,MAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAnC4F,EAAM1F,EAAA,GAAEme,EAASne,EAAA,GACxBI,GAA0CL,EAAAA,EAAAA,UAAS8F,EAAAA,GAAKC,KAAIzF,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAArDuF,EAAatF,EAAA,GAAE+d,EAAgB/d,EAAA,GACtCwe,GAA0BC,EAAAA,EAAAA,IAAcyB,EAAS7a,EAAQC,GAAlDoZ,GAAgE9e,EAAAA,EAAAA,GAAA4e,EAAA,GAAjD,GAEhByZ,EAAgB,SAAC/7B,EAA6B2iB,GAChDf,EAAU5hB,GACV6hB,EAAiBc,EACrB,EAEMqZ,EAAqB,WAAH,OAAS3P,EAAQlmB,KAAK0Y,EAAAA,GAAOod,QAAS,EAE9D,OACIr8B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYwiB,EAAAA,EAAAA,IAAcD,KAA2BtiB,EAAAA,EAAAA,IAAasiB,GAAwBziB,UACxGkb,EAAAA,EAAAA,IAAiBuH,KAA4BD,EAAQtf,QAClD9E,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,aAAYC,UACvB5B,EAAAA,EAAAA,KAAC0C,GAAAA,EAAO,CAACwW,MAAK,GAAA/T,QAAA6I,EAAAA,EAAAA,GAAMkL,EAAAA,GAAMojB,UAAQ,CAAEpjB,EAAAA,GAAMqjB,cAAerjB,EAAAA,GAAMsjB,UAAWtjB,EAAAA,GAAMujB,SAAMzuB,EAAAA,EAAAA,GAAKkL,EAAAA,GAAMwjB,OAAM96B,UACnG5B,EAAAA,EAAAA,KAAC4C,EAAAA,EAAe,CACZC,QAAQ,UACRC,SAAU,IACVC,UAAW,IACXC,KAAK,sCAAqCpB,UAExCs6B,IACEl8B,EAAAA,EAAAA,KAAC0C,GAAAA,EAAO,CAACwW,MAAK,GAAA/T,QAAA6I,EAAAA,EAAAA,GAAMkL,EAAAA,GAAMojB,WAAQtuB,EAAAA,EAAAA,GAAKkL,EAAAA,GAAMwjB,OAAM96B,UAC/C5B,EAAAA,EAAAA,KAACiZ,GAAAA,EAAiB,CAACC,MAAO,CAACA,EAAAA,GAAMC,aAAcD,EAAAA,GAAMsF,oBAAoB5c,UACrE5B,EAAAA,EAAAA,KAAC28B,GAAAA,EAAoC,CAACvhB,UAAWghB,EAAmBx6B,UAChE5B,EAAAA,EAAAA,KAAA,OAAA4B,UACI5B,EAAAA,EAAAA,KAACuZ,GAAAA,EAAa,CAAC5X,UAAU,eAAemE,QAASs2B,EAAmBx6B,SAAC,mCAYrG5B,EAAAA,EAAAA,KAACkD,EAAAA,EAAU,CAACC,KAAMyf,EAAiBvf,YA1C3B,EA0CoDzB,SACvD,SAAC2T,GAAU,OACRvV,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACF/hB,UAAU,oBACVmiB,UAAWvO,EACXwO,QAAS4W,EACThX,OAAQwY,GACV,KAM1B,C,4BC7BaS,GArCkD,CAAC,CAC5Dzc,UAAW,SACXC,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAAua,GAAM,OAAI56B,EAAAA,EAAAA,KAAC68B,GAAAA,EAAe,CAAC7B,SAAUJ,EAAO5J,KAAKgK,UAAY,EAClFr5B,UAAW,2BACZ,CACCwe,UAAW,aACXC,0BAA2B,WAAF,MAAQ,YAAY,EAC7CC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOkC,SAASC,SAAS,EACxDp7B,UAAW,wBACXkf,aAAc,YACd0B,YAAaC,EAAAA,GAAawa,QAC3B,CACC7c,UAAW,SACXC,0BAA2B,WAAF,MAAQ,QAAQ,EACzCC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOkC,SAASG,MAAM,EACrDt7B,UAAW,mBACXkf,aAAc,SACd0B,YAAaC,EAAAA,GAAawa,QAC3B,CACC7c,UAAW,SACXC,0BAA2B,WAAF,MAAQ,KAAK,EACtCC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOkC,SAASrL,MAAM,EACrD9vB,UAAW,oBACZ,CACCwe,UAAW,OACXC,0BAA2B,WAAF,MAAQ,UAAU,EAC3CC,oBAAqB,SAAAua,GAAM,OAAIhQ,EAAAA,GAAWsS,WAAWtC,EAAOkC,SAASlR,KAAK,EAC1EjqB,UAAW,yCACZ,CACCwe,UAAW,OACXC,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,WAAF,OAAQrgB,EAAAA,EAAAA,KAACm9B,GAAAA,EAAI,CAAC7O,GAAIrP,EAAAA,GAAOme,UAAUx7B,SAAC,QAAW,EAClE+e,gBAAiB,GACjBC,cAAe,oBAG6BnZ,KAAI,SAAAkU,GAAC,OAAI,IAAI+F,EAAAA,EAAc/F,EAAE,ICvCtE,SAAS0hB,KACZ,IAEMC,GAAsB58B,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAU08B,mBAAmB,IAClFC,GAAkC78B,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAU28B,+BAA+B,IAEhH55B,GAA4BC,EAAAA,EAAAA,UAAS,MAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAnC4F,EAAM1F,EAAA,GAAEme,EAASne,EAAA,GACxBI,GAA0CL,EAAAA,EAAAA,UAAS8F,EAAAA,GAAKC,KAAIzF,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAArDuF,EAAatF,EAAA,GAAE+d,EAAgB/d,EAAA,GAEtCwe,GAA0BC,EAAAA,EAAAA,IAAc2a,EAAqB/zB,EAAQC,GAA9DoZ,GAA4E9e,EAAAA,EAAAA,GAAA4e,EAAA,GAA7D,GAEhByZ,EAAgB,SAAC/7B,EAA6B2iB,GAChDf,EAAU5hB,GACV6hB,EAAiBc,EACrB,EAEA,OACI/iB,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYwiB,EAAAA,EAAAA,IAAciZ,KAAoCx7B,EAAAA,EAAAA,IAAaw7B,GAAiC37B,SAC1H07B,EAAoBx4B,QACjB9E,EAAAA,EAAAA,KAACkD,EAAAA,EAAU,CAACC,KAAMyf,EAAiBvf,YAlB3B,EAkBoDzB,SACvD,SAAC2T,GAAU,OACRvV,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFI,UAAWvO,EACXwO,QAAS6Y,GACTjZ,OAAQwY,GACV,KAIVn8B,EAAAA,EAAAA,KAAC4C,EAAAA,EAAe,CACZC,QAAQ,UACRC,SAAU,IACVC,UAAW,IACXC,KAAK,qDAKzB,C,2FC/BO,SAASw6B,KACZ,IAAA75B,GAAkCC,EAAAA,EAAAA,UAAS42B,EAAAA,EAAqBE,MAAK72B,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA9Dy2B,EAASv2B,EAAA,GAAE45B,EAAY55B,EAAA,GACxB05B,GAAkC78B,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,UAAU28B,+BAA+B,IACxHnN,GAA4CnM,EAAAA,GAAAA,KAApCG,EAAOgM,EAAPhM,QAASC,EAAsB+L,EAAtB/L,uBAEXjL,GAAUskB,EAAAA,EAAAA,KAEVC,EAAOnmB,EAAAA,EAAKqF,SAAQ+gB,MAAbpmB,EAAAA,GAAIxJ,EAAAA,EAAAA,GAAakL,EAAAA,GAAMwjB,OAC9BmB,EAAarmB,EAAAA,EAAKqF,SAAS3D,EAAAA,GAAMsF,oBACjCsf,EAAWtmB,EAAAA,EAAKqF,SAAQ+gB,MAAbpmB,EAAAA,GAAIxJ,EAAAA,EAAAA,GAAakL,EAAAA,GAAMojB,WAClC/kB,EAAcC,EAAAA,EAAKC,WCnBtB,SAA0B1R,GAC7B,IAAM8Q,GAAWC,EAAAA,EAAAA,MACXymB,GAAkC78B,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,UAAU28B,+BAA+B,IAElHQ,GAAczjB,EAAAA,EAAAA,cAAWiK,EAAAA,GAAAA,IAAAC,EAAAA,GAAAA,KAAAC,MAAC,SAAAC,IAAA,IAAAsZ,EAAA,OAAAxZ,EAAAA,GAAAA,KAAAG,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAE0C,OAF1CF,EAAAC,KAAA,EAExBhO,GAASonB,EAAAA,EAAAA,KAAkCjZ,EAAAA,EAAaC,UAAUL,EAAAE,KAAA,EAC3CoZ,GAAAA,GAA0BC,wBAAwB,CACrEC,qBAAsB,GACtB7X,KAAMha,MAASS,OAAO,cACtBshB,QAAI3rB,EACJuqB,SAAU,CAACC,GAAAA,EAAWC,UAAWD,GAAAA,EAAWE,QAASF,GAAAA,EAAWG,UAChE/L,cAAU5e,EACV8qB,QAAS,GACT4Q,MAAO,GACP34B,KAAM,EACN44B,SAAU,IACVC,cAAe,OACjB,OAXIP,EAAQpZ,EAAAQ,KAYdvO,GAASonB,EAAAA,EAAAA,KAAkCjZ,EAAAA,EAAaK,QAAS2Y,IAAWpZ,EAAAE,KAAA,gBAAAF,EAAAC,KAAA,EAAAD,EAAAU,GAAAV,EAAA,SAE5E/N,GAASonB,EAAAA,EAAAA,KAAkCjZ,EAAAA,EAAaO,UACxD1O,EAAS2O,EAAAA,IAAagZ,gBAAe5Z,EAAAU,KAAK,yBAAAV,EAAAa,OAAA,GAAAf,EAAA,kBAE/C,CAAC7N,KAEJ9R,EAAAA,EAAAA,YAAU,YACDgB,IAAYue,EAAAA,EAAAA,IAAciZ,IAC3BQ,GAER,GAAG,CAACh4B,EAAUw3B,EAAiCQ,GACnD,CDVIU,GAAoBZ,IAAezkB,GAAY0kB,IAE/C,IASMY,EAAgB,SAACta,EAA0B8X,GAA0B,OACvE7X,IAA2BW,EAAAA,EAAaO,SAClCvlB,EAAAA,EAAAA,KAAC2I,GAAAA,EAA+B,KAChC3I,EAAAA,EAAAA,KAACg8B,GAAO,CAAC5X,QAASA,EAASC,uBAAwBA,EAAwB6X,kBAAmBA,GAAqB,EA4B7H,OACIl6B,EAAAA,EAAAA,MAACN,EAAAA,GAAe,CAACC,UAAU,gCAA+BC,SAAA,EACtD5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SALM,0BAOV5B,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CAAAX,SA9BvBk8B,GAEI97B,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EACI5B,EAAAA,EAAAA,KAACm6B,EAAI,CAACC,UAAWA,EAAWC,WAAYoD,IACvCrD,IAAcI,EAAAA,EAAqBC,IAlBhD8C,IAAoCvY,EAAAA,EAAaO,SAC3CvlB,EAAAA,EAAAA,KAAC2I,GAAAA,EAA+B,KAE9B3I,EAAAA,EAAAA,KAAC2+B,GAAAA,EAAe,CAACt+B,QAASC,EAAAA,EAAoBs+B,uBAAuBh9B,UACjE5B,EAAAA,EAAAA,KAACq9B,GAAmB,MAcoDqB,EAActa,GAAS,OAIvGuZ,GAASvkB,GAAuB,OAAX7B,QAAW,IAAXA,GAAAA,EAAaiD,eAY/BkkB,EAActa,GAAS,IAVtBpiB,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EACI5B,EAAAA,EAAAA,KAACm6B,EAAI,CAACC,UAAWA,EAAWC,WAAYoD,IACvCiB,EAActE,IAAcI,EAAAA,EAAqBC,IAC5CrW,EAAQ/Y,QAAO,SAAA+b,GAAC,OAAIA,EAAE2U,aAAa,IACnC3X,EAAQ/Y,QAAO,SAAA+b,GAAC,OAAIA,EAAE0U,IAAI,IAC5B1B,IAAcI,EAAAA,EAAqBC,YAoB3D,C,4BE/DaoE,GAAmC,WAC5C,IAAMpS,GAAUC,EAAAA,EAAAA,MAEVoS,GAAsBp+B,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUk+B,mBAAmB,IAClFC,GAAiBr+B,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUm+B,cAAc,IACxEC,GAAuCt+B,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUo+B,oCAAoC,IAE1Hr7B,GAA4BC,EAAAA,EAAAA,UAAwB,MAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAlD4F,EAAM1F,EAAA,GAAEme,EAASne,EAAA,GACxBI,GAA0CL,EAAAA,EAAAA,UAAS8F,EAAAA,GAAKC,KAAIzF,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAArDuF,EAAatF,EAAA,GAAE+d,EAAgB/d,EAAA,GAEtCwe,GAA0BC,EAAAA,EAAAA,IAAcmc,EAAqBv1B,EAAQC,GAA9DoZ,GAA4E9e,EAAAA,EAAAA,GAAA4e,EAAA,GAA7D,GA2DhByZ,EAAgB,SAAC/7B,EAAe2iB,GAClCf,EAAU5hB,GACV6hB,EAAiBc,EACrB,EAEMkc,EAAc,WAAH,OAASxS,EAAQlmB,KAAK0Y,EAAAA,GAAOigB,aAAc,EAE5D,OACIl9B,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,GACOk9B,EAAoBh6B,SACnB9E,EAAAA,EAAAA,KAACkD,EAAAA,EAAU,CAACC,KAAMyf,EAAiBvf,YAAa,EAAEzB,SAC7C,SAAC2T,GAAmC,OACjCvV,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CAACI,UAAWvO,EAAOwO,QApEmC,CACxE,CACI5D,UAAW,aACXC,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAAua,GAAM,OACvB56B,EAAAA,EAAAA,KAAC66B,EAAAA,GAAe,CACZlgB,OAAQigB,EAAOjgB,OACfmgB,YAAaF,EAAOG,mBACpBC,SAAUJ,EAAOI,SACjBC,cAAeL,EAAOM,0BACtBC,WAAYP,EAAOO,YACrB,EAENxa,gBAAiB,wBACjBC,cAAe,wCAChB,CACCT,UAAW,WACXC,0BAA2B,WAAF,MAAQ,MAAM,EACvCC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOtuB,MAChCtK,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EAAIg5B,EAAOQ,gBAAiBp7B,EAAAA,EAAAA,KAACq7B,EAAAA,EAAe,IAAI,IAAEE,EAAAA,GAAcC,iBAAiBZ,EAAOtuB,KAAMmI,EAAAA,GAAUsY,wBACxGtY,EAAAA,GAAUgN,gBAAgB,EAChCd,gBAAiB,6BACjBC,cAAe,gCACfC,aAAc,OACd0B,YAAaC,EAAAA,GAAalW,MAC3B,CACC6T,UAAW,SACXC,0BAA2B,WAAF,MAAQ,QAAQ,EACzCC,oBAAqB,SAAAua,GAAM,OACvB56B,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAAC8lB,aAAa,gBAAgB7lB,QAASshB,EAAOqC,OAAOr7B,SAC/Dg5B,EAAOqC,QACK,EAErBt7B,UAAW,yBACXkf,aAAc,UACf,CACCV,UAAW,WACXC,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAAua,GAAM,OACvB56B,EAAAA,EAAAA,KAAC07B,EAAAA,EAAY,CACTC,OAAK,EACL/I,cAAegI,EAAOgB,kBACtBjhB,OAAQigB,EAAOjgB,OACfkhB,gBAAiBjB,EAAOM,0BACxBC,WAAYP,EAAOO,WACnBW,KAAMlB,EAAOkB,KACbC,cAAenB,EAAOmB,cACtBf,SAAUJ,EAAOI,UACnB,EACNra,gBAAiB,GACjBC,cAAe,oBAGGnZ,KAAI,SAAAkU,GAAC,OAAI,IAAI+F,EAAAA,EAAc/F,EAAE,IAeSgI,OAAQwY,GAAiB,KAIpFrf,EAAAA,EAAAA,IAAiBkiB,KAA0CF,EAAoBh6B,SAC5E9E,EAAAA,EAAAA,KAAA4F,EAAAA,SAAA,CAAAhE,UACI5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,aAAYC,UACvB5B,EAAAA,EAAAA,KAAC4C,EAAAA,EAAe,CACZC,QAAQ,sBACRC,SAAU,IACVC,UAAW,IACXC,KAAM+7B,EAAiB,0DAA4D,+BAA+Bn9B,UAEhHm9B,IACE/+B,EAAAA,EAAAA,KAAA,OAAA4B,UACI5B,EAAAA,EAAAA,KAACo/B,GAAAA,EAAyC,CAAChkB,UAAW6jB,EAAYr9B,UAC9D5B,EAAAA,EAAAA,KAACq/B,GAAAA,EAAqB,CAAC19B,UAAU,eAAemE,QAASm5B,EAAYr9B,SAAC,iCAY9G,E,wBC/Fa09B,GAAkD,WAC3D,IAAM7S,GAAUC,EAAAA,EAAAA,MACV7V,GAAWC,EAAAA,EAAAA,MAEXioB,GAAiBr+B,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUm+B,cAAc,IAC9EroB,GAOIhW,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAU2+B,kBAAkB,IAN3D/7B,EAAWkT,EAAXlT,YACA4tB,EAAU1a,EAAV0a,WACAoO,EAAiB9oB,EAAjB8oB,kBACAC,EAAyB/oB,EAAzB+oB,0BACAC,EAAShpB,EAATgpB,UACAC,EAASjpB,EAATipB,UAGEpqB,EAAQ6b,EAAW5tB,IAEzBuB,EAAAA,EAAAA,YAAU,WAEDqsB,EAAW5tB,KACXzB,EAAAA,EAAAA,IAAa09B,KACbG,EAAAA,EAAAA,IAAgBH,KACjBjoB,EAAAA,EAAKqoB,YAAYv/B,EAAAA,EAAoBw/B,mCAErCjpB,GACIkpB,EAAAA,EAAAA,KACIv8B,EA3BmB,EA6BnBw8B,GAAAA,EAA+BN,GAC/BO,GAAAA,EAA2BN,IAI3C,GAAG,CAAC9oB,EAAUrT,EAAa4tB,EAAYqO,EAA2BC,EAAWC,IAE7E,IAsDMV,EAAc,WAAH,OAASxS,EAAQlmB,KAAK0Y,EAAAA,GAAOigB,aAAc,EAE5D,IAAIpiB,EAAAA,EAAAA,IAAiB2iB,KAA+BD,EAChD,OACIx/B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,aAAYC,UACvB5B,EAAAA,EAAAA,KAAC4C,EAAAA,EAAe,CACZC,QAAQ,sBACRC,SAAU,IACVC,UAAW,IACXC,KAAM+7B,EAAiB,mEAAqE,+BAA+Bn9B,UAEzHm9B,IACE/+B,EAAAA,EAAAA,KAAA,OAAA4B,UACI5B,EAAAA,EAAAA,KAACo/B,GAAAA,EAAyC,CAAChkB,UAAW6jB,EAAYr9B,UAC9D5B,EAAAA,EAAAA,KAACq/B,GAAAA,EAAqB,CAAC19B,UAAU,eAAemE,QAASm5B,EAAYr9B,SAAC,6BAmBlG,OACI5B,EAAAA,EAAAA,KAAC2+B,GAAAA,EAAe,CAACt+B,QAASC,EAAAA,EAAoBw/B,iCAAiCl+B,UAC3E5B,EAAAA,EAAAA,KAACyf,EAAAA,EAAS,CAAC3d,YAAa09B,IAAqBz9B,EAAAA,EAAAA,IAAa09B,GAA2B79B,SAChF49B,IACGx/B,EAAAA,EAAAA,KAACkD,EAAAA,EAAU,CACPG,YAhIe,EAiIfD,MAAOo8B,EACPl8B,cA9FM,SAACoC,GACvBmR,GAASqpB,EAAAA,EAAAA,KAA0Cx6B,GACvD,EA6FoBlC,YAAaA,EAAY5B,UAEzB5B,EAAAA,EAAAA,KAACyf,EAAAA,EAAS,CAAC3d,YAAYC,EAAAA,EAAAA,IAAa09B,GAA2B79B,UAC3D5B,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFI,UAAWvO,EACXwO,QA/F2C,CAC/D,CACI5D,UAAW,SACXC,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAAua,GAAM,OAAI56B,EAAAA,EAAAA,KAAA4F,EAAAA,SAAA,CAAAhE,SAAGg5B,EAAOjgB,SAAWwlB,GAAAA,EAAwBC,QACxEpgC,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,YAAWC,SAAC,SAAc,EAC9C+e,gBAAiB,mBACjBC,cAAe,oBAChB,CACCT,UAAW,OACXC,0BAA2B,WAAF,MAAQ,cAAc,EAC/CC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOyF,eAAiB9zB,IAAAA,IAAWquB,EAAOyF,gBAAgBnP,QAAQlkB,OAAOyH,EAAAA,GAAUsY,qBAAuBtY,EAAAA,GAAUgN,gBAAgB,EACnKd,gBAAiB,gCACjBC,cAAe,oBACfC,aAAc,kBACf,CACCV,UAAW,SACXC,0BAA2B,WAAF,MAAQ,QAAQ,EACzCC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOqC,MAAM,EAC5Ctc,gBAAiB,mBACjBC,cAAe,mBACfC,aAAc,UACf,CACCV,UAAW,OACXC,0BAA2B,WAAF,MAAQ,UAAU,EAC3CC,oBAAqB,SAAAua,GAAM,OAAIhQ,EAAAA,GAAWsS,WAAWtC,EAAOhP,KAAK,EACjEjL,gBAAiB,2CACjBC,cAAe,2CACfC,aAAc,QACf,CACCV,UAAW,OACXC,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAAua,GAAM,OACvB56B,EAAAA,EAAAA,KAACm9B,GAAAA,EAAI,CACD7O,GAAE,GAAAnpB,OAAK8Z,EAAAA,GAAOqhB,UAAS,0BAAAn7B,OAAyBy1B,EAAOqC,QACvDt7B,UAAU,uBACVoE,SAAU60B,EAAOjgB,SAAWwlB,GAAAA,EAAwBI,OACpDh7B,OAAO,SAAQ3D,SAClB,QAEM,EAEX+e,gBAAiB,kBACjBC,cAAe,oBAGGnZ,KAAI,SAAAkU,GAAC,OAAI,IAAI+F,EAAAA,EAAc/F,EAAE,IAkD/B6kB,8BAtBU,SAACF,GACnC,OAAOr6B,IAAW,CAAE,cAAeq6B,EAAU3lB,SAAWwlB,GAAAA,EAAwBI,QACpF,EAqB4B5c,OAnBH,SAACvjB,EAAeqgC,GACrC5pB,GAAS6pB,EAAAA,EAAAA,KAA6CtgC,EAAOqgC,GACjE,EAkB4B7c,cAAe8b,EACf7b,uBAAwB8b,WAQxD,E,wEC5JagB,GAAkB,SAAHngC,GAAqD,IAADogC,EAAApgC,EAA9CqgC,WAAAA,OAAU,IAAAD,GAAOA,EACzC/pB,GAAWC,EAAAA,EAAAA,MAEXgqB,GAAepgC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUm+B,cAAc,IACtEC,GAAuCt+B,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUo+B,oCAAoC,IACpH+B,GAAkCrgC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUmgC,+BAA+B,KAEhHC,EAAAA,GAAAA,MACAC,EAAAA,GAAAA,GAAcC,GAAAA,EAAeC,WAAW,EAAOC,GAAAA,EAAeD,YAE9Dp8B,EAAAA,EAAAA,YAAU,WAGN,OAFA8R,GAASwqB,EAAAA,EAAAA,OAEF,WACHxqB,GAASyqB,EAAAA,EAAAA,MACb,CACJ,GAAG,CAACzqB,IAEJ,IAAAlT,GAAkCC,EAAAA,EAAAA,UAAS29B,GAAAA,EAAoBC,MAAK39B,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7Dy2B,EAASv2B,EAAA,GAAE45B,EAAY55B,EAAA,GAExB3B,EAAY,mBAElB,OACIlC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,EAAWP,UAAU,kCAAiCC,UAC1EI,EAAAA,EAAAA,MAACH,EAAAA,EAAiB,CACdC,YACIwiB,EAAAA,EAAAA,IAAc0a,KACdj9B,EAAAA,EAAAA,IAAai9B,KACbj9B,EAAAA,EAAAA,IAAag/B,GAChBn/B,SAAA,EAEDI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAACX,UAAU,WAAUC,SAAA,EACvC5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,IACJ2+B,IACG7gC,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,kBAAiBC,UAC5B5B,EAAAA,EAAAA,KAACyhC,GAAAA,EAA0B,CAAC17B,UAAW+6B,UAInD9+B,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CAACC,aAAcw8B,EAAqCp9B,SAAA,EACvEI,EAAAA,EAAAA,MAACs4B,EAAAA,EAAO,CAAA14B,SAAA,EACJ5B,EAAAA,EAAAA,KAACu6B,EAAAA,EAAO,CACJz0B,QAAS,WAAF,OAAQ23B,EAAa8D,GAAAA,EAAoBC,KAAK,EACrD3mB,OAAQuf,IAAcmH,GAAAA,EAAoBC,KAC1CrhC,MAAM,WAEVH,EAAAA,EAAAA,KAACu6B,EAAAA,EAAO,CACJz0B,QAAS,WAAF,OAAQ23B,EAAa8D,GAAAA,EAAoBG,UAAU,EAC1D7mB,OAAQuf,IAAcmH,GAAAA,EAAoBG,UAC1CvhC,MAAM,wBAIVi6B,IAAcmH,GAAAA,EAAoBC,MAC5BxhC,EAAAA,EAAAA,KAAC6+B,GAAgC,KACjC7+B,EAAAA,EAAAA,KAACs/B,GAAqC,WAMpE,E,wBC9EO,SAASqC,GAAanhC,GAA4C,IAAzCgsB,EAAShsB,EAATgsB,UAAWtsB,EAAKM,EAALN,MAAK0hC,EAAAphC,EAAEsF,QAAAA,OAAO,IAAA87B,EAAG,WAAO,EAACA,EACxDl2B,EAAwGm2B,GAAAA,GAAxGn2B,UAAWC,EAA6Fk2B,GAAAA,GAA7Fl2B,SAAUH,EAAmFq2B,GAAAA,GAAnFr2B,YAAaK,EAAsEg2B,GAAAA,GAAtEh2B,cAAei2B,EAAuDD,GAAAA,GAAvDC,WAAYC,EAA2CF,GAAAA,GAA3CE,iBAAkBC,EAAyBH,GAAAA,GAAzBG,SAAUl2B,EAAe+1B,GAAAA,GAAf/1B,WAC3Fm2B,EAAczV,EAAU0V,MAAMz6B,KAAI,SAAC8S,GACrC,MAAO,CACHtM,EAAG1B,IAAOgO,GAAGvN,OAAOyH,EAAAA,GAAUsY,qBAC9Blc,EAAG2b,EAAUjf,KAAKgN,GAAG4nB,cAAgBJ,EACrCK,KAAM,IACNC,KAAM,IACNr/B,KAAK,GAADmC,OAAKqnB,EAAUjf,KAAKgN,GAAG4nB,cAAczQ,QAAQ,GAAE,MACnD4Q,UAAW,EACXC,GAAI,EACJC,GAAI,EAEZ,IAkBMrwB,GAAMxK,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACL6D,GAAW,IACdy2B,YAAAA,EACA3vB,YAAY,EACZC,UAAU,EACVC,UAAW,UACX1G,WAAAA,EACAqH,MAAO,CACHC,UAAU,EACVN,MAAOgvB,EACP9uB,YAAY,EACZK,eAAgB,OAChBC,UAAW5H,EACX6H,MAAO,SACPV,UAAWnH,EACXqH,SAAUpH,EACV6H,cAAe3H,GAEnB+G,MAAO,CACHkW,UAAU,EACVjW,UAAWnH,EACXqH,SAAUpH,KAIlB,OACI3L,EAAAA,EAAAA,KAAC4T,GAAAA,EAAI,CACD1T,MAAOA,EACPiS,OAAQA,EACR5E,KA5CG,CAAC,CACJU,EAAGue,EAAU0V,MAAMz6B,KAAI,SAAC8S,GAAC,OAAKhO,IAAOgO,GAAGvN,OAAOyH,EAAAA,GAAUsY,oBAAoB,IAC7Elc,EAAG2b,EAAU0V,MAAMz6B,KAAI,SAAC8S,GAAC,OAAKiS,EAAUjf,KAAKgN,GAAG4nB,aAAa,IAC7Dj8B,KAAM,YACN0L,KAAM,MACNG,OAAQ,CACJC,MAAOgwB,GAEXtW,UAAW,OACX1oB,KAAMwpB,EAAU0V,MACXz6B,KAAI,SAAC8S,GAAC,mBAAApV,OAAkBqnB,EAAUjf,KAAKgN,GAAG4nB,cAAczQ,QAAQ,GAAE,oBAAAvsB,OAAmBqnB,EAAUjf,KAAKgN,GAAGkoB,YAAW,IACvH7T,aAAc,SAkCdja,OAAQC,GAAAA,EACR9O,QAASA,EACT+N,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,cAG5C,CAEA4tB,GAAcv6B,aAAe,CACzBlH,MAAO,mB,mDC3DLgC,GAAY,2CAEX,SAASwgC,KACZ,IAAMjW,GAAUC,EAAAA,EAAAA,MACViW,GAAajiC,EAAAA,EAAAA,KAAY,SAACuX,GAAC,OAAKA,EAAErX,UAAU+hC,UAAU,IACtDC,GAA8BliC,EAAAA,EAAAA,KAAY,SAACuX,GAAC,OAAKA,EAAErX,UAAUgiC,2BAA2B,IACxFv3B,GAAS3K,EAAAA,EAAAA,KAAY,SAACuX,GAAC,OAAKA,EAAErX,UAAUyK,MAAM,IAC9CglB,GAAe3vB,EAAAA,EAAAA,KAAY,SAACuX,GAAC,OAAKA,EAAErX,UAAUyvB,YAAY,IAExD9D,EAAwClhB,EAAxCkhB,mBAAoB+D,EAAoBjlB,EAApBilB,gBAqBtBuS,EAAkB,SAACC,GACrB,IAAQC,EAAiBlB,EAAAA,GAAjBkB,aAER,OADuB5hC,OAAO6hC,KAAKF,GACbr7B,KAAI,SAAAkU,GAAC,SAAAxW,OAAO49B,EAAapnB,IAAExW,QAAG89B,EAAAA,EAAAA,IAAUH,EAAsBnnB,IAAG,IAAIunB,KAAK,OAAS,IAC7G,EAEMC,EAAiB,SAACC,GACpB,IAdgB7K,EAAQjN,EAclB+X,EAAgB,WAClB,OArBA9W,EAAmBznB,OACZw+B,GAAAA,EAAWj4B,QAAO,SAAAsQ,GAAC,OAAI4Q,EAAmBvrB,MAAK,SAAAuiC,GAAE,OAAIA,IAAO5nB,CAAC,GAAC,IAElE2nB,GAAAA,GAkB2B11B,QAAO,SAACnH,EAAQ8a,GAE1C,OADA9a,EAAO8a,GAAY,EACZ9a,CACX,GAAG,CAAC,EACR,EAEMrD,EAAQggC,EAAUx1B,QAAO,SAACnH,EAAQgR,GACpChR,EAAO6kB,OAAS7T,EAAQ+rB,KAAK1+B,OAC7B,IAAA2+B,EAAiDhsB,EAAQ+rB,KAAK51B,QAAO,SAAC81B,EAAYjsB,GAG9E,OAFAisB,EAAWC,eAAiBlsB,EAAQmsB,aAChCnsB,EAAQmsB,eAAcF,EAAWZ,sBAAsBrrB,EAAQ8J,WAAa9J,EAAQ8gB,QACjFmL,CACX,GAAG,CAAEC,cAAe,EAAGb,sBAAuBO,MAJtCM,EAAaF,EAAbE,cAAeb,EAAqBW,EAArBX,sBAQvB,OAHAr8B,EAAOk9B,eAAiBA,GACpBl9B,EAAOq8B,sBAAsBv4B,KAA4C,IAArC9D,EAAOq8B,sBAAsBv4B,OAAW9D,EAAOq8B,sBAAsBv4B,KAAOu4B,EAAsBv4B,MACtI9D,EAAOq8B,sBAAsBx4B,KAA4C,IAArC7D,EAAOq8B,sBAAsBx4B,OAAW7D,EAAOq8B,sBAAsBx4B,KAAOw4B,EAAsBx4B,KACnI7D,CACX,GAAG,CAAE6kB,MAAO,EAAGqY,cAAe,EAAGb,sBAAuBO,MAExD,MAAO,CACHlB,eAnCY5J,EAmCcn1B,EAAMugC,cAnCZrY,EAmC2BloB,EAAMkoB,MAlCpDiN,GAAWjN,EAGPiN,EAASjN,EAAS,IAFhB,GAkCPwX,sBAAuB1/B,EAAM0/B,sBAC7BL,YAAaI,EAAgBz/B,EAAM0/B,uBAE3C,EAgEMe,GAAiBvpB,EAAAA,EAAAA,cAAY,SAACjV,GAChC,IAAM6O,EAAQ7O,GAAKA,EAAE4O,QAAU5O,EAAE4O,OAAO,GAClC3H,EAAOC,IAAO2H,EAAMjG,EAAGwG,EAAAA,GAAUsY,qBAAqB/f,OAAOyH,EAAAA,GAAUuY,iCACvE8W,EAAgBxT,EAAgB1iB,QAAO,SAACnH,EAAQgR,GAClD,IAAMga,GAAS/D,EAAAA,EAAAA,IAAyBjW,GAExC,OADAhR,EAASA,EAAOtB,OAAOssB,EAE3B,GAAG,IACGxE,EAAe,CACjBM,SAAUjhB,EACVkhB,OAAQlhB,EACRiV,SAAwC,IAA9BgL,EAAmBznB,OAAe,GAAKynB,EAAmB,GACpEkB,QAASqW,EAAch/B,QAAUg/B,EAAch/B,SAAWi/B,GAAAA,GAAQj/B,OAASg/B,EAAgB,IAEzFnW,EAAc,EAACF,EAAAA,GAAAA,OAAWlM,EAAAA,GAAAA,OAAYgM,EAAAA,GAAAA,OAAYC,EAAAA,GAAAA,OAClDI,EAAcC,GAAAA,EAAsBC,UAAUb,EAAcU,GAClElB,EAAQlmB,KAAK,CACTwnB,SAAU9O,EAAAA,GAAO+O,SACjBC,OAAQL,GAEhB,GAAG,CAACnB,EAASF,EAAoB+D,IAE3B9D,EAvCe,WACjB,IAAAwX,EA9CgB,WAChB,IAAM9B,EAAQ,GACR+B,EAAgBtB,EAAW/0B,QAAO,SAACnH,EAAQgR,GAa7C,GAZKtW,OAAO6hC,KAAKv8B,GAAQzF,MAAK,SAACuZ,GAAC,OAAKA,IAAM9C,EAAQnL,IAAI,MACnD7F,EAAOgR,EAAQnL,MAAQ,CACnBmhB,SA1DR6C,EAAgBxrB,OACT8rB,EAAAA,GAAsBvlB,QAAO,SAAA64B,GAAC,OAAI5T,EAAgBtvB,MAAK,SAAAmjC,GAAE,OAAIA,IAAOD,CAAC,GAAC,IAE1EtT,EAAAA,IAuDkCnpB,KAAI,SAAAy8B,GAAC,MAAK,CACnCzS,OAAQyS,EACRV,KAAM,GACT,IACDrB,cAAe,EACfW,sBAAuB,GAE3BZ,EAAM37B,KAAKkR,EAAQnL,OAGnBgkB,EAAgBxrB,OAChB,GAAI2S,EAAQga,SAAWI,GAAAA,GAAOuS,KAAO3sB,EAAQga,SAAWI,GAAAA,GAAOwS,GAC3D,IAAK/T,EAAgBtvB,MAAK,SAAAkjC,GAAC,OAAIA,IAAMxT,EAAAA,GAAYC,KAAK,IAClD,OAAOlqB,OAER,IAAK6pB,EAAgBtvB,MAAK,SAAAkjC,GAAC,OAAIA,IAAMzsB,EAAQga,MAAM,IACtD,OAAOhrB,EAIf,GAAI8lB,EAAmBznB,SAAWynB,EAAmBvrB,MAAK,SAAA2a,GAAC,OAAIA,IAAMlE,EAAQ8J,QAAQ,IACjF,OAAO9a,EAGX,IAAI69B,EAAgB7sB,EAAQga,OAW5B,OAVIha,EAAQga,SAAWI,GAAAA,GAAOuS,KAAO3sB,EAAQga,SAAWI,GAAAA,GAAOwS,IAC3DC,EAAgB5T,EAAAA,GAAYC,OAGhClqB,EAAOgR,EAAQnL,MAAMmhB,QAAQhmB,KAAI,SAAA88B,GAI7B,OAHIA,EAAK9S,SAAW6S,GAChBC,EAAKf,KAAKj9B,KAAKkR,GAEZ8sB,CACX,IACO99B,CACX,GAAG,CAAC,GACJ,MAAO,CAAEy7B,MAAAA,EAAO+B,cAAAA,EACpB,CAGqCO,GAAzBtC,EAAK8B,EAAL9B,MAAO+B,EAAaD,EAAbC,cACT12B,EAAO20B,EAAMhb,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEsd,cAAcrd,EAAE,IAAExZ,QAAO,SAACnH,EAAQ6F,GAClE,IAAMo4B,EAAWT,EAAc33B,GAC1B7F,EAAO6F,KACR7F,EAAO6F,GAAQ,CAAC,GAEpB,IAAAq4B,EAA8DxB,EAAeuB,EAASjX,SAA9E0U,EAAawC,EAAbxC,cAAeW,EAAqB6B,EAArB7B,sBAAuBL,EAAWkC,EAAXlC,YAK9C,OAJAh8B,EAAO6F,GAAM61B,cAAgBA,EAC7B17B,EAAO6F,GAAMw2B,sBAAwBA,EACrCr8B,EAAO6F,GAAMm2B,YAAcA,EAC3Bh8B,EAAO6F,GAAMmhB,QAAUiX,EAASjX,QACzBhnB,CACX,GAAG,CAAC,GACJ,MAAO,CAAEy7B,MAAAA,EAAO30B,KAAAA,EACpB,CAwBkB2E,GAEZ5Q,GAAQP,EAAAA,EAAAA,UAAQ,kBAAMf,EAAAA,EAAAA,KAAC2hC,GAAa,CAACnV,UAAWA,EAAW1mB,QAAS+9B,GAAkB,GACxF,CAACrX,EAAWqX,IAEhB,OACI7jC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,GAAWP,UAAU,cAAc0uB,aAAcA,EAAazuB,UAClF5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAa6gC,GAA6BhhC,UACrEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoBskC,cAC7B1iC,UAAWA,GACXC,iBAAiB,gDAA+CP,SAAA,EAEhE5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,QAETF,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CAACC,aAAcogC,EAA4BhhC,SAAA,CAC7DN,GACDtB,EAAAA,EAAAA,KAAC01B,EAAiB,CACdhb,GAAG,oBACHib,MAAO,EACP3yB,KAAK,mcAOjC,C,gBC7LO,SAAS6hC,GAAerkC,GAAmB,IAAhB+M,EAAI/M,EAAJ+M,KAAMrN,EAAKM,EAALN,MAC5BsL,EAA2Hs5B,GAAAA,EAA3Ht5B,YAAas2B,EAA8GgD,GAAAA,EAA9GhD,WAAY9S,EAAkG8V,GAAAA,EAAlG9V,WAAYrjB,EAAsFm5B,GAAAA,EAAtFn5B,SAAUD,EAA4Eo5B,GAAAA,EAA5Ep5B,UAAWusB,EAAiE6M,GAAAA,EAAjE7M,MAAOpsB,EAA0Di5B,GAAAA,EAA1Dj5B,cAAek2B,EAA2C+C,GAAAA,EAA3C/C,iBAAkBC,EAAyB8C,GAAAA,EAAzB9C,SAAUl2B,EAAeg5B,GAAAA,EAAfh5B,WAkB9G0gB,EAhBqB,CAAC,CACxBve,EAAGV,EAAK9F,KAAI,SAAA8S,GAAC,OAAIA,EAAEwqB,UAAU,IAC7Bl0B,EAAGtD,EAAK9F,KAAI,SAAA8S,GAAC,OAAIA,EAAEyqB,sBAAsB,IACzCpzB,KAAM,MACN8Z,UAAW,OACX3Z,OAAQ,CACJC,MAAOgwB,GAEXh/B,KAAMuK,EAAK9F,KAAI,SAAC8S,GAAC,OACbA,EAAEyqB,uBAAyB,EAAC,UAAA7/B,OACZoV,EAAE0qB,gBAAe,qBAAA9/B,OAAoBoV,EAAEyqB,uBAAsB,oBAAA7/B,OAAmBoV,EAAE2qB,iBAC5F,EAAE,IAEZtW,aAAc,SAKZqT,EAAc10B,EAAK9F,KAAI,SAAC8S,GAC1B,MAAO,CACHtM,EAAGsM,EAAEwqB,WACLl0B,EAAGvL,OAAOiV,EAAEyqB,wBAA0BjD,EACtCK,KAAM,IACNC,KAAM,IACNr/B,KAAK,GAADmC,OAAKoV,EAAEyqB,uBAAsB,MACjC1C,UAAW,EACXC,GAAI,EACJC,GAAI,EAEZ,IAEMrwB,GAAMxK,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACL6D,GAAW,IACdy2B,YAAAA,EACAn2B,WAAAA,EACA8G,MAAO,CACHC,UAAWnH,EACXqH,SAAUpH,EACVmH,MAAOkc,GAEX7b,MAAO,CACHL,MAAOgvB,EACPl3B,MAAOqtB,EACP7kB,UAAU,EACVuc,OAAQ,QACRtc,eAAgB,OAChBL,YAAY,EACZM,UAAW5H,EACX6H,MAAO,SACPV,UAAWnH,EACXqH,SAAUpH,EACV6H,cAAe3H,KAIvB,OACI7L,EAAAA,EAAAA,KAAC4T,GAAAA,EAAI,CACD1T,MAAOA,EACPiS,OAAQA,EACR5E,KAAMif,EACN7X,OAAQC,GAAAA,EACRib,cAAe/b,EAAAA,GAAWgc,eAAe5vB,EAAO,aAChD2T,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,cAG5C,CC3DA,IAAM7R,GAAY,wCAEX,SAASijC,KACZ,IAAQC,EAAmBN,GAAAA,EAAnBM,eAEFC,GAAiB3kC,EAAAA,EAAAA,KAAY,SAACuX,GAAC,OAAKA,EAAErX,UAAUykC,cAAc,IAC9DC,GAAkC5kC,EAAAA,EAAAA,KAAY,SAACuX,GAAC,OAAKA,EAAErX,UAAU0kC,+BAA+B,IAChGj6B,GAAS3K,EAAAA,EAAAA,KAAY,SAACuX,GAAC,OAAKA,EAAErX,UAAUyK,MAAM,IAC9CglB,GAAe3vB,EAAAA,EAAAA,KAAY,SAACuX,GAAC,OAAKA,EAAErX,UAAUyvB,YAAY,IAExDC,EAAwCjlB,EAAxCilB,gBAAiB/D,EAAuBlhB,EAAvBkhB,mBAqFnBC,EAxEa,WACf,OAAO+Y,EAAAA,EAAAA,WAAUF,GAAgB59B,KAAI,SAAA8S,GAIjC,OAHI+V,EAAgBxrB,QAAUynB,EAAmBznB,UAC7CyV,EAAEirB,iBAdiB,SAACC,GAC5B,IAAIC,EAAWD,EAIf,OAHInV,EAAgBxrB,SAChB4gC,EAAWD,EAAWp6B,QAAO,SAAAkP,GAAC,QAAM+V,EAAgBtvB,MAAK,SAAAkjC,GAAC,OAAI3pB,EAAEkX,SAAWyS,CAAC,GAAC,KAE7E3X,EAAmBznB,OACZ4gC,EAASr6B,QAAO,SAAAkP,GAAC,QAAMgS,EAAmBvrB,MAAK,SAAA2a,GAAC,OAAIpB,EAAEgH,WAAa5F,CAAC,GAAC,IAEzE+pB,CACX,CAKiCC,CAAuBprB,EAAEirB,mBAE3CjrB,CACX,GACJ,CA+CiBqrB,GACDn+B,KAAI,SAAC8S,GACb,IAAAsrB,EAzBe,WACnB,OADoC/8B,UAAAhE,OAAA,QAAAnC,IAAAmG,UAAA,GAAAA,UAAA,GAAG,IACf8E,QAAO,SAACnH,EAAQgR,GAWpC,OAVAhR,EAAOq/B,gBAAkBruB,EAAQ8gB,OAC7B9gB,EAAQsuB,UACRt/B,EAAOu/B,iBAAmBvuB,EAAQ8gB,QAEtC9xB,EAAOw/B,0BAA4Bx/B,EAAOw/B,0BAA0Bx+B,KAAI,SAAAkU,GAIpE,OAHIlE,EAAQ8J,WAAa5F,EAAEuqB,cAAgBzuB,EAAQsuB,UAC/CpqB,EAAE4c,QAAU9gB,EAAQ8gB,QAEjB5c,CACX,IACOlV,CACX,GAAG,CAAEq/B,eAAgB,EAAGE,gBAAiB,EAAGC,0BAlCxC1Z,EAAmBznB,OACZw+B,GAAAA,EAAWj4B,QAAO,SAAAsQ,GAAC,OAAI4Q,EAAmBvrB,MAAK,SAAAuiC,GAAE,OAAIA,IAAO5nB,CAAC,GAAC,IAAElU,KAAI,SAAAkU,GAAC,MAAK,CAC7EuqB,aAAcvqB,EACd4c,OAAQ,EACX,IAEE+K,GAAAA,EAAW77B,KAAI,SAAAkU,GAAC,MAAK,CAAEuqB,aAAcvqB,EAAG4c,OAAQ,EAAG,KA6B9D,CAW+EF,CAAe9d,EAAEirB,kBAAoB,IAApGM,EAAcD,EAAdC,eAAgBE,EAAeH,EAAfG,gBAAiBC,EAAyBJ,EAAzBI,0BACnCjB,EAtCW,SAACc,EAAgBE,GACtC,OAAIA,GAAmBF,GACVE,EAAkBF,EAAkB,KAAKpU,QAAQ,GAEvD,CACX,CAiCuCyU,CAAiBL,EAAgBE,GAGhE,MAAO,CACHF,eAAAA,EACAE,gBAAAA,EACAC,0BAAAA,EACAjB,uBAAAA,EACAE,gBAvCe,SAACkB,GACxB,IAAQrD,EAAiB+B,GAAAA,EAAjB/B,aACR,OAAOqD,EAAiB3+B,KAAI,SAAAkU,GAAC,SAAAxW,OAAO49B,EAAapnB,EAAEuqB,eAAa/gC,QAAG89B,EAAAA,EAAAA,IAAUtnB,EAAE4c,QAAO,IAAI2K,KAAK,OAAS,IAC5G,CA6BgCmD,CAAmBJ,GAQvChB,gBAnBkB,SAACqB,GAC3B,IAAM/f,EAAOha,IAAO+5B,EAAQlB,GAAgBp4B,OAAOyH,EAAAA,GAAUsY,qBACvDuB,EAAK/hB,IAAO+5B,EAAQlB,GAAgBp2B,IAAI,EAAG,QAAQhC,OAAOyH,EAAAA,GAAUsY,qBAC1E,MAAM,GAAN5nB,OAAUohB,EAAI,OAAAphB,OAAMmpB,EACxB,CAQgCiY,CAAsBhsB,EAAEisB,YAQ5CzB,WAAYx4B,IAAOgO,EAAEisB,WAAWC,MAAM,KAAK,GAAIrB,GAAgBp4B,OAAOyH,EAAAA,GAAUsY,qBAExF,IAKEzrB,GAAQP,EAAAA,EAAAA,UAAQ,kBAAMf,EAAAA,EAAAA,KAAC6kC,GAAe,CAACt3B,KAAMif,EAAWtsB,MAAM,gBAAiB,GAAE,CAACssB,IAExF,OACIxsB,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,GAAWP,UAAU,WAAW0uB,aAAcA,EAAazuB,UAC/E5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAaujC,GAAiC1jC,UACzEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoBomC,gBAC7BxkC,UAAWA,GACXC,iBAAiB,wCAAuCP,SAAA,EAExD5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClBI,EAAAA,EAAAA,MAAA,MAAAJ,SAAA,CAAKM,IAAUlC,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,OAAMC,SAAC,qBAE1CI,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CAACC,aAAc8iC,EAAgC1jC,SAAA,CAC7DN,GACDtB,EAAAA,EAAAA,KAAC01B,EAAiB,CACdhb,GAAG,iBACHib,MAAO,EACP3yB,KAAK,+LAQrC,C,uCC3HO,SAAS2jC,GAAqBnmC,GAAkD,IAA/C+M,EAAI/M,EAAJ+M,KAAM+e,EAAQ9rB,EAAR8rB,SAEpCsa,EAAmB,SAACvlC,GAAa,OAAKA,EAAQ,EAAC,IAAA8D,OAC7CylB,EAAAA,GAAWC,MAAMxpB,GAAM,WAAA8D,OACtBylB,EAAAA,GAAWC,OAAOxpB,GAAM,KAAK,EAEhCwlC,EAAiB,WACnB,IAAIC,EAAgB,EACpB,OAAOv5B,EAAK9F,KAAI,SAAApG,GAEZ,OADAylC,GAAgCzlC,EAAMwP,CAE1C,GACJ,EA+BMk2B,EA7BiB,WACnB,IAAQC,EAAkDC,GAAAA,EAAlDD,iBAAkBE,EAAgCD,GAAAA,EAAhCC,iBAAkBC,EAAcF,GAAAA,EAAdE,UACtCl5B,EAAIV,EAAK9F,KAAI,SAAA8S,GAAC,OAAIA,EAAEtM,CAAC,IAG3B,MAAO,CACH,CACIA,EAAAA,EACA4C,EALEtD,EAAK9F,KAAI,SAAA8S,GAAC,OAAIA,EAAE1J,CAAC,IAMnBkB,OAAQ,CAAEC,MALHzE,EAAK9F,KAAI,SAAA8S,GAAC,OAAIA,EAAE1J,EAAI,EAAIm2B,EAAmBE,CAAgB,KAMlEt1B,KAAM,MACN1L,KAAM,OACNwlB,UAAW,OACX1oB,KAAMuK,EAAK9F,KAAI,SAAA8S,GAAC,sBAAApV,OAAoByhC,EAAiBrsB,EAAE1J,GAAE,IACzD+d,aAAc,QAElB,CACI3gB,EAAAA,EACA4C,EAAGg2B,IACHve,KAAM,QACNpiB,KAAM,OACNwlB,UAAW,OACX1oB,KAAM6jC,IAAiBp/B,KAAI,SAAA8S,GAAC,0BAAApV,OAAwByhC,EAAiBrsB,GAAE,IACvEqU,aAAc,OACdwY,KAAM,CAAEC,KAAM,OAAQlhC,MAAO,EAAG6L,MAAOm1B,EAAWG,MAAO,WAGrE,CAEiBC,GAEXlZ,EAAgB,WAClB,IAAQ1B,EAA4Bsa,GAAAA,EAA5Bta,WAAY6a,EAAgBP,GAAAA,EAAhBO,YAChBjZ,EAAW,EACXkZ,EAAW,EAoBf,OAnBAl6B,EAAK7G,SAAQ,SAAA6T,GACLA,EAAE1J,EAAI0d,IACNA,EAAWhU,EAAE1J,GAEb0J,EAAE1J,EAAI42B,IACNA,EAAWltB,EAAE1J,EAErB,IACAg2B,IAAiBngC,SAAQ,SAAA6T,GACjBA,EAAIgU,IACJA,EAAWhU,GAEXA,EAAIktB,IACJA,EAAWltB,EAEnB,IAIO,CAFUktB,EAAW,EAAIA,EAAWt2B,EAAAA,GAAayoB,cAAcjN,EAAY6a,GAAeC,EAChFlZ,EAAWpd,EAAAA,GAAayoB,cAAcrL,EAAUiZ,GAErE,EAkBMr1B,EAAS,CACXG,YAAY,EACZC,UAAU,EACVC,UAAW,UACXyvB,YApBgB10B,EAAK9F,KAAI,SAAC8S,GAC1B,IAAQwnB,EAAsCkF,GAAAA,EAAtClF,iBAAkB2F,EAAoBT,GAAAA,EAApBS,gBACpB50B,EAAQub,IAERS,EADkB9pB,KAAK2iC,IAAI70B,EAAM,GAAKA,EAAM,IACjBivB,EACjC,MAAO,CACH9zB,EAAGsM,EAAEtM,EACL4C,EAAG0J,EAAE1J,EAAI,EAAI0J,EAAE1J,EAAIie,EAASvU,EAAE1J,EAAIie,EAClC9rB,KAAM4nB,EAAAA,GAAWC,MAAMtQ,EAAE1J,GACzByxB,UAAW,EACXC,GAAI,EACJC,GAAI,EACJnT,KAAMqY,EAEd,IAOI5Y,OAAQmY,GAAAA,EAA+BnY,OACvChjB,WAAYm7B,GAAAA,EAA+Bn7B,WAC3C8G,MAAO,CACHC,UAAWo0B,GAAAA,EAA+Bv7B,UAC1CqH,SAAUk0B,GAAAA,EAA+Bt7B,SACzCi8B,UAAW,GAEfz0B,MAAO,CACH2Y,mBAAmB,EACnBtY,cAAeyzB,GAAAA,EAA+Bv7B,UAC9CoH,MAAOub,IACPzjB,MAAOq8B,GAAAA,EAA+Bta,WACtCrZ,UAAW2zB,GAAAA,EAA+Bv7B,UAC1C6H,MAAO,SACPV,UAAWo0B,GAAAA,EAA+Bv7B,UAC1CqH,SAAUk0B,GAAAA,EAA+Bt7B,WAIjD,OACI3L,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDC,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChC7T,MAAOosB,EACP/e,KAAMw5B,EACN50B,OAAQA,EACRwC,OAAQC,EAAAA,IAGpB,CAEA+xB,GAAsBv/B,aAAe,CACjCklB,SAAU,4BC7Hd,IAAMpqB,GAAY,+BAEX,SAAS2lC,KACZ,IAAMC,GAAmBpnC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUknC,gBAAgB,IAC5EC,GAA+BrnC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUmnC,4BAA4B,IAEpGx6B,GAAOxM,EAAAA,EAAAA,UAAQ,kBAAM+mC,EAAiBrgC,KAAI,SAAA8S,GAC5C,IAAMytB,EAA4F,KAA3EztB,EAAE0tB,eAAiB1tB,EAAE2tB,eAAiB3tB,EAAE4tB,cAAgB5tB,EAAE6tB,eAC3Ev3B,EAAIM,EAAAA,EAAaC,MAAM42B,EAAgB,IAAS,GAEtD,MAAO,CAAE/5B,EADC1B,IAAOgO,EAAE+rB,QAAQt5B,OAAOi6B,GAAAA,EAA+BoB,YACrDx3B,EAAAA,EAChB,GAAE,GAAE,CAACi3B,IAECQ,GAAavnC,EAAAA,EAAAA,UAAQ,WACvB,IAAMmhC,EAAQ4F,EAAiBrgC,KAAI,SAAA8S,GAAC,OAAI,IAAItR,KAAKsR,EAAE+rB,QAAQrM,SAAS,IAC9DsO,EAAU,IAAIt/B,KAAKjE,KAAKwJ,IAAIovB,MAAM,KAAMsE,IAAQh5B,cAChDL,EAAU,IAAII,KAAKjE,KAAKsJ,IAAIsvB,MAAM,KAAMsE,IAAQh5B,cACtD,OAAIq/B,IAAY1/B,EACL0/B,EAEL,GAANpjC,OAAU0D,GAAW,GAAE,OAAA1D,OAAMojC,GAAW,GAC5C,GAAG,CAACT,IAEExmC,GAAQP,EAAAA,EAAAA,UAAQ,kBAAMf,EAAAA,EAAAA,KAAC2mC,GAAqB,CAACp5B,KAAMA,GAAQ,GAAE,CAACA,IAEpE,OACIvN,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,GAAWP,UAAU,qBAAoBC,UAC7D5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAagmC,GAA8BnmC,UACtEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoBkoC,oBAC7BtmC,UAAWA,GACXC,iBAAiB,2CAA0CP,SAAA,EAE3D5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClBI,EAAAA,EAAAA,MAAA,MAAAJ,SAAA,CAAKM,IAAUlC,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,OAAMC,SAAC,kBAE1CI,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CAACC,aAAculC,EAA6BnmC,SAAA,CAC1DN,GACDU,EAAAA,EAAAA,MAAA,OAAKL,UAAU,SAAQC,SAAA,EACnB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,iCAAgCC,SAAC,qBAChDI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,qCAAoCC,SAAA,CAC9C0mC,EAAW,8BAGpBtoC,EAAAA,EAAAA,KAAC01B,EAAiB,CACdhb,GAAG,2BACHib,MAAO,EACP3yB,KAAK,0aAWrC,C,4BCpDO,SAASylC,GAAYjoC,GAA8C,IAA3C+M,EAAI/M,EAAJ+M,KAAM+e,EAAQ9rB,EAAR8rB,SAC3Bsa,EAAmB,SAACvlC,GAAa,UAAA8D,OAASylB,GAAAA,EAAWC,MAAMxpB,GAAM,OAkCjE43B,EAAa,SAACyP,GAChB,MAAM,cAANvjC,OAAqByhC,EAAiB8B,EAAU73B,EAAE83B,IAAG,sBAAAxjC,OAAqByhC,EAAiB8B,EAAU73B,EAAE+3B,IAC3G,EAEM7B,EApCiB,WACnB,IAAQ8B,EAAqCC,GAAAA,GAArCD,WAAYE,EAAyBD,GAAAA,GAAzBC,WAAYC,EAAaF,GAAAA,GAAbE,SAC1B/6B,EAAIV,EAAK9F,KAAI,SAAA8S,GAAC,OAAIA,EAAEtM,CAAC,IACrBg7B,EAAM17B,EAAK9F,KAAI,SAAA8S,GAAC,OAAIA,EAAE1J,EAAE83B,EAAE,IAC1BO,EAAM37B,EAAK9F,KAAI,SAAA8S,GAAC,OAAIA,EAAE1J,EAAE+3B,EAAE,IAC1BziC,EAAQoH,EAAK9F,KAAI,kBAAMuhC,CAAQ,IACrC,MAAO,CACH,CACI/6B,EAAAA,EACA4C,EAAGo4B,EACHl3B,OAAQ,CAAEC,MAAO62B,GACjBj3B,KAAM,MACN1L,KAAM,SACNwlB,UAAW,OACXkD,aAAc,OACd5rB,KAAMuK,EAAK9F,KAAI,SAAA8S,GAAC,OAAI0e,EAAW1e,EAAE,IACjCpU,MAAAA,GAEJ,CACI8H,EAAAA,EACA4C,EAAGq4B,EACHn3B,OAAQ,CAAEC,MAAO+2B,GACjBn3B,KAAM,MACN1L,KAAM,SACNwlB,UAAW,OACXkD,aAAc,OACd5rB,KAAMuK,EAAK9F,KAAI,SAAA8S,GAAC,OAAI0e,EAAW1e,EAAE,IACjCpU,MAAAA,GAGZ,CAMiBohC,GAEX4B,EAAmB,WACrB,IAAI5a,EAAW,EAOf,OANAhhB,EAAK7G,SAAQ,SAAA6T,GACT,IAAMnX,EAAQmX,EAAE1J,EAAE83B,GAAKpuB,EAAE1J,EAAE+3B,GACvBxlC,EAAQmrB,IACRA,EAAWnrB,EAEnB,IACOmrB,CACX,EA8BMpc,EAAS,CACXM,QAAS,QACTH,YAAY,EACZC,UAAU,EACVC,UAAW,UACXyvB,YApBgB10B,EAAK9F,KAAI,SAAC8S,GAC1B,IAAQwnB,EAAsC+G,GAAAA,GAAtC/G,iBAAkB2F,EAAoBoB,GAAAA,GAApBpB,gBACpBtkC,EAAQmX,EAAE1J,EAAE83B,GAAKpuB,EAAE1J,EAAE+3B,GACrBra,EAAW4a,IACjB,MAAO,CACHl7B,EAAGsM,EAAEtM,EACL4C,EAAGzN,EAAQ+N,EAAAA,EAAayoB,cAAcrL,EAAUwT,GAChD/+B,KAAM4nB,GAAAA,EAAWC,MAAMznB,GACvBk/B,UAAW,EACXC,GAAI,EACJC,GAAI,EACJnT,KAAMqY,EAEd,IAQI5Y,OAAQga,GAAAA,GAAsBha,OAC9BhjB,WAAYg9B,GAAAA,GAAsBh9B,WAClC8G,MAAO,CACHC,UAAWi2B,GAAAA,GAAsBp9B,UACjCqH,SAAU+1B,GAAAA,GAAsBzZ,MAEpClc,MAAO,CACH2Y,mBAAmB,EACnBtY,cAAes1B,GAAAA,GAAsBp9B,UACrCoH,MA3Cc,WAClB,IAAQs2B,EAA4BN,GAAAA,GAA5BM,wBACF7a,EAAW4a,IAEbjb,EAAU,IACVK,EAAWL,IACXA,EAAU,KAGd,IAAMmb,EAAgBv1B,GAAAA,GAAW6lB,cAAcpL,EAAUL,GACzD,MAAO,CAAC,EAAGmb,EAAgBl4B,EAAAA,EAAayoB,cAAcyP,EAAeD,GACzE,CAgCe/a,GACP/a,UAAWw1B,GAAAA,GAAsBp9B,UACjC6H,MAAO,SACPV,UAAWi2B,GAAAA,GAAsBp9B,UACjCqH,SAAU+1B,GAAAA,GAAsBzZ,OAIxC,OACIrvB,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDC,QAASC,GAAAA,GAAWC,UAAU,WAC9BC,UAAWF,GAAAA,GAAWC,UAAU,aAChC7T,MAAOosB,EACP/e,KAAMw5B,EACN50B,OAAQA,EACRwC,OAAQC,EAAAA,IAGpB,CAEA6zB,GAAarhC,aAAe,CACxBklB,SAAU,mBC1Hd,IAAMpqB,GAAY,eAEX,SAASonC,KACZ,IAAMC,GAAU7oC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAU2oC,OAAO,IAC1DC,GAAiC9oC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAU4oC,8BAA8B,IAExGj8B,GAAOxM,EAAAA,EAAAA,UAAQ,kBAAMwoC,EAAQ9hC,KAAI,SAAA8S,GACnC,IAEM1J,EAAI,CAAE+3B,GAFDz3B,EAAAA,EAAaC,MAAoB,IAAbmJ,EAAEkvB,SAAmB,IAAS,GAE7Cd,GADLx3B,EAAAA,EAAaC,MAAoB,IAAbmJ,EAAEmvB,SAAmB,IAAS,IAG7D,MAAO,CAAEz7B,EADC1B,IAAAA,IAAWgO,EAAEjO,MAAMU,OAAOyH,EAAAA,GAAUsY,qBAClClc,EAAAA,EAChB,GAAE,GAAE,CAAC04B,IAECjoC,GAAQP,EAAAA,EAAAA,UAAQ,kBAAMf,EAAAA,EAAAA,KAACyoC,GAAY,CAACl7B,KAAMA,GAAQ,GAAE,CAACA,IAE3D,OACIvN,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,GAAWP,UAAU,QAAOC,UAChD5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAaynC,GAAgC5nC,UACxEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoBqpC,eAC7BznC,UAAWA,GACXC,iBAAiB,sCAAqCP,SAAA,EAEtD5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClBI,EAAAA,EAAAA,MAAA,MAAAJ,SAAA,CAAKM,IAAUlC,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,OAAMC,SAAC,kBAE1CI,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CAACC,aAAcgnC,EAA+B5nC,SAAA,CAC5DN,GACDU,EAAAA,EAAAA,MAAA,OAAKL,UAAU,SAAQC,SAAA,EACnB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,oBAAmBC,SAAC,QACnC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,oBAAmBC,SAAC,yCAEvC5B,EAAAA,EAAAA,KAAC01B,EAAiB,CACdhb,GAAG,cACHib,MAAO,EACP3yB,KAAK,yKAOrC,C,gBC9CO,SAAS4mC,GAAkBppC,GAA4C,IAAzCgsB,EAAShsB,EAATgsB,UAG3Bqd,EAAcrd,EAAU/kB,KAAI,SAAA8S,GAAC,OAAIhO,IAAOgO,EAAEvE,UAAU,IAEpD8zB,EAAcD,EAAYpiC,KAAI,SAAAsiC,GAAE,OAAIA,EAAG/8B,OAAOg9B,GAAAA,EAAuB3B,WAAW,IAEhF4B,EAASzd,EAAU/kB,KAAI,SAAC8S,EAAG3T,GAAK,MAAM,CACpCgL,KAAM,OACNs4B,GAAIJ,EAAYljC,GAChBujC,GAAI7kC,OAAOiV,EAAE6vB,iBACbC,GAAIP,EAAYljC,GAChB0jC,GAAIhlC,OAAOiV,EAAEgwB,iBACbnD,KAAM4C,GAAAA,EAAuBQ,UAChC,IAGCC,EAAS,CACPx8B,EAAG67B,EACHj5B,EAAG2b,EAAU/kB,KAAI,SAAA8S,GAAC,OAAIA,EAAEmwB,QAAQ,IAChC1nC,KAAMwpB,EAAU/kB,KAAI,SAAA8F,GAAI,gBAAApI,OAAcoI,EAAKm9B,SAAQ,IACnDhf,UAAW,OACXpD,KAAM,QACN1W,KAAM,UACN1L,KAAM,WACN6L,OAAQi4B,GAAAA,EAAuBW,gBAGjCC,EAAS,CACX38B,EAAG67B,EACHj5B,EAAG2b,EAAU/kB,KAAI,SAAA8S,GAAC,OAAIA,EAAEswB,YAAY,IACpC7nC,KAAMwpB,EAAU/kB,KAAI,SAAA8F,GAAI,qBAAApI,OAAmBoI,EAAKs9B,aAAY,IAC5Dnf,UAAW,OACXpD,KAAM,QACN1W,KAAM,UACN1L,KAAM,eACN6L,OAAQi4B,GAAAA,EAAuBc,oBAG7B34B,EAAS,CACXkd,KAAM2a,GAAAA,EAAuBe,WAC7Bz4B,YAAY,EACZC,UAAU,EACVC,UAAW,UACXsc,OAAQkb,GAAAA,EAAuBlb,OAC/Bkc,WAAW,EACXl/B,WAAYk+B,GAAAA,EAAuBl+B,WACnC8G,MAAO,CACHQ,UAAU,EACV0V,UAAU,EACVjW,UAAWm3B,GAAAA,EAAuBt+B,UAClCqH,SAAUi3B,GAAAA,EAAuBr+B,SACjCmH,MAAO,CAACvG,IAAAA,IAAWs9B,GAAct9B,IAAAA,IAAWs9B,KAEhD12B,MAAO,CACH83B,UAAWjB,GAAAA,EAAuBiB,UAClCz3B,cAAew2B,GAAAA,EAAuBt+B,UACtC4H,UAAW02B,GAAAA,EAAuBt+B,UAClCmH,UAAWm3B,GAAAA,EAAuBt+B,UAClCqH,SAAUi3B,GAAAA,EAAuBr+B,SACjCod,WAAW,GAEfkhB,OAAAA,GAGJ,OACIjqC,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDC,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChC7T,MApES,iBAqETqN,KAAM,CAACk9B,EAAQG,GACfz4B,OAAQA,EACRwC,OAAQC,EAAAA,IAGpB,CC3EA,IAAM1S,GAAY,+BAEX,SAASgpC,KACZ,IAAMC,GAAgBzqC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUuqC,aAAa,IACtEC,GAAiC1qC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUwqC,8BAA8B,IACxG9pC,GAAQP,EAAAA,EAAAA,UAAQ,WAClB,IAAMyrB,EAAY2e,EAAc1jC,KAAI,SAAA8S,GAAC,OAAA5S,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC9B4S,GAAC,IACJmwB,SAAUnwB,EAAEmwB,SAAWv5B,EAAAA,GAAaC,MAAMmJ,EAAEmwB,SAAU,GAAK,KAC3DG,aAActwB,EAAEswB,aAAe15B,EAAAA,GAAaC,MAAMmJ,EAAEswB,aAAc,GAAK,KACvET,gBAAiB7vB,EAAE6vB,gBAAkBj5B,EAAAA,GAAaC,MAAMmJ,EAAE6vB,gBAAiB,GAAK,KAChFG,gBAAiBhwB,EAAEgwB,gBAAkBp5B,EAAAA,GAAaC,MAAMmJ,EAAEgwB,gBAAiB,GAAK,MAAI,IAExF,OAAOvqC,EAAAA,EAAAA,KAAC4pC,GAAkB,CAACpd,UAAWA,GAC1C,GAAG,CAAC2e,IAEJ,OACInrC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,GAAWP,UAAU,aAAYC,UACrD5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAaqpC,GAAgCxpC,UACxEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoB+qC,iBAC7BnpC,UAAWA,GACXC,iBAAiB,iDAAgDP,SAAA,EAEjE5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,QAETF,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CACnBC,aAAc4oC,EAA+BxpC,SAAA,CAExCN,GACDU,EAAAA,EAAAA,MAAA,OAAKL,UAAU,SAAQC,SAAA,EACnB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,2BAA0BC,SAAC,eAC1C5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,2BAA0BC,SAAC,iBAC1CI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,uBAAsBC,SAAA,EAAC5B,EAAAA,EAAAA,KAAA,WAAQ,uBAElDA,EAAAA,EAAAA,KAAC01B,EAAiB,CACdhb,GAAG,yBACHib,MAAO,EACP3yB,KAAK,0aAOrC,C,4BCtCMd,GAAY,oBAEX,SAASopC,KACZ,IACMC,GAAoB7qC,EAAAA,EAAAA,IAAY8qC,IAChCnb,GAAe3vB,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyvB,YAAY,IACpEob,GAAgC/qC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAU6qC,6BAA6B,IAE5G9nC,GAA4BC,EAAAA,EAAAA,UAAS,MAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAnC4F,EAAM1F,EAAA,GAAEme,EAASne,EAAA,GACxBI,GAA0CL,EAAAA,EAAAA,UAAS8F,EAAAA,GAAKC,KAAIzF,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAArDuF,EAAatF,EAAA,GAAE+d,EAAgB/d,EAAA,GAEtCwe,GAA0BC,EAAAA,EAAAA,IAAc4oB,EAAkBA,kBAAmBhiC,EAAQC,GAA9EoZ,GAA4F9e,EAAAA,EAAAA,GAAA4e,EAAA,GAA7E,GAEhByZ,EAAgB,SAAC/7B,EAA6B2iB,GAChDf,EAAU5hB,GACV6hB,EAAiBc,EACrB,EAEM2oB,GAAc5uB,EAAAA,EAAAA,IAAiB2uB,KAAmC7oB,EAAgB9d,OAElF6mC,GAAc5qC,EAAAA,EAAAA,UAAQ,WACxB,OAAI2qC,GACO1rC,EAAAA,EAAAA,KAACoX,GAAAA,EAA0B,KAGlCpX,EAAAA,EAAAA,KAACkD,EAAAA,EAAU,CAACC,KAAMyf,EAAiBvf,YAtBvB,EAsBgDzB,SACvD,SAAC2T,GAA8B,OAC5BvV,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFI,UAAWvO,EACXwO,QAAS6nB,GACTjoB,OAAQwY,GACV,GAIlB,GAAG,CAACvZ,EAAiB8oB,IAErB,OACI1rC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,GAAWmuB,aAAcA,EAAc1uB,UAAU,sBAAqBC,UAC1F5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAa0pC,GAA+B7pC,UACvEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoBurC,qBAC7B3pC,UAAWA,GACXC,iBAAiB,2CAA0CP,SAAA,EAE3D5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClBI,EAAAA,EAAAA,MAAA,MAAAJ,SAAA,CACKM,IAAUlC,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,OAAMC,SAAC,0BAG1C5B,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAcipC,EACdhpC,aACIzC,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoBurC,qBAAqBjqC,SACtD8pC,EAAc,GAAK,qHAE3B9pC,SAEI+pC,UAM7B,CAEA,IAAMH,IAA4BM,EAAAA,GAAAA,IAAe,CAC7C,SAAC7zB,GAAW,OAAKA,EAAErX,UAAU2qC,iBAAiB,EAC9C,SAACtzB,GAAW,OAAKA,EAAErX,UAAUyK,OAAOilB,eAAe,EACnD,SAACrY,GAAW,OAAKA,EAAErX,UAAUyK,OAAOkhB,kBAAkB,IACvD,SACCwf,EACAzb,EACA/D,GAEA,IAAIgf,EAAoBQ,EAAYR,kBAOpC,OANIjb,EAAgBxrB,SAChBymC,EAAoBA,EAAkBlgC,QAAO,SAAA2gC,GAAC,OAAI1b,EAAgBtvB,MAAK,SAAA2a,GAAC,OAAIA,IAAMqwB,EAAEva,MAAM,GAAC,KAE3FlF,EAAmBznB,SACnBymC,EAAoBA,EAAkBlgC,QAAO,SAAA2gC,GAAC,OAAIzf,EAAmBvrB,MAAK,SAAA2a,GAAC,OAAIA,IAAMqwB,EAAEzqB,QAAQ,GAAC,MAEpG5Z,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAYokC,GAAW,IAAER,kBAAAA,GAC7B,IAuDMK,GArDoE,CACtE,CACIzrB,UAAW,SACXC,0BAA2B,WAAF,MAAQ,QAAQ,EACzCC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOqC,MAAM,EAC5Ct7B,UAAW,mBACXkf,aAAc,SACd0B,YAAaC,EAAAA,GAAawa,QAC3B,CACC7c,UAAW,SACXC,0BAA2B,WAAF,MAAQ,KAAK,EACtCC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOnJ,MAAM,EAC5C9vB,UAAW,mBACXkf,aAAc,SACd0B,YAAaC,EAAAA,GAAaiP,QAC3B,CACCtR,UAAW,SACXC,0BAA2B,WAAF,MAAQ,UAAU,EAC3CC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOqR,MAAM,EAC5CtqC,UAAW,8BACXkf,aAAc,SACd0B,YAAaC,EAAAA,GAAawa,QAC3B,CACC7c,UAAW,aACXC,0BAA2B,WAAF,MAAQ,iBAAiB,EAClDC,oBAAqB,SAAAua,GAAM,OAAIhQ,EAAAA,GAAWsS,WAAWtC,EAAOsR,UAAU,EACtEvqC,UAAW,wCACXkf,aAAc,YACd0B,YAAaC,EAAAA,GAAa6O,QAC3B,CACClR,UAAW,WACXC,0BAA2B,WAAF,MAAQ,cAAc,EAC/CC,oBAAqB,SAAAua,GAAM,OAAIhQ,EAAAA,GAAWsS,WAAWtC,EAAOuR,QAAQ,EACpExqC,UAAW,uCACXkf,aAAc,UACd0B,YAAaC,EAAAA,GAAa6O,QAC3B,CACClR,UAAW,cACXC,0BAA2B,WAAF,MAAQ,aAAa,EAC9CC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOwR,UAAYj7B,EAAAA,GAAaC,MAAMwpB,EAAOwR,UAAW,GAAK33B,EAAAA,GAAUgN,gBAAgB,EACtH9f,UAAW,qCACXkf,aAAc,YACd0B,YAAaC,EAAAA,GAAa6O,QAC3B,CACClR,UAAW,YACXC,0BAA2B,WAAF,MAAQ,WAAW,EAC5CC,oBAAqB,SAAAua,GAAM,OAAIA,EAAO8P,SAAWv5B,EAAAA,GAAaC,MAAMwpB,EAAO8P,SAAU,GAAKj2B,EAAAA,GAAUgN,gBAAgB,EACpH9f,UAAW,wCACXkf,aAAc,WACd0B,YAAaC,EAAAA,GAAa6O,SAIqB5pB,KAAI,SAAAkU,GACvD,OAAO,IAAI+F,EAAAA,EAAc/F,EAC7B,I,YCvIO,SAAS0wB,GAAoB7rC,GAAoD,IAAlD8rB,EAAQ9rB,EAAR8rB,SAAUE,EAAShsB,EAATgsB,UAEtC8f,EAAe,SAAC/+B,GAA8B,OAChDA,EAAKU,EAAExG,KAAI,SAAC8S,EAAG3T,GAAK,kBAAAzB,OACJoI,EAAKkgB,QAAQ7mB,GAAM,mBAAAzB,OAAkBkc,EAAAA,GAAY6X,cAAc3rB,EAAKsD,EAAEjK,GAAQ,GAAE,OAC9F,EA4BAmgC,EAzBKva,EAAUjf,KAAK9F,KAAI,SAAA8F,GAAI,MAAK,CAC/BU,EAAGV,EAAKU,EACR4C,EAAGtD,EAAKsD,EACRyX,KAAM,UACN1W,KAAM,UACN1L,KAAMqH,EAAKU,EACXjL,KAAMspC,EAAa/+B,GACnBme,UAAW,OACX3Z,OAAQ,CACJ6Z,KAAM2gB,GAAAA,EAAqBC,WAC3Bx6B,MAAOzE,EAAKk/B,eAEnB,IAeCt6B,EAAS,CACXM,QAAS,QACTH,YAAY,EACZC,UAAU,EACVC,UAAW,UACXsc,OAAQyd,GAAAA,EAAqBzd,OAC7BhjB,WAAYygC,GAAAA,EAAqBzgC,WACjC8G,MAAO,CACHQ,UAAU,EACVP,UAAW05B,GAAAA,EAAqB7gC,UAChCqH,SAAUw5B,GAAAA,EAAqBld,KAC/B9b,MAAO,QAEXJ,MAAO,CACHH,YAAY,EACZ8Y,mBAAmB,EACnBtY,cAAe+4B,GAAAA,EAAqB7gC,UACpCoH,MA7BU,WAEd,GAAG0Z,EAAU+B,SAAU,CACnB,IAAMA,EAAWpd,EAAAA,GAAaC,MAAMob,EAAU+B,SAAU,GAExD,MAAO,CAAC,EADIA,EAAWpd,EAAAA,GAAayoB,cAAcrL,EAHN,IAKhD,CACD,MAAO,EACV,CAqBesL,GACPvmB,UAAWi5B,GAAAA,EAAqB7gC,UAChC6H,MAAO,SACPV,UAAW05B,GAAAA,EAAqB7gC,UAChCqH,SAAUw5B,GAAAA,EAAqBld,OAIvC,OACIrvB,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDic,cAAe/b,EAAAA,GAAWgc,eAAexD,EAAU,aACnDzY,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChC7T,MAAOosB,EACP/e,KAAMw5B,EACN50B,OAAQA,EACRwC,OAAQC,EAAAA,IAGpB,CAEAy3B,GAAqBjlC,aAAe,CAChCklB,SAAU,2B,2BC/ERpqB,GAAY,oDAEX,SAASwqC,KACZ,IAAMC,GAAgBC,EAAAA,EAAAA,QAA0B,IAE1CC,GAAkBnsC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUisC,eAAe,IAC1EC,GAAmCpsC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUksC,gCAAgC,IAC5GzhC,GAAS3K,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyK,MAAM,IACxD0hC,GAAmBrsC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUmsC,gBAAgB,IAC5E1c,GAAe3vB,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyvB,YAAY,IAE1E1sB,GAA0CC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAlDqpC,EAAanpC,EAAA,GAAEopC,EAAgBppC,EAAA,GAE9BysB,EAAoBjlB,EAApBilB,gBACF4c,EAA4BH,EAAiBzc,iBAEnDvrB,EAAAA,EAAAA,YAAU,WACN,IAAMooC,IACDC,EAAAA,EAAAA,SAAQT,EAAcl1B,QAASy1B,IAChCA,EAA0BlsC,MAAK,SAAAqsC,GAAc,OAAId,GAAAA,EAAqB9e,QACjEzsB,MAAK,SAAAywB,GAAM,OAAIA,IAAW4b,CAAc,GAAC,KACzChd,EACT4c,EAAiBE,GACjBR,EAAcl1B,QAAUy1B,CAC5B,GAAG,CAACA,EAA2BD,EAAkB5c,IAEjD,IAUM9iB,GAA4BxM,EAAAA,EAAAA,UAAQ,WACtC,IAAIwtB,EAAW,EAEThhB,EAAOs/B,EAAgBplC,KAAI,SAAAd,GAC7B,IAAMF,EAAmC,CACrCwH,EAAG,GACH4C,EAAG,GACH47B,cAAe,GACfhf,QAAS,IAEP6f,EAAkD,CAAC,EAgCzD,OA/BA3mC,EAAE4mC,mBACGliC,QAAO,SAAAmiC,GAAM,OACVA,EAAOjsB,WAAa+hB,GAAAA,EAAW,MAGvBhT,EAAgBxrB,SAChBynC,GAAAA,EAAqB9e,QAChBzsB,MAAK,SAAAywB,GAAM,OACRnB,EAAgBtvB,MAAK,SAAAqsC,GAAc,OAAIA,IAAmB5b,CAAM,GAAC,KAGvEnB,EAAgBtvB,MAAK,SAAAkjC,GAAC,OAAIA,IAAMsJ,EAAO/b,MAAM,IACxC,IAElB/qB,SAAQ,SAAA8mC,GACL,IAAM/b,EAAS+b,EAAO/b,OACjB6b,EAAgB7b,KACjB6b,EAAgB7b,GAAU,IAE9B6b,EAAgB7b,GAAQlrB,KAAKinC,EAAOC,aACxC,IACJlB,GAAAA,EAAqB9e,QAAQ/mB,SAAQ,SAAAw9B,GACjC,IAAMwJ,EA3CF,WAA2B,IAA1B7c,EAAe/nB,UAAAhE,OAAA,QAAAnC,IAAAmG,UAAA,GAAAA,UAAA,GAAG,GAEzB0H,EAAMqgB,EAAMjjB,QAAO,SAAC4C,EAAKiH,GAE3B,OADAjH,EAAOiH,CAEX,GAAG,GACGhR,EAAS0K,EAAAA,EAAa6nB,WAAWxoB,EAAKqgB,EAAM/rB,QAClD,OAAO2B,EAAS0K,EAAAA,EAAaC,MAAM3K,EAAQ,IANrB,EAO1B,CAmC2BknC,CAAQL,EAAgBpJ,IACvCz9B,EAAOwH,EAAE1H,KAAKI,EAAET,MAChBO,EAAOoK,EAAEtK,KAAKmnC,GACdjnC,EAAOgnB,QAAQlnB,KAAK29B,GACpBz9B,EAAOgmC,cAAclmC,KAAKwqB,GAAAA,EAAamT,IACnC3V,EAAWmf,IACXnf,EAAWmf,EAEnB,IACOjnC,CACX,IAEA,MAAO,CAAE8G,KAAAA,EAAMghB,SAAAA,EACnB,GAAG,CAACse,EAAiBvc,IAEfhvB,GAAQP,EAAAA,EAAAA,UAAQ,kBAAMf,EAAAA,EAAAA,KAACqsC,GAAoB,CAAC7f,UAAWjf,GAAQ,GAAE,CAACA,IAExE,OACIvN,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,GAAWmuB,aAAc2c,EAAerrC,UAAU,oBAAmBC,UACzF5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAa+qC,GAAkClrC,UAC1EI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoBstC,sBAC7B1rC,UAAWA,GACXC,iBAAiB,sDAAqDP,SAAA,EAEtE5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,QAETF,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CAACC,aAAcsqC,EAAiClrC,SAAA,CAC9DN,GACDtB,EAAAA,EAAAA,KAAC4xB,GAAAA,EAAgB,CAACnE,QAAS,CAACoE,GAAAA,GAAOC,IAAKD,GAAAA,GAAOE,GAAIF,GAAAA,GAAOG,EAAGH,GAAAA,GAAOI,IAAKJ,GAAAA,GAAOK,OAChFlyB,EAAAA,EAAAA,KAAC01B,EAAiB,CACdhb,GAAG,0BACHib,MAAO,EACP3yB,KAAK,0kBAYrC,C,gBCrHO,SAAS6qC,GAAuBrtC,GAAyD,IAAtDgsB,EAAShsB,EAATgsB,UAAWF,EAAQ9rB,EAAR8rB,SAiC3Cya,EAHK,CA5Ba,CAChB94B,EAAGue,EAAU/kB,KAAI,SAAA8F,GAAI,OAAIA,EAAKU,CAAC,IAC/B4C,EAAG2b,EAAU/kB,KAAI,SAAA8F,GAAI,OAAIA,EAAKugC,SAAS,IACvCxlB,KAAM,gBACNpiB,KAAM,KACNwlB,UAAW,OACX1oB,KAAMwpB,EAAU/kB,KAAI,SAAA8F,GAAI,mBAAApI,OAAiBoI,EAAKugC,UAAS,QACvD1G,KAAM,CAAEjhC,MAAO4nC,GAAAA,EAAmBC,UAAWh8B,MAAO+7B,GAAAA,EAAmBE,YAAa3G,MAAO,UAC3Fv1B,OAAQ,CACJ6Z,KAAMmiB,GAAAA,EAAmBvB,WACzBx6B,MAAO+7B,GAAAA,EAAmBG,cAC1BC,OAAQ,YAGI,CAChBlgC,EAAGue,EAAU/kB,KAAI,SAAA8F,GAAI,OAAIA,EAAKU,CAAC,IAC/B4C,EAAG2b,EAAU/kB,KAAI,SAAA8F,GAAI,OAAIA,EAAK6gC,SAAS,IACvC9lB,KAAM,gBACNpiB,KAAM,KACNwlB,UAAW,OACX1oB,KAAMwpB,EAAU/kB,KAAI,SAAA8F,GAAI,mBAAApI,OAAiBoI,EAAK6gC,UAAS,QACvDhH,KAAM,CAAEjhC,MAAO4nC,GAAAA,EAAmBC,UAAWh8B,MAAO+7B,GAAAA,EAAmBM,YAAa/G,MAAO,UAC3Fv1B,OAAQ,CACJ6Z,KAAMmiB,GAAAA,EAAmBvB,WACzBx6B,MAAO+7B,GAAAA,EAAmBO,cAC1BH,OAAQ,aAqBdh8B,EAAS,CACXG,YAAY,EACZC,UAAU,EACVC,UAAW,UACXsc,OAAQif,GAAAA,EAAmBjf,OAC3Bkc,WAAW,EACXl/B,WAAYiiC,GAAAA,EAAmBjiC,WAC/B8G,MAAO,CACHQ,UAAU,EACVP,UAAWk7B,GAAAA,EAAmBriC,UAC9BqH,SAAUg7B,GAAAA,EAAmB1e,KAC7B9b,MAAO,QAEXJ,MAAO,CACH83B,UAAW8C,GAAAA,EAAmB9C,UAC9Bnf,mBAAmB,EACnBtY,cAAeu6B,GAAAA,EAAmBriC,UAClC4H,UAAWy6B,GAAAA,EAAmBriC,UAC9B6H,MAAO,SACPV,UAAWk7B,GAAAA,EAAmBriC,UAC9BqH,SAAUg7B,GAAAA,EAAmB1e,KAC7Bkf,UAAU,SACVz7B,MAnCU,WACd,IAAMg7B,EAAYthB,EAAU/kB,KAAI,SAAA8F,GAAI,OAAIA,EAAKugC,SAAS,IAChDM,EAAY5hB,EAAU/kB,KAAI,SAAA8F,GAAI,OAAIA,EAAK6gC,SAAS,IAChDI,EAAaV,EAAU3oC,OAAOipC,GACpC,GAAGI,EAAW1pC,OAAQ,CAClB,IAAMypB,EAAWvpB,KAAKwJ,IAAGovB,MAAR54B,MAAIgJ,EAAAA,EAAAA,GAAQwgC,IAG7B,MAAO,CAAC,EAFI16B,EAAAA,GAAW6lB,cAAcpL,EAAUwf,GAAAA,EAAmBU,yCAC9Dt9B,EAAAA,EAAayoB,cAAcrL,EAAUwf,GAAAA,EAAmBU,yCAEhE,CACA,MAAO,EACX,CAwBe5U,KAIf,OACI75B,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDC,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChC7T,MAAOosB,EACP/e,KAAMw5B,EACN50B,OAAQA,EACRwC,OAAQC,EAAAA,IAGpB,CAEAi5B,GAAwBzmC,aAAe,CACnCklB,SAAU,yBC3Fd,IAAMpqB,GAAY,sBAEX,SAASwsC,KACZ,IAAMX,GAAqBrtC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUmtC,kBAAkB,IAChFY,GAAsCjuC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAU+tC,mCAAmC,IAElHniB,GAAYzrB,EAAAA,EAAAA,UAAQ,kBAAMgtC,EAAmBtmC,KAAI,SAAA8F,GAAI,MAAK,CAC5DU,EAAG1B,IAAAA,IAAWgB,EAAKjB,MAAMU,OAAOyH,EAAAA,GAAUsY,qBAC1C+gB,UAAW38B,EAAAA,EAAaC,MAAM7D,EAAKugC,UAAW,GAC9CM,UAAWj9B,EAAAA,EAAaC,MAAM7D,EAAK6gC,UAAW,GACjD,GAAE,GAAE,CAACL,IAEAzsC,GAAQP,EAAAA,EAAAA,UAAQ,kBAAMf,EAAAA,EAAAA,KAAC6tC,GAAuB,CAACrhB,UAAWA,GAAa,GAAE,CAACA,IAChF,OACIxsB,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,GAAWP,UAAU,mBAAkBC,UAC3D5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAa4sC,GAAqC/sC,UAC7EI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoBsuC,sBAC7B1sC,UAAWA,GACXC,iBAAiB,+CAA8CP,SAAA,EAE/D5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,QAETF,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CAACC,aAAcmsC,EAAoC/sC,SAAA,CACrEN,GACDU,EAAAA,EAAAA,MAAA,OAAKL,UAAU,SAAQC,SAAA,EACnB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,oBAAmBC,SAAC,QACnC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,oBAAmBC,SAAC,WAEvC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,cAAaC,SAAC,yhBAarD,C,gBCpDaitC,GAA4B,WACrC,IAAMC,GAAapuC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUkuC,UAAU,IAChEC,GAA8BruC,EAAAA,EAAAA,KAChC,SAACuX,GAAW,OAAKA,EAAErX,UAAUmuC,2BAA2B,IAG5D,OACI/uC,EAAAA,EAAAA,KAACgvC,GAAAA,EAAgB,CAACC,KAAMH,EAAYtsC,aAAcusC,GAE1D,E,YCOM7sC,GAAY,iBAEX,SAASgtC,KACZ,IACMC,GAAezuC,EAAAA,EAAAA,IAAY0uC,IAC3BC,GAAiC3uC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyuC,8BAA8B,IACxGhf,GAAe3vB,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyvB,YAAY,IACpEif,GAAuB5uC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUuuC,cAAcI,OAAO,IAE3F5rC,GAA4BC,EAAAA,EAAAA,UAAS,iBAAgBC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA9C4F,EAAM1F,EAAA,GAAEme,EAASne,EAAA,GACxBI,GAA0CL,EAAAA,EAAAA,UAAS8F,EAAAA,GAAKmqB,MAAK3vB,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAAtDuF,EAAatF,EAAA,GAAE+d,EAAgB/d,EAAA,GAEtCwe,GAA0BC,EAAAA,EAAAA,IAAcwsB,EAAcI,QAAShmC,EAAQC,GAAhEoZ,GAA8E9e,EAAAA,EAAAA,GAAA4e,EAAA,GAA/D,GAEhByZ,EAAgB,SAAC/7B,EAAe2iB,GAClCf,EAAU5hB,GACV6hB,EAAiBc,EACrB,EAEM4oB,GAAc5qC,EAAAA,EAAAA,UAAQ,WACxB,OAAI+b,EAAAA,EAAAA,IAAiBuyB,KAAoCC,EAAqBxqC,QACnE9E,EAAAA,EAAAA,KAACoX,GAAAA,EAA0B,CAACpU,KAAK,yDAExC8Z,EAAAA,EAAAA,IAAiBuyB,KAAoCzsB,EAAgB9d,QAC9D9E,EAAAA,EAAAA,KAACoX,GAAAA,EAA0B,KAGlCpX,EAAAA,EAAAA,KAACkD,EAAAA,EAAU,CAACC,KAAMyf,EAAiBvf,YAxBvB,EAwBgDzB,SACvD,SAAC2T,GAA6B,OAC3BvV,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CAACI,UAAWvO,EAAOwO,QAASyrB,GAAsB7rB,OAAQwY,GAAiB,GAIjG,GAAG,CAACvZ,EAAiBysB,EAAgCC,EAAqBxqC,SAE1E,OACI9E,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,GAAWmuB,aAAcA,EAAc1uB,UAAU,+BAA8BC,UACnG5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAastC,GAAgCztC,UACxEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoBmvC,iBAC7BvtC,UAAWA,GACXC,iBAAiB,wCAAuCP,SAAA,EAExD5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClBI,EAAAA,EAAAA,MAAA,MAAAJ,SAAA,CACKM,IACDlC,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,OAAMC,SAAC,0BAG/B5B,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAc6sC,EACd5sC,aACIqa,EAAAA,EAAAA,IAAiBuyB,IAAmCzsB,EAAgB9d,OAC9D,wNACA,GACTlD,SAEI+pC,UAM7B,CAEA,IAAMyD,IAAwBtD,EAAAA,GAAAA,IAAe,CACzC,SAAC7zB,GAAW,OAAKA,EAAErX,UAAUuuC,aAAa,EAC1C,SAACl3B,GAAW,OAAKA,EAAErX,UAAUyK,OAAOilB,eAAe,EACnD,SAACrY,GAAW,OAAKA,EAAErX,UAAUyK,OAAOkhB,kBAAkB,IACvD,SACC4iB,EACA7e,EACA/D,GAEA,IAAIgjB,EAAUJ,EAAcI,QAO5B,OANIjf,EAAgBxrB,SAChByqC,EAAUA,EAAQlkC,QAAO,SAAA/E,GAAC,OAAIgqB,EAAgBtvB,MAAK,SAAAkjC,GAAC,OAAIA,IAAM59B,EAAEmrB,MAAM,GAAC,KAEvElF,EAAmBznB,SACnByqC,EAAUA,EAAQlkC,QAAO,SAAA/E,GAAC,OAAIimB,EAAmBvrB,MAAK,SAAA2a,GAAC,OAAIA,IAAMrV,EAAEib,QAAQ,GAAC,MAEhF5Z,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOwnC,GAAa,IAChBI,QAAAA,GAER,IAwFMC,GAtF6E,CAC/E,CACIrvB,UAAW,SACXC,0BAA2B,WAAF,MAAQ,QAAQ,EACzCC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOqC,MAAM,EAC5Ctc,gBAAiB,mBACjBC,cAAe,mBACfC,aAAc,SACd0B,YAAaC,EAAAA,GAAawa,QAC5B,CACE7c,UAAW,SACXC,0BAA2B,WAAF,MAAQ,KAAK,EACtCC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOnJ,MAAM,EAC5C9Q,gBAAiB,mBACjBC,cAAe,mBACfC,aAAc,SACd0B,YAAaC,EAAAA,GAAaiP,QAC5B,CACEtR,UAAW,aACXC,0BAA2B,WAAF,MAAQ,YAAY,EAC7CC,oBAAqB,SAAAua,GAAM,OAAIvZ,GAAAA,EAAY6X,cAAc0B,EAAO8U,UAAW,EAAE,EAC7E/uB,gBAAiB,mCACjBC,cAAe,mCACfC,aAAc,YACd0B,YAAaC,EAAAA,GAAa6O,QAC5B,CACElR,UAAW,aACXC,0BAA2B,WAAF,MAAQ,YAAY,EAC7CC,oBAAqB,SAAAua,GAAM,OAAIvZ,GAAAA,EAAY6X,cAAc0B,EAAO+U,UAAW,EAAE,EAC7EhvB,gBAAiB,mCACjBC,cAAe,mCACfC,aAAc,YACd0B,YAAaC,EAAAA,GAAa6O,QAC5B,CACElR,UAAW,aACXC,0BAA2B,WAAF,MAAQ,MAAM,EACvCC,oBAAqB,SAAAua,GAAM,OAAIvZ,GAAAA,EAAY6X,cAAc0B,EAAOgV,WAAY,EAAE,EAC9EjvB,gBAAiB,kCACjBC,cAAe,kCACfC,aAAc,aACd0B,YAAaC,EAAAA,GAAa6O,QAC5B,CACElR,UAAW,iBACXC,0BAA2B,WAAF,MAAQ,UAAU,EAC3CC,oBAAqB,SAAAua,GAAM,OAAIvZ,GAAAA,EAAY6X,cAAc0B,EAAOiV,cAAe,EAAE,EACjFlvB,gBAAiB,uCACjBC,cAAe,uCACfC,aAAc,gBACd0B,YAAaC,EAAAA,GAAa6O,QAC5B,CACElR,UAAW,YACXC,0BAA2B,WAAF,MAAQ,WAAW,EAC5CC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOkV,SAChCvU,EAAAA,EAAcC,iBAAiBZ,EAAOkV,SAAUr7B,EAAAA,GAAUsY,qBAAuBtY,EAAAA,GAAUgN,gBAAgB,EACjHd,gBAAiB,6BACjBC,cAAe,6BACfC,aAAc,WACd0B,YAAaC,EAAAA,GAAalW,MAC5B,CACE6T,UAAW,YACXC,0BAA2B,WAAF,MAAQ,WAAW,EAC5CC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOmV,SAChCxU,EAAAA,EAAcC,iBAAiBZ,EAAOmV,SAAUt7B,EAAAA,GAAUsY,qBAAuBtY,EAAAA,GAAUgN,gBAAgB,EACjHd,gBAAiB,6BACjBC,cAAe,6BACfC,aAAc,WACd0B,YAAaC,EAAAA,GAAalW,MAC5B,CACE6T,UAAW,YACXC,0BAA2B,WAAF,MAAQ,WAAW,EAC5CC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOoV,gBAAgB,EACtDrvB,gBAAiB,wCACjBC,cAAe,wCACfC,aAAc,mBACd0B,YAAaC,EAAAA,GAAa6O,QAC5B,CACElR,UAAW,iBACXC,0BAA2B,WAAF,MAAQ,gBAAgB,EACjDC,oBAAqB,SAAAua,GAAM,OAAIvZ,GAAAA,EAAY6X,cAAc0B,EAAOqV,cAAe,EAAE,EACjFtvB,gBAAiB,6CACjBC,cAAe,6CACfC,aAAc,gBACd0B,YAAaC,EAAAA,GAAa6O,SAI2B5pB,KAAI,SAAAkU,GAC7D,OAAO,IAAI+F,EAAAA,EAAc/F,EAC7B,I,sEClLO,SAASu0B,KACZ,IAAMr5B,GAAWC,EAAAA,EAAAA,MACXzL,GAAS3K,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,UAAUyK,MAAM,IAChE0hC,GAAmBrsC,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,UAAUmsC,gBAAgB,IAEpFoD,EAAiB,SAAC9kC,GACpB,IAAMilB,EAAkB8f,KAAI/kC,EAAQ0hC,EAAiBzc,iBACrDzZ,GAASw5B,EAAAA,EAAAA,MAA4B1oC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAChColC,GAAgB,IACnBzc,gBAAAA,KAER,EAEMggB,EAAmB,SAACjlC,GACtB,IAAMkhB,EAAqB6jB,KAAI/kC,EAAQ0hC,EAAiBxgB,oBACxD1V,GAASw5B,EAAAA,EAAAA,MAA4B1oC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAChColC,GAAgB,IACnBxgB,mBAAAA,KAER,EAWMgkB,EAAwBnD,KAAQL,EAAiBzc,gBAAiBjlB,EAAOilB,iBACzEkgB,EAA0BpD,KAAQL,EAAiBxgB,mBAAoBlhB,EAAOkhB,oBAEpF,OACIvsB,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,aAAYC,UACvB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,wBAAuBC,UAClCI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,6CAA4CC,SAAA,EACvD5B,EAAAA,EAAAA,KAACugB,GAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBmwC,sBAAsB7uC,UAC9D5B,EAAAA,EAAAA,KAAC6H,GAAAA,EAAY,CACT1H,MAAM,MACNuwC,UAAU,EACV5oC,WAAYslC,KAAQ/hC,EAAOilB,gBAAiB,KAAOigB,EACnDvoC,QAAS+7B,GAAAA,GAAQt8B,KAAI,SAAAwG,GAAC,MAAK,CACvBjL,KAAMiL,EACN5M,MAAO4M,EACPlG,SACIglC,EAAiBzc,gBAAgBtvB,MAAK,SAAA2tB,GAAE,OAAIA,IAAO1gB,CAAC,IAExDrG,SAAS,EACT7B,UAAU,EACb,IAED2C,sBAAuB,SAAA67B,GAAI,OAAI4L,EAAe,CAAC5L,EAAKljC,OAAO,EAC3DkH,WAAY,WAAF,OAAQ4nC,EAAepD,EAAiBzc,gBAAgB,EAClEroB,YAAa,WAAF,OAAQkoC,EAAepM,GAAAA,GAAQ,OAGlD/jC,EAAAA,EAAAA,KAACugB,GAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBmwC,sBAAsB7uC,UAC9D5B,EAAAA,EAAAA,KAAC6H,GAAAA,EAAY,CACT1H,MAAM,MACNuwC,UAAU,EACV5oC,WAAYslC,KAAQ/hC,EAAOkhB,mBAAoB,KAAOikB,EACtDxoC,QAASs7B,GAAAA,EAAW77B,KAAI,SAAAwG,GAAC,MAAK,CAC1BjL,KAAMiL,EACN5M,MAAO4M,EACPlG,SACIglC,EAAiBxgB,mBAAmBvrB,MAAK,SAAA2tB,GAAE,OAAIA,IAAO1gB,CAAC,IAE3DrG,SAAS,EACT7B,UAAU,EACb,IAED2C,sBAAuB,SAAA67B,GAAI,OAAI+L,EAAiB,CAAC/L,EAAKljC,OAAO,EAC7DkH,WAAY,WAAF,OAAQ+nC,EAAiBvD,EAAiBxgB,mBAAiC,EACrFtkB,YAAa,WAAF,OAAQqoC,EAAiBhN,GAAAA,EAAW,OAGvDtjC,EAAAA,EAAAA,KAACugB,GAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBmwC,sBAAsB7uC,UAC9D5B,EAAAA,EAAAA,KAACuZ,GAAAA,EAAa,CAAC5X,UAAU,sBAAsBmE,QArD/C,WAChB+Q,GAAS85B,EAAAA,EAAAA,KAAmB5D,GAChC,EAmDyFhnC,SAjDtDqnC,KAAQL,EAAkB1hC,GAiD4DzJ,SAAC,aAI1G5B,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAACC,QAAQ,2IAA0I1X,UAC9J5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,OAAOC,MAAO,GAAIC,OAAQ,QAE5CpG,EAAAA,EAAAA,KAAC4wC,EAAAA,GAAW,CAACC,WAAY9D,EAAiBzc,gBAAgBxrB,SAAUioC,EAAiBxgB,mBAAmBznB,QAASgB,QAhE1G,WACnB+Q,GAASi6B,EAAAA,EAAAA,OACb,UAmEJ,C,4EC/FaC,GAA6B,SAAHvwC,GAA4B,IAAtB8rB,EAAQ9rB,EAAR8rB,SAAU/e,EAAI/M,EAAJ+M,KAC7C20B,EAAQ30B,EAAK9F,KAAI,SAAA8S,GAAC,OAAIA,EAAEjO,IAAI,IAE5B0kC,EAAQ,CACV/iC,EAAGi0B,EACHrxB,EAAGtD,EAAK9F,KAAI,SAAA8S,GAAC,OAAIA,EAAElZ,KAAK,IACxBqqB,UAAW,OACXpD,KAAM,QACN1W,KAAM,UACN1L,KAAM,cACN6L,OAAQk/B,GAAAA,EAAWC,aAGjBC,EAAgB,CAClBljC,EAAGi0B,EACHrxB,EAAGtD,EAAK9F,KAAI,kBAAM,CAAC,IACnB6gB,KAAM,QACN1W,KAAM,UACN1L,KAAM,wBACNwlB,UAAW,OACX0b,KAAM,CAAEC,KAAM,MAAOlhC,MAAO,EAAG6L,MAAOi/B,GAAAA,EAAWz9B,gBAG/CV,GAAQ/R,EAAAA,EAAAA,UAAQ,eAAAqwC,EAAAC,EAAA,MAAM,CACxBrsC,KAAKssC,OAAiC,QAA3BF,GAAAG,EAAAA,EAAAA,OAAMhkC,GAAM,SAACgN,GAAC,OAAKA,EAAElZ,KAAK,WAAC,IAAA+vC,OAAA,EAA3BA,EAA6B/vC,QAAS,GACjD2D,KAAKC,MAAgC,QAA3BosC,GAAAG,EAAAA,EAAAA,OAAMjkC,GAAM,SAACgN,GAAC,OAAKA,EAAElZ,KAAK,WAAC,IAAAgwC,OAAA,EAA3BA,EAA6BhwC,QAAS,GACnD,GAAE,CAACkM,IAEEkkC,EAAczsC,KAAK2iC,IAAI70B,EAAM,IAAM9N,KAAK2iC,IAAI70B,EAAM,IAClD4+B,GAAiBD,GAAe3+B,EAAM,GAAK,IAAM2+B,EACjDE,EAAiB3sC,KAAK2iC,IAAI70B,EAAM,GAAK,GAAK2+B,EAE1Ct/B,EAAS,CACXkd,KAAM4hB,GAAAA,EAAWlG,WACjBz4B,YAAY,EACZC,UAAU,EACVC,UAAW,UACXsc,OAAQmiB,GAAAA,EAAWniB,OACnBkc,WAAW,EACXl/B,WAAYmlC,GAAAA,EAAWnlC,WACvB8G,MAAO,CACHhB,KAAM,OACNwB,UAAU,EACVP,UAAWo+B,GAAAA,EAAWvlC,UACtBqH,SAAUk+B,GAAAA,EAAWtlC,SACrBmH,MAAO,CAACvG,MAAS0C,SAAS,EAAG,QAAQsF,SAAUhI,MAASgI,UACxD5J,WAAYsmC,GAAAA,EAAWW,gBACvBhnC,MAAOqmC,GAAAA,EAAWY,YAKtB1+B,MAAO,CACH83B,UAAWgG,GAAAA,EAAWhG,UACtB33B,UAAW29B,GAAAA,EAAWvlC,UACtBmH,UAAWo+B,GAAAA,EAAWvlC,UACtBqH,SAAUk+B,GAAAA,EAAWtlC,SACrBf,MAAOqmC,GAAAA,EAAWa,WAClBh/B,MAAAA,EACAgW,UAAU,EACV1V,UAAU,GAGd62B,OAAQ,CACJ,CACI8H,MAAO,QACP3P,KAAM,QACNC,KAAM,QACN6H,GAAI,EACJG,GAAI,EACJF,GAAIuH,EACJpH,GAAI,EACJ14B,KAAM,OACN6Z,UAAW,UACX2b,KAAM,CACFjhC,MAAO,IAGf,CACI4rC,MAAO,QACP3P,KAAM,QACNC,KAAM,QACN6H,GAAI,EACJG,GAAI,EACJF,GAAIwH,EACJrH,GAAIoH,EACJ9/B,KAAM,OACN6Z,UAAW,UACX2b,KAAM,CACFjhC,MAAO,IAGf,CACI4rC,MAAO,QACP3P,KAAM,QACNC,KAAM,QACN6H,GAAI,EACJG,GAAI,EACJF,GAAI,EACJG,GAAIqH,EACJ//B,KAAM,OACN6Z,UAAW,UACX2b,KAAM,CACFjhC,MAAO,MAMvB,OACInG,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACD1T,MAAOosB,EACP/e,KAAM,CAACyjC,EAAOG,GACdh/B,OAAQA,EACRwC,OAAQC,EAAAA,IAGpB,EAEAm8B,GAAgB3pC,aAAe,CAC3BklB,SAAU,qBC3Hd,IAAMnsB,GAAQ,cAED6xC,GAAuB,WACjC,IAAMC,GAAiBvxC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUqwC,UAAU,IACpEiB,GAA8BxxC,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUsxC,2BAA2B,IAEvG,OACIlyC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAOA,GAAOwB,UAAU,cAAaC,UAClDI,EAAAA,EAAAA,MAACH,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAamwC,GAA6BtwC,SAAA,EACrE5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKzB,QAET6B,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CAACC,aAAc0vC,EAA4BtwC,SAAA,EAC9D5B,EAAAA,EAAAA,KAAC+wC,GAAe,CAACxjC,KAAM0kC,KACvBjyC,EAAAA,EAAAA,KAAC01B,EAAiB,CACdhb,GAAG,yBACHib,MAAO,EACP3yB,KAAK,0uBAS7B,E,mFC2HO,IAAMmvC,IAAYC,EAAAA,EAAAA,IAjHzB,SAA2B5xC,GAAgB,IAAb6xC,EAAQ7xC,EAAR6xC,SACpBx7B,GAAWC,EAAAA,EAAAA,MACX2V,GAAUC,EAAAA,EAAAA,MAEV4lB,GAAgB1F,EAAAA,EAAAA,QAAO,MACvB2F,GAA4B7xC,EAAAA,EAAAA,KAAY,SAACuX,GAAC,OAAKA,EAAErX,UAAU2xC,yBAAyB,IACpFliB,GAAe3vB,EAAAA,EAAAA,KAAY,SAACuX,GAAC,OAAKA,EAAErX,UAAUyvB,YAAY,KAEhEpM,EAAAA,GAAAA,IAAkB,IAElBlf,EAAAA,EAAAA,YAAU,WAGN,OAFA8R,GAAS27B,EAAAA,EAAAA,OAEF,WACH37B,EAAS47B,EAAAA,IAAwB11B,SACjClG,GAAS67B,EAAAA,EAAAA,MACb,CACJ,GAAG,CAAC77B,KAEJ9R,EAAAA,EAAAA,YAAU,WAAO,IAAD4tC,EACS,QAArBA,EAAAL,EAAc76B,eAAO,IAAAk7B,GAArBA,EAAuBC,eAAe,CAAEC,SAAU,UACtD,GAAG,IAEH,IAAMC,EAAe,SAACC,GAClB,GAAIA,KAAWC,EAAAA,EAAAA,MAAKX,EAASY,KAAM,KAC/B,OAAOX,CAIf,EAEMY,EAA4B,WAAH,OAASzmB,EAAQlmB,KAAK0Y,EAAAA,GAAOk0B,YAAY,EAExE,OACInxC,EAAAA,EAAAA,MAAA,OAAKL,UAAU,gCAA+BC,SAAA,EAC1C5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,6BAA4BC,UACvC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,iCAAgCC,UAC3C5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAI,mBAGZ5B,EAAAA,EAAAA,KAACkwC,GAAM,KACPlwC,EAAAA,EAAAA,KAAA,OAAK2B,UAAWsE,IAAW,YAAa,CAAEmtC,SAAU/iB,IAAgBzuB,UAChE5B,EAAAA,EAAAA,KAACyf,EAAAA,EAAS,CAAC3d,aAAagb,EAAAA,EAAAA,IAAiBy1B,GAA2B3wC,UAE5Dkb,EAAAA,EAAAA,IAAiBy1B,KACjBvwC,EAAAA,EAAAA,MAACqxC,GAAAA,GAA4B,CAACrrC,QAAS,CAAEsrC,UAAW,GAAI1xC,SAAA,EACpD5B,EAAAA,EAAAA,KAAA,MAAIuzC,IAAKT,EAAa,0BAA0BlxC,SAAC,0BACjDI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,yBAAwBC,SAAA,EACnC5B,EAAAA,EAAAA,KAAC+vB,EAAAA,EAAuB,KACxB/vB,EAAAA,EAAAA,KAACwzC,EAAAA,EAA2B,KAC5BxzC,EAAAA,EAAAA,KAACyzC,GAAAA,EAAgB,KACjBzzC,EAAAA,EAAAA,KAAC0zC,GAAAA,EAAuB,KACxB1zC,EAAAA,EAAAA,KAACkvC,GAAmB,KACpBlvC,EAAAA,EAAAA,KAACsrC,GAAuB,KACxBtrC,EAAAA,EAAAA,KAACspC,GAAa,KACdtpC,EAAAA,EAAAA,KAAC6nC,GAAsB,KACvB7nC,EAAAA,EAAAA,KAAC0uC,GAAwB,KACzB1uC,EAAAA,EAAAA,KAAC6uC,GAAyB,QAG9B7uC,EAAAA,EAAAA,KAAA,MAAA4B,SAAI,8BACJI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,yBAAwBC,SAAA,EACnC5B,EAAAA,EAAAA,KAACgyC,GAAgB,KACjBhyC,EAAAA,EAAAA,KAACkrC,GAAmB,KACpBlrC,EAAAA,EAAAA,KAAC85B,EAAY,KACb95B,EAAAA,EAAAA,KAAC0iC,GAAc,KACf1iC,EAAAA,EAAAA,KAACmlC,GAAgB,KACjBnlC,EAAAA,EAAAA,KAAC0sC,GAAqB,QAG1B1qC,EAAAA,EAAAA,MAACU,EAAAA,EAAO,CAACwW,MAAOA,EAAAA,GAAMy6B,wBAAwB/xC,SAAA,EAC1C5B,EAAAA,EAAAA,KAAA,MAAIuzC,IAAKT,EAAa,oBAAoBlxC,SAAC,sBAC3CI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,yBAAwBC,SAAA,EACnC5B,EAAAA,EAAAA,KAAC4zC,GAAAA,EAA4B,KAC7B5zC,EAAAA,EAAAA,KAAC6zC,GAAAA,EAAgB,CAAC1yB,gBAAiB+xB,QAEvClxC,EAAAA,EAAAA,MAAA,OAAKL,UAAU,yBAAwBC,SAAA,EACnC5B,EAAAA,EAAAA,KAAC8zC,GAAAA,EAAoB,CAACC,YAAU,KAChC/zC,EAAAA,EAAAA,KAACg0C,GAAAA,EAAkB,QAEvBhyC,EAAAA,EAAAA,MAAA,OAAKL,UAAU,yBAAwBC,SAAA,EACnC5B,EAAAA,EAAAA,KAACk1B,GAAAA,EAAsB,KACvBl1B,EAAAA,EAAAA,KAACmzB,GAAAA,EAAiB,QAEtBnxB,EAAAA,EAAAA,MAAA,OAAKL,UAAU,yBAAwBC,SAAA,EACnC5B,EAAAA,EAAAA,KAACwpB,GAAAA,EAA2B,KAC5BxpB,EAAAA,EAAAA,KAAC6hB,GAAAA,EAAc,CAACV,gBAAiB+xB,QAErClxC,EAAAA,EAAAA,MAAA,OAAKL,UAAU,yBAAwBC,SAAA,EACnC5B,EAAAA,EAAAA,KAAC2V,GAAAA,EAAyB,CACtBK,UAAWi+B,EAAAA,GAAwBt9B,oBAAoBu9B,sBAE3Dl0C,EAAAA,EAAAA,KAACm0C,GAAAA,EAAa,CAAChzB,gBAAiB+xB,QAEpClzC,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,yBAAwBC,UACnC5B,EAAAA,EAAAA,KAACisB,GAAAA,EAA0B,UAInCjsB,EAAAA,EAAAA,KAAA,MAAIuzC,IAAKT,EAAa,gBAAgBlxC,SAAC,kBACvCI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,yBAAwBC,SAAA,EACnC5B,EAAAA,EAAAA,KAAC2gC,GAAe,KAChB3gC,EAAAA,EAAAA,KAACw9B,GAAsB,KACvBx9B,EAAAA,EAAAA,KAACq2B,EAAuB,gBAQxD,G,sQCzCa+d,EAhGP,CACF,CACIj0B,UAAWtW,EAAAA,EAAqBK,SAChCkW,0BAA2B,WAAF,MAAQ,WAAW,EAC5CC,oBAAqB,SAACC,GAAW,OAC7BtgB,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBkgB,0BAA0B5e,SACjE,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAACC,QAASgH,EAAYG,cAAe1a,SAAUqT,EAAQxX,UAClE5B,EAAAA,EAAAA,KAAC0gB,EAAAA,EAAgB,CAACJ,YAAaA,EAAava,SAAUqT,KACzC,GAET,EAEpBuH,gBAAiB,6BACjBC,cAAe,6BACfC,aAAc,iBAElB,CACIV,UAAWtW,EAAAA,EAAqBiX,oBAChCV,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAF7f,EAA4EugB,GAAO,IAA9EN,EAAajgB,EAAbigB,cAAeO,EAAiBxgB,EAAjBwgB,kBAAoD,OAAAxgB,EAAjCygB,kCAClB,IAChCjhB,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBkgB,0BAA0B5e,SACjE,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACkhB,EAAAA,EAA6B,CAC1BT,cAAeA,EACfO,kBAAmBA,EACnBlb,QAASib,EAAQI,gBACjBpb,SAAUqT,GACZ,GAEM,EACxBuH,gBAAiB,sBACjBC,cAAe,uBAEnB,CACIT,UAAWtW,EAAAA,EAAqBwqC,kBAChCj0B,0BAA2B,WAAF,MAAQ,SAAS,EAC1CC,oBAAqB,SAAFrU,EAA0B+U,GAAO,IAA5BszB,EAAiBroC,EAAjBqoC,kBAAiB,OACrCA,GACIr0C,EAAAA,EAAAA,KAACs0C,EAAAA,EAAW,CACR1hB,cAAeyhB,EAAkBzhB,cACjCJ,UAAW6hB,EAAkB7hB,YAEjC/d,EAAAA,GAAUgN,gBAAgB,EAClCd,gBAAiB,6BACjBC,cAAe,6BACfC,aAAc,qBAElB,CACIV,UAAWtW,EAAAA,EAAqB4oB,aAChCrS,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAFzR,EAA0BmS,GAAO,IAA5BszB,EAAiBzlC,EAAjBylC,kBAAiB,OACrCA,IACIr0C,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBkgB,0BAA0B5e,SACjE,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAAC2yB,EAAAA,EAAc,CACXC,cAAeyhB,EAAkBzhB,cACjCJ,UAAW6hB,EAAkB7hB,UAC7BnnB,OAAQwnB,EAAAA,EAAe0hB,OACvBzuC,QAASib,EAAQI,gBACjB4R,QAAQ,kCACRhtB,SAAUqT,GACZ,GAEM,EACxBuH,gBAAiB,sBACjBC,cAAe,uBAEnB,CACIT,UAAWtW,EAAAA,EAAqBuX,eAChChB,0BAA2B,WAAF,MAAQ,SAAS,EAC1CC,oBAAqB,SAAF5P,GAAA,IAAK2Q,EAAc3Q,EAAd2Q,eAAc,OAClCC,EAAAA,GAAYC,qBAAqBF,EAAe,EACpDP,aAAc,iBACdF,gBAAiB,oBACjBC,cAAe,qBAEnB,CACIT,UAAWtW,EAAAA,EAAqB0X,SAChCnB,0BAA2B,WAAF,MAAQ,KAAK,EACtCC,oBAAqB,SAAF3P,GAAA,IAAK6Q,EAAQ7Q,EAAR6Q,SAAQ,OAAOA,EAAWA,EAASC,KAAO/M,EAAAA,GAAUgN,gBAAgB,EAC5FZ,aAAc,WACdF,gBAAiB,wBACjBC,cAAe,yBAEnB,CACIT,UAAWtW,EAAAA,EAAqB2qC,YAChCp0B,0BAA2B,WAAF,MAAQ,cAAc,EAC/CC,oBAAqB,SAAFhP,GAAA,IAAKmjC,EAAWnjC,EAAXmjC,YAAW,OAC/BjoC,IAAOioC,GAAaxnC,OAAOyH,EAAAA,GAAU4zB,WAAW,EACpD1nB,gBAAiB,oBACjBC,cAAe,oBACfC,aAAc,gBAGoCpZ,KAAI,SAACkU,GAC3D,OAAO,IAAI+F,EAAAA,EAAc/F,EAC7B,I,kICzFMgG,GAA2B/Y,EAAAA,EAAAA,IAAkBG,EAAAA,GAAsB6Y,cAEnE6yB,EAAc,SAAC7iC,GACjB,OAAQA,GACJ,IAAK,oBACD,OAAO4Q,EAAAA,GAAa1Y,QACxB,IAAK,WACD,OAAO0Y,EAAAA,GAAaC,oBACxB,QACI,MAAO,GAEnB,EAMO,SAAS0xB,EAAa3zC,GAA8B,IAA3B2gB,EAAe3gB,EAAf2gB,gBAC5Bxd,GAAwBC,EAAAA,EAAAA,UAA6B+d,EAAe,IAAG9d,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAhEsI,EAAIpI,EAAA,GAAEie,EAAOje,EAAA,GACpBI,GAAwBL,EAAAA,EAAAA,UAAS,GAAEM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA5ByB,EAAIxB,EAAA,GAAE6d,EAAO7d,EAAA,GACpBG,GAA4BT,EAAAA,EAAAA,UAAS,IAAGU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAjCkF,EAAMjF,EAAA,GAAE0d,EAAS1d,EAAA,GACxBG,GAA0Cb,EAAAA,EAAAA,UAAS8F,EAAAA,GAAKC,KAAIjF,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAArD+E,EAAa9E,EAAA,GAAEud,EAAgBvd,EAAA,GAEhCgwC,GAAgBh0C,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAU8zC,aAAa,IACtEC,GAAiCj0C,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAU+zC,8BAA8B,IACxGC,GAAkCl0C,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUg0C,+BAA+B,IAE1G79B,GAAYC,EAAAA,EAAAA,IAAiB1W,EAAAA,EAAoBu0C,oBAEjDh+B,GAAWC,EAAAA,EAAAA,OAEjB/R,EAAAA,EAAAA,YAAU,WACNgS,GAAaF,GAASi+B,EAAAA,EAAAA,IAA4BvoC,MAASN,QAC/D,GAAG,CAAC4K,EAAUE,IAEd,IAAM8L,EAAgB,WAClB,MAAO,CACH1B,gBAAiBA,EAEzB,EAEM4zB,EAAaN,EAAYlrC,GAC/BmZ,GAA0BC,EAAAA,EAAAA,IAAc+xB,EAAenrC,EAAQC,EAAeurC,GAAvEnyB,GAAkF9e,EAAAA,EAAAA,GAAA4e,EAAA,GAAnE,GAEhBI,EAAmB,SAAC1iB,EAAe2iB,GACrCf,EAAU5hB,GACV6hB,EAAiBc,EACrB,EAeMzf,EAAgB,SAACS,GAAoB,OAAKge,EAAQhe,EAAc,EAiChE7B,EAAY,iBAElB,OACIlC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,EAAWP,UAAU,cAAaC,UACtD5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAa4yC,GAAgC/yC,UACxEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoBu0C,mBAC7B3yC,UAAWA,EACXC,iBAAiB,uCAAsCP,SAAA,EAEvDI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAAAV,SAAA,EAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,KACLF,EAAAA,EAAAA,MAACU,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoBu0C,mBAAmBjzC,SAAA,EACrD5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,kBAAiBC,UAC5B5B,EAAAA,EAAAA,KAACgjB,EAAAA,EAAc,CACXC,cAAclhB,EAAAA,EAAAA,IAAa6yC,GAC3B1xB,aAzDN,WAAH,OACnBrM,GACIm+B,EAAAA,EAAAA,IACI/oC,GACAjC,EAAAA,EAAAA,IAAmCT,EAAQC,IAEjD,EAoD0BzD,UAAW2uC,EAAc5vC,YAGjC9E,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,8BAA6BC,UACxC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACojB,EAAAA,EAAY,CACTC,MAAO1B,EACP2B,aAAcrX,EACdsX,kBAAkB,MAClBpc,SAxEX,SAACqc,GACtB1B,EAAQ0B,GACR3M,GAASi+B,EAAAA,EAAAA,IAA4BtxB,GACzC,EAsEoCvc,OAAO,SACPwc,eAAa,eAMjCzjB,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAcmyC,EACdlyC,YACmB,OAAfmgB,QAAe,IAAfA,GAAAA,EAAiB9d,OACX,uEACA,GACTlD,SAEAghB,EAAgB9d,OAxEjC8d,EAAgB9d,OAASiE,EAAAA,GAAsB1F,aAC3CrD,EAAAA,EAAAA,KAACkD,EAAAA,EAAU,CACPC,KAAMyf,EACNvf,YAAa0F,EAAAA,GAAsB1F,YACnCG,YAAakC,EACbpC,cAAeA,EAAc1B,SAE5B,SAAC2T,GAA4C,OAC1CvV,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFE,cAAera,EACfsa,uBAAwBra,EACxBsa,UAAWvO,EACXwO,QAASqwB,EACTpwB,yBAA0BnB,EAC1BlhB,UAAU,qBACZ,KAIV3B,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFC,OAAQb,EACRc,cAAera,EACfsa,uBAAwBra,EACxBsa,UAAWlB,EACXmB,QAASqwB,EACTpwB,yBAA0BnB,EAC1BlhB,UAAU,uBA8CwC3B,EAAAA,EAAAA,KAACoX,EAAAA,EAA0B,YAM7F,C,2FCxKaA,EAA6B,SAAH5W,GAAA,IAAAy0C,EAAAz0C,EAAMwC,KAAAA,OAAI,IAAAiyC,EAAG,iDAAgDA,EAAA,OAChGj1C,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,aAAYC,UACvB5B,EAAAA,EAAAA,KAAC4C,EAAAA,EAAe,CACZC,QAAQ,WACRC,SAAU,IACVC,UAAW,IACXC,KAAMA,KAER,C,mLCFGkyC,EAAwC,SAAH10C,GAAkB,IAAZgX,EAAIhX,EAAJgX,KACpD,OACIxV,EAAAA,EAAAA,MAAA,OAAKL,UAAU,+BAA8BC,SAAA,EACzCI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,2BAA0BC,SAAA,EACrC5B,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAACC,QAAQ,SAAQ1X,UAC5B5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,qBAEpB3B,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAACC,QAAO,GAAAnU,OAAKqS,EAAKG,UAAS,KAAAxS,OAAIqS,EAAKI,UAAWhW,UAC1DI,EAAAA,EAAAA,MAAA,QAAML,UAAU,oCAAmCC,SAAA,CAAE4V,EAAKG,UAAU,IAAEH,EAAKI,kBAGnF5X,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4BAA2BC,UACtC5B,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAAC8lB,aAAa,QAAQ7lB,QAAS9B,EAAKrX,QAAUsU,EAAAA,GAAUgN,iBAAmB,KAAOjK,EAAKrX,MAAMyB,UACxG5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,oCAAmCC,SAAE4V,EAAKrX,OAASsU,EAAAA,GAAUgN,wBAGrFzhB,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4BAA2BC,UACtC5B,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAACC,QAAS9B,EAAK6H,MAAMzd,UAChC5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,qCAAoCC,UAC/C5B,EAAAA,EAAAA,KAAA,KAAGm1C,KAAI,UAAAhwC,OAAYqS,EAAK6H,OAAQzd,SAAE4V,EAAK6H,SAAc5K,EAAAA,GAAUgN,wBAI5EzhB,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4BAA2BC,SAAE4V,EAAK8H,OAAS7K,EAAAA,GAAUgN,qBAGhF,E,2CCjBa2zB,EAAwC,SAAH50C,GAY5C,IAAD60C,EAAA70C,EAVG80C,eAAAA,OAAc,IAAAD,GAAQA,EACtBE,EAAO/0C,EAAP+0C,QAAOx8B,EAAAvY,EACPuF,SAAAA,OAAQ,IAAAgT,GAAQA,EAChBy8B,EAAah1C,EAAbg1C,cACAC,EAAej1C,EAAfi1C,gBACAC,EAAMl1C,EAANk1C,OACAC,EAAUn1C,EAAVm1C,WACAC,EAAUp1C,EAAVo1C,WACAr4B,EAAc/c,EAAd+c,eAiBJ,OACIvd,EAAAA,EAAAA,KAAC61C,EAAAA,GAAW,CACR9vC,SAAUA,EACV+vC,uBACI91C,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,WAAUC,UACtB5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,OAAOC,MAAO,GAAIC,OAAQ,OAGhD2vC,WAAW,IAAIC,EAAAA,GACVC,SAAQ,kBAAMX,CAAc,GAAE,CAC3BtyC,KAAM,eACNkzC,OAzBU,WACtBV,GAAiBA,GACrB,IAyBaS,SAAQ,kBAAO14B,CAAc,GAAE,CAC5Bva,KAAM,iBACNmzC,cAAe,CAACj9B,EAAAA,GAAMC,cACtB+8B,OAtBW,WAClBX,GACDG,GAER,IAoBaO,SAAQ,kBAAMX,CAAc,GAAE,CAC3BtyC,KAAM,iBACNkzC,OA9BY,WACxBT,GAAmBA,GACvB,IA8BahvC,SAEL2vC,OAAQT,EACRU,OAAQT,GAGpB,E,WCzDaU,EAA8C,SAAH91C,GAA2C,IAArCua,EAAOva,EAAPua,QAAS8E,EAAoBrf,EAApBqf,qBAC7DhJ,GAAWC,EAAAA,EAAAA,MACjBy/B,EAA4BC,EAAAA,UAAe,GAAMC,GAAA3yC,EAAAA,EAAAA,GAAAyyC,EAAA,GAA1C17B,EAAM47B,EAAA,GAAEC,EAASD,EAAA,GAClBE,GAAmBj2C,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMi2C,SAASD,iBAAiBphC,KAAK,IACzFshC,GAAkBn2C,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAM8b,WAAWo6B,gBAAgB97B,OAAO,IAC3F+7B,GAA4Bp2C,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAM8b,WAAWq6B,yBAAyB,IAevGC,EAAWC,EAAAA,GAAUC,YAAYl8B,EAAQpD,UAAWoD,EAAQnD,UAElE,OACI5V,EAAAA,EAAAA,MAAA,OAAKL,UAAWu1C,IAAG,+BAAgC,CAAE,QAAyB,OAAfL,QAAe,IAAfA,OAAe,EAAfA,EAAiBn8B,MAAOK,EAAQL,IAAMG,IAAUjZ,SAAA,EAC3GI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,2BAA0BC,SAAA,CACpCmZ,EAAQwC,iBACLvd,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAACC,QAAQ,cAAa1X,UAAC5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,0BAE1D3B,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAACC,QAAUy9B,IAAatiC,EAAAA,GAAUgN,iBAAoB,KAAOs1B,EAASn1C,UACjF5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,oCAAmCC,SAAEm1C,UAG7D/2C,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4BAA2BC,UACtC5B,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAAC8lB,aAAa,QAAQ7lB,QAASyB,EAAQqE,KAAKxd,UACvD5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,oCAAmCC,SAAEmZ,EAAQqE,MAAQ3K,EAAAA,GAAUgN,wBAGvFzhB,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4BAA2BC,UACtC5B,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAACC,QAASyB,EAAQsE,MAAMzd,UACnC5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,qCAAoCC,UAAE5B,EAAAA,EAAAA,KAAA,KAAGm1C,KAAI,UAAAhwC,OAAY4V,EAAQsE,OAAQzd,SAAEmZ,EAAQsE,SAAc5K,EAAAA,GAAUgN,wBAGnIzhB,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4BAA2BC,SAAEmZ,EAAQuE,OAAS7K,EAAAA,GAAUgN,mBAEnE5B,IACA7f,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,kBAAiBC,UAC5B5B,EAAAA,EAAAA,KAACo1C,EAAoB,CACjBI,cAxCM,WAAO,IAAD2B,EACtBC,GAA8E,QAAjED,EAAAR,EAAiB5oC,MAAK,SAAAoP,GAAM,OAAIA,EAAOzC,MAAc,OAAPK,QAAO,IAAPA,OAAO,EAAPA,EAASC,UAAS,WAAC,IAAAm8B,OAAA,EAAjEA,EAAmEjxC,OAAQ,GAC9F2Q,EAASmG,EAAAA,EAAkBmC,oBAAkBxX,EAAAA,EAAAA,GAAC,CAAC,EAAIoT,GAAWq8B,GAClE,EAsCoB3B,gBApCQ,WACxB5+B,EAASmG,EAAAA,EAAkBq6B,cAAct8B,EAAQL,IACrD,EAmCoB46B,gBAAiBv6B,EAAQwE,SACzBm2B,OAlCW,WAC3B7+B,EAASmG,EAAAA,EAAkBs6B,oBAAoBv8B,EAAQL,IAC3D,EAiCoB66B,QAASuB,GAAiC,OAAP/7B,QAAO,IAAPA,OAAO,EAAPA,EAASL,KAAM,GAClDi7B,WAAY,WAAF,OAAQe,GAAU,EAAK,EACjCd,WAAY,WAAF,OAAQc,GAAU,EAAM,EAClCn5B,eAAgBxC,EAAQwC,qBAMhD,EC3Dag6B,EAA0D,SAAH/2C,GAA0C,IAApC2c,EAAM3c,EAAN2c,OAAQ0C,EAAoBrf,EAApBqf,qBACxEhJ,GAAWC,EAAAA,EAAAA,MACjBy/B,EAA4BC,EAAAA,UAAe,GAAMC,GAAA3yC,EAAAA,EAAAA,GAAAyyC,EAAA,GAA1C17B,EAAM47B,EAAA,GAAEC,EAASD,EAAA,GAElBK,GAA4Bp2C,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAM8b,WAAWq6B,yBAAyB,IAMvGC,EAAWC,EAAAA,GAAUC,YAAkB,OAAN95B,QAAM,IAANA,OAAM,EAANA,EAAQS,cAAcjG,UAAiB,OAANwF,QAAM,IAANA,OAAM,EAANA,EAAQS,cAAchG,UAE9F,OACI5V,EAAAA,EAAAA,MAAA,OAAKL,UAAWu1C,IAAG,+BAAgC,CAAEr8B,OAAAA,IAAUjZ,SAAA,EAC3D5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,2BAA0BC,UACrC5B,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAACC,QAAUy9B,IAAatiC,EAAAA,GAAUgN,iBAAoB,KAAOs1B,EAASn1C,UACjF5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,oCAAmCC,SAAEm1C,SAG7D/0C,EAAAA,EAAAA,MAAA,OAAKL,UAAU,4BAA2BC,SAAA,EACtC5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,gBAAgBC,MAAO,GAAIC,OAAQ,KAAM,sBAE3DpG,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4BAA2BC,UACtC5B,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAACC,QAAe,OAAN6D,QAAM,IAANA,OAAM,EAANA,EAAQS,cAAcyB,MAAMzd,UACjD5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,qCAAoCC,UAChD5B,EAAAA,EAAAA,KAAA,KAAGm1C,KAAI,UAAAhwC,OAAkB,OAANgY,QAAM,IAANA,OAAM,EAANA,EAAQS,cAAcyB,OAAQzd,SAAQ,OAANub,QAAM,IAANA,OAAM,EAANA,EAAQS,cAAcyB,eAIrFrf,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4BAA2BC,SAAE6S,EAAAA,GAAUgN,oBACtDzhB,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,kBAAiBC,SAC3Bub,EAAOxC,SAAWC,EAAAA,GAAgBC,OAAOC,YAAc+E,IACpD7f,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAAC8lB,aAAa,kBAAkB7lB,QAAQ,cAAcvT,UAAWoX,EAAOU,4BAA4Bjc,UAC/G5B,EAAAA,EAAAA,KAACo1C,EAAoB,CACjBrvC,SAAUoX,EAAOU,4BACjB63B,OA7BO,WAC3B7+B,EAASmG,EAAAA,EAAkBw6B,0BAA0Br6B,EAAOzC,IAChE,EA4BwB66B,QAASuB,EAA0B35B,EAAOzC,IAC1Ci7B,WAAY,WAAF,OAAQe,GAAU,EAAK,EACjCd,WAAY,WAAF,OAAQc,GAAU,EAAM,UAO9D,EC9Cae,EAAgE,SAAHj3C,GAA0C,IAApC2c,EAAM3c,EAAN2c,OAAQ0C,EAAoBrf,EAApBqf,qBAC9EhJ,GAAWC,EAAAA,EAAAA,MACjBy/B,EAA4BC,EAAAA,UAAe,GAAMC,GAAA3yC,EAAAA,EAAAA,GAAAyyC,EAAA,GAA1C17B,EAAM47B,EAAA,GAAEC,EAASD,EAAA,GAClBK,GAA4Bp2C,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAM8b,WAAWq6B,yBAAyB,IAM7G,OACI90C,EAAAA,EAAAA,MAAA,OAAKL,UAAWu1C,IAAG,+BAAgC,CAAEr8B,OAAAA,IAAUjZ,SAAA,EAC3D5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,2BAA0BC,UACrC5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,OAAMC,SAAE6S,EAAAA,GAAUgN,sBAEtCzf,EAAAA,EAAAA,MAAA,OAAKL,UAAU,4BAA2BC,SAAA,EACtC5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,UAAUC,MAAO,GAAIC,OAAQ,KAAM,wBAErDpG,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4BAA2BC,UACtC5B,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAACC,QAAS6D,EAAOM,iBAAiB7b,UAC7C5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,qCAAoCC,UAChD5B,EAAAA,EAAAA,KAAA,KAAGm1C,KAAI,UAAAhwC,OAAYgY,EAAOM,kBAAmB7b,SAAEub,EAAOM,0BAIlEzd,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4BAA2BC,SAAE6S,EAAAA,GAAUgN,oBACtDzhB,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,kBAAiBC,SAC3Bub,EAAOxC,SAAWC,EAAAA,GAAgBC,OAAOC,YAAc+E,IACpD7f,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAAC8lB,aAAa,kBAAkB7lB,QAAQ,cAAcvT,UAAWoX,EAAOO,+BAA+B9b,UAClH5B,EAAAA,EAAAA,KAACo1C,EAAoB,CACjBrvC,SAAUoX,EAAOO,+BACjBg4B,OAzBO,WAC3B7+B,EAASmG,EAAAA,EAAkB06B,6BAA6Bv6B,EAAOzC,IACnE,EAwBwB66B,QAASuB,EAA0B35B,EAAOzC,IAC1Ci7B,WAAY,WAAF,OAAQe,GAAU,EAAK,EACjCd,WAAY,WAAF,OAAQc,GAAU,EAAM,UAO9D,E,gGC9CO,SAASiB,EAA6Bn3C,GAAkC,IAA/BsJ,EAAOtJ,EAAPsJ,QAAS8tC,EAAUp3C,EAAVo3C,WACrDrB,EAA0CC,EAAAA,UAAe,GAAMC,GAAA3yC,EAAAA,EAAAA,GAAAyyC,EAAA,GAAxDsB,EAAcpB,EAAA,GAAEqB,EAAerB,EAAA,GAOtC,OACIz0C,EAAAA,EAAAA,MAAA,OAAK8D,QAAS,SAAAT,GAAC,OAAIA,EAAE2T,iBAAiB,EAACpX,SAAA,EACnC5B,EAAAA,EAAAA,KAAA,UAAQ2B,UAAU,cAAcmE,QAPpB,SAACT,GACjBA,EAAE2T,kBACF8+B,GAAgB,EACpB,EAI6Dl2C,SAAC,oBAElDi2C,IACA73C,EAAAA,EAAAA,KAAC+3C,EAAAA,EAAkC,CAC/BH,WAAYA,EACZI,YAAaluC,EAAQ5D,KACrBuS,QAAS,WAAF,OAAQq/B,GAAgB,EAAM,MAKzD,C,0BCTaG,EAA4C,SAAHz3C,GAAqD,IAA/C2c,EAAM3c,EAAN2c,OAAQ2C,EAAkBtf,EAAlBsf,mBAAoBo4B,EAAW13C,EAAX03C,YAC9ErhC,GAAWC,EAAAA,EAAAA,MACXqD,GAA4BC,EAAAA,EAAAA,KAA+B7E,MAEjE,GAAI4H,EAAOxC,SAAWC,EAAAA,GAAgBC,OAAOC,aAAegF,EACxD,OAAO,KAGX,IAAM7E,EAAYd,EAA0BpM,MAAK,SAAAwM,GAAC,OAAIA,EAAEW,gBAAgBR,KAAOyC,EAAOzC,EAAE,IAClFy9B,EAA2B,OAATl9B,QAAS,IAATA,OAAS,EAATA,EAAWk9B,gBAMnC,IAAKh7B,EAAO3C,eACR,OAAO,KAEX,OAAQ29B,GACJ,KAAKC,EAAAA,GAA0BC,QAC/B,KAAKD,EAAAA,GAA0BE,SAC3B,OACIt2C,EAAAA,EAAAA,MAAA,OAAKL,UAAU,2BAA0BC,SAAA,EACrC5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,4BAA2BC,SAb9BqZ,GAAa1O,IAAO0O,EAAU3O,MAAMU,OAAOyH,EAAAA,GAAUuV,gBAclEhqB,EAAAA,EAAAA,KAACu4C,EAAAA,EAA+B,CAC5B59B,OAAQw9B,EACRK,cAAuB,OAATv9B,QAAS,IAATA,OAAS,EAATA,EAAWw9B,UAAW,QAIpD,KAAKL,EAAAA,GAA0BM,UAC3B,OACI14C,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,2BAA0BC,UACrCI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,8BAA6BC,SAAA,EAE3B,OAATqZ,QAAS,IAATA,OAAS,EAATA,EAAW09B,qBACX34C,EAAAA,EAAAA,KAAC44C,EAAAA,EAAuB,CACpB39B,UAAWA,EACX+8B,YAAa/8B,EAAUC,gBAAgBhV,KACvC2yC,WAAW,4BAGnB74C,EAAAA,EAAAA,KAAC23C,EAA6B,CAACC,WAAY38B,EAAW69B,YAAahvC,QAASqT,SAI5F,QACI,OACInd,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,2BAA0BC,UACrC5B,EAAAA,EAAAA,KAACiZ,EAAAA,EAAiB,CAACC,MAAO,CAACA,EAAAA,GAAMC,aAAcD,EAAAA,GAAMsF,oBAAoB5c,SAEhEs2C,EAAYpzC,QAUT9E,EAAAA,EAAAA,KAACuZ,EAAAA,EAAa,CAAC5X,UAAU,uCAAuCmE,QAlDjE,SAACT,GACxBA,EAAE2T,kBACFnC,EAASwE,EAAAA,IAAe4C,2BAA2Bd,EAAOzC,IAC9D,EA+CwH9Y,SAAC,4BAR7F5B,EAAAA,EAAAA,KAACqZ,EAAAA,EAAc,CAACC,QAAQ,gDAA+C1X,UACnE5B,EAAAA,EAAAA,KAAA,QAAA4B,UACI5B,EAAAA,EAAAA,KAAA,UAAQ2B,UAAU,uCAAuCoE,UAAU,EAAKnE,SAAC,mCAcjH,E,sBCpDam3C,EAAwC,SAAHv4C,GAiB5C,IAfE2c,EAAM3c,EAAN2c,OACA67B,EAAQx4C,EAARw4C,SACAC,EAAaz4C,EAAby4C,cACAt5B,EAAQnf,EAARmf,SACAC,EAAKpf,EAALof,MACAC,EAAoBrf,EAApBqf,qBACAC,EAAkBtf,EAAlBsf,mBACAo5B,EAAa14C,EAAb04C,cACAnxC,EAAQvH,EAARuH,SACAoxC,EAAW34C,EAAX24C,YACAC,EAAsB54C,EAAtB44C,uBACAC,EAAiB74C,EAAjB64C,kBACAC,EAAU94C,EAAV84C,WAAUC,EAAA/4C,EACVs6B,YAAAA,OAAW,IAAAye,GAAQA,EAGjB1iC,GAAWC,EAAAA,EAAAA,MAEX0iC,GAA0Bz4C,EAAAA,EAAAA,UAAQ,eAAA04C,EAAA,OACpCt8B,EAAO3C,iBAA4B,OAAV8+B,QAAU,IAAVA,GAAyD,QAA/CG,EAAVH,EAAYvrC,MAAK,SAAAoZ,GAAC,OAAIA,EAAEjM,gBAAgBR,KAAOyC,EAAOzC,EAAE,WAAC,IAAA++B,OAA/C,EAAVA,EAA2DtB,mBAAoBC,EAAAA,GAA0BM,SAAS,GAC3I,CAACv7B,EAAQm8B,IAEPI,EAA4BlD,EAAAA,SAAc,kBAAM52B,EAC7Cza,OAAOwa,GACPuH,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAExP,UAAU8sB,cAAcrd,EAAEzP,YAAcwP,EAAEvP,SAAS6sB,cAAcrd,EAAExP,SAAS,GAAC,GACnG,CAACgI,EAAOD,IASNg6B,GAAqB54C,EAAAA,EAAAA,UAAQ,kBAC1B4e,EAAS7a,OAAS8a,EAAM9a,OAASQ,SAAS6X,EAAOS,eAAiBtY,SAAS6X,EAAOM,iBAAiB,GACxG,CAACkC,EAAUC,EAAOzC,IAqBhBy8B,EAAoB,SAACv0C,GACvBA,EAAE2T,kBACe,OAAjBqgC,QAAiB,IAAjBA,GAAAA,EAAoBl8B,EAAOzC,GAC/B,EA+CA,OACI1Y,EAAAA,EAAAA,MAAA,OAAKL,UAAU,kBAAiBC,SAAA,EAC5BI,EAAAA,EAAAA,MAAA,OAAKL,UAAWu1C,IAAG,+BAAgC,CAAE,OAAU8B,GAAYC,IAAkBnzC,QAlF3E,SAACT,GACvBA,EAAE2T,kBACEigC,GACApiC,EAASmG,EAAAA,EAAkB68B,kBAAkB18B,EAAOzC,IAE5D,EA6EgI9Y,SAAA,EACpH5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,WAAUC,UACtB5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CACJE,KAAK,cACLvE,UAAWu1C,IAAG,CAAE,SAAY8B,GAAYC,EAAe,UAAaA,IACpE9yC,MAAO,GACPC,OAAQ,OArDC,WACzB,IAAK8yC,EACD,OAAO,KAGX,IAAMY,EAAkChf,GAAe3d,EAAOxC,SAAWoD,EAAAA,EAAclD,OAEjFk/B,EAAmBP,GAA2BM,EAC9C/mB,EACDymB,EAA2B,2CAC3BM,GAAmC,uFAExC,OACI95C,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAACC,QAAgB,OAAPyZ,QAAO,IAAPA,EAAAA,EAAW,GAAIhtB,UAAWg0C,EAAiBn4C,UAChE5B,EAAAA,EAAAA,KAACg6C,EAAAA,EAAQ,CACLj0C,SAAUg0C,EACVE,QAASlyC,EACTZ,SAAUyyC,KAI1B,CAmCaM,IACDl6C,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,mBAAkBC,UAAC5B,EAAAA,EAAAA,KAACm6C,EAAAA,GAAc,CAACn/B,UAAWmC,EAAOzC,GAAI3U,SAAUqzC,EAAwBgB,qBAAqB,MAjCpIj9B,EAAOxC,SAAWoD,EAAAA,EAAclD,OAC3By+B,GAAcE,IAA8BF,GAAcn8B,EAAO3C,gBAE9Dxa,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAACC,QAAQ,8FAA6F1X,UACjH5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,8BAA6BC,UACzC5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,WAAWC,MAAO,GAAIC,OAAQ,UAMxDpG,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAACC,QAAQ,+FAA8F1X,UAClH5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,cAAcC,MAAO,GAAIC,OAAQ,SAKxD,MAiBCpE,EAAAA,EAAAA,MAAA,QAAML,UAAU,wBAAuBC,SAAA,EACnCI,EAAAA,EAAAA,MAAA,UAAAJ,SAAA,CAASub,EAAOjX,KAAK,KAAGyzC,EAAmB,QACzCV,IAAiBj5C,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,UAASC,SAAC,kCAEjD5B,EAAAA,EAAAA,KAACi4C,EAAwB,CACrB96B,OAAQA,EACR+6B,YAAat4B,EACbE,mBAAoBA,MAErBq5B,EAAYr0C,SACf9E,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,uCAAsCC,UACjD5B,EAAAA,EAAAA,KAACq6C,EAAAA,GAAS,CAACC,SAAS,MAAMhvB,MAAO6tB,EAAYr0C,eAGrD9E,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,gCAA+BC,SACzCo3C,IA1FTh3C,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CAJiCub,EAAOM,mBACxCzd,EAAAA,EAAAA,KAACy3C,EAAsB,CAACt6B,OAAQA,EAAQ0C,qBAAsBA,IAJhC1C,EAAOS,gBACrC5d,EAAAA,EAAAA,KAACu3C,EAAmB,CAACp6B,OAAQA,EAAQ0C,qBAAsBA,IAUnD65B,EAAQjyC,KAAI,SAAA8yC,GAAC,OAAI36B,EAAMkR,QAAQypB,IAAM,GAC/Bv6C,EAAAA,EAAAA,KAACk1C,EAAU,CAAsB19B,KAAM+iC,GAAc,QAAAp1C,OAA5Bo1C,EAAE7/B,MAC3B1a,EAAAA,EAAAA,KAACs2C,EAAa,CAAyBv7B,QAASw/B,EAAc16B,qBAAsBA,GAAqB,WAAA1a,OAA1Eo1C,EAAE7/B,IAA2E,WAwFlI,E,iCCzKM8/B,EAAqC,CACvC9/B,GAAI,EACJ/C,UAAW,GACXC,SAAU,GACVyH,MAAO,GACPC,MAAO,GACPF,KAAM,GACNg4B,WAAY,IAGHqD,EAA6B,WAAO,IAADC,EACtC7jC,GAAWC,EAAAA,EAAAA,MACX+/B,GAAkBn2C,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAM8b,WAAWo6B,eAAe,IACnFF,GAAmBj2C,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMi2C,SAASD,iBAAiBphC,KAAK,IACzFolC,GAA0Bj6C,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMi2C,SAAS+D,wBAAwBplC,KAAK,IACvGqlC,GAAe75C,EAAAA,EAAAA,UAAQ,kBAAM41C,EAAiBlvC,KAAI,SAAA2f,GAAC,OAAIA,EAAElhB,IAAI,GAAC,GAAE,CAACywC,IAEjEkE,GAAkB95C,EAAAA,EAAAA,UAAQ,kBAAM81C,EAAgB97B,QAC5C,CACEL,GAAIm8B,EAAgB97B,QAAQL,GAC5B08B,WAAYP,EAAgBO,WAC5Bz/B,UAAWk/B,EAAgB97B,QAAQpD,UACnCC,SAAUi/B,EAAgB97B,QAAQnD,SAClCyH,MAAOw3B,EAAgB97B,QAAQsE,MAC/BD,KAAMy3B,EAAgB97B,QAAQqE,MAAQ,GACtCE,MAAOu3B,EAAgB97B,QAAQuE,OAAS,IAE1Ck7B,CAAgB,GACtB,CAAC3D,EAAgB97B,QAAS87B,EAAgBO,aAG9C,IAAKP,EAAgB97B,QACjB,OAAO,KAGX,IAAM+/B,EAAe,SAAC//B,GAA+B,IAADggC,EAChDlkC,EAASmG,EAAAA,EAAkBg+B,qBAAmBrzC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAIoT,GAAO,IAAEL,IAA2B,QAAvBqgC,EAAAlE,EAAgB97B,eAAO,IAAAggC,OAAA,EAAvBA,EAAyBrgC,KAAM,KACpG,EAsBMugC,EAAmBC,EAAAA,EAAAA,SAAa5T,MAAM,CACxC3vB,UAAWujC,EAAAA,EAAAA,SAAalI,OAAOmI,QAAQ1mC,EAAAA,GAAUvO,MAAMsI,IAAI,IAC3DoJ,SAAUsjC,EAAAA,EAAAA,SAAalI,OAAOmI,QAAQ1mC,EAAAA,GAAUvO,MAAMsI,IAAI,IAC1D6Q,MAAO67B,EAAAA,EAAAA,SAAalI,OAAOoI,WAAW/7B,QAAQ7Q,IAAI,KAAK6sC,KAAK,QAAS1iC,EAAAA,GAAc2iC,sBAL1D,SAACj8B,GAAgC,OAb5B,SAACA,GAC/B,QAAKk8B,EAAAA,GAAYC,cAAcn8B,KACnBs7B,EAAwB35C,MAAK,SAAA+Z,GAAY,IAAD0gC,EAAAC,EACxC,OACiF,IAA7E3gC,EAAQsE,MAAMolB,cAAcplB,OAAO1c,EAAW,CAAEg5C,YAAa,aACzB,KAAT,QAAvBF,EAAA5E,EAAgB97B,eAAO,IAAA0gC,OAAA,EAAvBA,EAAyB/gC,MAAoC,QAAvBghC,EAAA7E,EAAgB97B,eAAO,IAAA2gC,OAAA,EAAvBA,EAAyBhhC,MAAOK,EAAQL,GAE1F,GAIZ,CAEmEkhC,CAA0Bv8B,GAAS,GAAI,IAMtGD,KAAM87B,EAAAA,EAAAA,SAAalI,OAAOxkC,IAAI,IAAKmK,EAAAA,GAAcC,UAAU,MAC3D0G,MAAO47B,EAAAA,EAAAA,SAAalI,OAAOmI,QAAQ1mC,EAAAA,GAAUonC,eAAertC,IAAIiG,EAAAA,GAAUqnC,gBAC1E1E,WAAY8D,EAAAA,EAAAA,SAAaE,WAAWC,KAAK,aAAc1iC,EAAAA,GAAcojC,cA1BhC,SAAC3E,GAAqC,OAC3ET,EACKlvC,KAAI,SAAAkU,GAAC,OAAIA,EAAEzV,IAAI,IACflF,MAAK,SAAAotB,GAAC,OAAkF,IAA9EA,EAAEqW,cAAc3X,OAAOsqB,QAAaz0C,EAAW,CAAEg5C,YAAa,UAAiB,GAAE,MAoJpG,OACI37C,EAAAA,EAAAA,KAACwY,EAAAA,GAAK,CACFE,WAAW,0BACXD,QAAS,WAAF,OAAQ5B,EAASmG,EAAAA,EAAkBg/B,uBAAuB,EACjE77C,MAA8B,QAAvBu6C,EAAA7D,EAAgB97B,eAAO,IAAA2/B,GAAvBA,EAAyBhgC,GAAK,eAAiB,cAAc9Y,UApHxE5B,EAAAA,EAAAA,KAACi8C,EAAAA,GAAM,CACHC,cAAerB,EACfI,iBAAkBA,EAClBkB,SAAUrB,EAAal5C,SAEtB,SAAApB,GAAA,IAAA47C,EAfY52C,EAA2B62C,EAepCC,EAAM97C,EAAN87C,OAAQC,EAAO/7C,EAAP+7C,QAASC,EAAah8C,EAAbg8C,cAAa,OAC9Bx6C,EAAAA,EAAAA,MAACy6C,EAAAA,GAAI,CAACC,YAAU,EAAA96C,SAAA,EACZI,EAAAA,EAAAA,MAAC26C,EAAAA,GAAS,CAAA/6C,SAAA,EACNI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,WAAUC,SAAA,EACrBI,EAAAA,EAAAA,MAAA,SAAOL,UAAU,aAAai7C,QAAQ,0BAAyBh7C,SAAA,CAAC,iBAC/C5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,WAAUC,SAAC,cAE5CI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,uBAAsBC,SAAA,EACjC5B,EAAAA,EAAAA,KAAC68C,EAAAA,GAAiB,CACdl7C,UAAU,mCACVuE,KAAK,0BACLk1C,UAAU,EACVxiC,UAAW,IACXkkC,YAAalC,EACbv5C,MAAOw1C,EAAgBO,WACvBjwC,SAAU,SAACiwC,GAAkB,OA1BjC,SAAClxC,EAAcs2C,GACvC3lC,EAASmG,EAAAA,EAAkB+/B,4BAA4B72C,IACvDs2C,EAAc,aAAct2C,EAChC,CAuBkE82C,CAAoB5F,EAAYoF,EAAc,EAChFr+B,YAAY,iBACZ8+B,UAAWV,EAAQnF,YAAckF,EAAOlF,cAhCnD5xC,EAkCoB8gB,MAAM42B,QAAQZ,EAAOlF,YAA+B,QAApBgF,EAAGE,EAAOlF,kBAAU,IAAAgF,OAAA,EAAjBA,EAAmBlZ,KAAK,KAAOoZ,EAAOlF,WAlClEiF,EAkC8EE,EAAQnF,WAjClIiF,IAAar8C,EAAAA,EAAAA,KAACm9C,EAAAA,GAAS,CAACtlC,QAASrS,YAqCjBxD,EAAAA,EAAAA,MAAA,OAAKL,UAAU,2BAA0BC,SAAA,EACrC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,YAAWC,UACtB5B,EAAAA,EAAAA,KAACo9C,EAAAA,GAAU,CACPvuB,MAAM,aACN1Q,YAAY,aACZk/B,cAAc,EACdn3C,KAAK,YACLo3C,QAAS7oC,EAAAA,GAAUvO,KAAKq3C,OACxBC,SAAS,EACT5kC,UAAW,QAGnB5Y,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,YAAWC,UACtB5B,EAAAA,EAAAA,KAACo9C,EAAAA,GAAU,CACPvuB,MAAM,YACN1Q,YAAY,YACZk/B,cAAc,EACdn3C,KAAK,WACLo3C,QAAS7oC,EAAAA,GAAUvO,KAAKq3C,OACxBC,SAAS,EACT5kC,UAAW,WAIvB5Y,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,WAAUC,UACrB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,YAAWC,UACtB5B,EAAAA,EAAAA,KAACo9C,EAAAA,GAAU,CACPvuB,MAAM,QACN1Q,YAAY,QACZk/B,cAAc,EACdn3C,KAAK,QACLo3C,QAAS7oC,EAAAA,GAAU4K,MAAMk+B,OACzBC,SAAS,EACT5kC,UAAW,UAIvB5W,EAAAA,EAAAA,MAAA,OAAKL,UAAU,2BAA0BC,SAAA,EACrC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,YAAWC,UACtB5B,EAAAA,EAAAA,KAACo9C,EAAAA,GAAU,CACPvuB,MAAM,QACN1Q,YAAY,QACZk/B,cAAc,EACdn3C,KAAK,OACLo3C,QAAS7oC,EAAAA,GAAU4K,MAAMk+B,OACzBC,SAAS,EACT5kC,UAAW,SAGnB5Y,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,YAAWC,UACtB5B,EAAAA,EAAAA,KAACo9C,EAAAA,GAAU,CACPvuB,MAAM,QACN1Q,YAAY,eACZk/B,cAAc,EACdn3C,KAAK,QACL0L,KAAK,MACL4rC,SAAS,EACT5kC,UAAW,cAK3B5W,EAAAA,EAAAA,MAACy7C,EAAAA,GAAW,CAAA77C,SAAA,EACR5B,EAAAA,EAAAA,KAAA,UACI2B,UAAU,gBACViQ,KAAK,SACL9L,QAAS,WAAF,OAAQ+Q,EAASmG,EAAAA,EAAkBg/B,uBAAuB,EAACp6C,SACrE,YAGD5B,EAAAA,EAAAA,KAAA,UACI+F,SAAU8wC,EAAgB6G,oBAC1B/7C,UAAU,eACViQ,KAAK,SACL8I,GAAG,cAAa9Y,SACnB,cAIF,KAcvB,E,2CCxKa8d,EAAyC,SAAHlf,GAoB7C,IAlBEmZ,EAAOnZ,EAAPmZ,QACAgG,EAAQnf,EAARmf,SACAC,EAAKpf,EAALof,MAAK+9B,EAAAn9C,EACLqf,qBAAAA,OAAoB,IAAA89B,GAAQA,EAAAC,EAAAp9C,EAC5Bsf,mBAAAA,OAAkB,IAAA89B,GAAQA,EAAAC,EAAAr9C,EAC1B04C,cAAAA,OAAa,IAAA2E,GAAQA,EACrBC,EAAat9C,EAAbs9C,cAAaC,EAAAv9C,EACbw9C,YAAAA,OAAW,IAAAD,GAAQA,EAAAE,EAAAz9C,EACnB44C,uBAAAA,OAAsB,IAAA6E,GAAQA,EAC9B5E,EAAiB74C,EAAjB64C,kBACA6E,EAAe19C,EAAf09C,gBACAC,EAAc39C,EAAd29C,eACA7E,EAAU94C,EAAV84C,WACAv5B,EAAqBvf,EAArBuf,sBACAq+B,EAAyB59C,EAAzB49C,0BACAp+B,EAAYxf,EAAZwf,aAAYu5B,EAAA/4C,EACZs6B,YAAAA,OAAW,IAAAye,GAAQA,EAGjB1iC,GAAWC,EAAAA,EAAAA,OACjBqF,EAAAA,EAAAA,GAAa3E,EAAAA,EAAKqF,SAAQ+gB,MAAbpmB,EAAAA,GAAIxJ,EAAAA,EAAAA,GAAakL,EAAAA,GAAMmlC,SAAOl5C,OAAA,CAAE+T,EAAAA,GAAMsF,uBAEnD,IAAM8/B,GAAkB59C,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAM8b,WAAW6hC,eAAe,IACnFC,GAAc79C,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAM8b,WAAW8hC,WAAW,IAE3EC,GAA2Bz9C,EAAAA,EAAAA,UAAQ,kBACrC09C,EAAAA,EAASC,UACL/kC,GACA,SAACY,GAA0B,OAAKA,EAAEG,EAAE,IACpC,SAACyC,GAA+B,SAExBA,EAAOM,kBACPN,EAAOS,eACP+B,EAAS3e,MAAK,SAAA2a,GAAC,OAAIA,EAAEX,YAAcmC,EAAOzC,EAAE,KAC5CkF,EAAM5e,MAAK,SAAA29C,GAAC,OAAIA,EAAE3jC,YAAcmC,EAAOzC,EAAE,IAAE,GAAC,GACxD,CAACf,EAASgG,EAAUC,IAGlBg/B,GAAuBhzB,EAAAA,EAAAA,MAAKsyB,GAC5BW,GAAmB99C,EAAAA,EAAAA,UAAQ,kBAC7BiiC,EAAAA,EAAAA,MAAKwb,GAA0Bx9C,MAAK,SAAA89C,GAAG,OAAIN,GAA0BM,EAAI,GAAC,GAC1E,CAACN,KAGLz5C,EAAAA,EAAAA,YAAU,WACN8R,EAASmG,EAAAA,EAAkB+hC,oBAAoBF,GACnD,GAAG,CAACA,EAAkBhoC,KAEtB9R,EAAAA,EAAAA,YAAU,WAEF4U,EAAQ7U,SACN8mB,EAAAA,EAAAA,MAAK0yB,IACP3kC,EAAQtO,QAAO,SAAAkP,GAAC,OAAIikC,EAAyBjkC,EAAEG,GAAG,IAAEskC,OAAM,SAAAzkC,GAAC,IAAA0kC,EAAA,OAA0B,QAAtBA,EAACX,EAAgB/jC,EAAEG,WAAG,IAAAukC,GAAAA,KAAcV,CAAW,KAE9G1nC,EAASmG,EAAAA,EAAkBkiC,2BAEnC,GAAG,CAACZ,EAAiBC,EAAa5kC,EAAS6kC,EAA0B3nC,IAErE,IAAMsoC,EAA0B,SAAC95C,GAE7B,GADAA,EAAE2T,kBACE6lC,EAAkB,CAClB,IAAM17C,EAAwCo7C,EACxCE,EAAAA,EAASC,UAAU/kC,GAAS,SAACY,GAA0B,OAAKA,EAAEG,EAAE,IAAE,kBAAM,CAAK,IAC7E,CAAC,EAEP7D,EAASmG,EAAAA,EAAkB6B,cAAc1b,GAAOo7C,GACpD,CACJ,EAEMa,GAAiBr+C,EAAAA,EAAAA,UAAQ,kBAAMoI,EAAAA,GAAWuG,QAAQkQ,GAAO,SAAA++B,GAAC,OAAIA,EAAE3jC,SAAS,GAAC,GAAE,CAAC4E,IAC7Ey/B,GAAoBt+C,EAAAA,EAAAA,UAAQ,kBAAMoI,EAAAA,GAAWuG,QAAQiQ,GAAU,SAAAhE,GAAC,OAAIA,EAAEX,SAAS,GAAC,GAAE,CAAC2E,IAoCzF,OACI3f,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4CAA2CC,UACtDI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,2BAA0BC,SAAA,CAClC+X,EAAQ7U,QAEH9C,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EACII,EAAAA,EAAAA,MAAA,OAAKL,UAAU,4BAA2BC,SAAA,EApB1D5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,kDAAiDC,UAC5D5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAWu1C,IAAG,WAAY,CAAEnxC,UAAW84C,IACzC/4C,QAASq5C,EAAwBv9C,UACjC5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CACJrE,UAAWu1C,IAAG,CAAE,SAAYqH,IAC5Br4C,KAAK,qBACLC,MAAO,GACPC,OAAQ,SA3BI,WAC5B,IAAK8yC,EACD,OAAO,KAEX,IAAMoG,GAAmBtB,IAAeh9C,EAAAA,EAAAA,MAAKk9C,GAAiB,SAAC3jC,GAAC,OAAKA,CAAC,IACtE,OACIva,EAAAA,EAAAA,KAACg6C,EAAAA,EAAQ,CACLuF,UAAWD,EACXn4C,SAAU,SAAC9B,GACPA,EAAE2T,kBACFqgC,GAAqBA,GACzB,EACAY,QAAS+D,EACTj4C,UAAW4T,EAAQ7U,QAAUs5C,GAGzC,CA0B6BoB,IAEIZ,IACD58C,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EACI5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,wCAAuCC,SAAC,UACvD5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,yCAAwCC,SAAC,WACxD5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,yCAAwCC,SAAC,WACxD5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,yCAAwCC,SAAC,WACxD5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,sDAAqDC,SAAC,iBAIvEg9C,IAAwB5+C,EAAAA,EAAAA,KAACy/C,EAAAA,EAAO,QAG1Cz/C,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,qBAAoBC,SAE3B+X,EAAQlS,KAAI,SAAA0V,GAAM,IAAAuiC,EAAAC,EAAAC,EAAAC,EAAA,OACd7/C,EAAAA,EAAAA,KAAC+4C,EAAa,CAEV57B,OAAQA,EACR67B,SAAoC,QAA5B0G,EAAEpB,EAAgBnhC,EAAOzC,WAAG,IAAAglC,GAAAA,EACpCzG,cAAeuF,EAAyBrhC,EAAOzC,IAC/CiF,SAA0C,QAAlCggC,EAAEN,EAAkBpvC,IAAIkN,EAAOzC,WAAG,IAAAilC,EAAAA,EAAI,GAC9C//B,MAAoC,QAA/BggC,EAAER,EAAenvC,IAAIkN,EAAOzC,WAAG,IAAAklC,EAAAA,EAAI,GACxC//B,qBAAsBA,EACtBC,mBAAoBA,EACpBo5B,cAAeA,EACfnxC,UAAyB,OAAfm2C,QAAe,IAAfA,OAAe,EAAfA,EAAkB/gC,EAAOzC,OAAO,EAC1Cy+B,YAA0C,QAA/B0G,EAAe,OAAb/B,QAAa,IAAbA,OAAa,EAAbA,EAAe7tC,IAAIkN,EAAOzC,WAAG,IAAAmlC,EAAAA,EAAI,GAC9CzG,uBAAwBA,EACxBC,kBAAmB8E,EACnB7E,WAAYA,EACZxe,YAAaA,GAdR3d,EAAOzC,GAed,UAKlB1a,EAAAA,EAAAA,KAAC8/C,EAAAA,GAAgB,CAAC9/B,aAAcA,EAAchd,KAAM+c,KAE5D/f,EAAAA,EAAAA,KAACy6C,EAAgB,QAIjC,C,2FC/La73C,EAAkB,SAAHpC,GAAA,IAAMqC,EAAOrC,EAAPqC,QAASC,EAAQtC,EAARsC,SAAUC,EAASvC,EAATuC,UAAW5C,EAAKK,EAALL,MAAO6C,EAAIxC,EAAJwC,KAAMpB,EAAQpB,EAARoB,SAAQ,OACjFI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,iCAAgCC,SAAA,GAErCiB,IACF7C,EAAAA,EAAAA,KAAC+/C,EAAAA,EAAQ,CACL75C,KAAMrD,EACNsD,MAAOrD,EAAWgqB,OAAOhqB,QAAYH,EACrCyD,OAAQrD,EAAY+pB,OAAO/pB,QAAaJ,MAG7CxC,IAASH,EAAAA,EAAAA,KAAA,MAAA4B,SAAKzB,MACd6C,IAAQhD,EAAAA,EAAAA,KAAA,KAAA4B,SAAIoB,IACdpB,IACC,C,8KCxBGk0B,EAAyB0gB,EAAAA,cAAoB,CACtDxgB,qBAAqB,EACrBD,uBAAwB,SAAC10B,GAAoB,I,sBCQ1C,SAASK,EAAelB,GAAsE,IAAnEoB,EAAQpB,EAARoB,SAAUyuB,EAAY7vB,EAAZ6vB,aAAc1uB,EAASnB,EAATmB,UAAWxB,EAAKK,EAALL,MACjEwD,GAAsDC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA9DqyB,EAAmBnyB,EAAA,GAAEkyB,EAAsBlyB,EAAA,GAC5Cm8C,GAAepT,EAAAA,EAAAA,QAA8B,MAC7CqT,GAAsBrT,EAAAA,EAAAA,QAAO,GAE3BlyB,GAAOwlC,EAAAA,EAAAA,GACXF,EACA7/C,EAAK,8BAAAgF,OAAiChF,EAAK,kBAAcwC,GAFrD+X,IAKR3V,EAAAA,EAAAA,YAAU,WACN,IAAM0S,EAAUuoC,EAAavoC,QACzBA,IACAwoC,EAAoBxoC,QAAUA,EAAQ0oC,aAE9C,GAAG,CAACH,IAYJ,OACIhgD,EAAAA,EAAAA,KAAC81B,EAAuBsqB,SAAQ,CAC5B/+C,MAAO,CACH20B,oBAAAA,EACAD,uBAAwB,SAAC10B,GAAc,OAAK00B,EAAuB10B,EAAM,GAC3EO,UAEF5B,EAAAA,EAAAA,KAAA,OACIuzC,IAAKyM,EACLtlC,GAAIA,EACJ2X,MApBe,WACvB,IAAM5a,EAAUuoC,EAAavoC,QAC7B,OAAIA,GAAWue,EACJ,CACHqqB,eAAgB5oC,EAAQ0oC,aAAeF,EAAoBxoC,UAG5D,CAAC,CACZ,CAYmB6oC,GACP3+C,UAAWsE,IAAW,oBAAqBtE,EAAW,CAClD,kBAAmB0uB,EACnB,kBAAoB2vB,EAAavoC,SAAWue,IAC7Cp0B,SAEFA,KAIjB,CAEAF,EAAgB0F,aAAe,CAC3BipB,cAAc,EACd1uB,UAAW,GACX4+C,oBAAoB,G,yBCpDjB,SAASh+C,EAAsB/B,GAKL,IAJ7BoB,EAAQpB,EAARoB,SACAD,EAASnB,EAATmB,UACAa,EAAYhC,EAAZgC,aACAC,EAAWjC,EAAXiC,YASA,OACIzC,EAAAA,EAAAA,KAAA,OAAK2B,UAAWsE,IAAW,YAAatE,GAAWC,SAC9CY,IAAiBwiB,EAAAA,EAAaO,SAAUvlB,EAAAA,EAAAA,KAAC2I,EAAAA,EAA+B,KAR7E3G,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CACKA,IACEa,IAAezC,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,cAAaC,SAAEa,QAS5D,CCtBO,SAASH,EAAqB9B,GAAgE,IAA7DoB,EAAQpB,EAARoB,SAAUD,EAASnB,EAATmB,UAC9C,OACI3B,EAAAA,EAAAA,KAAA,OAAK2B,UAAWsE,IAAW,oBAAqBtE,GAAWC,SACtDA,GAGb,CDkBAW,EAAuB6E,aAAe,CAClCzF,UAAW,G,4JE8CF6+C,EAzE6E,CACtF,CACIrgC,UAAW,SACXC,0BAA2B,WAAF,MAAQ,KAAK,EACtCC,oBAAqB,SAAAua,GAAM,OAAIA,EAAOnJ,MAAM,EAC5C9Q,gBAAiB,cACjBC,cAAe,eAEnB,CACIT,UAAW,oBACXC,0BAA2B,WAAF,OAASpe,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CAAE,UAAM5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,MAAKC,SAAC,QAAW,EAC3Eye,oBAAqB,SAAAua,GAAM,OAAIhQ,EAAAA,GAAWsS,WAAWtC,EAAO6lB,mBAAmB,EAC/E9/B,gBAAiB,wBACjBC,cAAe,yBAEnB,CACIT,UAAW,oBACXC,0BAA2B,WAAF,OAASpe,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CAAE,UAAM5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,MAAKC,SAAC,QAAW,EAC3Eye,oBAAqB,SAAAua,GAAM,OAAIhQ,EAAAA,GAAWsS,WAAWtC,EAAO8lB,kBAAkB,EAC9E//B,gBAAiB,wBACjBC,cAAe,yBAEnB,CACIT,UAAW,eACXC,0BAA2B,WAAF,OAASpgB,EAAAA,EAAAA,KAAA4F,EAAAA,SAAA,CAAAhE,SAAE,WAAU,EAC9Cye,oBAAqB,SAAAua,GAAM,OAAI9N,OAAO8N,EAAO+lB,YAAY,EACzDhgC,gBAAiB,wBACjBC,cAAe,yBAEnB,CACIT,UAAW,eACXC,0BAA2B,WAAF,OAASpgB,EAAAA,EAAAA,KAAA4F,EAAAA,SAAA,CAAAhE,SAAE,WAAU,EAC9Cye,oBAAqB,SAAAua,GAAM,OAAI9N,OAAO8N,EAAOgmB,YAAY,EACzDjgC,gBAAiB,wBACjBC,cAAe,yBAEnB,CACIT,UAAW,WACXC,0BAA2B,WAAF,OAAQpgB,EAAAA,EAAAA,KAAA4F,EAAAA,SAAA,CAAAhE,SAAE,QAAO,EAC1Cye,oBAAqB,SAAAua,GAAM,OAAIA,EAAOimB,QAAQnvB,QAAQ,EAAE,EACxD/Q,gBAAiB,sBACjBC,cAAe,uBAEnB,CACIT,UAAW,iBACXC,0BAA2B,WAAF,OAASpe,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CAAE,UAAM5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,MAAKC,SAAC,QAAW,EAC3Eye,oBAAqB,SAAAua,GAAM,OAAIA,EAAOgJ,aAAalS,QAAQ,EAAE,EAC7D/Q,gBAAiB,wBACjBC,cAAe,yBAEnB,CACIT,UAAW,mBACXC,0BAA2B,WAAF,OAASpe,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CAAE,SAAK5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,MAAKC,SAAC,UAAa,EAC5Eye,oBAAqB,SAAAua,GAAM,OAAIhQ,EAAAA,GAAWsS,WAAWtC,EAAOkmB,eAAe,EAC3EngC,gBAAiB,yBACjBC,cAAe,0BAEnB,CACIT,UAAW,kBACXC,0BAA2B,WAAF,OAASpe,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CAAE,SAAK5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,MAAKC,SAAC,QAAW,EAC1Eye,oBAAqB,SAAAua,GAAM,OAAImmB,MAAMnmB,EAAOomB,eAAiB,GAAKpmB,EAAOomB,cAActvB,QAAQ,EAAE,EACjG/Q,gBAAiB,4BACjBC,cAAe,6BAEnB,CACIT,UAAW,cACXC,0BAA2B,WAAF,OAASpe,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CAAE,WAAO5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,MAAKC,SAAC,QAAW,EAC5Eye,oBAAqB,SAAAua,GAAM,OAAImmB,MAAMnmB,EAAOwR,WAAa,GAAKtf,OAAO8N,EAAOwR,UAAU1a,QAAQ,GAAG,EACjG/Q,gBAAiB,0BACjBC,cAAe,4BAI+CnZ,KAAI,SAAAkU,GACtE,OAAO,IAAI+F,EAAAA,EAAc/F,EAC7B,I,8ICrDMzZ,EAAY,wBAMX,SAASwxC,EAAuBlzC,GAAqC,IAAlCygD,EAAsBzgD,EAAtBygD,uBAChCpqC,GAAWC,EAAAA,EAAAA,MACXzL,GAAS3K,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyK,MAAM,IACxDglB,GAAe3vB,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyvB,YAAY,IACpE6wB,GAAexgD,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUsgD,YAAY,IACpEC,GAAiCzgD,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUugD,8BAA8B,IACxGC,GAAgC1gD,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUwgD,6BAA6B,IAEpG5a,EAAiC0a,EAAjC1a,WAAY6a,EAAqBH,EAArBG,iBACZ90B,EAAwClhB,EAAxCkhB,mBAAoB+D,EAAoBjlB,EAApBilB,gBAE5B3sB,GAA8CC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAtD29C,EAAez9C,EAAA,GAAE09C,EAAkB19C,EAAA,IAE1CkB,EAAAA,EAAAA,YAAU,WACN8R,GAAS2qC,EAAAA,EAAAA,OACb,GAAG,CAAC3qC,IAEJ,IAAM4qC,EAAkB,SAACnwB,GAAsB,OAC3CA,EAASowB,aAAeC,EAAAA,GAAar0B,SAASwxB,KAC9CxtB,EAASiP,QACTjP,EAASswB,QAAS,EAEhBC,EAAiB,SAACvwB,GAAsB,OAC1CA,EAASwwB,iBACTxwB,EAASiP,QACTjP,EAASowB,aAAeC,EAAAA,GAAar0B,SAASwxB,KAC9CxtB,EAASswB,QAAS,EAmIhBG,EApBe,WACjB,IAMM1xC,GANcigB,EAAgBxrB,OAC9B8rB,EAAAA,GACGvlB,QAAO,SAAAomB,GAAM,OACVnB,EAAgBtvB,MAAK,SAAAqsC,GAAc,OAAIA,IAAmB5b,CAAM,GAAC,IAEvEb,EAAAA,IACqDnpB,KAAI,SAAAy8B,GAC3D,IAAM8d,GAdNz1B,EAAmBznB,OACZu8C,EAAiBh2C,QAAO,SAAC42C,GAAsB,OAAK11B,EAAmBvrB,MAAK,SAAA2a,GAAC,OAAIA,IAAMsmC,EAAS1gC,QAAQ,GAAC,IAE7G8/B,GAWyCh2C,QAAO,SAACkC,GAAkB,OAAKA,EAAKkkB,SAAWyS,CAAC,IAC5F,OAAAv8B,EAAAA,EAAAA,GAAA,CACI8pB,OAAQyS,IAAMxT,EAAAA,GAAYC,MAAQ,QAAUuT,GAvHjC,SAAC32B,GACpB,IAAMkzC,EAAqBlzC,EAAKK,QAAO,SAACnH,EAAgBgR,GAIpD,OAHIgqC,EAAgBhqC,KAChBhR,GAAUgR,EAAQ8gB,QAEf9xB,CACX,GAAG,GAEGi6C,EAAoBnzC,EAAKK,QAAO,SAACnH,EAAgBgR,GAEnD,OADAhR,EAAUgR,EAAQ8gB,MAEtB,GAAG,GAEGooB,EAAcpzC,EAAKlC,QAAO,SAAC4M,GAAe,OAAKwpC,EAAgBxpC,EAAE,IAAEnT,OAEnE87C,EAAcrzC,EAAKzI,OAEnB+7C,EAAUD,EAAc,EAAsC,KAAjC,EAAID,EAAcC,GAAqB,EAEpEsB,EAAuB30C,EAAKlC,QAAO,SAAC4M,GAAe,OAAK4pC,EAAe5pC,EAAE,IAAEnT,OAE3Eq9C,EAAqB50C,EAAKK,QAAO,SAACnH,EAAgBgR,GAIpD,OAHIgqC,EAAgBhqC,KAChBhR,GAAUgR,EAAQmsB,cAEfn9B,CACX,GAAG,GAEGm9B,EAAiF,KAAjEzyB,EAAAA,GAAa6nB,WAAWmpB,EAAoBxB,IAAgB,GAE5EG,EAAiB3vC,EAAAA,GAAa6nB,WAAWynB,EAAoBE,IAAgB,EAE7EyB,EAAsB70C,EAAKK,QAAO,SAACnH,EAAgBgR,GAIrD,OAHIoqC,EAAepqC,IAAYA,EAAQqqC,kBACnCr7C,GAAUgR,EAAQqqC,iBAEfr7C,CACX,GAAG,GAEGu6C,EAAgB7vC,EAAAA,GAAa6nB,WAAWopB,EAAqBF,IAAyB,EAEtFG,EAAe90C,EAAKK,QAAO,SAACnH,EAAgBgR,GAI9C,OAHIA,EAAQ20B,WAAaqV,EAAgBhqC,KACrChR,GAAUgR,EAAQ20B,WAEf3lC,CACX,GAAG,GAEG67C,EAAc/0C,EAAKlC,QAAO,SAAC4M,GAAe,OAAMA,EAAEm0B,WAAaqV,EAAgBxpC,EAAE,IAAGnT,OAI1F,MAAO,CACH27C,mBAAAA,EACAC,kBAAAA,EACAC,YAAAA,EACAC,YAAAA,EACAC,QAAAA,EACAjd,aAAAA,EACAkd,eAAAA,EACAE,cAAAA,EACA5U,UAXcj7B,EAAAA,GAAa6nB,WAAWqpB,EAAcC,IAAgB,EAa5E,CAyDeC,CAAeP,GAE1B,IAEM5+C,EA3DO,SAACiN,GACd,IAAMjN,EAAQ,CACVq9C,mBAAoB,EACpBC,kBAAmB,EACnBC,YAAa,EACbC,YAAa,EACbC,QAAS,EACTjd,aAAc,EACdkd,eAAgB,GAGhB0B,EAAwB,EACxBC,EAA4B,EAchC,OAZApyC,EAAM3J,SAAQ,SAACuR,GACX7U,EAAMq9C,oBAAsBxoC,EAAEwoC,mBAC9Br9C,EAAMs9C,mBAAqBzoC,EAAEyoC,kBAC7Bt9C,EAAMu9C,aAAe1oC,EAAE0oC,YACvBv9C,EAAMw9C,aAAe3oC,EAAE2oC,YACvBx9C,EAAMy9C,SAAW5oC,EAAE4oC,QACnBz9C,EAAMwgC,cAAgB3rB,EAAE2rB,aACxBxgC,EAAM09C,gBAAkB7oC,EAAE6oC,eAC1B0B,GAA0BvqC,EAAE2oC,YAAc3oC,EAAE4oC,QAC5C4B,GAA8BxqC,EAAE0oC,YAAc1oC,EAAE2rB,YACpD,KAEAj8B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACI8pB,OAAQ,SACLruB,GAAK,IACRy9C,QAAS1vC,EAAAA,GAAa6nB,WAAWwpB,EAAuBp/C,EAAMw9C,cAAgB,EAC9Ehd,aAAczyB,EAAAA,GAAa6nB,WAAWypB,EAA2Br/C,EAAMu9C,cAAgB,EACvFG,eAAgB3vC,EAAAA,GAAa6nB,WAAW51B,EAAMq9C,mBAAoBr9C,EAAMu9C,cAAgB,EACxFK,cAAe0B,IACftW,UAAWsW,KAEnB,CAwBkBC,CAAStyC,GAEvB,OADAA,EAAM9J,KAAKnD,GACJiN,CACX,CAEkBuyC,GAQZC,EAAoB,WAAH,OACnB7gD,EAAAA,EAAAA,MAAA,OAAKL,UAAU,cAAaC,SAAA,EACxBI,EAAAA,EAAAA,MAAA,KAAAJ,SAAA,EACI5B,EAAAA,EAAAA,KAAA,OAAA4B,SAAK,MAAO,QAAI5B,EAAAA,EAAAA,KAAA,OAAA4B,SAAK,MAAO,iBAAa5B,EAAAA,EAAAA,KAAA,OAAA4B,SAAK,MAAO,YACrD5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,OAAMC,SAAC,sCAE3B5B,EAAAA,EAAAA,KAAA,KAAA4B,SAAG,8EACHI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,OAAMC,SAAA,CAAC,4GAElB5B,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAACypC,iBAAiB,kBAAkBxpC,SAAStZ,EAAAA,EAAAA,KAAC+iD,EAAAA,EAAwB,IAAInhD,UACrF5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,OAAOC,MAAO,GAAIC,OAAQ,WAGhDpE,EAAAA,EAAAA,MAAA,OAAKL,UAAU,OAAMC,SAAA,CAAC,2IAGlB5B,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAACypC,iBAAiB,kBAAkBxpC,SAAStZ,EAAAA,EAAAA,KAAC+iD,EAAAA,EAAwB,IAAInhD,UACrF5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,OAAOC,MAAO,GAAIC,OAAQ,YAG9C,EAsBV,OACIpG,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,EAAWmuB,aAAcA,EAAc1uB,UAAU,wCAAuCC,UAC5G5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAaq/C,GAA+Bx/C,UACvEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoB0iD,gBAC7B9gD,UAAWA,EACXC,iBAAiB,gDAA+CP,SAAA,EAEhEI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAACX,UAAU,WAAUC,SAAA,EACvCI,EAAAA,EAAAA,MAAA,MAAAJ,SAAA,CAAKM,GAAUlC,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,OAAMC,SAAE4kC,OAEnC4a,IAAkCp8B,EAAAA,EAAaO,UAC/CvlB,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoB0iD,gBAAgBphD,UAClD5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,2BAA0BC,UACrC5B,EAAAA,EAAAA,KAACyf,EAAAA,EAAS,CAACkc,OAAO,EAAMsnB,YAAY,EAAOnhD,WAAYq/C,EAAgCn+C,KAAK,kBAAYpB,UACpGI,EAAAA,EAAAA,MAAA,UAAQ8D,QA/DvB,WACjB,IAAMo9C,EAAmB32B,EAAmBznB,OAASynB,EAAqB+W,EAAAA,EACpE6f,EAAgB7yB,EAAgBxrB,OAASwrB,EAAkBM,EAAAA,GACjE/Z,GAASusC,EAAAA,EAAAA,KAA4BF,EAAkBC,GAC3D,EA2DmExhD,UAAU,eAAcC,SAAA,EACnD5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,SAASC,MAAO,GAAIC,OAAQ,KAAM,uBAOxEpG,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAc4+C,EACd3+C,aACIzC,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoB0iD,gBAAgBphD,SACjDq/C,GA7CzBj/C,EAAAA,EAAAA,MAACqhD,EAAAA,GAAS,CAAAzhD,SAAA,EACN5B,EAAAA,EAAAA,KAACsjD,EAAAA,GAAa,CAACC,WAAYjC,EAAgB1/C,UACvCI,EAAAA,EAAAA,MAACwhD,EAAAA,GAAmB,CAChBD,WAAYjC,EACZmC,kBAAmB,SAACp+C,GAChBA,EAAE2T,kBACFuoC,GAAoBD,EACxB,EACAoC,oBAAoB,EAAM9hD,SAAA,CAEzB0/C,EAAkB,OAAS,OAAO,qBAG3CthD,EAAAA,EAAAA,KAAC2jD,EAAAA,GAAiB,CAAC/7C,QAAS05C,EAAgB1/C,SACvCihD,SA+BwEA,MAEhEjhD,UAED5B,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFI,UAAWi+B,EACXh+B,QAASy8B,YAOrC,C,8PClQaoD,EAAqB,SAAHpjD,GAA6B,IAAvBqjD,EAAQrjD,EAARqjD,SACzBC,EAAoDD,EAApDC,SAAUj1B,EAA0Cg1B,EAA1Ch1B,MAAOk1B,EAAmCF,EAAnCE,SAAU5jD,EAAyB0jD,EAAzB1jD,MAAOyyB,EAAkBixB,EAAlBjxB,cAmC1C,OACI5wB,EAAAA,EAAAA,MAAA,OAAKL,UAAU,YAAWC,SAAA,EAjC1BI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,yBAAwBC,SAAA,CAClCkiD,IAAaE,EAAAA,GAAaC,OACvBjkD,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,qBAAoBC,UAC/B5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAWsE,IAAW,0CAA0C,gBAADd,OAAkB++C,EAAAA,GAAmBJ,GAAUK,cAAc9hD,QAAQ,IAAK,OAAQT,SACjJsiD,EAAAA,GAAmBJ,OAK/Bj1B,IAAUu1B,EAAAA,EAAUH,OACjBjkD,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,qBAAoBC,UAC/B5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,qBAAoBC,SAC9ByiD,EAAAA,EAAgBx1B,OAK5Bk1B,GAAYA,IAAaO,EAAAA,GAAaL,OACnCjkD,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,qBAAoBC,UAC/B5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,oBAAmBC,UAC9B5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAWsE,IAAW,CACvB,4CAA6Cq+C,EAAAA,GAAaC,2BAA6BR,EACvF,wBAAyBO,EAAAA,GAAaE,mBAAqBT,IAC5DniD,UACC5B,EAAAA,EAAAA,KAAA,OAAKykD,IAAKC,EAAAA,GAAkBX,GAAWY,IAAKC,EAAAA,GAAmBb,eAW/E/jD,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,kBAAiBC,UAC5B5B,EAAAA,EAAAA,KAACqZ,EAAAA,GAAc,CAACC,QAASnZ,EAAMyB,UAC3B5B,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBukD,WAAYC,WAAS,EAAAljD,SAC5D,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACm9B,EAAAA,GAAI,CACD7O,GAAIrP,EAAAA,GAAO8lC,QAAQnyB,GACnBrtB,OAAO,SACP5D,UAAWsE,IAAW,WAAY,CAAEF,SAAUqT,IAAWxX,UAEzD5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,gBAAeC,SAAEzB,KAC9B,SAKvBH,EAAAA,EAAAA,KAACglD,EAAAA,EAAqB,CAACnB,SAAUA,MAG7C,E,WCxEMoB,EAAexwC,EAAAA,GAAUywC,qBAMlBC,EAAiB,SAAH3kD,GAAyB,IAAnB+M,EAAI/M,EAAJ+M,KACvB63C,GAAYxY,EAAAA,EAAAA,QAAe,MAC3ByY,GAAiBzY,EAAAA,EAAAA,QAAO,CAC1B0Y,WAAW,EACXC,WAAY,IAGVC,EAAoBj4C,EAAKzI,OAASmgD,EAElCQ,EAAW,CACbC,MAAM,EACNC,UAAU,EACVV,aAAAA,EACAW,eAAgBX,EAChBY,UAAU,EACVC,iBAAiB,EACjBC,UAAU,EACVC,cAAeA,IACfC,MA1BM,IA2BNC,YAAa,SAACt/C,GACV,IAAMu/C,EAAmBf,EAAU3tC,QAC7B2uC,EAAwBf,EAAe5tC,QAE7C2uC,EAAsBb,WAAa3+C,EAE/BA,IAAU4+C,GACTY,EAAsBd,WAEvBe,YAAW,WACHF,GACAA,EAAiBG,UAAU,EAEnC,GAvCM,IAyCd,IAGJvhD,EAAAA,EAAAA,YAAU,WACN,IAAMwhD,EAAeC,SAASC,uBAC1B,cACF,GAEF,GAAIF,EAAc,CACd,IAAMG,EAAc,SAACC,GAAuB,IAADC,EACvCD,EAAME,iBAEN,IAAMC,EACFH,EAAMI,OAAS,EACT1B,EAAe5tC,QAAQ8tC,WAAaN,EACpCI,EAAe5tC,QAAQ8tC,WAAaN,EAE9C,OAAwB,QAAxB2B,EAAOxB,EAAU3tC,eAAO,IAAAmvC,OAAA,EAAjBA,EAAmBN,UAAUQ,EACxC,EAIA,OAFAP,EAAaS,iBAAiB,QAASN,GAEhC,kBAAMH,EAAaU,oBAAoB,QAASP,EAAa,CACxE,CAGJ,GAAG,IAEH,IAcMQ,EAAa,WACf,OAAO35C,EAAK9F,KAAI,SAAC2mB,GAAC,OACdpuB,EAAAA,EAAAA,KAAC4jD,EAAkB,CAAuBC,SAAUz1B,GAA3BA,EAAEwE,cAA8B,GAEjE,EAEA,OACI5yB,EAAAA,EAAAA,KAAA,OAAKmnD,aArBgB,WAAH,OAAU9B,EAAe5tC,QAAQ6tC,WAAY,CAAI,EAqB9B8B,aApBhB,WACrB,IAAMjB,EAAmBf,EAAU3tC,QAC7B2uC,EAAwBf,EAAe5tC,QAE7C2uC,EAAsBd,WAAY,EAE9Bc,EAAsBb,aAAeC,GACrCW,GAEAA,EAAiBkB,WAEzB,EASwEzlD,SAC/D2L,EAAKzI,QAAU2P,EAAAA,GAAUywC,qBACtBgC,KAEAlnD,EAAAA,EAAAA,KAACsnD,EAAAA,GAAM3/C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAAC4rC,IAAK6R,GAAeK,GAAQ,IAAA7jD,SAC/BslD,QAKrB,E,WCpFM/mD,EAAQ,eAED6uC,EAAmB,SAAHxuC,GAAkG,IAA5FyuC,EAAIzuC,EAAJyuC,KAAMzsC,EAAYhC,EAAZgC,aAAY8T,EAAA9V,EAAEmB,UAAAA,OAAS,IAAA2U,EAAG,cAAaA,EAAEixC,EAAc/mD,EAAd+mD,eAC9E,OAAKC,EAAAA,EAAAA,OAKDxnD,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAOA,EAAOwB,UAAW8lD,IAAW,SAAU,CAAE,cAAexY,EAAKnqC,QAAU,GAAKnD,GAAWC,UAC3GI,EAAAA,EAAAA,MAACH,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAaS,GAAcZ,SAAA,EACtDI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAAAV,SAAA,EAClB5B,EAAAA,EAAAA,KAAA,MAAI2B,UAAU,kBAAiBC,SAAEzB,KACjC6B,EAAAA,EAAAA,MAACm7B,EAAAA,GAAI,CAAC7O,GAAIrP,EAAAA,GAAO8lC,UAAWj/C,QAASyhD,EAAgB5lD,UAAU,2BAA2B4D,OAAO,SAAQ3D,SAAA,EACrG5B,EAAAA,EAAAA,KAACgG,EAAAA,EAAO,CAACE,KAAK,QAAQC,MAAO,GAAIC,OAAQ,KAAM,kBAIvDpG,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CAACC,aAAcA,EAAaZ,UAC/C5B,EAAAA,EAAAA,KAACmlD,EAAc,CAAC53C,KAAM0hC,WAd3B,IAmBf,C,8PC3BM9kC,GAAkBC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACnBC,EAAAA,EAASC,IAAM,UACfD,EAAAA,EAASE,IAAM,KAGdC,GAAuDJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxDK,EAAAA,GAAcC,EAAI,CACfC,WAAY,SACZC,MAAO,OAEVH,EAAAA,GAAcI,EAAI,CACfF,WAAY,UACZC,MAAO,OAEVH,EAAAA,GAAcK,EAAI,CACfH,WAAY,KACZC,MAAO,QAITI,EAAkB,UAClBD,EAAmB,aACnBE,EAAiB,OACjB8a,EAAgB,EAEf,SAAS2hC,EAA2BlnD,GAA6D,IAA1D+M,EAAI/M,EAAJ+M,KAAMlC,EAAM7K,EAAN6K,OAAQnL,EAAKM,EAALN,MAEpDsL,EAMAm8C,EAAAA,GANAn8C,YACAE,EAKAi8C,EAAAA,GALAj8C,UACAC,EAIAg8C,EAAAA,GAJAh8C,SACAC,EAGA+7C,EAAAA,GAHA/7C,UACAC,EAEA87C,EAAAA,GAFA97C,cACAC,EACA67C,EAAAA,GADA77C,WAmBEgB,EAAe,SAACK,GAClB,IAAMy6C,EAAar7C,IAAAA,IAAW,CAACY,EAAIlB,KAAMkB,EAAIjB,MAAQ,IAErD,OAAQb,EAAO0B,UACX,KAAKtC,EAAAA,GAAcK,EACf,OAAO88C,EAAW56C,OAAO/B,GAC7B,KAAKR,EAAAA,GAAcI,EAEf,MAAM,GAAN1F,OAAUyiD,EAAW37C,OAAM,KAAA9G,OAA2B,EAAvByiD,EAAW36C,UAAgB,GAC9D,QACI,OAAO26C,EAAW56C,OAAOhC,GAErC,EAmBMmE,EAAgB,WAClB,IAAA04C,EAhD2B,WAC3B,IAAMz5C,EAAc,SAACb,GAAS,OAAKhB,IAAAA,IAAW,CAACgB,EAAKtB,KAAMsB,EAAKrB,MAAQ,GAAI,EACrEmC,EAAalF,EAAAA,EAAWmF,IAAIf,EAAMa,GAClCG,EAAapF,EAAAA,EAAWqF,IAAIjB,EAAMa,GAElCK,EAAW,SAACpN,GAAW,OAAKkL,IAAAA,IAAW,CACzClL,EAAQA,EAAM4K,KAAO,EACrB5K,EAAQA,EAAM6K,MAAQ,EAAI,GAC3B,EAEH,MAAO,CACHoC,IAAKG,EAASJ,GACdG,IAAKC,EAASF,GAEtB,CAkCuBia,GAAbla,EAAGu5C,EAAHv5C,IAAKE,EAAGq5C,EAAHr5C,IAEX,OAAQnD,EAAO0B,UACX,KAAKtC,EAAAA,GAAcC,EACf4D,EAAME,EAAIO,QACLE,SAAS,EAAG,UACZA,SAAS,GAAI,QAClBT,EAAIQ,IAAI,GAAI,QACZ,MACJ,KAAKvE,EAAAA,GAAcI,EACfyD,EAAME,EAAIO,QACLE,SAAS,EAAG,SACZC,QAAQ,QACRD,SAAS,GAAI,QAClBT,EAAIU,QAAQ,WACPF,IAAI,GAAI,QACb,MACJ,QACQR,EAAIvC,OAASqC,EAAIrC,QAAU8Z,IAC3BzX,EAAME,EAAIO,QACLE,SAAS8W,EAAgB,EAAG,SAC5B7W,QAAQ,SAGjBZ,EAAIY,QAAQ,QACPD,SAAS,EAAG,UACjBT,EAAIU,QAAQ,QACPF,IAAI,EAAG,UAIpB,MAAO,CACHV,EAAItB,OAAOjC,GACXyD,EAAIxB,OAAOjC,GAEnB,EAEMmH,EAAe,WACjB,IAAM6U,EA/CQ,SAACxZ,GAEf,IAAM9F,EAAM0B,EAAAA,EAAWuG,QAAQnC,GAAM,SAACJ,GAA2B,SAAAhI,OAC1DgI,EAAIiU,eAAc,KAAAjc,OAAI2H,EAAaK,GAAI,IAE9C,OAAOmZ,MAAMC,KAAK9e,EAAIrG,SAC1B,CAyCoBilB,CAAU9Y,GAEpBmhB,EAAS3H,EAAQnZ,QAAO,SAACC,EAAoCV,GAC/D,IAAQ26C,GAARhkD,EAAAA,EAAAA,GAAyBqJ,EAAG,GAAR,GACZiU,EAAmB0mC,EAAnB1mC,eAEF9Q,EAAYxD,EAAag7C,GACzBv3C,EAASpH,EAAAA,EAAWqH,IAAIrD,GAAK,SAAC9L,GAA6B,OA/DvD,SAAC8L,GACf,OAAQ9B,EAAOwB,QACNJ,EAAAA,GAAWW,MACLD,EAAIpD,qBAEJoD,EAAIE,gBAEvB,CAwD8EH,CAAU7L,EAAM,IAEtF2K,EAAyB6B,EAAIuT,IAAmB,GAAExS,GAAA9K,EAAAA,EAAAA,GAAAkI,EAAA,GAAA+7C,EAAAn5C,EAAA,GAA3CX,OAAC,IAAA85C,EAAG,GAAEA,EAAAC,EAAAp5C,EAAA,GAAEiC,OAAC,IAAAm3C,EAAG,GAAEA,EAErB,OAAArgD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOkG,GAAG,IAAAzD,EAAAA,EAAAA,GAAA,GACLgX,EAAiB,CAAC,GAADjc,QAAA6I,EAAAA,EAAAA,GACVC,GAAC,CAAEqC,IAAS,GAAAnL,QAAA6I,EAAAA,EAAAA,GACZ6C,GAAC,CAAEN,MAGnB,IAACnG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAEI69C,EAAAA,EAAeC,kBAAoB,IACnCD,EAAAA,EAAeE,aAAe,KAGnC,OAAOhnD,OACF+M,QAAQwgB,GACRjnB,KAAI,SAAAgJ,EAA2B7J,GAAK,IAAA8J,GAAA5M,EAAAA,EAAAA,GAAA2M,EAAA,GAA9B2Q,EAAc1Q,EAAA,GAAAC,GAAA7M,EAAAA,EAAAA,GAAA4M,EAAA,MAAO,MAAe,CACvCzC,EADqB0C,EAAA,GAErBE,EAFwBF,EAAA,GAGxBzK,KAAMkiD,EAAAA,GAAgBhnC,GACtBxP,KAAM,MAENC,cAAc,GAAD1M,OAAKijD,EAAAA,GAAgBhnC,GAAe,yBACjDrP,OAAQ,CACJC,MAAOpG,EAAUhF,IAExB,GACT,EAEM+M,EAAY,WACd,IAAAtB,EAA8B7H,EAAmBa,EAAO0B,UAAhDnC,EAAKyH,EAALzH,MAAOD,EAAU0H,EAAV1H,WAET+I,EAAarI,EAAOwB,QAAUJ,EAAAA,GAAW+C,OACzCrF,EAAmBkB,EAAO+G,cAC1B,GAEA4c,EAAa7f,IAEnB,OAAAxH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACO6D,GAAW,IACd8G,YAAY,EACZC,UAAU,EACVC,UAAW,YACX1G,WAAAA,EACA2G,QAASpH,EAAOg9C,KAChBz1C,MAAO,CACHC,UAAWnH,EACXkG,KAAM,OACNkB,MAAOkc,EACPjc,SAAUpH,EACVqH,YAAY,EACZpI,MAAAA,EACAD,WAAAA,EACAsI,YAAa,CACTC,QAAS,4BAGjBC,MAAO,CACHC,UAAU,EACVC,eAAgB,MAChBK,WAAAA,EACAJ,UAAW5H,EACX6H,MAAO,SACPV,UAAWnH,EACXqH,SAAUpH,EACV6H,cAAe3H,IAG3B,EAaA,OACI7J,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EAXA5B,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDC,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChC7T,MAAOA,EACPqN,KAAM2E,IACNC,OAAQwB,IACRgB,OAAQC,EAAAA,MAOR5S,EAAAA,EAAAA,MAAA,OAAKL,UAAU,SAAQC,SAAA,EACnB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,aAAYC,SAAEwmD,EAAAA,GAAgBH,EAAAA,EAAeC,sBAC5DloD,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,gBAAeC,SAAEwmD,EAAAA,GAAgBH,EAAAA,EAAeE,qBAI/E,CAEAT,EAA4BtgD,aAAe,CACvClH,MAAO,kC,yEC9NLooD,GAASl+C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACVsI,EAAAA,GAAUkW,QAAU,WACpBlW,EAAAA,GAAUC,QAAU,WAGnB41C,EAAa,CACf,CACIlnD,MAAOoT,EAAAA,GAAUC,YACjB1R,KAAM,QACTmC,QAAA6I,EAAAA,EAAAA,GACEiH,EAAAA,KAGA,SAASuzC,EAA4BhoD,GAGL,IAFnC2G,EAAQ3G,EAAR2G,SACG/F,GAAMgL,EAAAA,EAAAA,GAAA5L,EAAA6L,GAEHyI,EAAoB,SAACC,GAAY,OAAK,SAAC1T,GACzC,IAAIonD,GAAa9gD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACVvG,GAAM,IAAAgJ,EAAAA,EAAAA,GAAA,GACR2K,EAAO1T,IAGZ8F,EAASshD,EACb,CAAE,EAEF,OACIzmD,EAAAA,EAAAA,MAACoT,EAAAA,GAAW,CAAAxT,SAAA,EACR5B,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBooD,kCAAkC9mD,SACzE,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOgzC,EAAc9gD,KAAI,SAAAuE,GAAA,IAAG3K,EAAK2K,EAAL3K,MAAW,MAAQ,CAC3CA,MAAAA,EACA2B,KAFmCgJ,EAAJhJ,KAG/B+E,SAAU3G,EAAOoT,kBAAoBnT,EACxC,IACDM,UAAU,yBACVsF,OAAO,SACPlB,SAAUqT,EACVjS,SAAU,SAAFyH,GAAA,IAAKvN,EAAKuN,EAALvN,MAAK,OAAOyT,EAAkB,kBAAlBA,CAAqCzT,EAAM,GACtE,OAGdrB,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4CAA2CC,SACrD,CAAC6K,EAAAA,GAAW+C,OAAQ/C,EAAAA,GAAWW,OAAO3F,KAAI,SAAA8hB,GAAI,OAC3CvpB,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAYlgB,QAASC,EAAAA,EAAoBooD,kCAAkC9mD,SACpF,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACyV,EAAAA,GAAY,CACTC,QAAS6T,EACTxhB,SAAU3G,EAAOyL,QAAU0c,EAC3BxjB,SAAUqT,EACVtT,QAAS,WAAF,OAAQgP,EAAkB,QAAlBA,CAA2ByU,EAAK,GACjD,GAPUA,EAQJ,SAI5BvpB,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4CAA2CC,SACrD,CAACyI,EAAAA,EAASE,IAAKF,EAAAA,EAASC,KAAK7C,KAAI,SAAA2K,GAAY,OAC1CpS,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAoBlgB,QAASC,EAAAA,EAAoBooD,kCAAkC9mD,SAC5F,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACyV,EAAAA,GAAY,CACTC,QAAStD,EACTrK,SAAU3G,EAAOgR,eAAiBA,EAClCrM,SAAUqT,EACVtT,QAAS,WAAF,OAAQgP,EAAkB,eAAlBA,CAAkC1C,EAAa,GAChE,GAPUA,EAQJ,SAI5BpS,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4CAA2CC,SACrD,CACG6I,EAAAA,GAAcC,EACdD,EAAAA,GAAcI,EACdJ,EAAAA,GAAcK,GAChBrD,KAAI,SAAAsF,GAAQ,OACV/M,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAgBlgB,QAASC,EAAAA,EAAoBooD,kCAAkC9mD,SACxF,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACyV,EAAAA,GAAY,CACTC,QAAS3I,EACThF,SAAU3G,EAAO2L,WAAaA,EAC9BhH,SAAUqT,EACVtT,QAAS,WAAF,OAAQgP,EAAkB,WAAlBA,CAA8B/H,EAAS,GACxD,GAPUA,EAQJ,SAI5B/M,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,4CAA2CC,SACrD,CAAC8Q,EAAAA,GAAUkW,QAASlW,EAAAA,GAAUC,SAASlL,KAAI,SAAA4gD,GAAI,OAC5CroD,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAYlgB,QAASC,EAAAA,EAAoBooD,kCAAkC9mD,SACpF,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACyV,EAAAA,GAAY,CACTC,QAAS4yC,EAAUD,GACnBtgD,SAAU3G,EAAOinD,OAASA,EAC1BtiD,SAAUqT,EACVtT,QAAS,WAAF,OAAQgP,EAAkB,OAAlBA,CAA0BuzC,EAAK,GAChD,GAPUA,EAQJ,UAMxC,C,sECzGO,SAASzU,EAA4BpzC,GAGL,IAADsV,EAAAtV,EAFlCuV,cAAAA,OAAa,IAAAD,EAAG,CAAC,EAACA,EAAAG,EAAAzV,EAClB0V,WAAAA,OAAU,IAAAD,GAAOA,EAEX0yC,GAAyBjoD,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,UAAU+nD,sBAAsB,IAChGC,GAAqCloD,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,UAAUgoD,kCAAkC,IAExH/xC,GAAWC,EAAAA,EAAAA,MAEXC,GAAYC,EAAAA,EAAAA,MAElBrT,GAAsCC,EAAAA,EAAAA,WAAQ+D,EAAAA,EAAAA,GAAA,CAC1C6M,gBAAiBC,EAAAA,GAAUC,YAC3B7H,MAAOJ,EAAAA,GAAWW,MAClBL,SAAUtC,EAAAA,GAAcK,EACxBu9C,KAAM31C,EAAAA,GAAUkW,QAChBxW,aAAc/H,EAAAA,EAASE,KACpBwL,IACLlS,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAPKsT,EAAWpT,EAAA,GAAEqT,EAAcrT,EAAA,IASlCkB,EAAAA,EAAAA,YAAU,WACNgS,GAAaF,GAASgyC,EAAAA,EAAAA,OAC1B,GAAG,CAAChyC,EAAUE,IAEd,IAWMzV,GAAQP,EAAAA,EAAAA,UAAQ,kBAClBf,EAAAA,EAAAA,KAAC0nD,EAA2B,CACxBn6C,KAAMo7C,EACNt9C,OAAQ4L,GACV,GACF,CAAC0xC,EAAwB1xC,IAEvB/U,EAAS,GAAAiD,QAAM2jD,EAAAA,EAAAA,aAAW1mD,EAAAA,EAAAA,WAAU6U,EAAYzC,kBAAiB,iBAAArP,OAAgB8R,EAAYpK,OAEnG,OACI7M,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,EAAWP,UAAU,uBAAsBC,UAC/DI,EAAAA,EAAAA,MAACH,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAa6mD,GAAoChnD,SAAA,EAC5EI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAAAV,SAAA,EAClB5B,EAAAA,EAAAA,KAAA,MAAI2B,UAAU,kBAAiBC,SAAEM,KACjClC,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACwW,MAAOA,EAAAA,GAAMy6B,wBAAwB/xC,SACzCsU,IAAclW,EAAAA,EAAAA,KAACwoD,GAA4B7gD,EAAAA,EAAAA,GAAA,CAACR,SA1BtC,SAACkE,GACxB6L,EAAe7L,GAEf,IAAQmJ,EAAkCnJ,EAAlCmJ,gBAAiBpC,EAAiB/G,EAAjB+G,aAEzB2E,GAAaF,GAASkyC,EAAAA,EAAAA,KAAuC,CACzDv0C,gBAAAA,EACApC,aAAAA,IAER,GAiBmG6E,UAGvFjX,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAcomD,EACdnmD,YAC0B,OAAtBkmD,QAAsB,IAAtBA,GAAAA,EAAwB7jD,OAClB,uEACA,GACTlD,SAEwB,OAAtB+mD,QAAsB,IAAtBA,GAAAA,EAAwB7jD,OAASxD,GAAQtB,EAAAA,EAAAA,KAACoX,EAAAA,EAA0B,UAK3F,C,+JC/EO,SAAS4xC,EAAexoD,GAA4C,IAAzC8rB,EAAQ9rB,EAAR8rB,SAAU28B,EAAczoD,EAAdyoD,eAElCC,EAAkB,SAACz3B,GACrB,IAAM03B,EAAeF,EAAe59C,QAAO,SAAAkP,GAAC,OAAIA,EAAEkX,SAAWA,CAAM,IACnE,OAAO03B,EAAarkD,OAASqkD,EAAa1hD,KAAI,SAAA8S,GAAC,OAAIA,EAAEunC,eAAe,IAAI,EAAE,EAC9E,EAEMp3B,EAAmB,SAAC+G,GACtB,IAAMlkB,EAAO07C,EAAe59C,QAAO,SAAAkP,GAAC,OAAIA,EAAEkX,SAAWA,CAAM,IACrDrwB,EAASmM,EAAK9F,KAAI,SAAA8S,GAAC,OAAIA,EAAEunC,eAAe,IACxCsH,EAAoBhoD,EAAOwM,QAAO,SAACuZ,EAAGC,GAAC,OAAMD,EAAIC,CAAC,GAAG,GAAK7Z,EAAKzI,OAC/DukD,EAAav1C,EAAAA,GAAWw1C,cAAcloD,GAC5C,MAAO,6BAAA+D,OAA6BoI,EAAKzI,OAAM,qBAAAK,OACjCgM,EAAAA,GAAaC,MAAMg4C,GAAkB,WAAS,OAAAjkD,OACjDgM,EAAAA,GAAaC,MAAMi4C,EAAW5+B,KAAO,GAAE,WAAS,QAAAtlB,OAC/CgM,EAAAA,GAAaC,MAAMi4C,EAAW9+B,SAAW,GAAE,WAAS,OAAAplB,OACrDgM,EAAAA,GAAaC,MAAMi4C,EAAW7+B,KAAO,GACpD,EAEM++B,EAAU34B,EAAAA,GAAsBnpB,KAAI,SAACy8B,EAAGt9B,GAC1C,IAAMyiD,EAAav1C,EAAAA,GAAWw1C,cAAcJ,EAAgBhlB,IAC5D,MAAO,CACH1Z,GAAI,CAAC6+B,EAAW7+B,IAChBC,GAAI,CAAC4+B,EAAW5+B,IAChBF,OAAQ,CAAC8+B,EAAW9+B,QACpBgB,WAAY,CAAC89B,EAAW/6C,KACxBkd,WAAY,CAAC69B,EAAW76C,KACxBP,EAAG,CAAC2iB,EAAAA,GAAsBhqB,IAC1B4iD,UAAWN,EAAgBhlB,GAC3BtyB,KAAM,MACN1L,KAAMwkB,EAAiBwZ,GACvBnyB,OAAQ,CACJC,MAAOy3C,EAAAA,EAAoBvlB,GAAG7Z,QAElCoB,UAAWg+B,EAAAA,EAAoBvlB,GAAG9Z,IAClCsB,UAAW,OACXC,WAAW,EAEnB,IAqCA,OACI3rB,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDC,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChC7T,MAAOosB,EACP/e,KAAMg8C,EACNp3C,OAAQ,CACJS,MAAO,CACHQ,UAAU,EACVP,UAAW62C,EAAAA,EAAiBh+C,UAC5BqH,SAAU22C,EAAAA,EAAiB/9C,UAE/BwH,MAAO,CACHo7B,UAAW,SACXh7B,MAAO,SACPP,YAAY,EACZH,UAAW62C,EAAAA,EAAiBh+C,UAC5BqH,SAAU22C,EAAAA,EAAiB/9C,SAC3BmH,MArDE,WACd,IAKM62C,EAAiB/4B,EAAAA,GAAsBhjB,QAAO,SAACnH,EAAkBgrB,GACnE,OAAOhrB,EAAOtB,OAAO+jD,EAAgBz3B,GAAQpmB,QAAO,SAAA64B,GAAC,OAAIA,GAAK,CAAC,IACnE,GAAG,IACCuD,EAAWkiB,EAAe7kD,OAASE,KAAKsJ,IAAGsvB,MAAR54B,MAAIgJ,EAAAA,EAAAA,GAAQ27C,KAR3B,GASpBp7B,EAAWo7B,EAAe7kD,OAASE,KAAKwJ,IAAGovB,MAAR54B,MAAIgJ,EAAAA,EAAAA,GAAQ27C,IAP3B,EAQlB/Z,EAAarhB,EAAWkZ,EAC1BvZ,EAToB,EAUpB0hB,EARiB,GAQYA,EAAcga,GAC3C17B,EATiB,EAUV0hB,GAAega,IAAqBha,EAAcga,GACzD17B,EAAU07B,GACHha,GAAega,IAAsBha,EAAcga,IAC1D17B,EAAU07B,GACHha,GAAega,MACtB17B,EAAU07B,IAEdniB,EAAW3zB,EAAAA,GAAW6lB,cAAc8N,EAAUvZ,GAAS,GACvDK,EAAWza,EAAAA,GAAW6lB,cAAcpL,EAAUL,GAC9C,IAAIY,EAAS3d,EAAAA,GAAayoB,cAAcgW,GApBhB,KAyBxB,OAJI9gB,EAvBqB,MAwBrBA,EAxBqB,KA2BlB,CACH2Y,GAAY,GA7BQ,GA6BcA,EAAW3Y,EAC7CP,EAAWO,EAEnB,CAoBuB+K,GACPrmB,cAAek2C,EAAAA,EAAiBG,sBAEpC/9C,WAAY49C,EAAAA,EAAiB59C,WAC7BwG,YAAY,EACZE,UAAW,UACXsc,OAAQ46B,EAAAA,EAAiBI,SAE7Bn1C,OAAQC,EAAAA,IAGpB,CAEAo0C,EAAgB5hD,aAAe,CAC3BklB,SAAU,qB,gFC3GRpqB,EAAY,6BAEX,SAASuxC,IACZ,IAAM58B,GAAWC,EAAAA,EAAAA,MACXzL,GAAS3K,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyK,MAAM,IACxD0+C,GAA8BrpD,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUmpD,2BAA2B,IAClGC,GAAatpD,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUopD,UAAU,IAChE35B,GAAe3vB,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyvB,YAAY,IAClE9D,EAAwClhB,EAAxCkhB,mBAAoB+D,EAAoBjlB,EAApBilB,gBACtB25B,GAAoB,OAAVD,QAAU,IAAVA,OAAU,EAAVA,EAAYE,kBAA6B,OAAVF,QAAU,IAAVA,IAAAA,EAAYf,eAAenkD,SAE1EC,EAAAA,EAAAA,YAAU,WACN8R,GAASszC,EAAAA,EAAAA,OACb,GAAG,CAACtzC,IAEJ,IAAMuzC,EAAkB,WACpB,IAAI78C,GAAIS,EAAAA,EAAAA,GAAOg8C,EAAWf,gBAO1B,OANI18B,EAAmBznB,SACnByI,EAAOA,EAAKlC,QAAO,SAAAkP,GAAC,OAAIgS,EAAmBvrB,MAAK,SAAA2a,GAAC,OAAIA,IAAMpB,EAAEgH,QAAQ,GAAC,KAEtE+O,EAAgBxrB,SAChByI,EAAOA,EAAKlC,QAAO,SAAAkP,GAAC,OAAI+V,EAAgBtvB,MAAK,SAAAkjC,GAAC,OAAIA,IAAM3pB,EAAEkX,MAAM,GAAC,KAE9DlkB,CACX,EAgBA,OACIvN,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,EAAWmuB,aAAcA,EAAc1uB,UAAU,cAAaC,UAClF5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAagoD,GAA6BnoD,UACrEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoB+pD,eAC7BnoD,UAAWA,EACXC,iBAAiB,qCAAoCP,SAAA,EAErD5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClBI,EAAAA,EAAAA,MAAA,MAAAJ,SAAA,CACKM,EACA+nD,IAAWjqD,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,OAAMC,SAAEooD,EAAWxjB,mBAGvDxkC,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CACnBC,aAAcunD,EACdtnD,aACIzC,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoB+pD,eAAezoD,SAAC,kCAGzDA,SAAA,CAjCZqoD,GAUEjqD,EAAAA,EAAAA,KAACgpD,EAAe,CAACC,eAAgBmB,OARhCpqD,EAAAA,EAAAA,KAAC4C,EAAAA,EAAe,CACZC,QAAQ,4BACRC,SAAU,IACVC,UAAW,IACXC,KAAI,6BAAAmC,OAA+B6kD,EAAWxjB,WAAU,QA8BpDxmC,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,yBAQvC,C,gFClFO,SAASE,EAAiBrB,GAAoC,IAAD8pD,EAAA9pD,EAAhCsB,WAAAA,OAAU,IAAAwoD,GAAQA,EAAE1oD,EAAQpB,EAARoB,SACpD,OAAIE,GAEIE,EAAAA,EAAAA,MAAA,OAAKL,UAAU,WAAUC,SAAA,EACrBI,EAAAA,EAAAA,MAAA,OAAKL,UAAU,mBAAkBC,SAAA,EAC7B5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,qCACfK,EAAAA,EAAAA,MAAA,OAAKL,UAAU,kBAAiBC,SAAA,EAC5B5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,6CACf3B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,mDAGvB3B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,qCAKpBC,CACX,C,sTCIMmkB,EAAgB,GAEhBwkC,GAAcngD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfK,EAAAA,GAAcC,EAAI,IAClBD,EAAAA,GAAcI,EAAI,IAClBJ,EAAAA,GAAcK,EAAI,KAClBL,EAAAA,GAAc+/C,EAAI,GAGjBhgD,GAAkBJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACnBK,EAAAA,GAAcC,EAAI,CACfC,WAAY,SACZC,MAAO,OAEVH,EAAAA,GAAcI,EAAI,CACfF,WAAY,UACZC,MAAO,OAEVH,EAAAA,GAAcK,EAAI,CACfH,WAAY,KACZC,MAAO,QAEVH,EAAAA,GAAc+/C,EAAI,CACf7/C,WAAY,WAEZC,MAAyB,EAAlB6J,EAAAA,GAAUg2C,QAInBC,GAAoBtgD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACrBK,EAAAA,GAAcC,EAAI,WAClBD,EAAAA,GAAcI,EAAI,WAClBJ,EAAAA,GAAcK,EAAI,QAClBL,EAAAA,GAAc+/C,EAAI,cAGjBG,GAAsBvgD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvBK,EAAAA,GAAcC,EAAI,WAClBD,EAAAA,GAAcI,EAAI,YAClBJ,EAAAA,GAAcK,EAAI,QAClBL,EAAAA,GAAc+/C,EAAI,cAGhB,SAASjpD,EAAmBf,GAOL,IAN1BoqD,EAAcpqD,EAAdoqD,eACAC,EAAYrqD,EAAZqqD,aACAx/C,EAAM7K,EAAN6K,OACAnL,EAAKM,EAALN,MAAK4qD,EAAAtqD,EACLuzC,WAAAA,OAAU,IAAA+W,GAAQA,EAClBhlD,EAAOtF,EAAPsF,QAGI0F,EAQAu/C,EAAAA,GARAv/C,YACAE,EAOAq/C,EAAAA,GAPAr/C,UACAC,EAMAo/C,EAAAA,GANAp/C,SACAye,EAKA2gC,EAAAA,GALA3gC,IACAC,EAIA0gC,EAAAA,GAJA1gC,OACAxe,EAGAk/C,EAAAA,GAHAl/C,cACAC,EAEAi/C,EAAAA,GAFAj/C,WACAk/C,EACAD,EAAAA,GADAC,qBAGE7B,GAAepoD,EAAAA,EAAAA,UAAQ,WACzB,OAAQsK,EAAO0B,UACX,KAAKtC,EAAAA,GAAc+/C,EACf,OAAOI,EACFv/C,QAAO,SAAC4C,GAAC,QAAOA,EAAEg9C,IAAI,IACtB/jC,MACG,SAACC,EAAGC,GAAC,OACD,IAAIne,KAAKke,EAAE8jC,MAAchxB,UACzB,IAAIhxB,KAAKme,EAAE6jC,MAAchxB,SAAS,IAElD,KAAKxvB,EAAAA,GAAcC,EACf,OAAOkgD,EACFv/C,QAAO,SAAC4C,GAAC,QAAOA,EAAE/B,KAAK,IACvBgb,MAAK,SAACC,EAAGC,GACN,IAAM8jC,EAAQ/jC,EAAElb,MAAQ,EAClBk/C,EAAQ/jC,EAAEnb,MAAQ,EAClBm/C,EAASjkC,EAAEjb,OAAS,EACpBm/C,EAASjkC,EAAElb,OAAS,EAC1B,OAAOg/C,EAAQC,EAAQD,EAAQC,EAAQC,EAASC,CACpD,IACR,KAAK5gD,EAAAA,GAAcI,EACf,OAAO+/C,EACFv/C,QAAO,SAAC4C,GAAC,QAAOA,EAAEhB,OAAO,IACzBia,MAAK,SAACC,EAAGC,GACN,IAAM8jC,EAAQ/jC,EAAElb,MAAQ,EAClBk/C,EAAQ/jC,EAAEnb,MAAQ,EAClBq/C,EAAWnkC,EAAEla,SAAW,EACxBs+C,EAAWnkC,EAAEna,SAAW,EAC9B,OAAOi+C,EAAQC,EACTD,EAAQC,EACRG,EAAWC,CACrB,IACR,QACI,OAAOX,EACFv/C,QACG,SAAC4C,GAAC,QAAOA,EAAEhC,OAASgC,EAAE/B,QAAU+B,EAAEhB,UAAYgB,EAAEg9C,IAAI,IAEvD/jC,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAElb,KAAmBmb,EAAEnb,IAAe,IAEvE,GAAG,CAAC2+C,EAAgBv/C,EAAO0B,WAoDrBD,EAAe,SAACK,GAClB,OAAQ9B,EAAO0B,UACX,KAAKtC,EAAAA,GAAcC,EACf,OAAOyC,EAAIlB,MAAQkB,EAAIjB,MACjBK,IAAO,CAACY,EAAIlB,KAAMkB,EAAIjB,MAAQ,SAC9BvJ,EACV,KAAK8H,EAAAA,GAAc+/C,EACf,OAAOr9C,EAAI89C,KAAO1+C,IAAOY,EAAI89C,WAAQtoD,EACzC,KAAK8H,EAAAA,GAAcI,EACf,OAAOsC,EAAIlB,MAAQkB,EAAIF,QACjBV,IAAO,GAADpH,OAAIgI,EAAIlB,KAAI,KAAA9G,OAAIgI,EAAIF,SAAW,UAAU,QAC/CtK,EACV,QACI,OAAOwK,EAAIlB,KAAOM,IAAO,CAACY,EAAIlB,YAAStJ,EAEnD,EAKM6oD,EAAoB,SAACr+C,GAAyB,IAAAs+C,EAAA,OAC/B,QAD+BA,EAChD3+C,EAAaK,UAAI,IAAAs+C,OAAA,EAAjBA,EAAmBz+C,OAAO09C,EAAqBr/C,EAAO0B,UAAW,EAE/D2d,EAAmB,SAACvd,GACtB,IAAMwd,EACFxd,EAAI2d,eAAiB3d,EAAI4d,WACnB5d,EAAI2d,cAAgB,KAAO3d,EAAI4d,WAC/B5d,EAAI2d,eAAiB3d,EAAI4d,WACnC,MACI,GAAA5lB,OAZmB,SAACgI,GAAyB,IAAAu+C,EAAA,OAChC,QADgCA,EACjD5+C,EAAaK,UAAI,IAAAu+C,OAAA,EAAjBA,EAAmB1+C,OAAO29C,EAAuBt/C,EAAO0B,UAAW,CAW5D4+C,CAAmBx+C,GAAI,kBAAAhI,OAClBgI,EAAImB,IAAG,WAAS,OAAAnJ,OACjBgI,EAAIqd,GAAE,WAAS,QAAArlB,OACdgI,EAAIod,OAAM,WAAS,OAAAplB,OACpBgI,EAAIsd,GAAE,WAAS,QAAAtlB,OACdgI,EAAIqB,IAAG,WAAS,eAAArJ,OACT0lD,EAAY,WAAS,eAAA1lD,OACrBgI,EAAIy+C,KAAI,YACtBjhC,EAAQ,eAAAxlB,OAAkBwlB,EAAQ,WAAY,GAEvD,EAqHMkhC,EAAmB,CACrBj6C,KAAM,UACN3D,EAAG,CAAC,EAAG,KACP4C,EAAGs4C,EAAa1hD,KAAI,kBAAMojD,CAAY,IACtCviC,KAAM,QACN1V,MAAO,KACPw0B,KAAM,CACFp1B,MAAO,MACP7L,MAAO,EACPkhC,KAAM,SAIRykB,EAAgB,CAClBl6C,KAAM,UACN3D,EAAGk7C,EAAa1hD,KAAI,SAAC0F,GAAG,OAAKq+C,EAAkBr+C,EAAI,IACnD0D,EAAGs4C,EAAa1hD,KAAI,SAAC0F,GAAG,OAAKA,EAAIy+C,IAAI,IACrCtjC,KAAM,QACNoD,UAAW,OACX0b,KAAM,CACFp1B,MAAO,QACP7L,MAAO,EACPkhC,KAAM,SAyDR95B,EAAI,GAAApI,QAAA6I,EAAAA,EAAAA,GA/HCm7C,EAAav7C,QAAO,SAACm+C,EAAY5+C,GACpC,IAAM6+C,EAAQ,CAACR,EAAkBr+C,IAC3Bke,EAAM,CACRb,GAAI,CAACrd,EAAIqd,IACTC,GAAI,CAACtd,EAAIsd,IACTF,OAAQ,CAACpd,EAAIod,QACbgB,WAAY,CAACpe,EAAImB,KACjBkd,WAAY,CAACre,EAAIqB,KACjBP,EAAG+9C,EACH9lD,KAAMwkB,EAAiBvd,GACvByE,KAAM,MACNG,OAAQ,CACJC,MAAOqY,GAEXlkB,MAAOokD,EAAel/C,EAAO0B,UAAY0H,EAAAA,GAAUg2C,MACnDh/B,UAAWrB,EACXsB,UAAW,OACXC,WAAW,GAGTZ,EAAa,CACf9c,EAAG+9C,EACHn7C,EAAG,CAAC1D,EAAI4d,YACRzC,KAAM,UACN1W,KAAM,UACN8Z,UAAW,OACX3Z,OAAQ,CACJ6Z,KAAM,EACN5Z,MAAOqY,IAITwB,EAAiB,CACnB5d,EAAG+9C,EACHn7C,EAAG,CAAC1D,EAAI2d,eACRxC,KAAM,UACN1W,KAAM,UACN8Z,UAAW,OACX3Z,OAAQ,CACJ6Z,KAAM,EACN5Z,MAAOqY,IAIf,MAAM,GAANllB,QAAA6I,EAAAA,EAAAA,GAAW+9C,GAAK,CAAE1gC,EAAKN,EAAYc,GACvC,GAAG,KAkFwB,CAAEggC,EAAkBC,IAC7C35C,EAtDY,WACd,IAAAE,EAA8B7H,EAAmBa,EAAO0B,UAAhDnC,EAAKyH,EAALzH,MAAOD,EAAU0H,EAAV1H,WAEf4d,EAAqB7a,EAAAA,EAAc8a,uBAAuB2gC,EAAcr8C,GAAhEwB,EAAGia,EAAHja,IAAKE,EAAG+Z,EAAH/Z,IACPG,EAjJY,SAACL,EAAaE,GAChC,IAAIia,EAAWna,EAAIS,QACf2Z,EAAWla,EAAIO,QAEnB,OAAQ1D,EAAO0B,UACX,KAAKtC,EAAAA,GAAcC,EACf+d,EAAWja,EAAIO,QACVE,SAAS,GAAI,UACbA,SAAS,GAAI,QAClByZ,EAAS1Z,IAAI,GAAI,QACjB,MACJ,KAAKvE,EAAAA,GAAc+/C,EACf/hC,EAAWja,EAAIO,QACVE,SAAS,GAAI,SACbC,QAAQ,QACRD,SAAS,IAAK,QACnByZ,EAASxZ,QAAQ,QACZF,IAAI,IAAK,QACd,MACJ,KAAKvE,EAAAA,GAAcI,EACf4d,EAAWja,EAAIO,QACVE,SAAS,GAAI,YACbA,SAAS,GAAI,QAClByZ,EAASxZ,QAAQ,WACZF,IAAI,GAAI,QACb,MACJ,SACIyZ,EAAWja,EAAIO,QACVE,SAAS8W,EAAgB,EAAG,SAC5B7W,QAAQ,QACRD,SAAS,EAAG,WAEJI,SAASf,KAClBma,EAAWna,EAAIS,QACVG,QAAQ,QACRD,SAAS,EAAG,WAGrByZ,EAASxZ,QAAQ,QACZF,IAAI,EAAG,UAIpB,MAAO,CACHyZ,EAASzb,SACT0b,EAAS1b,SAEjB,CAkGuBmC,CAAcb,EAAKE,GAChCma,EAAc,CAACra,EAAItB,SAAUwB,EAAIxB,UACvCi/C,EAlGuB,WACvB,IAAM19B,EAAWvpB,KAAKwJ,IAAGovB,MAAR54B,MAAIgJ,EAAAA,EAAAA,GAAQ48C,EAAenjD,KAAI,SAAAnB,GAAC,OAAIA,EAAEykB,YAAczkB,EAAEmkB,EAAE,MACnEgd,EAAWziC,KAAKsJ,IAAGsvB,MAAR54B,MAAIgJ,EAAAA,EAAAA,GAAQ48C,EAAenjD,KAAI,SAAAnB,GAAC,OAAIA,EAAEwkB,eAAiBxkB,EAAEkkB,EAAE,MAEtEolB,EAAcrhB,EAAWkZ,EACzBykB,EAAYtc,EAAaob,EAEzBmB,EAAYvc,EAAaob,EAAuB,IAAM,IAI5D,MAAO,CACHoB,OAJWF,EAAY,CAACzkB,EAAW0kB,EAAW59B,EAAW49B,GAAa,GAKtEE,OAJWH,EAAY,EAAI,EAMnC,CAmF+BI,GAAnBD,EAAMJ,EAANI,OAAQD,EAAMH,EAANG,OACVG,EAAQj+C,EAAItB,OAAO09C,EAAqBr/C,EAAO0B,WAErD,OAAApF,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACO6D,GAAW,IACd8G,YAAY,EACZC,UAAU,EACVC,UAAW,UACX1G,WAAAA,EACA8G,MAAO,CACHC,UAAWnH,EACXkG,KAAM,OACNmB,SAAUpH,EACVmH,MAAOihC,EAAaplC,EAAaga,EACjC3V,YAAY,EACZpI,MAAAA,EACAD,WAAAA,EACA4hD,MAAAA,EACAt5C,YAAa8gC,EAAa,CACtBjhC,MAAO6V,EACPzV,QAAS,gCACTvQ,GAERwQ,MAAO,CACHC,UAAU,EACVC,eAAgB,MAChBL,YAAY,EACZM,UAAW5H,EACX6H,MAAO,SACPV,UAAWnH,EACXqH,SAAUpH,EACV6H,cAAe3H,EACf4H,WAAY,OACZX,MAAOs5C,EACPxhD,MAAQyhD,GAEZG,OAAQ,CACJ1jC,UAAU,EACV1V,UAAU,EACVJ,YAAY,EACZF,MAAO,CAAC,EAAG,KACXuW,WAAY,IACZojC,gBAAgB,IAG5B,CAGe94C,GAEf,OACI3R,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,EACI5B,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACDC,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChCjO,QArSa,SAACT,GACtB,GAAKS,GAIAT,EAAE4O,OAAOnP,OAAd,CAIA,IAEMwL,GAFNxM,EAAAA,EAAAA,GAAgBuB,EAAE4O,OAAM,GAAZ,GAEYhG,EAElBy+C,EAAcngD,IAAAA,IAAW+D,GAEzBq8C,EAAYD,EAAY39C,QAE9B,OAAQ1D,EAAO0B,UACX,KAAKtC,EAAAA,GAAcC,EACfiiD,EAAUt4C,MAAM,SAChB,MACJ,KAAK5J,EAAAA,GAAcI,EACf8hD,EAAUt4C,MAAM,WAChB,MACJ,KAAK5J,EAAAA,GAAc+/C,EACfmC,EAAUt4C,MAAM,QAChB,MACJ,KAAK5J,EAAAA,GAAcK,EACf6hD,EAAUt4C,MAAM,QAIxBvO,EAAQ,CACJqO,YAAau4C,EAAYn4C,SACzBH,UAAWu4C,EAAUp4C,SACrBC,gBAAiBnJ,EAAOmJ,kBAAoBC,EAAAA,GAAUC,iBAChD/R,EACA0I,EAAOmJ,gBACb4M,eAAgB/V,EAAO+V,eACvBqQ,OAAQpmB,EAAOomB,OACfrf,aAAc/G,EAAO+G,aACrBw6C,KAAMvhD,EAAOuhD,OAASn4C,EAAAA,GAAUC,iBAC1B/R,EACA0I,EAAOuhD,KACbC,aAAcxhD,EAAOwhD,eAAiBp4C,EAAAA,GAAUC,iBAC1C/R,EACA0I,EAAOwhD,cAvCjB,CAyCJ,EAsPY3sD,MAAOA,EACPqN,KAAMA,EACN4E,OAAQA,EACRwC,OAAQC,EAAAA,MAEZ5S,EAAAA,EAAAA,MAAA,OAAKL,UAAU,SAAQC,SAAA,EACnB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,gBAAeC,SAAC,mBAC/B5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,aAAYC,SAAC,gBAC5B5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,UAASC,SAAC,oBAIzC,CAEAL,EAAoB6F,aAAe,CAC/BlH,MAAO,yB,yGCxZLqoD,EAAa,CACf,CACIlnD,MAAOoT,EAAAA,GAAUC,YACjB1R,KAAM,QACTmC,QAAA6I,EAAAA,EAAAA,GACEiH,EAAAA,KAGD63C,EAAgB,CAClB,CACIzrD,MAAOoT,EAAAA,GAAUC,YACjB1R,KAAM,QACTmC,QAAA6I,EAAAA,EAAAA,GACE,CACC++C,EAAAA,EAAaC,MACbD,EAAAA,EAAaE,KACbF,EAAAA,EAAaG,MACbH,EAAAA,EAAaI,SACf1lD,KAAI,SAAAolD,GAAY,MAAK,CACf7pD,KAAM6pD,EACNxrD,MAAOwrD,EACd,MAGCO,EAAc,CAACv7B,EAAAA,GAAOC,IAAKD,EAAAA,GAAOE,GAAIF,EAAAA,GAAOG,EAAGH,EAAAA,GAAOI,IAAKJ,EAAAA,GAAOK,IACpEzqB,KAAI,SAAAgqB,GAAM,MAAK,CACZzuB,KAAMyuB,EACNpwB,MAAOowB,EACV,IAEC8B,EAAsB,CACxB,CACIvwB,KAAM,MACN3B,MAAO4mD,EAAAA,EAAeC,mBAE1B,CACIllD,KAAM,KACN3B,MAAO4mD,EAAAA,EAAeE,eAIxBkF,EAAe,CACjBrqD,KAAM,MACN3B,MAAOoT,EAAAA,GAAUC,YACjB44C,QAAS,IAGPC,EAAY,CACd,CACIvqD,KAAMwqD,EAAAA,GAAK39C,MACXxO,MAAOmsD,EAAAA,GAAK39C,MACZy9C,QAAS,eAEb,CACItqD,KAAMwqD,EAAAA,GAAK19C,KACXzO,MAAOmsD,EAAAA,GAAK19C,KACZw9C,QAAS,eAIXG,EAAc,CAChB,CACIzqD,KAAMyH,EAAAA,GAAc+/C,EACpBnpD,MAAOoJ,EAAAA,GAAc+/C,EACrB8C,QAAS,QAEb,CACItqD,KAAMyH,EAAAA,GAAcC,EACpBrJ,MAAOoJ,EAAAA,GAAcC,EACrB4iD,QAAS,SAEb,CACItqD,KAAMyH,EAAAA,GAAcI,EACpBxJ,MAAOoJ,EAAAA,GAAcI,EACrByiD,QAAS,WAEb,CACItqD,KAAMyH,EAAAA,GAAcK,EACpBzJ,MAAOoJ,EAAAA,GAAcK,EACrBwiD,QAAS,SAIXI,EAAe,CAACrjD,EAAAA,EAASE,IAAKF,EAAAA,EAASC,KACxC7C,KAAI,SAAA8Z,GAAQ,MAAK,CACdve,KAAMue,EACNlgB,MAAOkgB,EACV,IAEE,SAASosC,EAAoBntD,GAKL,IAJ3B2G,EAAQ3G,EAAR2G,SAAQymD,EAAAptD,EACRqtD,mBAAAA,OAAkB,IAAAD,EAAGzsD,OAAOC,OAAOqJ,EAAAA,IAAcmjD,EAAAE,EAAAttD,EACjDutD,mBAAAA,OAAkB,IAAAD,GAAQA,EACvB1sD,GAAMgL,EAAAA,EAAAA,GAAA5L,EAAA6L,GAEHyI,EAAoB,SAACC,GAAqC,OAAK,SAAC1T,GAClE8F,GAAQQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACHvG,GAAM,IAAAgJ,EAAAA,EAAAA,GAAA,GACR2K,EAAO1T,IAEhB,CAAE,EAEI2sD,EAA2B,SAAC/mD,GAAc,OAC5C,SAACs9B,GAAsB,SAAAp/B,OAAQ8B,EAAM,MAAA9B,OAAKo/B,EAAKvhC,KAAI,CAAG,EAEpDirD,EAAgC,SAAC1pB,GAAsB,OACzDviC,EAAAA,EAAAA,MAAA,OAAKL,UAAU,GAAEC,SAAA,EACb5B,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,GAAEC,SAAE2iC,EAAKvhC,QACzBhD,EAAAA,EAAAA,KAAA,QAAM2B,UAAU,GAAEC,SAAE2iC,EAAK+oB,YACvB,EAGJY,GAAUntD,EAAAA,EAAAA,UAAQ,kBACpB0sD,EAAYpiD,QAAO,SAAA4C,GAAC,OAAI4/C,EAAmBjhD,SAASqB,EAAE5M,MAAM,GAAC,GAC7D,CAACwsD,IAGCM,GAAQptD,EAAAA,EAAAA,UAAQ,kBAAMgtD,EAAkB,CACvCV,GAAYloD,OAAKooD,GAClBA,CAAS,GACf,CAACQ,IAED,OACI/rD,EAAAA,EAAAA,MAACoT,EAAAA,GAAW,CAAAxT,SAAA,EACR5B,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOgzC,EAAc9gD,KAAI,SAAAwG,GAAC,OAAAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUsG,GAAC,IAAElG,SAAU3G,EAAOoT,kBAAoBvG,EAAE5M,OAAK,IACnF8F,SAAU,SAAF6E,GAAA,IAAK3K,EAAK2K,EAAL3K,MAAK,OAAOyT,EAAkB,kBAAlBA,CAAqCzT,EAAM,EACpEozB,2BAA4Bu5B,EAAyB,QACrDrsD,UAAU,8BAGlB3B,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOu3C,EAAiBrlD,KAAI,SAAAwG,GAAC,OAAAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUsG,GAAC,IAAElG,SAAU3G,EAAOyrD,eAAiB5+C,EAAE5M,OAAK,IACnFmU,uBAAuB,EACvBrO,SAAU,SAAFyH,GAAA,IAAKvN,EAAKuN,EAALvN,MAAK,OAAOyT,EAAkB,eAAlBA,CAAkCzT,EAAM,EACjEozB,2BAA4Bu5B,EAAyB,UACrDrsD,UAAU,8BAGlB3B,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAO63C,EAAY3lD,KAAI,SAAAwG,GAAC,OAAAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUsG,GAAC,IAAElG,SAAU3G,EAAOqwB,SAAWxjB,EAAE5M,OAAK,IACxEmU,uBAAuB,EACvBrO,SAAU,SAAFsJ,GAAA,IAAKpP,EAAKoP,EAALpP,MAAK,OAAOyT,EAAkB,SAAlBA,CAA4BzT,EAAM,EAC3DozB,2BAA4Bu5B,EAAyB,OACrDrsD,UAAU,8BAGlB3B,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOge,EAAoB9rB,KAAI,SAAAwG,GAAC,OAAAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUsG,GAAC,IAAElG,SAAU3G,EAAOggB,iBAAmBnT,EAAE5M,OAAK,IACxFmU,uBAAuB,EACvBrO,SAAU,SAAFuJ,GAAA,IAAKrP,EAAKqP,EAALrP,MAAK,OAAOyT,EAAkB,iBAAlBA,CAAoCzT,EAAM,EACnEozB,2BAA4Bu5B,EAAyB,WACrDrsD,UAAU,8BAGlB3B,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAO44C,EAAM1mD,KAAI,SAAAwG,GAAC,OAAAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUsG,GAAC,IAAElG,SAAU3G,EAAOwrD,OAAS3+C,EAAE5M,OAAK,IAChEmU,uBAAuB,EACvBrO,SAAU,SAAFkK,GAAA,IAAKhQ,EAAKgQ,EAALhQ,MAAK,OAAOyT,EAAkB,OAAlBA,CAA0BzT,EAAM,EACzDozB,2BAA4Bu5B,EAAyB,QACrDI,0BAA2BH,EAC3BtsD,UAAU,oDAGlB3B,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAO24C,EAAQzmD,KAAI,SAAAwG,GAAC,OAAAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUsG,GAAC,IAAElG,SAAU3G,EAAO2L,WAAakB,EAAE5M,OAAK,IACtEmU,uBAAuB,EACvBrO,SAAU,SAAFmK,GAAA,IAAKjQ,EAAKiQ,EAALjQ,MAAK,OAAOyT,EAAkB,WAAlBA,CAA8BzT,EAAM,EAC7DozB,2BAA4Bu5B,EAAyB,UACrDI,0BAA2BH,EAC3BtsD,UAAU,sDAGlB3B,EAAAA,EAAAA,KAACqV,EAAAA,GAAa,CAAAzT,UACV5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOm4C,EAAajmD,KAAI,SAAAwG,GAAC,OAAAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUsG,GAAC,IAAElG,SAAU3G,EAAOgR,eAAiBnE,EAAE5M,OAAK,IAC/EmU,uBAAuB,EACvBrO,SAAU,SAAFuK,GAAA,IAAKrQ,EAAKqQ,EAALrQ,MAAK,OAAOyT,EAAkB,eAAlBA,CAAkCzT,EAAM,EACjEozB,2BAA4Bu5B,EAAyB,OACrDrsD,UAAU,+BAK9B,C,oCCjLO,SAASmyC,EAAoBtzC,GAUL,IAAD8V,EAAA9V,EAT1BmB,UAAAA,OAAS,IAAA2U,EAAG,6CAA4CA,EACxDV,EAAoBpV,EAApBoV,qBACAi4C,EAAkBrtD,EAAlBqtD,mBACA73C,EAASxV,EAATwV,UACAD,EAAavV,EAAbuV,cAAa+0C,EAAAtqD,EACbuzC,WAAAA,OAAU,IAAA+W,GAAQA,EAAAgD,EAAAttD,EAClButD,mBAAAA,OAAkB,IAAAD,GAAQA,EAAAv3C,EAAA/V,EAC1BH,QAAAA,OAAO,IAAAkW,EAAGjW,EAAAA,EAAoB+tD,qBAAoB93C,EAClDE,EAAYjW,EAAZiW,aAEMm0C,GAAiBzmC,EAAAA,EAAAA,IAAe,SAAAlM,GAAC,OAAIA,EAAErX,UAAUgqD,cAAc,IAC/D0D,GAA6BnqC,EAAAA,EAAAA,IAAe,SAAAlM,GAAC,OAAIA,EAAErX,UAAU0tD,0BAA0B,IAErFC,EAA4B3D,EAA5B2D,gBAAiBhkC,EAAWqgC,EAAXrgC,OAEnB1T,GAAWC,EAAAA,EAAAA,MAEXC,GAAYC,EAAAA,EAAAA,IAAiB3W,GAEnCsD,GAAsCC,EAAAA,EAAAA,WAAQ+D,EAAAA,EAAAA,GAAA,CAC1C6M,gBAAiBC,EAAAA,GAAUC,YAC3B0M,eAAgB6mC,EAAAA,EAAeC,kBAC/Bz2B,OAAQI,EAAAA,GAAOC,IACf1f,aAAc/H,EAAAA,EAASE,IACvBwC,SAAUtC,EAAAA,GAAcC,EACxBkiD,KAAMY,EAAAA,GAAK19C,KACX+8C,aAAcp4C,EAAAA,GAAUC,aACrBqB,IACLlS,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GATKsT,EAAWpT,EAAA,GAAEqT,EAAcrT,EAAA,IAWlCkB,EAAAA,EAAAA,YAAU,WACNgS,GAAaF,GAAS23C,EAAAA,EAAAA,KAA+Bv3C,EAAarB,EAAsBI,GAC5F,GAAG,CAACe,EAAWF,EAAUI,EAAarB,EAAsBI,IAE5D,IAAM1U,GAAQP,EAAAA,EAAAA,UAAQ,WAClB,OACIf,EAAAA,EAAAA,KAACuB,EAAmB,CAChB8J,OAAQ4L,EACR2zC,eAAgB2D,EAChB1D,aAActgC,EACdwpB,WAAYA,EACZjuC,QAAS2Q,GAGrB,GAAG,CAACQ,EAAas3C,EAAiBhkC,EAAQwpB,EAAYt9B,IAEhDvU,EAAY,mBAElB,OACIlC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,EAAWP,UAAWA,EAAUC,UACpD5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAausD,GAA4B1sD,UACpEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASA,EACT6B,UAAWA,EACXC,iBAAiB,yCAAwCP,SAAA,EAEzDI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAAAV,SAAA,EAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,KACLlC,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACrC,QAASA,EAAQuB,UACtB5B,EAAAA,EAAAA,KAAC2tD,GAAoBhmD,EAAAA,EAAAA,GAAA,CACjBR,SAAU+P,EACV22C,mBAAoBA,EACpBE,mBAAoBA,GAChB92C,UAIhBjX,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAc8rD,EACd7rD,YACmB,OAAf8rD,QAAe,IAAfA,GAAAA,EAAiBzpD,QACb9C,EAAAA,EAAAA,MAAA4D,EAAAA,SAAA,CAAAhE,SAAA,CAAE,4FAC0F5B,EAAAA,EAAAA,KAAA,SAAM,0EAGlG,KACP4B,SAEmB,OAAf2sD,QAAe,IAAfA,GAAAA,EAAiBzpD,OAASxD,GAAQtB,EAAAA,EAAAA,KAACoX,EAAAA,EAA0B,YAM1F,C,8NChGO,SAASq3C,EAAqBjuD,GAAgF,IAA7E0jB,EAAK1jB,EAAL0jB,MAAOiM,EAAiB3vB,EAAjB2vB,kBAAmBu+B,EAAkBluD,EAAlBkuD,mBACxDl+B,EAAyBC,EAAAA,GAAkBC,EAAAA,GAAYC,OAEzDg+B,EACAC,EAAAA,GADAD,WAAYE,EACZD,EAAAA,GADYC,gBAAiB1nB,EAC7BynB,EAAAA,GAD6BznB,UAAWz7B,EACxCkjD,EAAAA,GADwCljD,UAAWC,EACnDijD,EAAAA,GADmDjjD,SAAUmjB,EAC7D8/B,EAAAA,GAD6D9/B,OAAQggC,EACrEF,EAAAA,GADqEE,cAAeC,EACpFH,EAAAA,GADoFG,UAAWC,EAC/FJ,EAAAA,GAD+FI,qBAAsBhhB,EACrH4gB,EAAAA,GADqH5gB,UAAWihB,EAChIL,EAAAA,GADgIK,cAAeC,EAC/IN,EAAAA,GAD+IM,WAAYpjD,EAC3J8iD,EAAAA,GAD2J9iD,WAGzJqjD,EAAW,SAACvjC,GACd,IAAInlB,EAAS,GAYb,OAXImlB,EAAKrhB,KAAOjF,OAAOsmB,EAAKrhB,OACxB9D,EAASqN,EAAAA,GAAWulB,eAAezN,EAAKrhB,IAAK,KAAK,GAAO,IAEzDqhB,EAAKthB,KAAOhF,OAAOsmB,EAAKthB,OACxB7D,EAAM,GAAAtB,OAAMsB,EAASA,EAAS,IAAM,IAAEtB,OAAG2O,EAAAA,GAAWulB,eAAezN,EAAKthB,IAAK,UAAK,GAAO,KAGzF7D,IACAA,GAAU,MAGPA,CACX,EA+CA2oD,EA7BsB,WAClB,IAAIC,EAAmB,GACnBC,EAAc,GACVC,EAAwCX,EAAAA,GAAxCW,MAAOC,EAAiCZ,EAAAA,GAAjCY,QAASC,EAAwBb,EAAAA,GAAxBa,oBAClBC,EAAsBnjD,MAASojD,YAC/BppC,GAAS0oC,IAAiBS,GAAuB,GAAM,EACzDphC,EAAK/H,EAAOkpC,EAChB,GAAIlpC,EAAO,EAEP8oC,GADAA,EAAmBE,EAAM1pD,MAAM0pD,EAAMzqD,SAAUyhB,EAAMgpC,EAAMzqD,SACvBK,OAAOoqD,EAAM1pD,MAAM,EAAGyoB,IAE1DghC,GADAA,EAAcE,EAAQ3pD,MAAM2pD,EAAQ1qD,SAAUyhB,EAAMipC,EAAQ1qD,SAClCK,OAAOqqD,EAAQ3pD,MAAM,EAAGyoB,SAC/C,GAAIihC,EAAMzqD,OAASyhB,EAAOkpC,EAAqB,CAClD,IAAMG,EAASthC,EAAKihC,EAAMzqD,OAE1BuqD,GADAA,EAAmBE,EAAM1pD,MAAM0gB,EAAM+H,IACDnpB,OAAOoqD,EAAM1pD,MAAM,EAAG+pD,IAE1DN,GADAA,EAAcE,EAAQ3pD,MAAM0gB,EAAM+H,IACRnpB,OAAOqqD,EAAQ3pD,MAAM,EAAG+pD,GACtD,MACIP,EAAmBE,EAAM1pD,MAAM0gB,EAAM+H,GACrCghC,EAAcE,EAAQ3pD,MAAM0gB,EAAM+H,GAEtC,IAAMuhC,EAAaR,EAAiBhmD,UACpCwmD,EAAWC,QAAQ,MACnB,IAAMC,EAAQT,EAAYjmD,UAE1B,OADA0mD,EAAMD,QAAQ,uCACP,CAAED,WAAAA,EAAYE,MAAAA,EACzB,CAE8BC,GAAtBH,EAAUT,EAAVS,WAAYE,EAAKX,EAALW,MA2FpBE,EAtEqB,WACjB,IAAM/T,EApBe,WACrB,IAAMjuC,EAAc,GACd4C,EAAIg/C,EAAWpoD,KAAI,SAAC88B,EAAM39B,GAAK,OAAKA,CAAK,IACzCspD,EAAer/C,EAAEpJ,KAAI,iBAAM,EAAE,IAanC,OAZA0oB,EAAkBzpB,SAAQ,SAAAojB,GAClB7b,EAAEnJ,OAASoqD,IACXjhD,EAAE1H,KAAKgG,IAAAA,IAAWud,GAAK5a,QAAQ,OAAOlC,OAAOyH,EAAAA,GAAUsY,sBACvDmjC,EAAEzoD,KAAI,SAAC88B,EAAe39B,GAClB,IAAIvF,EAAe,CAAEuqB,KAAM,CAAErhB,IAAK,EAAGD,IAAK,GAAKghB,MAAO,EAAGmC,QAAS,CAAC,EAAG2D,WAAY,GAIlF,OAHc,IAAVxqB,IACAvF,EAAM8uD,UAAY,CAAE5lD,IAAK,EAAGD,IAAK,IAE9Bi6B,EAAKh+B,KAAKlF,EACrB,IAER,IACO,CAAE4M,EAAAA,EAAG4C,EAAAA,EAAGq/C,EAAAA,EACnB,CAG0BE,GAClB7hC,EAAW,EACXkZ,EAAW,EACPx5B,EAAYiuC,EAAZjuC,EAAG4C,EAASqrC,EAATrrC,EAAGq/C,EAAMhU,EAANgU,EA+Dd,OA9DAhsC,EAAMxd,SAAQ,SAAAsqB,GACV,GAAIA,GAAQA,EAAKC,gBAAkBhjB,EAAEnJ,QAAUoqD,EAAY,CACvD,IAAM5iD,EAAOC,IAAAA,IAAWykB,EAAKC,gBAAgBC,QAAQlkB,OAAOyH,EAAAA,GAAUsY,qBAChEsjC,EAAO9jD,IAAAA,IAAWykB,EAAKC,gBAAgBC,QAAQlkB,OAAO,MACtDsjD,EAAYriD,EAAE6iB,QAAQxkB,GACxBikD,EAAYV,EAAW/+B,QAAQu/B,GACnC,GAAIr/B,EAAKI,YAAcJ,EAAKI,WAAWtsB,OACZksB,EAAfI,WACG1qB,SAAQ,SAAA4qB,GAkBf,IAjBmB,IAAfi/B,KACkC,IAA9BV,EAAW/+B,QAAQ,OACfu/B,EAAOR,EAAWA,EAAW/qD,OAAS,KACtCyrD,EAAYV,EAAW/+B,QAAQ++B,EAAWA,EAAW/qD,OAAS,KAE9DurD,EAAOR,EAAW,KAClBU,EAAYV,EAAW/+B,QAAQ++B,EAAW,OAG1CQ,EAAOR,EAAWA,EAAW/qD,OAAS,KACtCyrD,EAAYV,EAAW/+B,QAAQ++B,EAAWA,EAAW/qD,OAAS,KAE9DurD,EAAOR,EAAW,KAClBU,EAAYV,EAAW/+B,QAAQ++B,EAAW,OAIlDU,GAAa,EAAG,CAChB,IAAMC,EAAeN,EAAEK,GAAWD,GAC5BG,EAAoBP,EAAE,GAAGI,GAC/B,GAAIE,EAAO,CACPA,EAAM5kC,KAAK0F,EAAS/P,WAAa+P,EAAS1F,KAC1C4kC,EAAMllC,OAAS,EACf,IAAIolC,EAAuCp/B,EAASG,OAChDjB,EAAuBM,QAAQQ,EAASG,SAAW,IACnDi/B,EAAiBhgC,EAAAA,GAAYC,OAE5B6/B,EAAM/iC,QAAQijC,KACfF,EAAM/iC,QAAQijC,GAAkB,CAAEnmD,IAAK,EAAGD,IAAK,EAAGghB,MAAO,IAE7DklC,EAAM/iC,QAAQijC,GAAgBp/B,EAAS/P,WAAa+P,EAAS1F,KAC7D4kC,EAAM/iC,QAAQijC,GAAgBplC,OAAS,EACvC4kC,EAAEK,GAAWD,GAAaE,EAEtBjiC,EAAYiiC,EAAM5kC,KAAKrhB,IAAMimD,EAAM5kC,KAAKthB,MACxCikB,EAAWiiC,EAAM5kC,KAAKrhB,IAAMimD,EAAM5kC,KAAKthB,KAEtCm9B,IACDA,EAAW+oB,EAAM5kC,KAAKrhB,IAAMimD,EAAM5kC,KAAKthB,KAEtCkmD,EAAM5kC,KAAKrhB,IAAMimD,EAAM5kC,KAAKthB,IAAOm9B,IACpCA,EAAY+oB,EAAM5kC,KAAKrhB,IAAMimD,EAAM5kC,KAAKthB,IAEhD,CACImmD,GAAcA,EAAWN,YACzBM,EAAWN,UAAU7+B,EAAS/P,WAAa+P,EAAS1F,KACpD6kC,EAAWnlC,OAAS,EAE5B,CACJ,GAER,CACJ,IACO,CAAErd,EAAAA,EAAG4C,EAAAA,EAAGq/C,EAAAA,EAAG3hC,SAAAA,EAAUkZ,SAAAA,EAChC,CAEwCv1B,GAAhCjE,EAACgiD,EAADhiD,EAAG4C,EAACo/C,EAADp/C,EAAGq/C,EAACD,EAADC,EAAGzoB,EAAQwoB,EAARxoB,SAAUlZ,EAAQ0hC,EAAR1hC,SAErBoiC,EAA0B,SAACC,GAC7B,GAAKA,EAAOhlC,KAAKrhB,IAAMqmD,EAAOhlC,KAAKthB,IAAO,EAAG,CACzC,GAAIikB,IAAakZ,EACb,OAAOunB,EAAqBA,EAAqBlqD,OAAS,GAE9D,IAAM+rD,GAAgBtiC,EAAWkZ,GAAY,IACvCqpB,GAAmBF,EAAOhlC,KAAKrhB,IAAMqmD,EAAOhlC,KAAKthB,IAAOm9B,GAAYopB,EACpEE,EAAa/rD,KAAKC,KAAK6rD,GAAkB,IAAM9B,EAAqBlqD,SAC1E,OAAIisD,EAAa/B,EAAqBlqD,OAC3BkqD,EAAqBA,EAAqBlqD,OAAS,GAEvDkqD,EAAsB+B,EAAa,GAAK,EAAIA,EAAa,EAAI,EACxE,CACA,OAAO/B,EAAqB,EAChC,EA6BMgC,EAAc,SAACC,GACjB,IAAMC,EAAc/vD,OAAO6hC,KAAKiuB,EAASxjC,SACzC,OAAOyjC,EAAYpsD,OACbosD,EACGhqC,MAAK,SAACC,EAAGC,GAAC,OAAKwJ,EAAAA,GAAsBE,QAAQ3J,GAAeyJ,EAAAA,GAAsBE,QAAQ1J,EAAY,IACtG3f,KAAI,SAACq3C,GAAW,SAAA35C,OACV25C,IAAQpuB,EAAAA,GAAYC,MAAQ,QAAUmuB,EAAG,KAAA35C,OAAIgqD,EAAS8B,EAASxjC,QAAQqxB,IAAK,OAAA35C,OAAM8rD,EAASxjC,QAAQqxB,GAAKxzB,MAAK,+BAClH4X,KAAK,QAhBI,SAAC+tB,GACpB,GACuB,IAAnBA,EAAS3lC,QACR2lC,EAASd,WACV34C,EAAAA,EAAKqF,SAAS3D,EAAAA,GAAMi4C,cACpB,MAAO,kDAEf,CAUUC,CAAeH,EACzB,EASM9+C,EAAS,CACXk/C,aAAclqB,EACdlF,YAAaiuB,EAAEzoD,KAAI,SAAC6pD,EAAIC,GAAM,OAAKD,EAAG7pD,KAAI,SAAC+pD,EAAIC,GAC3C,MAAO,CACHxjD,EAAGA,EAAEwjD,GACL5gD,EAAGA,EAAE0gD,GACLvuD,MA7MewtD,EA6MSgB,EA5M5BhB,EAAML,UACChB,EAASqB,EAAML,YAAc,SAEpB,IAAhBK,EAAMllC,OAAe9T,EAAAA,EAAKqF,SAAQ+gB,MAAbpmB,EAAAA,GAAIxJ,EAAAA,EAAAA,GAAakL,EAAAA,GAAMojB,WACtC,uBAANn3B,OAA8BqS,EAAAA,EAAKqF,SAAS3D,EAAAA,GAAMC,aAAcD,EAAAA,GAAMsF,oBAAsBswC,EAAgBC,EAAS,oDAErG,IAAhByB,EAAMllC,OAAe9T,EAAAA,EAAKqF,SAAQ+gB,MAAbpmB,EAAAA,EAAI,CAAU0B,EAAAA,GAAMujB,QAAMt3B,QAAA6I,EAAAA,EAAAA,GAAKkL,EAAAA,GAAMwjB,QACpD,uBAANv3B,OAA8B4pD,EAAS,sBAEtCyB,EAAMllC,MAGL,GAANnmB,OAAUgqD,EAASqB,EAAM5kC,OAFf,uBAANzmB,OAA8B4pD,EAAS,kBAmMnC1/B,KAAM,CACFE,OAAQ,+CACR3D,KAAM,GACN5Z,MAAO2+C,EAAwBa,IAEnCE,WAAW,GAnNG,IAAClB,CAqNvB,GAAE,IAAE5iD,QAAO,SAACwgB,EAAG3W,GACX,OAAO2W,EAAEjpB,OAAOsS,EACpB,GAAG,IACH3L,WAAAA,EACA8G,MAAO,CACH++C,UAAWxqB,EACXyqB,UAAW5jB,EACXl7B,MAlEU,WAEd,QAF0BhK,UAAAhE,OAAA,QAAAnC,IAAAmG,UAAA,GAAAA,UAAA,GAAG,IACXhE,QAEd,KAAK,EAUL,QACI,MAAO,EAAE,GAAK,KATlB,KAAK,EACD,MAAO,EAAE,GAAK,KAClB,KAAK,EACD,MAAO,EAAE,GAAK,KAClB,KAAK,EACD,MAAO,EAAE,GAAK,KAClB,KAAK,EACD,MAAO,EAAE,GAAK,IAI1B,CAkDe+0B,CAAU5rB,GACjB+E,YAAY,EACZ2c,QAAQ,EACR9c,UAAWnH,EACXqH,SAAUpH,GAEdwH,MAAO,CACHw+C,UAAWxqB,EACXyqB,UAAW5jB,EACXre,QAAQ,EACR3c,YAAY,EACZ6+C,SAAUhhD,EACVihD,SAAU/B,EACVl9C,UAAWnH,EACXqH,SAAUpH,EACVmd,UAAU,GAEdgG,OAAAA,GAGEijC,EAAU,CAAC,CACb9jD,EAAGA,EACH4C,EAAGA,EACHq/C,EAAGA,EAAEzoD,KAAI,SAAC6pD,GAAE,OAAKA,EAAG7pD,KAAI,SAAC+pD,GAAE,OAAKA,EAAG5lC,KAAKrhB,IAAMinD,EAAG5lC,KAAKthB,GAAG,GAAC,IAC1DsH,KAAM,UACNogD,WAAW,EACXC,aAAa,EACbC,WAAY3jC,EAAWogC,EAAaE,EACpCnjC,UAAW,OACX1oB,KAxDOktD,EACFzoD,KAAI,SAAC0qD,GAAgB,OAAKA,EACtB1qD,KAAI,SAACwpD,GAAQ,OAAKD,EAAYC,EAAS,GAAC,IAuDjDmB,KAAM,GACNC,KAAM,KAeV,OACIryD,EAAAA,EAAAA,KAAC4T,EAAAA,GAAI,CACD9N,QAdyB,SAACT,GAC9B,IAAM6O,EAAa7O,GAAKA,EAAE4O,QAAU5O,EAAE4O,OAAO,GAC7Cq+C,GAAAxuD,EAAAA,EAAAA,GAAiCoQ,EAAMq+C,WAAU,GAA1CC,EAAWF,EAAA,GAAEG,EAASH,EAAA,GACvBrB,EAAWf,EAAEsC,GAAaC,GAC1BC,EAAOptD,OAAOuqD,EAAW37C,EAAMrD,IAC/BvE,EAAOwgB,OAAO5Y,EAAMjG,GACpBwf,EAAUtsB,OAAO6hC,KAAKiuB,EAASxjC,SACrB,IAAZvZ,EAAMrD,GACN69C,EAAmBpiD,EAAMomD,EAAMjlC,EAEvC,EAKQ5Z,QAASC,EAAAA,GAAWC,UAAU,WAC9BC,UAAWF,EAAAA,GAAWC,UAAU,aAChCxG,KAAMwkD,EACN5/C,OAAQA,EACRwC,OAAQC,EAAAA,IAGpB,C,2FChTO,SAAS4+B,IACZ,IAAM/mB,GAAUC,EAAAA,EAAAA,MAEVrhB,GAAS3K,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyK,MAAM,IAC9D2kB,GAAkEC,EAAAA,EAAAA,GAAqB1jB,OAA/E2jB,EAAkCF,EAAlCE,mCAAoCC,EAAiBH,EAAjBG,kBACtCE,GAAe3vB,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUyvB,YAAY,IAC1ED,GAA0CnM,EAAAA,EAAAA,KAAlCC,EAAKkM,EAALlM,MAAOG,EAAsB+L,EAAtB/L,uBAEPiM,EAAwCjlB,EAAxCilB,gBAAiB/D,EAAuBlhB,EAAvBkhB,mBAEnBomC,GAAgB5xD,EAAAA,EAAAA,UAAQ,kBAAMmjB,EAAMzc,KAAI,SAAAupB,GAAI,OAAArpB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC3CqpB,GAAI,IACPI,WAAYJ,EAAKI,WACZ/lB,QAAO,SAAAimB,GAAQ,QAAKhB,EAAgBxrB,SAE7BwrB,EAAgBtvB,MAAK,SAAAkjC,GAAC,OAAIA,IAAM5S,EAASG,MAAM,KAE3CnB,EAAgBtvB,MAAK,SAAAkjC,GAAC,OAAIA,IAAMxT,EAAAA,GAAYC,KAAK,KACjDF,EAAAA,GAAkBC,EAAAA,GAAYC,OAAO3vB,MAAK,SAAAkjC,GAAC,OAAIA,IAAM5S,EAASG,MAAM,SAK3ElF,EAAmBznB,QAASynB,EAAmBvrB,MAAK,SAAAugB,GAAQ,OAAIA,IAAa+P,EAAS/P,QAAQ,IAAS,KAC3G,GACN,GAAE,CAAC2C,EAAOqI,EAAoB+D,IAE3Bo+B,GAAqBp0C,EAAAA,EAAAA,cAAY,SAAChO,EAAcomD,EAAcxB,GAChE,IAAQ0B,EAAuBhE,EAAAA,GAAvBgE,mBACFhL,EAAar7C,IAAOugB,OAAOxgB,GAAOmI,EAAAA,GAAUsY,qBAClD,GAAImkC,EAAYpsD,OAAQ,CACpB,IAAMwH,EAAOs7C,EAAW56C,SAClBigB,EAAe,CACjBQ,QAAS3Z,EAAAA,GAAW++C,uBAAuB3B,GAC3ChkC,SAAU,CAACC,EAAAA,EAAWC,UAAWD,EAAAA,EAAWE,QAASF,EAAAA,EAAWG,UAChEC,SAAUjhB,EACVkhB,OAAQlhB,EACRiV,SAAwC,IAA9BgL,EAAmBznB,OAAe,GAAKynB,EAAmB,IAElEoB,EAAoD,EAACF,EAAAA,EAAAA,OAAWP,EAAAA,EAAAA,OAAY3L,EAAAA,EAAAA,IAASgL,IAAqBgB,EAAAA,EAAAA,OAAYC,EAAAA,EAAAA,OACtHI,EAAcC,EAAAA,EAAsBC,UAAUb,EAAcU,GAClElB,EAAQlmB,KAAK,CACTwnB,SAAU9O,EAAAA,GAAO+O,SACjBC,OAAQL,GAEhB,MAAWpW,EAAAA,EAAKqF,SAAS3D,EAAAA,GAAMC,gBAC3ByuC,EAAWkL,IAAI,CAAEJ,KAAMptD,OAAOotD,GAAOK,OAAQ,EAAGC,OAAQ,EAAGC,YAAa,IACxErL,EAAWsL,GAAG,OACVtL,EAAW2H,QAAUqD,GACrBhL,EAAWkL,IAAI,CAAEJ,KAAME,EAAoBG,OAAQ,EAAGC,OAAQ,IAElEvmC,EAAQlmB,KAAK,CACTwnB,SAAU9O,EAAAA,GAAOod,QACjB17B,MAAO,CAAE26B,SAAUssB,EAAW56C,YAG1C,GAAG,CAACyf,EAASF,IAEP4mC,GAAgBpyD,EAAAA,EAAAA,UAAQ,kBAC1Bf,EAAAA,EAAAA,KAACyuD,EAAqB,CAClBvqC,MAAOyuC,EACPxiC,kBAAmBA,EACnBu+B,mBAAoBA,GACtB,GACH,CAACiE,EAAexiC,EAAmBu+B,IAEhCvuD,EAAQ,gBAEd,OACIH,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAOA,EAAOkwB,aAAcA,EAAc1uB,UAAU,UAASC,UAC1EI,EAAAA,EAAAA,MAACH,EAAAA,EAAiB,CACdC,YACIC,EAAAA,EAAAA,IAAasiB,KACbtiB,EAAAA,EAAAA,IAAamuB,GAChBtuB,SAAA,EAED5B,EAAAA,EAAAA,KAACsC,EAAAA,GAAqB,CAAAV,UAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKzB,OAET6B,EAAAA,EAAAA,MAACO,EAAAA,GAAsB,CAACC,aAAc6hB,EAAuBziB,SAAA,CACxDuxD,GACDnxD,EAAAA,EAAAA,MAAA,OAAKL,UAAU,cAAaC,SAAA,EACxB5B,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CACJwW,MAAK,GAAA/T,QAAA6I,EAAAA,EAAAA,GAAMkL,EAAAA,GAAMwjB,MAAI,CAAExjB,EAAAA,GAAMqjB,cAAerjB,EAAAA,GAAMujB,OAAQvjB,EAAAA,GAAMsjB,YAAW56B,SAAC,sIAIhF5B,EAAAA,EAAAA,KAAC0C,EAAAA,EAAO,CAACwW,MAAK,GAAA/T,QAAA6I,EAAAA,EAAAA,GAAMkL,EAAAA,GAAMojB,UAAQ,CAAEpjB,EAAAA,GAAMi4C,eAAcvvD,SAAC,uHASjF,C,kNClDawxD,EA3DuD,CAChE,CACIjzC,UAAWtW,EAAAA,EAAqBC,QAChCsW,0BAA2B,WAAF,MAAQ,WAAW,EAC5CC,oBAAqB,SAAF7f,GAAA,IAAKsJ,EAAOtJ,EAAPsJ,QAAO,OAC3B9J,EAAAA,EAAAA,KAACqzD,EAAAA,EAAQ,CACL7gC,UAAW1oB,EAAQ0oB,UACnBI,cAAe9oB,EAAQ8oB,eACzB,EAENjS,gBAAiB,6BACjBC,cAAe,6BACfC,aAAchX,EAAAA,EAAqBC,SAEvC,CACIqW,UAAWtW,EAAAA,EAAqB4oB,aAChCrS,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAFrU,EAAgB+U,GAAO,IAAlBjX,EAAOkC,EAAPlC,QAAO,OAC3B9J,EAAAA,EAAAA,KAAC0yB,EAAAA,EAA2B,CAAA9wB,SACvB,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAAC2yB,EAAAA,EAAc,CACXC,cAAe9oB,EAAQ8oB,cACvBJ,UAAW1oB,EAAQ0oB,UACnBhR,KAAM1X,EAAQ0X,KACdnW,OAAQwnB,EAAAA,EAAeygC,SACvBxtD,QAASib,EAAQI,gBACjB4R,QAAQ,mCACRhtB,SAAUqT,GACZ,GAEoB,EAClCuH,gBAAiB,sBACjBC,cAAe,uBAEnB,CACIT,UAAWtW,EAAAA,EAAqBwD,iBAChC+S,0BAA2B,WAAF,MAAQ,MAAM,EACvCC,oBAAqB,SAAFzR,EAAyBmS,GAAO,IAA3B1T,EAAgBuB,EAAhBvB,iBAAgB,SAAAlI,OACjC4b,EAAQQ,SAAQ,KAAApc,OAAIylB,EAAAA,GAAWoI,kBAAkB3lB,GAAkB,GAAK,EAC/EsT,gBAAiB,kCACjBC,cAAe,kCACfC,aAAchX,EAAAA,EAAqBwD,kBAEvC,CACI8S,UAAWtW,EAAAA,EAAqBopB,UAChC7S,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,WAAF,MAAQ,EAAE,EAC7BM,gBAAiB,kCACjBC,cAAe,mCAEnB,CACIT,UAAWtW,EAAAA,EAAqBE,qBAChCqW,0BAA2B,WAAF,MAAQ,OAAO,EACxCC,oBAAqB,SAAF5P,GAAyB,OAAAA,EAApB1G,oBAA+C,EACvE4W,gBAAiB,+BACjBC,cAAe,+BACfC,aAAchX,EAAAA,EAAqBE,uBAGctC,KAAI,SAACkU,GAC1D,OAAO,IAAI+F,EAAAA,EAAc/F,EAC7B,I,wLCpCMgG,GAA2B/Y,EAAAA,EAAAA,MAE3BsqB,EAAiB,SAAC7xB,GAAa,OACjCA,IAAUoT,EAAAA,GAAUC,iBAAc/R,EAAYtB,CAAM,EAMjD,SAAS2yC,EAAkBxzC,GAA8B,IAA3B2gB,EAAe3gB,EAAf2gB,gBACjCxd,GAAwBC,EAAAA,EAAAA,UAAS6Q,EAAAA,GAAUC,aAAY7Q,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAhDiO,EAAI/N,EAAA,GAAEuvB,EAAOvvB,EAAA,GACpBI,GAAwBL,EAAAA,EAAAA,UAA6B+d,EAAe,IAAGzd,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAAhEgI,EAAI/H,EAAA,GAAE4d,EAAO5d,EAAA,GACpBG,GAAgCT,EAAAA,EAAAA,UAAS6Q,EAAAA,GAAUC,aAAYpQ,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAxDkd,EAAQjd,EAAA,GAAE+uB,EAAW/uB,EAAA,GAC5BG,GAA4Cb,EAAAA,EAAAA,UAAS2vB,EAAAA,EAAoB,GAAGlyB,OAAMqD,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAA3E2c,EAAc1c,EAAA,GAAE+uB,EAAiB/uB,EAAA,GACxC4uB,GAAwB1vB,EAAAA,EAAAA,UAAS,GAAE4vB,GAAA1vB,EAAAA,EAAAA,GAAAwvB,EAAA,GAA5B5tB,EAAI8tB,EAAA,GAAEzR,EAAOyR,EAAA,GACpBE,GAA4B9vB,EAAAA,EAAAA,UAAS,IAAG+vB,GAAA7vB,EAAAA,EAAAA,GAAA4vB,EAAA,GAAjCnqB,EAAMoqB,EAAA,GAAE3R,GAAS2R,EAAA,GACxBC,IAA0ChwB,EAAAA,EAAAA,UAAS8F,EAAAA,GAAKmqB,MAAKC,IAAAhwB,EAAAA,EAAAA,GAAA8vB,GAAA,GAAtDpqB,GAAasqB,GAAA,GAAE7R,GAAgB6R,GAAA,GAEhCy/B,IAAe7yD,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAU2yD,YAAY,IAGpEhxC,GADkBhZ,IAAWM,EAAAA,EAAqBC,QAClB0Y,EAAAA,GAAa1Y,QAAU,GAC7D4Y,IAA0BC,EAAAA,EAAAA,IAAc4wC,GAAchqD,EAAQC,GAAe+Y,IAAtEK,IAAkF9e,EAAAA,EAAAA,GAAA4e,GAAA,GAAnE,GAEhB0R,GAAiBxiB,IAAS6C,EAAAA,GAAUC,aAAe6M,IAAa9M,EAAAA,GAAUC,YAE1E8+C,IAAgC9yD,EAAAA,EAAAA,KAClC,SAACuX,GAAW,OAAKA,EAAErX,UAAU4yD,6BAA6B,IAExDC,IAAiC/yD,EAAAA,EAAAA,KACnC,SAACuX,GAAW,OAAKA,EAAErX,UAAU6yD,8BAA8B,IAGzD18C,IAAYC,EAAAA,EAAAA,IAAiB1W,EAAAA,EAAoBozD,qBAEjD78C,IAAWC,EAAAA,EAAAA,OAEjB/R,EAAAA,EAAAA,YAAU,WACDgS,KAILF,IACI88C,EAAAA,EAAAA,IACIzgC,EAAethB,GACfshB,EAAe3R,GACftV,EACAinB,EAAe9R,KAGvBW,EAAQ,GACZ,GAAG,CAAClL,GAAUE,GAAWnF,EAAM2P,EAAUtV,EAAMmV,IAE/C,IAAMyB,GAAgB,WAAH,MAAU,CACzB1B,gBAAAA,EACAI,SAAAA,EACH,EAMKuB,GAAmB,SAAC1iB,EAAe2iB,GACrCf,GAAU5hB,GACV6hB,GAAiBc,EACrB,EAYMzf,GAAgB,SAACS,GAAoB,OAAKge,EAAQhe,EAAc,EAEhEswB,GAAeD,GACfg/B,EAAoB/nD,QAAO,SAAAsQ,GAAC,OAAIA,EAAE2Y,OAAOnU,YAActW,EAAAA,EAAqBopB,SAAS,IACrFmgC,EAAoB/nD,QAAO,SAAAsQ,GAAC,OAAIA,EAAE2Y,OAAOnU,YAActW,EAAAA,EAAqBwD,gBAAgB,IAkC5FnL,GAAY,mBAElB,OACIlC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,GAAWP,UAAU,gBAAeC,UACxD5B,EAAAA,EAAAA,KAAC6B,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAayxD,IAA+B5xD,UACvEI,EAAAA,EAAAA,MAACC,EAAAA,EAAoB,CACjB5B,QAASC,EAAAA,EAAoBozD,oBAC7BxxD,UAAWA,GACXC,iBAAiB,uCAAsCP,SAAA,EAEvDI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAAAV,SAAA,EAClB5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,MACLF,EAAAA,EAAAA,MAACU,EAAAA,EAAO,CAACrC,QAASC,EAAAA,EAAoBozD,oBAAoB9xD,SAAA,EACtD5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,kBAAiBC,UAC5B5B,EAAAA,EAAAA,KAACgjB,EAAAA,EAAc,CACXC,cAAclhB,EAAAA,EAAAA,IAAa0xD,IAC3BvwC,aAhEN,WAAH,OACnBrM,IACI+8C,EAAAA,EAAAA,IACI1gC,EAAethB,GACfshB,EAAe3R,GACftV,EACAinB,EAAe9R,IACf9X,EAAAA,EAAAA,IAA0BC,EAAQC,KAExC,EAwD0BzD,UAAWwtD,GAAazuD,YAGhC9C,EAAAA,EAAAA,MAAA,OAAKL,UAAU,8BAA6BC,SAAA,EACxC5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOmQ,EAAAA,EAA2Bje,KAAI,SAAAgJ,GAAA,IAAGpP,EAAKoP,EAALpP,MAAW,MAAQ,CACxDA,MAAAA,EACA2B,KAFgDyN,EAAJzN,KAG5C+E,SAAU1G,IAAUuQ,EACvB,IACDzK,SArFX,SAAH6E,GAAA,IAAM3K,EAAK2K,EAAL3K,MAAK,OAAyB+xB,EAAQ/xB,EAAMmzB,WAAY,EAsFhD7yB,UAAU,yBACVsF,OAAO,cAGfjH,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,uBAAsBC,UACjC5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOuQ,EAAAA,EAAwBre,KAAI,SAAAiJ,GAAA,IAAGrP,EAAKqP,EAALrP,MAAW,MAAQ,CACrDA,MAAAA,EACA2B,KAF6C0N,EAAJ1N,KAGzC+E,SAAU1G,IAAUkgB,EACvB,IACDpa,SAhGP,SAAHyH,GAAA,IAAMvN,EAAKuN,EAALvN,MAAK,OAAyBgyB,EAAYhyB,EAAMmzB,WAAY,EAiGxD7yB,UAAU,yBACV6T,uBAAuB,EACvBvO,OAAO,aAGfjH,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOge,EAAAA,EAAoB9rB,KAAI,SAAAwG,GAAC,OAAAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACzBsG,GAAC,IACJlG,SAAUqZ,IAAmBnT,EAAE5M,OAAK,IAExCmU,uBAAuB,EACvBrO,SAAU,SAAFkK,GAAA,IAAKhQ,EAAKgQ,EAALhQ,MAAK,OAAOoyB,EAAkBpyB,EAAgB,EAC3DozB,2BAA4B/mB,EAAAA,EAAcgnB,qCAAqC,WAC/E/yB,UAAU,8BAGlB3B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACojB,EAAAA,EAAY,CACTC,MAAO1B,EACP2B,aAAcrX,EACdsX,kBAAkB,MAClBpc,SAtHX,SAACqc,GAAkB,OAAK1B,EAAQ0B,EAAW,EAuHhCvc,OAAO,SACPwc,eAAa,gBAMjCzjB,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAcgxD,GACd/wD,YACqB,OAAfmgB,SAAe,IAAfA,IAAAA,GAAiB9d,OACb,uEACA,GACTlD,SAEAghB,GAAgB9d,OA9GjC8d,GAAgB9d,OAASiE,EAAAA,GAAsB1F,aAC3CrD,EAAAA,EAAAA,KAACkD,EAAAA,EAAU,CACPC,KAAMyf,GACNvf,YAAa0F,EAAAA,GAAsB1F,YACnCG,YAAakC,EACbpC,cAAeA,GAAc1B,SAE5B,SAAC2T,GAAwB,OACtBvV,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFC,OAAQb,GACRc,cAAera,EACfsa,uBAAwBra,GACxBsa,UAAWvO,EACXwO,QAASsQ,GACTrQ,yBAA0BnB,GAC1BlhB,UAAU,qBACZ,KAIV3B,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFC,OAAQb,GACRc,cAAera,EACfsa,uBAAwBra,GACxBsa,UAAWlB,GACXmB,QAASsQ,GACTrQ,yBAA0BnB,GAC1BlhB,UAAU,uBAmFwC3B,EAAAA,EAAAA,KAACoX,EAAAA,EAA0B,YAM7F,C,kNCtKay8C,EA3DuD,CAChE,CACI1zC,UAAWtW,EAAAA,EAAqBC,QAChCsW,0BAA2B,WAAF,MAAQ,SAAS,EAC1CC,oBAAqB,SAAF7f,GAAA,IAAKsJ,EAAOtJ,EAAPsJ,QAAO,OAC3B9J,EAAAA,EAAAA,KAACs0C,EAAAA,EAAW,CACR1hB,cAAe9oB,EAAQ8oB,cACvBJ,UAAW1oB,EAAQ0oB,WACrB,EAEN7R,gBAAiB,6BACjBC,cAAe,6BACfC,aAAchX,EAAAA,EAAqBC,SAEvC,CACIqW,UAAWtW,EAAAA,EAAqB4oB,aAChCrS,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,SAAFrU,EAAgB+U,GAAO,IAAlBjX,EAAOkC,EAAPlC,QAAO,OAC3B9J,EAAAA,EAAAA,KAAC0yB,EAAAA,EAA2B,CAAA9wB,SACvB,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAAC2yB,EAAAA,EAAc,CACXC,cAAe9oB,EAAQ8oB,cACvBJ,UAAW1oB,EAAQ0oB,UACnBhR,KAAM1X,EAAQ0X,KACdnW,OAAQwnB,EAAAA,EAAe0hB,OACvBzuC,QAASib,EAAQI,gBACjB4R,QAAQ,kCACRhtB,SAAUqT,GACZ,GAEoB,EAClCuH,gBAAiB,sBACjBC,cAAe,uBAEnB,CACIT,UAAWtW,EAAAA,EAAqBwD,iBAChC+S,0BAA2B,WAAF,MAAQ,MAAM,EACvCC,oBAAqB,SAAFzR,EAAyBmS,GAAO,IAA3B1T,EAAgBuB,EAAhBvB,iBAAgB,SAAAlI,OACjC4b,EAAQQ,SAAQ,KAAApc,OAAIylB,EAAAA,GAAWoI,kBAAkB3lB,GAAkB,GAAK,EAC/EsT,gBAAiB,kCACjBC,cAAe,kCACfC,aAAchX,EAAAA,EAAqBwD,kBAEvC,CACI8S,UAAWtW,EAAAA,EAAqBopB,UAChC7S,0BAA2B,WAAF,MAAQ,EAAE,EACnCC,oBAAqB,WAAF,MAAQ,EAAE,EAC7BM,gBAAiB,kCACjBC,cAAe,mCAEnB,CACIT,UAAWtW,EAAAA,EAAqBE,qBAChCqW,0BAA2B,WAAF,MAAQ,OAAO,EACxCC,oBAAqB,SAAF5P,GAAyB,OAAAA,EAApB1G,oBAA+C,EACvE4W,gBAAiB,+BACjBC,cAAe,+BACfC,aAAchX,EAAAA,EAAqBE,uBAGYtC,KAAI,SAACkU,GACxD,OAAO,IAAI+F,EAAAA,EAAc/F,EAC7B,I,6KCrCMgG,GAA2B/Y,EAAAA,EAAAA,MAE3BsqB,EAAiB,SAAC7xB,GAAa,OACjCA,IAAUoT,EAAAA,GAAUC,iBAAc/R,EAAYtB,CAAM,EAMjD,SAASwyC,EAAgBrzC,GAA8B,IAA3B2gB,EAAe3gB,EAAf2gB,gBAC/Bxd,GAAwBC,EAAAA,EAAAA,UAAS6Q,EAAAA,GAAUC,aAAY7Q,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAhDiO,EAAI/N,EAAA,GAAEuvB,EAAOvvB,EAAA,GACpBI,GAAgCL,EAAAA,EAAAA,UAAS6Q,EAAAA,GAAUC,aAAYxQ,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAAxDsd,EAAQrd,EAAA,GAAEmvB,EAAWnvB,EAAA,GAC5BG,GAAwBT,EAAAA,EAAAA,UAA6B+d,EAAe,IAAGrd,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAhE4H,EAAI3H,EAAA,GAAEwd,EAAOxd,EAAA,GACpBG,GAAwBb,EAAAA,EAAAA,UAAS,GAAEc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAA5BiB,EAAIhB,EAAA,GAAEqd,EAAOrd,EAAA,GACpB4uB,GAA4C1vB,EAAAA,EAAAA,UAAS2vB,EAAAA,EAAoB,GAAGlyB,OAAMmyB,GAAA1vB,EAAAA,EAAAA,GAAAwvB,EAAA,GAA3ElS,EAAcoS,EAAA,GAAEC,EAAiBD,EAAA,GAExCE,GAA4B9vB,EAAAA,EAAAA,UAAS,IAAG+vB,GAAA7vB,EAAAA,EAAAA,GAAA4vB,EAAA,GAAjCnqB,EAAMoqB,EAAA,GAAE3R,EAAS2R,EAAA,GACxBC,IAA0ChwB,EAAAA,EAAAA,UAAS8F,EAAAA,GAAKmqB,MAAKC,IAAAhwB,EAAAA,EAAAA,GAAA8vB,GAAA,GAAtDpqB,GAAasqB,GAAA,GAAE7R,GAAgB6R,GAAA,GAEhCggC,IAAapzD,EAAAA,EAAAA,KAAY,SAACuX,GAAW,OAAKA,EAAErX,UAAUkzD,UAAU,IAChEC,IAA8BrzD,EAAAA,EAAAA,KAChC,SAACuX,GAAW,OAAKA,EAAErX,UAAUmzD,2BAA2B,IAEtDC,IAA+BtzD,EAAAA,EAAAA,KACjC,SAACuX,GAAW,OAAKA,EAAErX,UAAUozD,4BAA4B,IAEvDn9C,IAAWC,EAAAA,EAAAA,OAEjB/R,EAAAA,EAAAA,YAAU,WACN8R,IACIo9C,EAAAA,EAAAA,IACI/gC,EAAethB,GACfshB,EAAe3R,GACftV,EACAinB,EAAe9R,KAGvBW,EAAQ,EACZ,GAAG,CAAClL,GAAUjF,EAAM2P,EAAUtV,EAAMmV,IAEpC,IACMmB,GADkBhZ,IAAWM,EAAAA,EAAqBC,QAClB0Y,EAAAA,GAAa1Y,QAAU,GAC7D4Y,IAA0BC,EAAAA,EAAAA,IAAcmxC,GAAYvqD,EAAQC,GAAe+Y,IAApEK,IAAgF9e,EAAAA,EAAAA,GAAA4e,GAAA,GAAjE,GAEhB0R,GAAiBxiB,IAAS6C,EAAAA,GAAUC,aAAe6M,IAAa9M,EAAAA,GAAUC,YAE1EmO,GAAgB,WAAH,MAAU,CACzB1B,gBAAAA,EACAI,SAAAA,EACH,EAEK2yC,GAAmB,SAAHloD,GAAA,IAAM3K,EAAK2K,EAAL3K,MAAK,OAAyB+xB,EAAQ/xB,EAAMmzB,WAAY,EAC9E2/B,GAAuB,SAAHvlD,GAAA,IAAMvN,EAAKuN,EAALvN,MAAK,OAAyBgyB,EAAYhyB,EAAMmzB,WAAY,EACtF4/B,GAAmB,SAAC5wC,GAAkB,OAAK1B,EAAQ0B,EAAW,EAE9DV,GAAmB,SAAC1iB,EAAe2iB,GACrCf,EAAU5hB,GACV6hB,GAAiBc,EACrB,EAYMzf,GAAgB,SAACS,GAAoB,OAAKge,EAAQhe,EAAc,EAEhEswB,GAAeD,GACfy/B,EAAkBxoD,QAAO,SAAAsQ,GAAC,OAAIA,EAAE2Y,OAAOnU,YAActW,EAAAA,EAAqBopB,SAAS,IACnF4gC,EAAkBxoD,QAAO,SAAAsQ,GAAC,OAAIA,EAAE2Y,OAAOnU,YAActW,EAAAA,EAAqBwD,gBAAgB,IAkC1FnL,GAAY,iBAElB,OACIlC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAe,CAACvB,MAAO+B,GAAWP,UAAU,cAAaC,UACtDI,EAAAA,EAAAA,MAACH,EAAAA,EAAiB,CAACC,YAAYC,EAAAA,EAAAA,IAAagyD,IAA6BnyD,SAAA,EACrEI,EAAAA,EAAAA,MAACM,EAAAA,GAAqB,CAACX,UAAU,eAAcC,SAAA,EAC3C5B,EAAAA,EAAAA,KAAA,MAAA4B,SAAKM,MACLF,EAAAA,EAAAA,MAACU,EAAAA,EAAO,CAACwW,MAAOA,EAAAA,GAAMy6B,wBAAwB/xC,SAAA,EAC1C5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,kBAAiBC,UAC5B5B,EAAAA,EAAAA,KAACgjB,EAAAA,EAAc,CACXC,cAAclhB,EAAAA,EAAAA,IAAaiyD,IAC3B9wC,aA3DF,WAAH,OACnBrM,IACIw9C,EAAAA,EAAAA,IACInhC,EAAethB,GACfshB,EAAe3R,GACftV,EACAinB,EAAe9R,IACf9X,EAAAA,EAAAA,IAA0BC,EAAQC,KAExC,EAmDsBzD,UAAW+tD,GAAWhvD,YAG9B9C,EAAAA,EAAAA,MAAA,OAAKL,UAAU,cAAaC,SAAA,EACxB5B,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBooD,kCAAkC9mD,SACzE,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOmQ,EAAAA,EAA2Bje,KAAI,SAAAgJ,GAAA,IAAGpP,EAAKoP,EAALpP,MAAW,MAAQ,CACxDA,MAAAA,EACA2B,KAFgDyN,EAAJzN,KAG5C+E,SAAU1G,IAAUuQ,EACvB,IACDjQ,UAAU,yBACVsF,OAAO,SACPlB,SAAUqT,EACVjS,SAAU+sD,IACZ,OAGdl0D,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBooD,kCAAkC9mD,SACzE,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOuQ,EAAAA,EAAwBre,KAAI,SAAAiJ,GAAA,IAAGrP,EAAKqP,EAALrP,MAAW,MAAQ,CACrDA,MAAAA,EACA2B,KAF6C0N,EAAJ1N,KAGzC+E,SAAU1G,IAAUkgB,EACvB,IACDxb,SAAUqT,EACVzX,UAAU,yBACV6T,uBAAuB,EACvBvO,OAAO,QACPE,SAAUgtD,IACZ,OAGdn0D,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBooD,kCAAkC9mD,SACzE,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACsV,EAAAA,EAAY,CACTC,MAAOge,EAAAA,EAAoB9rB,KAAI,SAAAwG,GAAC,OAAAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACzBsG,GAAC,IACJlG,SAAUqZ,IAAmBnT,EAAE5M,OAAK,IAExC0E,SAAUqT,EACV5D,uBAAuB,EACvBif,2BAA4B/mB,EAAAA,EAAcgnB,qCAAqC,WAC/E/yB,UAAU,yBACVwF,SAAU,SAAFkK,GAAA,IAAKhQ,EAAKgQ,EAALhQ,MAAK,OAAOoyB,EAAkBpyB,EAAgB,GAC7D,OAGdrB,EAAAA,EAAAA,KAAA,OAAK2B,UAAU,eAAcC,UACzB5B,EAAAA,EAAAA,KAACugB,EAAAA,EAAa,CAAClgB,QAASC,EAAAA,EAAoBooD,kCAAkC9mD,SACzE,SAAAwX,GAAO,OACJpZ,EAAAA,EAAAA,KAACojB,EAAAA,EAAY,CACTC,MAAO1B,EACP2B,aAAcrX,EACdsX,kBAAkB,MAClBE,eAAa,EACbxc,OAAO,SACPlB,SAAUqT,EACVjS,SAAUitD,IACZ,gBAM1Bp0D,EAAAA,EAAAA,KAACuC,EAAAA,GAAsB,CACnBC,aAAcuxD,GACdtxD,YACMmgB,GAAgB9d,OACZ,uEACA,GACTlD,SAEAghB,GAAgB9d,OAzH7B8d,GAAgB9d,OAASiE,EAAAA,GAAsB1F,aAC3CrD,EAAAA,EAAAA,KAACkD,EAAAA,EAAU,CACPC,KAAMyf,GACNvf,YAAa0F,EAAAA,GAAsB1F,YACnCG,YAAakC,EACbpC,cAAeA,GAAc1B,SAE5B,SAAC2T,GAAwB,OACtBvV,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFC,OAAQb,GACRc,cAAera,EACfsa,uBAAwBra,GACxBsa,UAAWvO,EACXwO,QAASsQ,GACTrQ,yBAA0BnB,GAC1BlhB,UAAU,qBACZ,KAIV3B,EAAAA,EAAAA,KAAC0jB,EAAAA,EAAK,CACFC,OAAQb,GACRc,cAAera,EACfsa,uBAAwBra,GACxBsa,UAAWlB,GACXmB,QAASsQ,GACTrQ,yBAA0BnB,GAC1BlhB,UAAU,uBA8FoC3B,EAAAA,EAAAA,KAACoX,EAAAA,EAA0B,UAKzF,C","sources":["components/dashboard/usBslNewIssueSpreads/UsBslNewIssueDsWidget.tsx","components/dashboard/usBslNewIssueSpreads/UsBslNewIssueWeeklySpread.tsx","components/dealer-list/DealerFilterOptions.ts","components/dashboard/tables/Pagination.jsx","components/dealer-list/DealerListFilter.tsx","components/dashboard/widget/DashboardWidgetLoadContentError.tsx","components/dashboard/topIssuers/top-list.utils.ts","components/dashboard/shortLongDatedDeals/ShortLongDatedDealsChart.tsx","components/dashboard/shortLongDatedDeals/ShortLongDatedDealsFilter.tsx","components/dashboard/shortLongDatedDeals/ShortLongDatedDealsWidget.tsx","components/dealers/inviteToJoin/InviteToJoinPopup.jsx","components/dealers/inviteToJoin/InviteToJoinAllButton.jsx","components/dealers/ConfirmRequestToBidPopup.tsx","components/dealers/Dealers.tsx","components/dashboard/topIssuers/columns/TopStaticDealColumns.tsx","components/dashboard/topIssuers/TopStaticDeals.tsx","components/dashboard/hooks/useScheduledBwics.tsx","components/dashboard/topIssuers/constants.ts","components/dashboard/usBslEuCompliantDeals/UsBslEuCompliantDealsChart.tsx","components/dashboard/usBslEuCompliantDeals/UsBslEuCompliantDealsFilter.tsx","components/dashboard/usBslEuCompliantDeals/UsBslEuCompliantDealsWidget.tsx","components/dashboard/usBslNewIssueSpreads/IssuanceSpreadChart.tsx","components/dashboard/usBslNewIssueSpreads/UsBslNewIssueWarfWidget.tsx","components/dashboard/usBslNewIssueSpreads/UsBslNewIssueWeeklySpreads.tsx","components/dashboard/barScheduledBwics/ChartBarScheduledBwics.tsx","components/dashboard/barScheduledBwics/BarScheduledBwicsWidget.tsx","components/dashboard/RatingColorLabel.tsx","components/dashboard/usBslNewIssueSpreads/UsBslNewIssueWasWidget.tsx","components/dashboard/topIssuers/columns/TopTrusteesColumns.tsx","components/dashboard/topIssuers/TopTrusteesWidget.tsx","components/dashboard/usBslEsgNewIssue/UsBslEsgNewIssueChart.tsx","components/dashboard/usBslEsgNewIssue/UsBslEsgNewIssueFilter.tsx","components/dashboard/usBslEsgNewIssue/UsBslEsgNewIssueWidget.tsx","components/dashboard/WidgetDescription.tsx","components/dashboard/boxPxTalkAndColor/BoxPxTalkAndColorWidget.jsx","components/dashboard/barDnt/BarDntChart.tsx","components/dashboard/barDnt/BarDntWidget.tsx","components/dashboard/mySellBuy/Tabs.tsx","components/dashboard/tables/columns/SellColumns.tsx","components/dashboard/mySellBuy/MyBwics.tsx","components/dashboard/tables/columns/BuyColumns.tsx","components/dashboard/mySellBuy/BidAsDealerRequests.tsx","components/dashboard/mySellBuy/MyScheduledBwicsWidget.tsx","components/dashboard/mySellBuy/useMyBidRequests.ts","components/dashboard/portfolio/DashboardPortfolioBwicSecurities.tsx","components/dashboard/portfolio/DashboardPortfolioInventorySecurities.tsx","components/dashboard/portfolio/PortfolioWidget.tsx","components/dashboard/barColor/BarColorChart.jsx","components/dashboard/barColor/BarColorWidget.jsx","components/dashboard/sameDay/BarSameDayChart.jsx","components/dashboard/sameDay/BarSameDayWidget.jsx","components/dashboard/dtcSellingBuying/DtcSellingBuyingChart.tsx","components/dashboard/dtcSellingBuying/DtcSellingBuyingWidget.tsx","components/dashboard/dtcIgHy/DtcIgHyChart.tsx","components/dashboard/dtcIgHy/DtcIgHyWidget.tsx","components/dashboard/aaaPriceLevel/AAAPriceLevelChart.tsx","components/dashboard/aaaPriceLevel/AAAPriceLevelWidget.tsx","components/dashboard/mostTradedTickers/MostTradedTickersWidget.tsx","components/dashboard/pxTalkDeviation/PxTalkDeviationChart.tsx","components/dashboard/pxTalkDeviation/PxTalkDeviationWidget.tsx","components/dashboard/bwicPercentOfTrace/BwicPercentOfTraceChart.tsx","components/dashboard/bwicPercentOfTrace/BwicPercentOfTraceWidget.tsx","components/dashboard/k-watchNews/DashboardKWatchNewsWidget.tsx","components/dashboard/biggestMovers/BiggestMoversWidget.tsx","components/dashboard/Filter.tsx","components/dashboard/k-indicator/KIndicatorChart.tsx","components/dashboard/k-indicator/KIndicatorWidget.tsx","components/dashboard/Dashboard.jsx","components/dashboard/topIssuers/columns/TopDebutDealsColumns.tsx","components/dashboard/topIssuers/TopDebutDeals.tsx","components/dashboard/DashboardNoSelectedFilters.tsx","components/dealer-list/DealerUser.tsx","components/dealer-list/DealerContactOptions.tsx","components/dealer-list/DealerContact.tsx","components/dealer-list/DealerHeadOfTrading.tsx","components/dealer-list/DealerDistributionList.tsx","components/dealer-list/ViewSettlementAgentCommission.tsx","components/dealer-list/DealerRequestToBidButton.tsx","components/dealer-list/DealerCompany.tsx","components/dealer-list/EditContact.tsx","components/dealer-list/DealerList.tsx","components/dashboard/DashboardNoData.tsx","components/dashboard/widget/DashboardWidgetContext.ts","components/dashboard/widget/DashboardWidget.tsx","components/dashboard/widget/DashboardWidgetContent.tsx","components/dashboard/widget/DashboardWidgetHeader.tsx","components/dashboard/tables/columns/tradingStats.tsx","components/dashboard/dailyTradingStats/DailyTradingStatsWidget.tsx","components/dashboard/k-watchNews/KWatchNewsListItem.tsx","components/dashboard/k-watchNews/KWatchNewsList.tsx","components/dashboard/k-watchNews/KWatchNewsWidget.tsx","components/dashboard/issueTransactionVolume/IssueTransactionVolumeChart.tsx","components/dashboard/issueTransactionVolume/IssueTransactionVolumeFilter.tsx","components/dashboard/issueTransactionVolume/IssueTransactionVolumeWidget.tsx","components/dashboard/priceLevel/PriceLevelChart.tsx","components/dashboard/priceLevel/PriceLevelWidget.tsx","components/dashboard/DashboardSkeleton.jsx","components/dashboard/issuanceSpread/IssuanceSpreadChart.tsx","components/dashboard/issuanceSpread/IssuanceSpreadFilter.tsx","components/dashboard/issuanceSpread/IssuanceSpreadWidget.tsx","components/dashboard/heatmapScheduledBwics/HeatmapScheduledBwics.tsx","components/dashboard/heatmapScheduledBwics/HeatmapScheduledBwicsWidget.tsx","components/dashboard/topIssuers/columns/TopArrangersColumns.tsx","components/dashboard/topIssuers/TopArrangersWidget.tsx","components/dashboard/topIssuers/columns/TopIssuersColumns.tsx","components/dashboard/topIssuers/TopIssuersWidget.tsx"],"sourcesContent":["import { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { UsBslNewIssueWeeklySpread } from './UsBslNewIssueWeeklySpread';\r\n\r\nexport function UsBslNewIssueDsWidget() {\r\n return (\r\n \r\n );\r\n}\r\n","import { useMemo } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { lowerCase } from 'lodash';\r\nimport { isRequesting } from '../../../utils';\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from '../widget';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { IssuanceSpreadChart } from './IssuanceSpreadChart';\r\nimport { DailyIssuanceSpread } from '../../../types/dashboard/IssuanceSpread';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { ShowFor } from '../../access';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\nimport { DashboardNoData } from '../DashboardNoData';\r\n\r\ninterface UsBslNewIssueWeeklySpreadProps {\r\n divId: string;\r\n title: string;\r\n field: keyof Pick;\r\n feature: SubscriptionFeature;\r\n}\r\n\r\nexport function UsBslNewIssueWeeklySpread({\r\n divId,\r\n field,\r\n title,\r\n feature,\r\n}: UsBslNewIssueWeeklySpreadProps) {\r\n const usBslNewIssueSpreads = useSelector((state: AppState) => state.dashboard.usBslNewIssueSpreads);\r\n const requestStateUsBslNewIssueSpreads = useSelector((state: AppState) => state.dashboard.requestStateUsBslNewIssueSpreads);\r\n\r\n const withData = useMemo(() => usBslNewIssueSpreads?.some(spread => {\r\n const currentField = spread[field];\r\n if(!currentField) {\r\n return false;\r\n }\r\n\r\n const fieldValues = Object.values(currentField);\r\n return fieldValues.some(value => !!value);\r\n }), [usBslNewIssueSpreads, field]);\r\n\r\n const chart = useMemo(() =>\r\n spread[field]}\r\n divId={divId}\r\n />,\r\n [usBslNewIssueSpreads, divId, field]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{title}

\r\n
\r\n \r\n All statistics are calculated for active deals.\r\n \r\n : undefined\r\n }\r\n >\r\n {withData ? (\r\n chart\r\n ) : (\r\n \r\n )}\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","export enum DealerFilterOptions {\r\n Favorite = 'Favorite',\r\n Platform = 'Platform',\r\n OffPlatform = 'OffPlatform',\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport classNames from 'classnames';\r\nimport IconSVG from '../../../styles/svg-icons';\r\nimport MaskedInput from 'react-text-mask';\r\nimport { createNumberMask } from 'text-mask-addons';\r\n\r\nexport function Pagination({ list, total, itemsOnPage, children, onPageChanged, currentPage = 1, withGoToPageNavigation = false, }) {\r\n const [selectedPage, setSelectedPage] = useState(currentPage);\r\n const [pages, setPages] = useState(0);\r\n const [pageInput, setPageInput] = useState(currentPage);\r\n const [errorPageInput, setErrorPageInput] = useState('');\r\n const totalItems = total || list.length;\r\n\r\n useEffect(() => {\r\n setPages(Math.ceil(totalItems / itemsOnPage));\r\n }, [totalItems, itemsOnPage]);\r\n\r\n useEffect(() => {\r\n setSelectedPage(currentPage);\r\n setPageInput(currentPage);\r\n }, [currentPage])\r\n\r\n const getItems = () => {\r\n if (totalItems) {\r\n return list.slice(itemsOnPage * (selectedPage - 1), getLastItemIndexInList());\r\n }\r\n return [];\r\n };\r\n\r\n const isContinue = (page) => {\r\n if (page === 1 || page === pages || page === selectedPage || pages === 9) {\r\n return false;\r\n }\r\n if (page === selectedPage - 2 || page === selectedPage + 2 || page === selectedPage - 1 || page === selectedPage + 1) {\r\n return false;\r\n }\r\n if (selectedPage <= 4 && page <= 7) {\r\n return false;\r\n }\r\n if (selectedPage > pages - 4 && page > pages - 7) {\r\n return false\r\n }\r\n return true;\r\n };\r\n\r\n const getVisiblePages = () => {\r\n const visiblePages = [];\r\n for (let i = 1; i <= pages; i++) {\r\n if (!isContinue(i)) {\r\n visiblePages.push(i);\r\n }\r\n }\r\n return visiblePages;\r\n };\r\n\r\n const renderPagesList = () => {\r\n const visiblePages = getVisiblePages();\r\n const result = [];\r\n\r\n visiblePages.forEach((p, index) => {\r\n result.push(\r\n
\r\n \r\n
\r\n );\r\n if (visiblePages[index + 1] && p + 1 !== visiblePages[index + 1]) {\r\n result.push(
...
)\r\n }\r\n });\r\n return result;\r\n };\r\n\r\n const validatePageInput = (value) => {\r\n if (value >= 1 && value <= pages) {\r\n return;\r\n }\r\n\r\n return `Valid range is 1-${pages}`;\r\n }\r\n\r\n const handleChangePageInput = (e) => {\r\n setPageInput(Number(e.target.value) || '');\r\n\r\n if (errorPageInput) {\r\n const error = validatePageInput(e.target.value);\r\n setErrorPageInput(error);\r\n }\r\n }\r\n\r\n const renderGoToPageNavigation = () => {\r\n return (\r\n
\r\n Go to page:\r\n
\r\n \r\n {errorPageInput &&
{errorPageInput}
}\r\n
\r\n {\r\n handlePageChange(pageInput);\r\n }}\r\n disabled={pageInput === selectedPage || errorPageInput || !pageInput}\r\n className=\"btn btn-ghost btn-sm\"\r\n >\r\n Go\r\n \r\n
\r\n );\r\n };\r\n\r\n const handlePageChange = (page) => {\r\n const error = validatePageInput(page);\r\n setErrorPageInput(error);\r\n\r\n if (!error) {\r\n setSelectedPage(page);\r\n onPageChanged && onPageChanged(page);\r\n }\r\n }\r\n\r\n const getLastItemIndexInList = () => {\r\n return (itemsOnPage * (selectedPage - 1)) + itemsOnPage;\r\n };\r\n\r\n const previous = () => {\r\n handlePageChange(selectedPage - 1);\r\n };\r\n\r\n const next = () => {\r\n handlePageChange(selectedPage + 1);\r\n };\r\n\r\n return (\r\n <>\r\n {typeof children === 'function' ? children(getItems()) : children}\r\n {\r\n (total > itemsOnPage || list.length > itemsOnPage) && (\r\n
\r\n
\r\n {`${(itemsOnPage * (selectedPage - 1)) + 1}-${getLastItemIndexInList() > totalItems ? totalItems : getLastItemIndexInList()} of ${totalItems}`}\r\n
\r\n
\r\n \r\n \r\n \r\n {renderPagesList()}\r\n \r\n \r\n \r\n
\r\n {withGoToPageNavigation && renderGoToPageNavigation()}\r\n
\r\n )\r\n }\r\n \r\n );\r\n}\r\n\r\nPagination.defaultProps = {\r\n onPageChanged: () => {},\r\n list: [],\r\n itemsOnPage: 10,\r\n total: 0,\r\n}\r\n","import React from 'react';\r\nimport { DealerFilterOptions } from './DealerFilterOptions';\r\nimport { DealerListFilterOption } from '../../types/state/DealerListState';\r\nimport { FilterSelect } from '../common/filters/FilterSelect';\r\n\r\ninterface Props {\r\n disabled: boolean;\r\n filterOptions: DealerListFilterOption[];\r\n onFilterChange: (option: DealerListFilterOption) => void;\r\n}\r\n\r\nexport const DealerListFilter: React.FC = ({ disabled, filterOptions, onFilterChange }) => {\r\n const getDealerTypeOptions = () => filterOptions.map( o=> ({\r\n ...o,\r\n visible: true,\r\n disabled: false\r\n }));\r\n\r\n const handleSelectAll = () => {\r\n const [favorite, onPlatform, offPlatform] = getDealerTypeOptions();\r\n\r\n !favorite.selected && onFilterChange({ ...favorite, selected: true });\r\n !onPlatform.selected && onFilterChange({ ...onPlatform, selected: true });\r\n !offPlatform.selected && onFilterChange({ ...offPlatform, selected: true });\r\n }\r\n\r\n const handleResetAll = () => {\r\n const [favorite, onPlatform, offPlatform] = getDealerTypeOptions();\r\n\r\n favorite.selected && onFilterChange({ ...favorite, selected: false });\r\n onPlatform.selected && onFilterChange({ ...onPlatform, selected: false });\r\n offPlatform.selected && onFilterChange({ ...offPlatform, selected: false });\r\n }\r\n\r\n\r\n return o.selected)}\r\n options={getDealerTypeOptions()}\r\n onSelectAll={handleSelectAll}\r\n onClearAll={handleResetAll} \r\n onChangeItemSelection={(i, selected) => onFilterChange({\r\n value: i.value as DealerFilterOptions,\r\n selected,\r\n text: i.text\r\n })}\r\n />\r\n};\r\n","import React from 'react';\r\nimport { DashboardNoData } from '../DashboardNoData';\r\n\r\nexport function DashboardWidgetLoadContentError() {\r\n\r\n return (\r\n \r\n )\r\n}\r\n","import { arrayUtils } from \"../../../utils\";\r\nimport { SORT, issuanceMonitorWidget } from \"../../../constants\";\r\nimport { PipelineWidgetColumn } from \"../../../types/dashboard/PipelineWidgetColumn\";\r\n\r\nexport function getAvailableYears(minYear = issuanceMonitorWidget.minYear) {\r\n const currentYear = new Date().getFullYear();\r\n return arrayUtils.arrayFromRange(minYear, currentYear).reverse();\r\n}\r\n\r\nexport function getSortingParamsForExport(\r\n sortBy: string,\r\n sortDirection: string\r\n) {\r\n const ascending = sortDirection === SORT.ASC;\r\n const companySorting = {\r\n field: \"companyLegalName\",\r\n ascending: true,\r\n };\r\n\r\n if (!sortBy) {\r\n return [\r\n {\r\n field: PipelineWidgetColumn.numberOfTransactions,\r\n ascending,\r\n },\r\n companySorting,\r\n ];\r\n }\r\n\r\n if (sortBy === PipelineWidgetColumn.company) {\r\n return [\r\n {\r\n ...companySorting,\r\n ascending,\r\n },\r\n ];\r\n }\r\n\r\n return [\r\n {\r\n field: sortBy,\r\n ascending,\r\n },\r\n companySorting,\r\n ];\r\n}\r\n\r\nexport function getSortingParamsForStatisticExport(\r\n sortBy: string,\r\n sortDirection: string\r\n) {\r\n const ascending = sortDirection === SORT.ASC;\r\n const dealNameSorting = {\r\n field: PipelineWidgetColumn.dealName,\r\n ascending: true,\r\n };\r\n\r\n if (!sortBy) {\r\n return [dealNameSorting];\r\n }\r\n\r\n if (sortBy === \"dealLegalName\") {\r\n return [\r\n {\r\n ...dealNameSorting,\r\n ascending,\r\n },\r\n ];\r\n }\r\n\r\n return [\r\n {\r\n field: sortBy,\r\n ascending,\r\n },\r\n dealNameSorting,\r\n ];\r\n}\r\n","import { useMemo } from 'react';\r\nimport { PlotMouseEvent } from 'plotly.js';\r\nimport moment, { Moment } from 'moment';\r\nimport { first } from 'lodash';\r\nimport { Plot, mainConfig } from '../../common/charts';\r\nimport { chartShortLongDatedDeals, constants } from '../../../constants';\r\nimport { numericUtils } from '../../../utils';\r\nimport { arrayUtils } from '../../../utils/array.utils';\r\nimport { ChartGrouping, ChartUnits, ChartView } from '../../../types/dashboard/AmrChart';\r\nimport { ShortLongDatedDealsChartFilter } from './ShortLongDatedDealsFilter';\r\nimport { ShortLongDatedVolume } from '../../../types/dashboard/ShortLongDatedVolume';\r\nimport { ShortOrLongDated } from '../../../types/amr-pipeline/enums/ShortOrLongDated';\r\nimport { Currency } from '../../../types/enums/Currency';\r\nimport { ShortLongChartClickHandler } from './types';\r\nimport { TransactionType } from '../../../types/amr-pipeline/enums/TransactionType';\r\nimport { amrChartUtils, GroupedBy, Range } from '../../../utils/amr-chart.utils';\r\nimport { chartUtils } from '../../../utils/chart.utils';\r\n\r\ninterface ShortLongDatedDealsChartProps {\r\n deals: ShortLongDatedVolume[];\r\n filter: ShortLongDatedDealsChartFilter;\r\n periodsCount?: number;\r\n divId?: string;\r\n onClick?: ShortLongChartClickHandler;\r\n}\r\n\r\ninterface ShortLongDatedVolumeWithDate extends Omit {\r\n date: Moment;\r\n}\r\n\r\nconst CurrencyTickPrefix = {\r\n [Currency.EUR]: '€',\r\n [Currency.USD]: '$',\r\n};\r\n\r\nconst GroupingTickFormat: Partial> = {\r\n [ChartGrouping.M]: {\r\n tickformat: '%b `%y',\r\n dtick: 'M1'\r\n },\r\n [ChartGrouping.Q]: {\r\n tickformat: '%qQ `%y',\r\n dtick: 'M3'\r\n },\r\n [ChartGrouping.Y]: {\r\n tickformat: '%Y',\r\n dtick: 'M12'\r\n },\r\n};\r\n\r\nconst ChartRangeFormat = 'YYYY-MM-DD';\r\nconst MonthDateFormat = 'YYYY-MM';\r\nconst YearDateFormat = 'YYYY';\r\nconst ChartLegends = [\r\n 'Long-Dated Deals',\r\n 'Short-Dated Deals',\r\n];\r\n\r\nexport function ShortLongDatedDealsChart({\r\n deals,\r\n filter,\r\n periodsCount = 12,\r\n divId,\r\n onClick,\r\n}: ShortLongDatedDealsChartProps) {\r\n const {\r\n chartLayout,\r\n tickColor,\r\n tickFont,\r\n barColors,\r\n zeroLineColor,\r\n hoverlabel,\r\n } = chartShortLongDatedDeals;\r\n\r\n const dealsWithDate = useMemo(() => deals.map(({ year, month, ...rest }) => ({\r\n ...rest,\r\n date: moment.utc([year, month - 1]),\r\n } as ShortLongDatedVolumeWithDate)), [deals]);\r\n\r\n const isPercentMode = [ChartUnits.PercentByCount, ChartUnits.PercentByVolume].includes(filter.units);\r\n\r\n const handlePlotClick = (e: PlotMouseEvent) => {\r\n if (!onClick) {\r\n return;\r\n }\r\n\r\n if (!e.points.length) {\r\n return;\r\n }\r\n\r\n const [point] = e.points;\r\n\r\n const { x, data } = point;\r\n\r\n const startPeriod = moment.utc(x);\r\n const endPeriod = startPeriod.clone();\r\n\r\n switch (filter.grouping) {\r\n case ChartGrouping.M:\r\n endPeriod.endOf('month').startOf('day');\r\n break;\r\n case ChartGrouping.Q:\r\n endPeriod.endOf('quarter').startOf('day');\r\n break;\r\n case ChartGrouping.Y:\r\n endPeriod.endOf('year').startOf('day');\r\n break;\r\n }\r\n\r\n const shortOrLongDated = first(data.customdata as number[]) === 0\r\n ? ShortOrLongDated.Long\r\n : ShortOrLongDated.Short;\r\n\r\n onClick({\r\n shortOrLongDated,\r\n startPeriod: startPeriod.toDate(),\r\n endPeriod: endPeriod.toDate(),\r\n transactionType: filter.transactionType === constants.allListItem\r\n ? undefined\r\n : filter.transactionType as TransactionType,\r\n currencyCode: filter.currencyCode,\r\n });\r\n };\r\n\r\n const getActualDataRange = () => {\r\n const valueGetter = (row: ShortLongDatedVolume) => moment.utc([row.year, row.month - 1]);\r\n const minDateRow = arrayUtils.min(deals, valueGetter);\r\n const maxDateRow = arrayUtils.max(deals, valueGetter);\r\n\r\n const toMoment = (value?: ShortLongDatedVolume) => moment.utc([\r\n value ? value.year : 1,\r\n value ? value.month - 1 : 0\r\n ]);\r\n\r\n return {\r\n min: toMoment(minDateRow),\r\n max: toMoment(maxDateRow),\r\n };\r\n };\r\n\r\n const getChartRange = ({ min, max }: Range) => {\r\n let chartRangeMin: Moment;\r\n let chartRangeMax: Moment;\r\n\r\n switch (filter.grouping) {\r\n case ChartGrouping.M:\r\n chartRangeMax = max.clone().add(15, 'days');\r\n chartRangeMin = max.clone()\r\n .subtract(periodsCount, 'months')\r\n .add(15, 'days');\r\n break;\r\n case ChartGrouping.Q:\r\n chartRangeMax = max\r\n .clone()\r\n .startOf('quarter')\r\n .add(45, 'days');\r\n\r\n chartRangeMin = max\r\n .clone()\r\n .subtract(periodsCount, 'quarters');\r\n break;\r\n default:\r\n chartRangeMin = min\r\n .clone()\r\n .startOf('year')\r\n .subtract(6, 'months');\r\n\r\n chartRangeMax = max\r\n .clone()\r\n .startOf('year')\r\n .add(6, 'months');\r\n }\r\n\r\n return {\r\n min: chartRangeMin,\r\n max: chartRangeMax,\r\n };\r\n };\r\n\r\n const getDataRange = (actualDataRange: Range, chartRange: Range) => {\r\n return {\r\n min: actualDataRange.min.isBefore(chartRange.min) ? actualDataRange.min : chartRange.min,\r\n max: chartRange.max,\r\n }\r\n };\r\n\r\n const getDimension = (date: Moment) => {\r\n switch (filter.grouping) {\r\n case ChartGrouping.Y:\r\n return date.format(YearDateFormat);\r\n case ChartGrouping.Q:\r\n // Group by first month of each quarter\r\n return `${date.year()}-${date.quarter() * 3 - 2}`;\r\n default:\r\n return date.format(MonthDateFormat);\r\n }\r\n };\r\n\r\n const getMetric = (row: ShortLongDatedVolumeWithDate) => {\r\n switch (filter.units) {\r\n case ChartUnits.Count:\r\n case ChartUnits.PercentByCount:\r\n return row.numberOfTransactions;\r\n default:\r\n return row.dealBalanceTotal;\r\n }\r\n };\r\n\r\n const groupByDate = (data: ShortLongDatedVolumeWithDate[]) => {\r\n const isSame = (row: ShortLongDatedVolumeWithDate) =>\r\n (iteratee: GroupedBy) =>\r\n iteratee.date.isSame(row.date, amrChartUtils.groupingToUnitOfTime(filter.grouping));\r\n\r\n return data.reduce((acc: GroupedBy[], row: ShortLongDatedVolumeWithDate) => {\r\n const existingEntry = acc.find(isSame(row));\r\n\r\n if (existingEntry) {\r\n return [\r\n ...acc.filter(x => !isSame(row)(x)),\r\n {\r\n ...existingEntry,\r\n entries: [\r\n ...existingEntry.entries,\r\n row,\r\n ]\r\n }\r\n ];\r\n }\r\n\r\n return [\r\n ...acc,\r\n { date: row.date, entries: [row] }\r\n ];\r\n }, []);\r\n };\r\n\r\n const groupVolumeData = (data: ShortLongDatedVolumeWithDate[], chartRange: Range) => {\r\n const groupedByType = arrayUtils.groupBy(\r\n data,\r\n (row: ShortLongDatedVolumeWithDate) => row.shortOrLong\r\n );\r\n\r\n return [ShortOrLongDated.Short, ShortOrLongDated.Long].reduce((acc: Record, shortOrLongDated: ShortOrLongDated) => {\r\n const dataByType: ShortLongDatedVolumeWithDate[] = groupedByType.get(shortOrLongDated) || [];\r\n\r\n const groupedByDate = groupByDate(dataByType);\r\n\r\n const fillGaps = amrChartUtils.gapsFiller(groupedByDate, row => row.date, date => ({ date, entries: [] }));\r\n\r\n const dataWithFilledGaps = (chartRange.min && chartRange.max) ? fillGaps(chartRange, amrChartUtils.groupingToUnitOfTime(filter.grouping)) : groupedByDate;\r\n\r\n const stats = dataWithFilledGaps.reduce((acc: any, row: GroupedBy) => {\r\n const dimension = getDimension(row.date);\r\n const metric = arrayUtils.sum(row.entries, (value: ShortLongDatedVolumeWithDate) => getMetric(value));\r\n\r\n const [x = [], y = []] = acc || [];\r\n\r\n return [\r\n [...x, dimension],\r\n [...y, metric],\r\n ];\r\n }, [[], []]);\r\n\r\n return {\r\n ...acc,\r\n [shortOrLongDated]: stats,\r\n };\r\n }, {\r\n [ShortOrLongDated.Long]: [],\r\n [ShortOrLongDated.Short]: [],\r\n });\r\n };\r\n\r\n const groupPercentData = (data: ShortLongDatedVolumeWithDate[], chartRange: Range) => {\r\n const allGroupedByDate = arrayUtils.groupBy(\r\n data,\r\n (row: ShortLongDatedVolumeWithDate) => getDimension(row.date)\r\n );\r\n\r\n const groupedByType = arrayUtils.groupBy(\r\n data,\r\n (row: ShortLongDatedVolumeWithDate) => row.shortOrLong\r\n );\r\n\r\n return [ShortOrLongDated.Short, ShortOrLongDated.Long].reduce((acc: Record, shortOrLongDated: ShortOrLongDated) => {\r\n const dataByType: ShortLongDatedVolumeWithDate[] = groupedByType.get(shortOrLongDated) || [];\r\n\r\n const groupedByDate = groupByDate(dataByType);\r\n\r\n const fillGaps = amrChartUtils.gapsFiller(groupedByDate, row => row.date, date => ({ date, entries: [] }));\r\n\r\n const dataWithFilledGaps = (chartRange.min && chartRange.max) ? fillGaps(chartRange, amrChartUtils.groupingToUnitOfTime(filter.grouping)) : groupedByDate;\r\n\r\n const stats = dataWithFilledGaps.reduce((acc: any, row: GroupedBy) => {\r\n const elelemntsByDate = allGroupedByDate.get(getDimension(row.date)) || [];\r\n const dayTotal = arrayUtils.sum(elelemntsByDate, (value: ShortLongDatedVolumeWithDate) => getMetric(value));\r\n const shortOrLongDayTotal = arrayUtils.sum(row.entries, (value: ShortLongDatedVolumeWithDate) => getMetric(value));\r\n\r\n const metric = numericUtils.round((shortOrLongDayTotal / dayTotal) * 100);\r\n const dimension = getDimension(row.date);\r\n\r\n const [x = [], y = []] = acc || [];\r\n\r\n return [\r\n [...x, dimension],\r\n [...y, metric],\r\n ];\r\n }, [[], []]);\r\n\r\n return {\r\n ...acc,\r\n [shortOrLongDated]: stats,\r\n };\r\n }, {\r\n [ShortOrLongDated.Long]: [],\r\n [ShortOrLongDated.Short]: [],\r\n });\r\n }\r\n\r\n const getChartTraces = (groupedData: Record) => {\r\n return Object.values(groupedData).map(([x, y], index) => ({\r\n x,\r\n y,\r\n name: ChartLegends[index],\r\n type: 'bar',\r\n // Custom hovertemplate fixes issue with shrinked legend in tooltip\r\n hovertemplate: `${ChartLegends[index]}: %{y}`,\r\n customdata: [index],\r\n marker: {\r\n color: barColors[index],\r\n },\r\n }));\r\n };\r\n\r\n const getChartData = (chartRange: Range) => {\r\n const groupedData = [ChartUnits.Count, ChartUnits.Volume].includes(filter.units)\r\n ? groupVolumeData(dealsWithDate, chartRange)\r\n : groupPercentData(dealsWithDate, chartRange);\r\n\r\n return getChartTraces(groupedData);\r\n };\r\n\r\n const getTickPrefix = (units: ChartUnits, currencyCode?: Currency) => {\r\n if (isPercentMode) {\r\n return '%';\r\n }\r\n\r\n return units === ChartUnits.Volume && currencyCode\r\n ? CurrencyTickPrefix[currencyCode]\r\n : '';\r\n };\r\n\r\n const getLayout = (chartRange: Range) => {\r\n const { dtick, tickformat } = GroupingTickFormat[filter.grouping];\r\n\r\n const prefix = getTickPrefix(filter.units, filter.currencyCode);\r\n\r\n return {\r\n ...chartLayout,\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: onClick ? 'nearest' : 'x unified',\r\n hoverlabel,\r\n barmode: ChartView.Stacked,\r\n xaxis: {\r\n tickcolor: tickColor,\r\n type: 'date',\r\n range: [\r\n chartRange.min.format(ChartRangeFormat),\r\n chartRange.max.format(ChartRangeFormat)\r\n ],\r\n tickfont: tickFont,\r\n fixedrange: true,\r\n dtick,\r\n tickformat,\r\n rangeslider: {\r\n bgcolor: 'rgba(79, 123, 156, 0.2)',\r\n },\r\n },\r\n yaxis: {\r\n showgrid: true,\r\n showtickprefix: 'all',\r\n fixedrange: true,\r\n gridcolor: tickColor,\r\n ticks: 'inside',\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n zerolinecolor: zeroLineColor,\r\n ...(isPercentMode ? { ticksuffix: prefix } : { tickprefix: prefix }),\r\n ...(isPercentMode ? { range: [0, 100] } : undefined),\r\n },\r\n }\r\n };\r\n\r\n const actualDataRange = getActualDataRange();\r\n const chartRange = getChartRange(actualDataRange);\r\n const dataRange = getDataRange(actualDataRange, chartRange);\r\n const data = getChartData(dataRange);\r\n const layout = getLayout(chartRange);\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
{ChartLegends[1]}
\r\n
{ChartLegends[0]}
\r\n
\r\n \r\n );\r\n}\r\n\r\nShortLongDatedDealsChart.defaultProps = {\r\n divId: 'long-short-dated-deals-chart'\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport { constants } from '../../../constants';\r\nimport { TransactionType } from '../../../types/amr-pipeline/enums/TransactionType';\r\nimport { ChartGrouping, ChartTypes, ChartUnits, ChartUnitsList } from '../../../types/dashboard/AmrChart';\r\nimport { Currency } from '../../../types/enums/Currency';\r\nimport { DropDownList } from '../../controls/DropDownList';\r\nimport { FilterPanel, FilterSection, FilterSwitch } from '../../filters';\r\n\r\nexport interface ShortLongDatedDealsChartFilter {\r\n transactionType: TransactionType | string;\r\n units: ChartUnits;\r\n grouping: ChartGrouping;\r\n currencyCode?: Currency;\r\n}\r\n\r\nexport interface ShortLongDatedDealsChartFilterProps extends ShortLongDatedDealsChartFilter {\r\n onChange: (value: ShortLongDatedDealsChartFilter) => void;\r\n}\r\n\r\nexport function ShortLongDatedDealsFilter({\r\n onChange,\r\n ...values\r\n}: ShortLongDatedDealsChartFilterProps) {\r\n const handleValueChange = (prop: keyof ShortLongDatedDealsChartFilter) => (value: any) => {\r\n onChange({\r\n ...values,\r\n [prop]: value,\r\n });\r\n };\r\n\r\n const chartTypes = useMemo(() => {\r\n const all = {\r\n value: constants.allListItem,\r\n text: 'All',\r\n selected: values.transactionType === constants.allListItem,\r\n };\r\n\r\n return [\r\n all,\r\n ...ChartTypes.map(({ value, text }) => ({\r\n value,\r\n text,\r\n selected: values.transactionType === value,\r\n })),\r\n ];\r\n }, [values.transactionType]);\r\n\r\n const chartUnits = useMemo(() => ChartUnitsList\r\n .map(({ value, text }) => ({\r\n value,\r\n text,\r\n selected: values.units === value,\r\n })), [values.units]);\r\n\r\n return (\r\n \r\n \r\n handleValueChange('transactionType')(value)}\r\n className=\"custom-drop-down-ghost\"\r\n prefix=\"Type: \"\r\n />\r\n \r\n \r\n handleValueChange('units')(value)}\r\n className=\"custom-drop-down-ghost\"\r\n />\r\n \r\n \r\n
\r\n {[Currency.USD, Currency.EUR].map(currencyCode =>\r\n handleValueChange('currencyCode')(currencyCode)}\r\n />)}\r\n
\r\n
\r\n \r\n
\r\n {[\r\n ChartGrouping.M,\r\n ChartGrouping.Q,\r\n ChartGrouping.Y,\r\n ].map(grouping =>\r\n handleValueChange('grouping')(grouping)}\r\n />)}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { ShortLongDatedDealsChart } from './ShortLongDatedDealsChart';\r\nimport { ShortLongDatedDealsFilter, ShortLongDatedDealsChartFilter, ShortLongDatedDealsChartFilterProps } from './ShortLongDatedDealsFilter';\r\nimport { isRequesting } from '../../../utils';\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from '../widget';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { dashboardShortLongDatedDealsRequest } from '../../../actions';\r\nimport { ChartGrouping, ChartUnits } from '../../../types/dashboard/AmrChart';\r\nimport { DashboardNoSelectedFilters } from \"../DashboardNoSelectedFilters\";\r\nimport { constants } from '../../../constants';\r\nimport { Currency } from '../../../types/enums/Currency';\r\nimport { ShowFor } from '../../access';\r\nimport { hasWidgetsAccess } from '../../../utils/amr-pipeline.utils';\r\nimport { ShortLongChartClickHandler } from './types';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\n\r\ninterface ShortLongDatedDealsWidgetProps {\r\n managerReferenceName?: string;\r\n subtitle?: string;\r\n defaultFilter?: Partial;\r\n periodsCount?: number;\r\n startDate: Date;\r\n withFilter?: boolean;\r\n filterComponent?: React.ElementType;\r\n className?: string;\r\n feature?: SubscriptionFeature;\r\n onChartClick?: ShortLongChartClickHandler;\r\n}\r\n\r\nexport function ShortLongDatedDealsWidget({\r\n managerReferenceName,\r\n subtitle,\r\n defaultFilter = {},\r\n periodsCount,\r\n startDate,\r\n withFilter = true,\r\n filterComponent: FilterComponent = ShortLongDatedDealsFilter,\r\n className = \"double-size im-chart\",\r\n feature = SubscriptionFeature.ShortAndLongDatedDealsGraph,\r\n onChartClick,\r\n}: ShortLongDatedDealsWidgetProps) {\r\n const {\r\n shortLongDatedDeals,\r\n requestStateShortLongDatedDeals,\r\n } = useSelector((state: AppState) => state.dashboard);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const hasAccess = hasWidgetsAccess(feature);\r\n\r\n const [filterState, setFilterState] = useState({\r\n grouping: ChartGrouping.M,\r\n units: ChartUnits.Volume,\r\n transactionType: constants.allListItem,\r\n currencyCode: Currency.USD,\r\n ...defaultFilter\r\n });\r\n\r\n useEffect(() => {\r\n hasAccess && dispatch(dashboardShortLongDatedDealsRequest(filterState, managerReferenceName, startDate));\r\n }, [hasAccess, dispatch, filterState, managerReferenceName, startDate]);\r\n\r\n const chart = useMemo(() =>\r\n ,\r\n [shortLongDatedDeals, filterState, periodsCount, onChartClick]);\r\n\r\n const chartName = \"Short & Long-Dated Deals\";\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}{subtitle && {subtitle}}

\r\n \r\n {withFilter && }\r\n \r\n
\r\n \r\n Short-dated deals are classified as those with a non-call period of 0-1.5 years and reinvestment period of 0-3.5 years.
\r\n All statistics are calculated based on the transaction pricing date.\r\n \r\n ) : null\r\n }\r\n >\r\n {shortLongDatedDeals?.length ? chart : }\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport classNames from 'classnames';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { Popup } from '../../controls';\r\nimport { user } from '../../../user';\r\nimport { inviteToJoinActions } from '../../../actions';\r\nimport { errorMessages } from '../../../constants';\r\n\r\nexport function InviteToJoinPopup() {\r\n const messageMaxLength = 1024;\r\n const currentUser = user.current();\r\n const defaultMessageText = `${currentUser.firstName} ${currentUser.lastName} invites you to join the KTX ATS Platform.`;\r\n const [message, setMessage] = useState(defaultMessageText);\r\n const [messageError, setMessageError] = useState('');\r\n const dispatch = useDispatch();\r\n const visible = useSelector(s => s.inviteToJoin.inviteToJoinPopupVisible);\r\n\r\n useEffect(() => {\r\n if (!visible) {\r\n setMessage(defaultMessageText);\r\n setMessageError('');\r\n }\r\n }, [visible, defaultMessageText]);\r\n\r\n if (!visible) {\r\n return null;\r\n }\r\n\r\n const handleClose = () => {\r\n dispatch(inviteToJoinActions.setVisiblePopup(false));\r\n };\r\n\r\n const handleSend = () => {\r\n if (message.length && !messageError) {\r\n dispatch(inviteToJoinActions.sendInviteToJoin(message))\r\n }\r\n };\r\n\r\n const handleChange = (e) => {\r\n const { value } = e.target;\r\n if (value.length > messageMaxLength) {\r\n setMessageError(errorMessages.maxLength(messageMaxLength))\r\n } else {\r\n setMessageError('')\r\n }\r\n setMessage(value);\r\n };\r\n\r\n const disabledSendButton = !message.length || messageError;\r\n\r\n return (\r\n Invite broker-dealers to join
the KTX ATS Platform}\r\n onClose={handleClose}\r\n modalClass=\"modal-invite-broker\"\r\n >\r\n
\r\n
\r\n \r\n
\r\n \r\n {messageError &&
{messageError}
}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Send\r\n \r\n
\r\n \r\n )\r\n}\r\n","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { inviteToJoinActions } from '../../../actions';\r\nimport { InviteToJoinPopup } from './InviteToJoinPopup';\r\nimport { FeatureButton } from '../../access/FeatureButton';\r\nimport { OnHoverTooltip } from '../../common/OnHoverTooltip';\r\nimport { RoleActionBlocker } from '../../access/RoleActionBlocker';\r\nimport { roles } from '../../../constants';\r\n\r\nexport function InviteToJoinAllButton({ disabled = true }) {\r\n const dispatch = useDispatch();\r\n\r\n return (\r\n
e.stopPropagation()}>\r\n \r\n \r\n {\r\n blocked =>\r\n \r\n dispatch(inviteToJoinActions.setVisiblePopup(true))}\r\n >\r\n Invite to Join\r\n \r\n \r\n }\r\n \r\n
\r\n )\r\n}\r\n","import React, { useCallback } from 'react';\r\nimport Confirm from '../alerts/Confirm';\r\nimport { useSelector } from 'react-redux';\r\nimport { AppState } from '../../types/state/AppState';\r\nimport { companyStatuses } from '../../constants';\r\nimport { dealersSelector } from '../../selectors/dealers.selector';\r\nimport { useBrokerDealerUsers } from '../../effects/useBrokerDealerUsers';\r\nimport { useSettlementAgentAgreements } from '../../effects/useSettlementAgentAgreements';\r\nimport { dealersActions } from '../../actions';\r\nimport { useAppDispatch } from '../../effects/useAppDispatch';\r\n\r\nconst ConfirmRequestToBidPopup: React.FC = () => {\r\n const dispatch = useAppDispatch();\r\n\r\n const confirmRequestToBidPopupState = useSelector((s: AppState) => s.dealers.confirmRequestToBidPopup);\r\n const isRequestingSendRequestToBidRequest = useSelector((s: AppState) => s.dealers.requestToBidRequestState);\r\n const brokerDealersState = useSelector(dealersSelector);\r\n\r\n const brokerDealerUsers = useBrokerDealerUsers();\r\n const settlementAgentAgreements = useSettlementAgentAgreements();\r\n\r\n const getDealers = useCallback(() => brokerDealersState.filter((d) => (\r\n d.isClearingBank && (\r\n confirmRequestToBidPopupState.dealerId\r\n ? d.id === confirmRequestToBidPopupState.dealerId\r\n : (\r\n d.status === companyStatuses.active.statusCode &&\r\n brokerDealerUsers.items.some(contact => contact.companyId === d.id) &&\r\n !settlementAgentAgreements.items.some(agreement => agreement.settlementAgent.id === d.id)\r\n )\r\n )\r\n )), [brokerDealersState, brokerDealerUsers.items, settlementAgentAgreements.items, confirmRequestToBidPopupState.dealerId]);\r\n\r\n const handleConfirm = () => {\r\n const dealers = getDealers();\r\n let clearingBankId;\r\n if(process.env.REACT_APP_SEND_REQUEST_TO_CUSTOM_SETTLEMENT_AGENT_ENABLED === 'true' && dealers && dealers.length === 1) {\r\n clearingBankId = dealers[0].id;\r\n }\r\n dispatch(dealersActions.requestToBid(clearingBankId));\r\n };\r\n\r\n return (\r\n dispatch(dealersActions.hideBidRequestConfirmPopup())}\r\n TextComponent={() =>(\r\n <>\r\n Request to bid will be sent to the following companies:\r\n
    \r\n {\r\n getDealers().map(c => (\r\n
  • {c.name}
  • \r\n ))\r\n }\r\n
\r\n Do you want to complete sending the request?\r\n \r\n )}\r\n disabled={isRequestingSendRequestToBidRequest}\r\n />\r\n )\r\n};\r\n\r\nexport const ConfirmRequestToBid: React.FC = () => {\r\n const visibleConfirmRequestToBidPopup = useSelector((s: AppState) => s.dealers.confirmRequestToBidPopup.visible);\r\n if (visibleConfirmRequestToBidPopup) {\r\n return \r\n }\r\n return null;\r\n};\r\n","import React, { useEffect, useMemo } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { dealersActions } from '../../actions';\r\nimport { AppState } from '../../types/state/AppState';\r\nimport { Preloader, SearchInput, OnHoverTooltip } from '../common';\r\nimport { isRequestSuccess } from '../../utils';\r\nimport { dealersSelector, isRequestedInitialData } from '../../selectors/dealers.selector';\r\nimport { DealerList } from '../dealer-list/DealerList';\r\nimport { InviteToJoinAllButton } from './inviteToJoin/InviteToJoinAllButton';\r\nimport { companyStatuses, roles, routes } from '../../constants';\r\nimport { FeatureButton } from '../access/FeatureButton';\r\nimport { useDealersFilter } from '../../effects/useDealersFilter';\r\nimport { FeatureLink } from '../access/FeatureLink';\r\nimport IconSVG from '../../styles/svg-icons';\r\nimport { dealerListActions } from '../../actions/dealer-list.actions';\r\nimport { Stats } from '../allBWICS/Stats';\r\nimport { DealerListFilter } from '../dealer-list/DealerListFilter';\r\nimport { DealerListFilterOption } from '../../types/state/DealerListState';\r\nimport { useBrokerDealerContacts } from '../../effects/useBrokerDealerContacts';\r\nimport { useBrokerDealerUsers } from '../../effects/useBrokerDealerUsers';\r\nimport { useBrokerDealers } from '../../effects/useBrokerDealers';\r\nimport { CompanyStatus } from '../../types/company/CompanyStatus';\r\nimport { useSettlementAgentAgreements } from '../../effects/useSettlementAgentAgreements';\r\nimport { useFavorites } from '../../effects/useFavorites';\r\nimport { ConfirmRequestToBid } from './ConfirmRequestToBidPopup';\r\nimport { TooltipPlacement } from '../common/Tooltip';\r\nimport { user } from '../../user/user';\r\nimport { RoleActionBlocker } from '../access/RoleActionBlocker';\r\n\r\nexport const Dealers: React.FC = () => {\r\n const dispatch = useDispatch();\r\n const brokerDealers = useBrokerDealers();\r\n const brokerDealerContacts = useBrokerDealerContacts().items;\r\n const brokerDealerUsers = useBrokerDealerUsers().items;\r\n const favoritesState = useFavorites();\r\n const favoriteDealers = favoritesState.favorites;\r\n const agreementsState = useSettlementAgentAgreements();\r\n const settlementAgentAgreements = agreementsState.items;\r\n const disabledInviteAllButton = useSelector((s: AppState) => s.inviteToJoin.disabledInviteAllButton);\r\n const searchTerm = useSelector((state: AppState) => state.dealers.filter.searchTerm);\r\n const filterOptions = useSelector((state: AppState) => state.dealers.filter.filterOptions);\r\n const dealerList = useSelector(dealersSelector);\r\n const isRequestingBrokerDealers = useSelector(isRequestedInitialData);\r\n const isSellerTrader = user.hasRoles(roles.SellerTrader);\r\n const isLoading = !(isSellerTrader\r\n ? isRequestingBrokerDealers && isRequestSuccess(\r\n agreementsState.requestState,\r\n favoritesState.requestState,\r\n brokerDealers.requestState\r\n ) : isRequestingBrokerDealers && isRequestSuccess(brokerDealers.requestState));\r\n\r\n useEffect(() => {\r\n return () => {\r\n dispatch(dealersActions.reset());\r\n dispatch(dealerListActions.reset());\r\n };\r\n }, [dispatch]);\r\n\r\n const { dealers } = useDealersFilter(dealerList, brokerDealerContacts, brokerDealerUsers, searchTerm, filterOptions, favoriteDealers);\r\n\r\n const inviteCompanyButtonDisabledState = useMemo(() => (disabledInviteAllButton || !dealers.length || !dealers.some(dealer => {\r\n const dealerContacts = brokerDealerContacts.filter(c => c.companyId === dealer.id);\r\n const isOffPlatform = dealer.status !== companyStatuses.active.statusCode;\r\n const hasNotInvitedParticipant = dealerContacts && dealerContacts.some(c => !c.invitationSent);\r\n const distributionListInvitationNotSent = isOffPlatform && dealer.distributionList && !dealer.distributionListInvitationSent;\r\n const headOfTradingInvitationNotSent = isOffPlatform && dealer.headOfTrading && !dealer.headOfTradingInvitationSent;\r\n return hasNotInvitedParticipant || distributionListInvitationNotSent || headOfTradingInvitationNotSent;\r\n })), [disabledInviteAllButton, dealers, brokerDealerContacts]);\r\n\r\n const canSendRequestToBid = useMemo(() =>\r\n dealers.some(c =>\r\n c.isClearingBank &&\r\n c.status === CompanyStatus.active &&\r\n !settlementAgentAgreements.some(d => d.settlementAgent.id === c.id)\r\n ),\r\n [dealers, settlementAgentAgreements]\r\n );\r\n\r\n const handleRequestAllDealers = (e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n dispatch(dealersActions.showBidRequestConfirmPopup(null))\r\n };\r\n\r\n const handleAddContact = () => {\r\n dispatch(dealerListActions.setEditableContact(\r\n {\r\n id: 0,\r\n companyId: 0,\r\n firstName: '',\r\n lastName: '',\r\n role: '',\r\n email: '',\r\n phone: '',\r\n readonly: false,\r\n deleted: false,\r\n invitationSent: false\r\n }, '')\r\n )\r\n };\r\n\r\n const handleFilterChange = (option: DealerListFilterOption) => {\r\n dispatch(dealersActions.updateFilterOptions(option));\r\n dispatch(dealerListActions.expandDealers({}, true));\r\n };\r\n\r\n const resetFilterAndSearch = () => {\r\n dispatch(dealersActions.clearFilterOptions());\r\n dispatch(dealersActions.setSearchTerm(''));\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

Dealers

\r\n dispatch(dealersActions.setSearchTerm(value))}\r\n onClear={() => dispatch(dealersActions.setSearchTerm(''))}\r\n disabled={!dealerList.length}\r\n maxLengthValue={128}\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {(blocked: boolean) => (\r\n \r\n \r\n REQUEST DirrectBidding\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 Edit All\r\n \r\n \r\n \r\n Add Contact\r\n \r\n
\r\n
\r\n
\r\n \r\n {\r\n !isLoading &&\r\n \r\n }\r\n \r\n \r\n
\r\n )\r\n};\r\n","import { ColumnBuilder } from \"../../../bidding/common/table/columns/column-builder/ColumnBuilder\";\r\nimport { IColumnDefinition } from \"../../../bidding/common/table/types/ColumnDefinition\";\r\nimport { AmrTransaction } from \"../../../../types/amr-pipeline/models/AmrTransaction\";\r\nimport { OriginatingTransaction } from \"../../../../types/amr-pipeline/models/OriginatingTransaction\";\r\nimport { PipelineWidgetColumn } from \"../../../../types/dashboard/PipelineWidgetColumn\";\r\nimport { formatUtils } from \"../../../../utils\";\r\nimport { constants } from \"../../../../constants\";\r\nimport { FilterRelatedTransactionsIcon } from '../../../amrPipeline/common/FilterRelatedTransactionsIcon';\r\nimport { DetailedPageLink } from \"../../../amrPipeline/common/DetailedPageLink\";\r\nimport { OnHoverTooltip } from \"../../../common\";\r\nimport { ActionBlocker } from \"../../../access/ActionBlocker\";\r\nimport { SubscriptionFeature } from \"../../../../types/billing/SubscriptionFeature\";\r\n\r\nconst buyColumnsDefinitions: IColumnDefinition[] = [\r\n {\r\n columnKey: PipelineWidgetColumn.dealName,\r\n renderColumnHeaderContent: () => 'Deal Name',\r\n renderColumnContent: (transaction) => (\r\n \r\n {blocked => (\r\n \r\n \r\n \r\n )}\r\n \r\n ), \r\n headerClassName: 'data-list-cell-xl-flexible',\r\n bodyClassName: 'data-list-cell-xl-flexible',\r\n sortingField: 'dealLegalName',\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.relatedTransactions,\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: ({ dealLegalName, dealReferenceName, numberOfDealPublishedTransactions }, context) =>\r\n numberOfDealPublishedTransactions > 1 &&\r\n \r\n {blocked => (\r\n \r\n )}\r\n ,\r\n headerClassName: 'data-list-cell-xxxs',\r\n bodyClassName: 'data-list-cell-xxxs',\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.collateralType,\r\n renderColumnHeaderContent: () => 'Collat.',\r\n renderColumnContent: ({ collateralType }) => formatUtils.formatCollateralType(collateralType),\r\n headerClassName: 'data-list-cell-xs',\r\n bodyClassName: 'data-list-cell-xs',\r\n sortingField: 'collateralType',\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.currency,\r\n renderColumnHeaderContent: () => 'Ccy',\r\n renderColumnContent: ({ currency }) => (currency ? currency.code : constants.emptyPlaceholder),\r\n headerClassName: 'data-list-cell-xs',\r\n bodyClassName: 'data-list-cell-xs',\r\n sortingField: 'currency',\r\n },\r\n];\r\n\r\nexport const topStaticDealColumns = buyColumnsDefinitions.map((c) => {\r\n return new ColumnBuilder(c);\r\n});\r\n","import { useEffect, useState } from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { AppState } from \"../../../types/state/AppState\";\r\nimport { isRequesting } from \"../../../utils\";\r\nimport { SORT, SORTING_TYPE, issuanceMonitorWidget } from \"../../../constants\";\r\nimport { Table } from \"../../bidding/common/table\";\r\nimport { topStaticDealColumns } from \"./columns/TopStaticDealColumns\";\r\nimport { Pagination } from \"../tables/Pagination\";\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from \"../widget\";\r\nimport { DashboardSkeleton } from \"../DashboardSkeleton\";\r\nimport { dashboardExportTopStaticDeals, dashboardFetchTopStaticDeals } from \"../../../actions/dashboard.actions\";\r\nimport { getAvailableYears, getSortingParamsForStatisticExport } from \"./top-list.utils\";\r\nimport { YearSelector } from \"../../controls/YearSelector\";\r\nimport { DashboardNoSelectedFilters } from \"../DashboardNoSelectedFilters\";\r\nimport { AmrClass } from \"../../../types/amr-pipeline/models/AmrClass\";\r\nimport { OriginatingTransaction } from \"../../../types/amr-pipeline/models/OriginatingTransaction\";\r\nimport { useSortedList } from \"../../../effects\";\r\nimport { ShowFor } from \"../../access\";\r\nimport ImExportButton from \"../../amrPipeline/common/ImExportButton\";\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { hasWidgetsAccess } from '../../../utils/amr-pipeline.utils';\r\nimport moment from 'moment';\r\nimport { ChartRequiredFeature } from \"../../access/ChartRequiredFeature\";\r\n\r\nconst availableYears: number[] = getAvailableYears(issuanceMonitorWidget.dealsMinYear);\r\n\r\ninterface Props {\r\n onListItemClick?: () => void;\r\n}\r\n\r\nexport function TopStaticDeals({ onListItemClick }: Props) {\r\n const [year, setYear] = useState(availableYears[0]);\r\n const [page, setPage] = useState(1);\r\n const [sortBy, setSortBy] = useState(\"\");\r\n const [sortDirection, setSortDirection] = useState(SORT.ASC);\r\n\r\n const topStaticDeals = useSelector((s: AppState) => s.dashboard.topStaticDeals);\r\n const requestStateFetchTopStaticDeals = useSelector((s: AppState) => s.dashboard.requestStateFetchTopStaticDeals);\r\n const requestStateExportStaticDeals = useSelector(\r\n (s: AppState) => s.dashboard.requestStateExportStaticDeals\r\n );\r\n\r\n const hasAccess = hasWidgetsAccess(SubscriptionFeature.StaticDealsTable);\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n hasAccess && dispatch(dashboardFetchTopStaticDeals(moment().year()));\r\n }, [dispatch, hasAccess]);\r\n\r\n const sortingType = sortBy === \"currency\" ? SORTING_TYPE.transactionCurrency : '';\r\n const [sortedDataItems] = useSortedList(topStaticDeals, sortBy, sortDirection, sortingType);\r\n\r\n const columnContext = () => {\r\n return {\r\n onListItemClick: onListItemClick,\r\n };\r\n };\r\n\r\n const handleSortChange = (field: string, direction: string) => {\r\n setSortBy(field);\r\n setSortDirection(direction);\r\n };\r\n\r\n const handleYearChange = (yearValue?: number) => {\r\n setYear(yearValue);\r\n dispatch(dashboardFetchTopStaticDeals(yearValue));\r\n };\r\n\r\n const handleExportChart = () =>\r\n dispatch(\r\n dashboardExportTopStaticDeals(\r\n year,\r\n getSortingParamsForStatisticExport(sortBy, sortDirection),\r\n )\r\n );\r\n\r\n const onPageChanged = (selectedPage: number) => setPage(selectedPage);\r\n\r\n const renderTable = () =>\r\n sortedDataItems.length > issuanceMonitorWidget.itemsOnPage ? (\r\n \r\n {(items: AmrClass[] | OriginatingTransaction[]) => (\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n );\r\n\r\n const chartName = \"Static Deals\";\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}

\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 {sortedDataItems.length ? renderTable() : }\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import { useDispatch } from \"react-redux\";\r\nimport { RequestState } from \"../../../constants/request-state\";\r\nimport { useAppSelector } from \"../../../effects/useAppSelector\";\r\nimport { isRequestNone } from \"../../../utils\";\r\nimport { useEffect } from \"react\";\r\nimport { dashboardFetchBwics, errorActions } from \"../../../actions\";\r\nimport { dashboardService } from \"../../../services\";\r\n\r\nexport const useScheduledBwics = (readonly: boolean = true) => {\r\n const dispatch = useDispatch();\r\n const bwics = useAppSelector(s => s.dashboard.bwics);\r\n const myBwics = useAppSelector(s => s.dashboard.myBwics);\r\n const requestStateFetchBwics = useAppSelector(s => s.dashboard.requestStateFetchBwics);\r\n\r\n useEffect(() => {\r\n if (isRequestNone(requestStateFetchBwics) && !readonly) {\r\n (async () => {\r\n try {\r\n dispatch(dashboardFetchBwics(RequestState.request));\r\n const result = await dashboardService.fetchScheduledBwics();\r\n dispatch(dashboardFetchBwics(RequestState.success, result));\r\n } catch (e) {\r\n dispatch(dashboardFetchBwics(RequestState.failure));\r\n dispatch(errorActions.error(e));\r\n }\r\n })();\r\n }\r\n\r\n }, [dispatch, readonly, requestStateFetchBwics])\r\n return { requestStateFetchBwics, bwics, myBwics };\r\n\r\n}","import { constants } from '../../../constants';\r\nimport { TransactionType } from '../../../types/amr-pipeline/enums/TransactionType';\r\nimport { Currency } from '../../../types/enums/Currency';\r\n\r\nexport const TopIssuersTransactionTypes = [\r\n { value: constants.allListItem, text: 'All' },\r\n { value: TransactionType.newIssue, text: 'New Issue' },\r\n { value: TransactionType.refi, text: 'Refinancing' },\r\n { value: TransactionType.reset, text: 'Reset' },\r\n];\r\n\r\nexport const TopIssuersCurrencyTypes = [\r\n {\r\n text: \"All\",\r\n value: constants.allListItem,\r\n },\r\n {\r\n text: Currency.USD,\r\n value: Currency.USD,\r\n },\r\n {\r\n text: Currency.EUR,\r\n value: Currency.EUR,\r\n },\r\n];\r\n","import React from 'react';\r\nimport moment, { Moment } from 'moment';\r\nimport { flatten, sortedUniqBy } from 'lodash';\r\nimport { Plot, mainConfig } from '../../common/charts';\r\nimport { chartUsBslEuCompliant } from '../../../constants';\r\nimport { chartUtils, numericUtils } from '../../../utils';\r\nimport { arrayUtils } from '../../../utils/array.utils';\r\nimport { VolumesCountTransactionType } from '../../../types/dashboard/VolumesCountTransactionType';\r\nimport { ChartGrouping, ChartUnits, ChartView } from '../../../types/dashboard/AmrChart';\r\nimport { UsBslEuCompliantDealsChartFilter } from './UsBslEuCompliantDealsFilter';\r\nimport { amrChartUtils } from '../../../utils/amr-chart.utils';\r\n\r\ninterface UsBslEuCompliantDealsChartProps {\r\n usBslEuCompliantDeals: VolumesCountTransactionType[];\r\n usBslDeals: VolumesCountTransactionType[];\r\n filter: UsBslEuCompliantDealsChartFilter,\r\n divId?: string;\r\n}\r\n\r\ntype GroupedData = {\r\n [key: string]: number;\r\n};\r\n\r\nconst MaxRangeYears = 12;\r\n\r\nconst GroupingTickFormat: Partial> = {\r\n [ChartGrouping.M]: {\r\n tickformat: '%b `%y',\r\n dtick: 'M1'\r\n },\r\n [ChartGrouping.Q]: {\r\n tickformat: '%qQ `%y',\r\n dtick: 'M3'\r\n },\r\n [ChartGrouping.Y]: {\r\n tickformat: '%Y',\r\n dtick: 'M12'\r\n },\r\n};\r\n\r\nconst MonthDateFormat = 'YYYY-MM';\r\nconst YearDateFormat = 'YYYY';\r\n\r\nexport function UsBslEuCompliantDealsChart({ usBslEuCompliantDeals, usBslDeals, filter, divId }: UsBslEuCompliantDealsChartProps) {\r\n const {\r\n chartLayout,\r\n tickColor,\r\n tickFont,\r\n barColors,\r\n zeroLineColor,\r\n hoverlabel,\r\n } = chartUsBslEuCompliant;\r\n\r\n const formatByGrouping = (date: Moment) => {\r\n switch (filter.grouping) {\r\n case ChartGrouping.Y:\r\n return date.format(YearDateFormat);\r\n case ChartGrouping.Q:\r\n // Group by first month of each quarter\r\n return `${date.year()}-${date.quarter() * 3 - 2}`;\r\n default:\r\n return date.format(MonthDateFormat);\r\n }\r\n };\r\n\r\n const getDimension = (row: VolumesCountTransactionType) => {\r\n return moment.utc([row.year, row.month - 1]);\r\n };\r\n\r\n const getMetric = (row: VolumesCountTransactionType) => {\r\n switch (filter.units) {\r\n case ChartUnits.Count:\r\n return row.numberOfTransactions;\r\n default:\r\n return row.dealBalanceTotal;\r\n }\r\n };\r\n\r\n const getRatioTrace = (uniqDimensions: string[], groupedEsgLanguageDeals: GroupedData, groupedUsBslNewIssue: GroupedData) => {\r\n const values = uniqDimensions.map(dimension => {\r\n const esgLanguageBalance = groupedEsgLanguageDeals[dimension] || 0;\r\n const usBslNewIssueBalance = groupedUsBslNewIssue[dimension] || 0;\r\n\r\n return esgLanguageBalance && usBslNewIssueBalance\r\n ? numericUtils.round((esgLanguageBalance / usBslNewIssueBalance) * 100)\r\n : 0;\r\n });\r\n\r\n return {\r\n x: uniqDimensions,\r\n y: values\r\n };\r\n };\r\n\r\n const groupData = (data: VolumesCountTransactionType[]): GroupedData => {\r\n const map = arrayUtils.groupBy(\r\n data,\r\n (row: VolumesCountTransactionType) => `${formatByGrouping(getDimension(row))}`\r\n );\r\n\r\n return Array.from(map.entries())\r\n .reduce((acc: GroupedData, [dimension, elements]) => {\r\n const balance = arrayUtils.sum(elements, (value: VolumesCountTransactionType) => getMetric(value));\r\n\r\n return {\r\n ...acc,\r\n [dimension]: balance,\r\n };\r\n }, {});\r\n };\r\n\r\n const getTraceFromGroupedData = (data: GroupedData) => {\r\n return Object.entries(data)\r\n .reduce((acc: any, [dimension, balance]) => ({\r\n x: [...acc.x, dimension],\r\n y: [...acc.y, balance],\r\n }), { x: [], y: [] });\r\n };\r\n\r\n const getChartRange = (min: Moment, max: Moment) => {\r\n let rangeMin = min.clone();\r\n let rangeMax = max.clone();\r\n\r\n switch (filter.grouping) {\r\n case ChartGrouping.M:\r\n rangeMin = max.clone()\r\n .subtract(11, 'months')\r\n .subtract(15, 'days');\r\n rangeMax.add(15, 'days');\r\n break;\r\n case ChartGrouping.Q:\r\n rangeMin = max.clone()\r\n .subtract(11, 'quarters')\r\n .subtract(45, 'days');\r\n rangeMax.startOf('quarter')\r\n .add(45, 'days');\r\n break;\r\n default: {\r\n rangeMin = max.clone()\r\n .subtract(MaxRangeYears - 1, 'years')\r\n .startOf('year')\r\n .subtract(6, 'months');\r\n\r\n if (rangeMin.isBefore(min)) {\r\n rangeMin = min.clone()\r\n .startOf('year')\r\n .subtract(6, 'months');\r\n }\r\n\r\n rangeMax.startOf('year')\r\n .add(6, 'months');\r\n }\r\n }\r\n\r\n return [\r\n rangeMin.format(),\r\n rangeMax.format(),\r\n ];\r\n };\r\n\r\n const groupAll = (...args: VolumesCountTransactionType[][]): [VolumesCountTransactionType[], ...GroupedData[]] => {\r\n const grouped = args.map(groupData);\r\n\r\n const dimensions = flatten(args)\r\n .sort((a, b) => a.year - b.year\r\n ? a.year - b.year\r\n : a.month - b.month);\r\n\r\n return [\r\n sortedUniqBy(dimensions, x => `${x.year}-${x.month}`),\r\n ...grouped,\r\n ];\r\n };\r\n\r\n const getChartData = (dataByUniqueDimensions: VolumesCountTransactionType[], ...grouped: GroupedData[]) => {\r\n const [\r\n groupedEuCompliant,\r\n groupedUsBsl,\r\n ] = grouped;\r\n\r\n const formattedDimensions = dataByUniqueDimensions.map(x => formatByGrouping(getDimension(x)));\r\n\r\n const ratioTrace = getRatioTrace(\r\n formattedDimensions,\r\n groupedEuCompliant,\r\n groupedUsBsl,\r\n );\r\n\r\n const euCompliantTrace = getTraceFromGroupedData(groupedEuCompliant);\r\n const usBslTrace = getTraceFromGroupedData(groupedUsBsl);\r\n\r\n return [\r\n {\r\n ...euCompliantTrace,\r\n type: 'bar',\r\n hovertemplate: `EU Compliant: %{y}`,\r\n marker: {\r\n color: barColors[0],\r\n },\r\n },\r\n {\r\n ...usBslTrace,\r\n type: 'bar',\r\n hovertemplate: `US BSL: %{y}`,\r\n marker: {\r\n color: barColors[1],\r\n },\r\n },\r\n {\r\n ...ratioTrace,\r\n type: 'scatter',\r\n mode: 'lines',\r\n marker: {\r\n color: barColors[2],\r\n },\r\n yaxis: 'y2',\r\n hovertemplate: `% of EU Compliant Deals: %{y}`,\r\n }\r\n ];\r\n };\r\n\r\n const getLayout = (dataByUniqueDimensions: VolumesCountTransactionType[]) => {\r\n const { min, max } = amrChartUtils.getEdgeDimensionValues(dataByUniqueDimensions, getDimension);\r\n const chartRange = getChartRange(min, max);\r\n const sliderRange = [min.format(), max.format()];\r\n const { dtick, tickformat } = GroupingTickFormat[filter.grouping];\r\n\r\n const tickprefix = filter.units === ChartUnits.Volume ? '$' : '';\r\n\r\n return {\r\n ...chartLayout,\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: 'x unified',\r\n hoverlabel,\r\n barmode: ChartView.Grouped,\r\n xaxis: {\r\n tickcolor: tickColor,\r\n type: 'date',\r\n tickfont: tickFont,\r\n fixedrange: true,\r\n dtick,\r\n tickformat,\r\n range: chartRange,\r\n rangeslider: {\r\n range: sliderRange,\r\n bgcolor: 'rgba(79, 123, 156, 0.2)',\r\n },\r\n },\r\n yaxis: {\r\n showgrid: true,\r\n showtickprefix: 'all',\r\n fixedrange: true,\r\n tickprefix,\r\n gridcolor: tickColor,\r\n ticks: 'inside',\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n zerolinecolor: zeroLineColor,\r\n },\r\n yaxis2: {\r\n gridcolor: tickColor,\r\n tickfont: tickFont,\r\n zeroline: false,\r\n fixedrange: true,\r\n autorange: false,\r\n automargin: true,\r\n showgrid: false,\r\n showline: false,\r\n autotick: true,\r\n ticks: 'none',\r\n ticklabelposition: 'outside',\r\n side: 'right',\r\n range: [0, 100],\r\n overlaying: 'y',\r\n ticksuffix: '%',\r\n },\r\n }\r\n };\r\n\r\n const [\r\n dimensions,\r\n groupedEuCompliant,\r\n groupedUsBsl,\r\n ] = groupAll(usBslEuCompliantDeals, usBslDeals);\r\n\r\n const data = getChartData(dimensions, groupedEuCompliant, groupedUsBsl);\r\n const layout = getLayout(dimensions);\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
EU Compliant
\r\n
US BSL
\r\n
% of EU Compliant Deals
\r\n
\r\n \r\n );\r\n}\r\n\r\nUsBslEuCompliantDealsChart.defaultProps = {\r\n divId: 'us-bsl-esg-new-issue-chart'\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport { constants } from '../../../constants';\r\nimport { TransactionType } from '../../../types/amr-pipeline/enums/TransactionType';\r\nimport { ChartGrouping, ChartTypes, ChartUnits } from '../../../types/dashboard/AmrChart';\r\nimport { DropDownList } from '../../controls/DropDownList';\r\nimport { FilterPanel, FilterSection, FilterSwitch } from '../../filters';\r\n\r\nexport interface UsBslEuCompliantDealsChartFilter {\r\n transactionType: TransactionType | string;\r\n units: ChartUnits;\r\n grouping: ChartGrouping;\r\n}\r\n\r\ninterface UsBslEuCompliantDealsChartFilterProps extends UsBslEuCompliantDealsChartFilter {\r\n onChange: (value: UsBslEuCompliantDealsChartFilter) => void;\r\n}\r\n\r\nexport function UsBslEuCompliantDealsFilter({\r\n onChange,\r\n ...values\r\n}: UsBslEuCompliantDealsChartFilterProps) {\r\n const handleValueChange = (prop: keyof UsBslEuCompliantDealsChartFilter) => (value: any) => {\r\n onChange({\r\n ...values,\r\n [prop]: value,\r\n });\r\n };\r\n\r\n const chartTypes = useMemo(() => {\r\n const all = {\r\n value: constants.allListItem,\r\n text: 'All',\r\n selected: values.transactionType === constants.allListItem,\r\n };\r\n\r\n return [\r\n all,\r\n ...ChartTypes.map(({ value, text }) => ({\r\n value,\r\n text,\r\n selected: values.transactionType === value,\r\n })),\r\n ];\r\n }, [values.transactionType]);\r\n\r\n return (\r\n \r\n \r\n handleValueChange('transactionType')(value)}\r\n className=\"custom-drop-down-ghost\"\r\n prefix=\"Type: \"\r\n />\r\n \r\n \r\n
\r\n {[ChartUnits.Volume, ChartUnits.Count].map(unit =>\r\n handleValueChange('units')(unit)}\r\n />\r\n )}\r\n
\r\n
\r\n \r\n
\r\n {[\r\n ChartGrouping.M,\r\n ChartGrouping.Q,\r\n ChartGrouping.Y,\r\n ].map(grouping =>\r\n handleValueChange('grouping')(grouping)}\r\n />)}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { UsBslEuCompliantDealsChart } from './UsBslEuCompliantDealsChart';\r\nimport { UsBslEuCompliantDealsFilter, UsBslEuCompliantDealsChartFilter } from './UsBslEuCompliantDealsFilter';\r\nimport { isRequesting } from '../../../utils';\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from '../widget';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { dashboardUsBslEuCompliantDealsRequest } from '../../../actions';\r\nimport { ChartGrouping, ChartUnits } from '../../../types/dashboard/AmrChart';\r\nimport { DashboardNoSelectedFilters } from \"../DashboardNoSelectedFilters\";\r\nimport { constants } from '../../../constants';\r\nimport { ShowFor } from '../../access';\r\nimport { hasWidgetsAccess } from '../../../utils/amr-pipeline.utils';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\n\r\nexport function UsBslEuCompliantDealsWidget() {\r\n const usBslEuCompliantDealsState = useSelector((state: AppState) => state.dashboard.usBslEuCompliantDeals);\r\n const requestStateUsBslEuCompliantDeals = useSelector((state: AppState) => state.dashboard.requestStateUsBslEuCompliantDeals);\r\n const { usBslEuCompliantDeals, usBslDeals } = usBslEuCompliantDealsState;\r\n\r\n const dispatch = useDispatch();\r\n\r\n const hasAccess = hasWidgetsAccess(SubscriptionFeature.EuCompliantAsPercentOfBslGraph);\r\n\r\n const [filterState, setFilterState] = useState({\r\n grouping: ChartGrouping.M,\r\n units: ChartUnits.Volume,\r\n transactionType: constants.allListItem,\r\n });\r\n\r\n useEffect(() => {\r\n hasAccess && dispatch(dashboardUsBslEuCompliantDealsRequest(filterState));\r\n }, [hasAccess, dispatch, filterState]);\r\n\r\n const chart = useMemo(() =>\r\n ,\r\n [\r\n usBslEuCompliantDeals,\r\n usBslDeals,\r\n filterState\r\n ]);\r\n\r\n const chartName = \"EU Compliant as % of BSL\";\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}

\r\n \r\n \r\n \r\n
\r\n \r\n All statistics are calculated based on the transaction pricing date.\r\n \r\n }\r\n >\r\n {usBslEuCompliantDeals?.length || usBslDeals?.length ? chart : }\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import moment from 'moment';\r\nimport { Plot, mainConfig } from '../../common/charts';\r\nimport { chartUtils, moneyUtils } from '../../../utils';\r\nimport { DailyIssuanceSpread, IssuanceSpreadBase, Spread } from '../../../types/dashboard/IssuanceSpread';\r\nimport { chartUsBslNewIssueSpreads } from '../../../constants/dashboard/chartUsBslNewIssueSpreads';\r\nimport { isNil } from 'lodash';\r\nimport { constants } from '../../../constants';\r\n\r\n\r\nconst getDailyDimension = (spread: IssuanceSpreadBase) => {\r\n const { year, month, day } = spread as DailyIssuanceSpread;\r\n return !isNil(year) && !isNil(month) && !isNil(day)\r\n ? moment([year, month - 1, day]).format(constants.dateFormat4)\r\n : undefined;\r\n};\r\n\r\ninterface WeeklySpreadsChartProps {\r\n spreads: IssuanceSpreadBase[];\r\n fieldSelector: (spread: IssuanceSpreadBase) => Spread | undefined;\r\n getDimension?: (spread: IssuanceSpreadBase) => string | undefined;\r\n divId?: string;\r\n}\r\n\r\nexport interface EmptyMarkerSpread extends Spread {\r\n emptyMarker: boolean\r\n}\r\n\r\nexport function IssuanceSpreadChart({\r\n spreads,\r\n fieldSelector,\r\n getDimension = getDailyDimension,\r\n divId = 'was-warf-ds-chart'\r\n}: WeeklySpreadsChartProps) {\r\n const {\r\n chartLayout,\r\n tickColor,\r\n tickFont,\r\n bar,\r\n border,\r\n zeroLineColor,\r\n hoverlabel,\r\n } = chartUsBslNewIssueSpreads;\r\n\r\n const isSingleValueSpread = (spread: Spread) =>\r\n spread.min === spread.max &&\r\n spread.max === spread.median &&\r\n spread.median === spread.q1 &&\r\n spread.q1 === spread.q3;\r\n\r\n const isEmptyMarkerSpread = (spread: Spread) =>\r\n (spread as EmptyMarkerSpread).emptyMarker\r\n\r\n const getHoverInfoText = (spread: IssuanceSpreadBase) => {\r\n const row = fieldSelector(spread);\r\n if (!row) return '';\r\n\r\n if (isSingleValueSpread(row)) {\r\n return (\r\n `${getDimension(spread)}
` +\r\n `${moneyUtils.money(row.median, true)}
`\r\n )\r\n }\r\n\r\n let outliers;\r\n\r\n if (row.bottomOutlier && row.topOutlier) {\r\n outliers = moneyUtils.money(row.bottomOutlier, true) + '; ' + moneyUtils.money(row.topOutlier, true);\r\n } else {\r\n const outlier = row.bottomOutlier || row.topOutlier;\r\n outliers = outlier ? moneyUtils.money(outlier, true) : undefined;\r\n }\r\n\r\n return (\r\n `${getDimension(spread)}
` +\r\n `Min: ${moneyUtils.money(row.min, true)}
` +\r\n `Q1: ${moneyUtils.money(row.q1, true)}
` +\r\n `Med: ${moneyUtils.money(row.median, true)}
` +\r\n `Q3: ${moneyUtils.money(row.q3, true)}
` +\r\n `Max: ${moneyUtils.money(row.max, true)}
` +\r\n (outliers ? `Outlier(s): ${(outliers)}
` : '')\r\n );\r\n };\r\n const getChartData = () => {\r\n return spreads.reduce((acc: any, spread: IssuanceSpreadBase) => {\r\n const dimension = getDimension(spread);\r\n const row = fieldSelector(spread);\r\n\r\n if (!row) return acc;\r\n\r\n const isSingleValue = isSingleValueSpread(row);\r\n const isEmptyMarker = isEmptyMarkerSpread(row)\r\n\r\n let data = [...acc];\r\n\r\n if (!isEmptyMarker) {\r\n const box = row.count ? {\r\n q1: [row.q1],\r\n q3: [row.q3],\r\n median: [row.median],\r\n lowerfence: [row.min],\r\n upperfence: [row.max],\r\n name: isSingleValue ? undefined : getHoverInfoText(spread),\r\n x: [dimension],\r\n type: 'box',\r\n marker: {\r\n color: border,\r\n },\r\n fillcolor: bar,\r\n hoverinfo: isSingleValue ? 'skip' : 'name',\r\n boxpoints: false,\r\n } : {};\r\n\r\n const topOutlier = {\r\n x: [dimension],\r\n y: [row.count ? row.topOutlier : undefined],\r\n hoverinfo: 'skip',\r\n mode: 'markers',\r\n type: 'scatter',\r\n marker: {\r\n size: 6,\r\n color: border,\r\n },\r\n };\r\n\r\n const bottomOutliers = {\r\n x: [dimension],\r\n y: [row.count ? row.bottomOutlier : undefined],\r\n hoverinfo: 'skip',\r\n mode: 'markers',\r\n type: 'scatter',\r\n marker: {\r\n size: 6,\r\n color: border,\r\n },\r\n };\r\n\r\n data.push(box, topOutlier, bottomOutliers);\r\n }\r\n\r\n if (isSingleValue || isEmptyMarker) {\r\n data.push({\r\n x: [dimension],\r\n y: [row.median],\r\n name: isEmptyMarker ? undefined : getHoverInfoText(spread),\r\n hoverinfo: isEmptyMarker ? 'skip' : 'name',\r\n mode: 'none'\r\n });\r\n }\r\n\r\n return data;\r\n }, []);\r\n };\r\n\r\n const getLayout = () => {\r\n return {\r\n ...chartLayout,\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: 'closest',\r\n hoverlabel,\r\n xaxis: {\r\n automargin: true,\r\n type: 'category',\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n fixedrange: true,\r\n dtick: 'D1',\r\n tickformat: '%m/%d/%y',\r\n },\r\n yaxis: {\r\n automargin: true,\r\n showgrid: true,\r\n showtickprefix: 'all',\r\n fixedrange: true,\r\n gridcolor: tickColor,\r\n ticks: 'inside',\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n zerolinecolor: zeroLineColor,\r\n separatethousands: true,\r\n },\r\n };\r\n };\r\n\r\n const data = getChartData();\r\n const layout = getLayout();\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n","import { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { UsBslNewIssueWeeklySpread } from './UsBslNewIssueWeeklySpread';\r\n\r\nexport function UsBslNewIssueWarfWidget() {\r\n return (\r\n \r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { dashboarNewIssuedWeeklySpreadsRequest } from '../../../actions';\r\nimport { hasWidgetsAccess } from '../../../utils/amr-pipeline.utils';\r\nimport { UsBslNewIssueDsWidget } from './UsBslNewIssueDsWidget';\r\nimport { UsBslNewIssueWarfWidget } from './UsBslNewIssueWarfWidget';\r\nimport { UsBslNewIssueWasWidget } from './UsBslNewIssueWasWidget';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\n\r\nexport function UsBslNewIssueWeeklySpreads() {\r\n const dispatch = useDispatch();\r\n\r\n const hasAccess = hasWidgetsAccess(\r\n SubscriptionFeature.UsBslNewIssueWasGraph,\r\n SubscriptionFeature.UsBslNewIssueWarfGraph,\r\n SubscriptionFeature.UsBslNewIssueDsGraph\r\n );\r\n\r\n useEffect(() => {\r\n hasAccess && dispatch(dashboarNewIssuedWeeklySpreadsRequest());\r\n }, [hasAccess, dispatch]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useCallback } from 'react';\r\nimport { PlotMouseEvent } from 'plotly.js';\r\nimport { useHistory } from 'react-router';\r\nimport moment from 'moment';\r\nimport { mainConfig, Plot } from '../../common/charts';\r\nimport { constants, routes } from '../../../constants';\r\nimport { chartUtils, getRatingForSearchString } from '../../../utils';\r\nimport {\r\n currency, dateFrom, dateTo, ratings, statuses\r\n} from '../../../utils/filtering/serializers/serializer.definitions';\r\nimport { queryStringSerializer } from '../../../utils/filtering/query-string-serializer';\r\nimport { dashboardChartBar } from '../../../constants/dashboard';\r\nimport { RatingWithGroup } from '../../../types/dashboard/RatingGroup';\r\nimport { QueryStringArgumentSerializer } from '../../../utils/filtering/serializers/QueryStringArgumentSerializer';\r\nimport { BwicStatus } from '../../../types/enums/BwicStatus';\r\n\r\nexport interface ChartDataYValues {\r\n name: RatingWithGroup | string;\r\n color: string;\r\n values: number[],\r\n text: string[]\r\n}\r\n\r\ninterface ChartData {\r\n x: string[];\r\n y: ChartDataYValues[];\r\n maxValue: number\r\n}\r\n\r\ninterface ChartBarBwicsVolumeProps {\r\n chartDiv?: string;\r\n selectedCurrencies: string[];\r\n chartData: ChartData;\r\n}\r\n\r\nexport function ChartBarScheduledBwics({ chartDiv, selectedCurrencies, chartData }: ChartBarBwicsVolumeProps) {\r\n const history = useHistory();\r\n const chartYRowStep = 5;\r\n const chartYroundTo = 10;\r\n const chartYLowLimitRoundTo = 0.01;\r\n const { yAxisDTick } = dashboardChartBar;\r\n const onBarClick = useCallback((e: PlotMouseEvent) => {\r\n const point = e && e.points && e.points[0];\r\n const date = moment(String(point.x), constants.dashboardDateFormat).format(constants.formatTimeStringWithoutTimeZone);\r\n if (point && point.data) {\r\n const searchParams = {\r\n statuses: [BwicStatus.scheduled, BwicStatus.bidding, BwicStatus.finished],\r\n currency: selectedCurrencies.length === 2 ? '' : selectedCurrencies[0],\r\n dateFrom: date,\r\n dateTo: date,\r\n ratings: getRatingForSearchString(point.data.name)\r\n };\r\n const serializers: QueryStringArgumentSerializer[] = [ratings(), statuses(), currency([]), dateFrom(), dateTo()];\r\n const queryString = queryStringSerializer.serialize(searchParams, serializers);\r\n history.push({\r\n pathname: routes.allBWICs,\r\n search: queryString\r\n });\r\n }\r\n }, [selectedCurrencies, history]);\r\n\r\n const round = (a: number, roundTo: number) => {\r\n return a % roundTo ? a + roundTo - a % roundTo : a\r\n };\r\n\r\n const isInt = (n: number) => {\r\n return n % 1 === 0;\r\n }\r\n\r\n const getYAxesRange = () => {\r\n const to = chartData.maxValue / 1000000;\r\n const steppedSlice = to > chartYroundTo ? round(to / chartYRowStep, chartYroundTo) : to / chartYRowStep;\r\n const cratTo = isInt(steppedSlice) ? steppedSlice * chartYRowStep : round(steppedSlice * chartYRowStep, chartYLowLimitRoundTo);\r\n const withSteppedSlise = cratTo ? cratTo : yAxisDTick;\r\n return [0, withSteppedSlise];\r\n };\r\n\r\n const getDTick = () => {\r\n const to = getYAxesRange()[1];\r\n return isInt(to / chartYRowStep) ? to / chartYRowStep: round(to / chartYRowStep, chartYLowLimitRoundTo);\r\n };\r\n\r\n const getCharts = () => chartData.y\r\n .map(data => ({\r\n x: chartData.x,\r\n y: data.values.map(el => el / 1000000),\r\n name: data.name,\r\n type: 'bar',\r\n textposition: 'none',\r\n marker: {\r\n color: data.color,\r\n },\r\n hoverinfo: 'text',\r\n text: data.text || []\r\n }));\r\n\r\n const charts = getCharts();\r\n const {\r\n label, tickColor, tickFont, zeroLineColor, margin, fontSize, xAxisRange, barGap, barGroupGap\r\n } = dashboardChartBar;\r\n\r\n const layout = {\r\n showlegend: false,\r\n barmode: \"group\",\r\n autosize: true,\r\n hovermode: 'closest',\r\n hoverlabel: {\r\n bordercolor: label.bordercolor,\r\n bgcolor: label.bgColor,\r\n font: {\r\n color: label.fontColor,\r\n family: label.fontFamily,\r\n size: label.size\r\n }\r\n },\r\n font: { size: fontSize },\r\n bargap: barGap,\r\n bargroupgap: barGroupGap,\r\n margin,\r\n xaxis: {\r\n range: xAxisRange,\r\n zeroline: false,\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n },\r\n yaxis: {\r\n showgrid: true,\r\n range: getYAxesRange(),\r\n mirror: 'ticks',\r\n dtick: getDTick(),\r\n showtickprefix: 'none',\r\n zerolinecolor: zeroLineColor,\r\n fixedrange: true,\r\n gridcolor: tickColor,\r\n ticks: 'inside',\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n },\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nChartBarScheduledBwics.defaultProps = {\r\n chartDiv: 'dashboard-bars-chart'\r\n};\r\n","import { useMemo } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport moment from 'moment';\r\nimport { Rating } from \"../../../types/enums/Rating\";\r\nimport { RatingColorLabel } from \"../RatingColorLabel\";\r\nimport { isRequesting } from '../../../utils';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport {\r\n RatingGroup,\r\n ratingGroupValues,\r\n RatingWithGroup, ratingWithGroupValues\r\n} from '../../../types/dashboard/RatingGroup';\r\nimport { constants } from '../../../constants';\r\nimport { ratingColors } from '../../../constants/dashboard/ratings';\r\nimport { ChartBarScheduledBwics } from './ChartBarScheduledBwics';\r\nimport { ChartDataYValues } from './ChartBarScheduledBwics';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { useNextBusinessDates } from '../../../effects/data-accessors/useNextBusinessDates';\r\nimport { useScheduledBwics } from '../hooks/useScheduledBwics';\r\n\r\nexport function BarScheduledBwicsWidget() {\r\n const filter = useSelector((s: AppState) => s.dashboard.filter);\r\n const { requestStateFetchNextBusinessDates, nextBusinessDates } = useNextBusinessDates(moment());\r\n const { bwics, requestStateFetchBwics } = useScheduledBwics();\r\n const filterActive = useSelector((s: AppState) => s.dashboard.filterActive);\r\n\r\n const { selectedRatings, selectedCurrencies } = filter;\r\n const getMoney = (number: number) => number / 1000000 > 1 ? (number / 1000000).toFixed(0) : number / 1000000;\r\n const getDataForBarChart = useMemo(() => {\r\n let maxValue = 0;\r\n const ratingGroupOtherValues = ratingGroupValues[RatingGroup.OTHER];\r\n const x = nextBusinessDates.map(date => moment.utc(date).startOf('day').format(constants.dashboardDateFormat));\r\n const y = ratingWithGroupValues.reduce((array: ChartDataYValues[], current: RatingWithGroup) => {\r\n if (selectedRatings.length && selectedRatings.indexOf(current) === -1) {\r\n return array;\r\n }\r\n array.push({\r\n name: current,\r\n color: ratingColors[String(current)],\r\n values: x.map(() => 0),\r\n text: []\r\n });\r\n return array;\r\n }, []);\r\n\r\n const filteredBwics = bwics.filter(bwic => {\r\n const date = moment.utc(bwic.bidsDueDateUtc).local();\r\n const dataIndex = x.indexOf(date.format(constants.dashboardDateFormat));\r\n return bwic.securities && bwic.securities.length && dataIndex > -1;\r\n });\r\n\r\n filteredBwics.forEach(bwic => {\r\n const { securities } = bwic;\r\n const date = moment.utc(bwic.bidsDueDateUtc).local();\r\n const dataIndex = x.indexOf(date.format(constants.dashboardDateFormat));\r\n for (let i = 0; i < securities.length; i++) {\r\n const security = securities[i];\r\n if (selectedCurrencies.length && selectedCurrencies.indexOf(security.currency) === -1) {\r\n continue;\r\n }\r\n for (let k = 0; k < y.length; k++) {\r\n const yItem = y[k];\r\n if (security.rating === yItem.name || (RatingGroup.OTHER === yItem.name && ratingGroupOtherValues.indexOf(security.rating) !== -1)) {\r\n if (yItem.values[dataIndex]) {\r\n yItem.values[dataIndex] = yItem.values[dataIndex] + security.size;\r\n } else {\r\n yItem.values[dataIndex] = security.size || 0;\r\n }\r\n } else if (!yItem.values[dataIndex]) {\r\n yItem.values[dataIndex] = 0;\r\n }\r\n if (maxValue < yItem.values[dataIndex]) {\r\n maxValue = yItem.values[dataIndex];\r\n }\r\n yItem.text[dataIndex] = (`${yItem.name === RatingGroup.OTHER ? 'Other' : yItem.name} ${getMoney(yItem.values[dataIndex])}MM`);\r\n }\r\n }\r\n });\r\n return { x, y, maxValue }\r\n }, [nextBusinessDates, bwics, selectedCurrencies, selectedRatings]);\r\n\r\n const renderMaximized = useMemo(() => (\r\n \r\n ), [getDataForBarChart, selectedCurrencies]);\r\n\r\n const title = \"Scheduled BWICs\";\r\n\r\n return (\r\n \r\n \r\n \r\n

{title}

\r\n
\r\n \r\n {renderMaximized}\r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n","import React from 'react';\r\nimport { Rating } from '../../types/enums/Rating';\r\nimport { ratingColors } from '../../constants/dashboard/ratings';\r\n\r\ninterface RatingColorLabelProps {\r\n ratings: (Rating | string)[]\r\n}\r\n\r\nexport function RatingColorLabel({ ratings }: RatingColorLabelProps) {\r\n return (\r\n
\r\n {ratings.map(rating => ratingColors[rating]\r\n ? (\r\n
\r\n {rating}\r\n
\r\n ) : null\r\n )}\r\n
\r\n )\r\n}\r\n","import { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { UsBslNewIssueWeeklySpread } from './UsBslNewIssueWeeklySpread';\r\n\r\nexport function UsBslNewIssueWasWidget() {\r\n return (\r\n \r\n );\r\n}\r\n","import { ColumnBuilder } from \"../../../bidding/common/table/columns/column-builder/ColumnBuilder\";\r\nimport { IColumnDefinition } from \"../../../bidding/common/table/types/ColumnDefinition\";\r\nimport { PipelineWidgetColumn } from \"../../../../types/dashboard/PipelineWidgetColumn\";\r\nimport { moneyUtils } from \"../../../../utils\";\r\nimport { TopChartCompany } from \"../../../../types/dashboard/TopChartCompany\";\r\nimport { TopFilterTypes } from \"../../../../types/dashboard/RedirectFilterTypes\";\r\nimport { ImSubscriptionActionBlocker } from \"../../../amrPipeline/subscription/ImSubscriptionActionBlocker\";\r\nimport { FilterLinkIcon } from \"../../../amrPipeline/common/FilterLinkIcon\";\r\nimport { OnHoverTooltip } from \"../../../common\";\r\n\r\nconst trusteesColumnsDefinitions: IColumnDefinition[] = [\r\n {\r\n columnKey: PipelineWidgetColumn.company,\r\n renderColumnHeaderContent: () => \"Trustees\",\r\n renderColumnContent: ({ company }) => (\r\n \r\n {company.legalName}\r\n \r\n ),\r\n headerClassName: \"data-list-cell-md-flexible\",\r\n bodyClassName: \"data-list-cell-md-flexible\",\r\n sortingField: PipelineWidgetColumn.company,\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.redirectToIm,\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: ({ company }, context) =>\r\n \r\n {blocked => (\r\n \r\n )}\r\n ,\r\n headerClassName: \"data-list-cell-xxxs\",\r\n bodyClassName: \"data-list-cell-xxxs\",\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.dealBalanceTotal,\r\n renderColumnHeaderContent: () => \"Size\",\r\n renderColumnContent: ({ dealBalanceTotal }, context) =>\r\n `${context.currency} ${moneyUtils.amountToRoundedMM(dealBalanceTotal, true)}`,\r\n headerClassName: \"data-list-cell-sm text-right\",\r\n bodyClassName: \"data-list-cell-sm text-right\",\r\n sortingField: PipelineWidgetColumn.dealBalanceTotal,\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.emptySize, // Empty column if there is no \"Size\" column\r\n renderColumnHeaderContent: () => \"\",\r\n renderColumnContent: () => \"\",\r\n headerClassName: \"data-list-cell-sm-01 text-right\",\r\n bodyClassName: \"data-list-cell-sm-01 text-right\",\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.numberOfTransactions,\r\n renderColumnHeaderContent: () => \"Trans\",\r\n renderColumnContent: ({ numberOfTransactions }) => numberOfTransactions,\r\n headerClassName: \"data-list-cell-xs text-right\",\r\n bodyClassName: \"data-list-cell-xs text-right\",\r\n sortingField: PipelineWidgetColumn.numberOfTransactions,\r\n },\r\n];\r\nexport const topTrusteesColumns = trusteesColumnsDefinitions.map((c) => {\r\n return new ColumnBuilder(c);\r\n});\r\n","import { useEffect, useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { AppState } from \"../../../types/state/AppState\";\r\nimport { isRequesting } from \"../../../utils\";\r\nimport { SORT, SORTING_TYPE, constants, issuanceMonitorWidget } from \"../../../constants\";\r\nimport { Table } from \"../../bidding/common/table\";\r\nimport { topTrusteesColumns } from \"./columns/TopTrusteesColumns\";\r\nimport { Pagination } from \"../tables/Pagination\";\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from \"../widget\";\r\nimport { DashboardSkeleton } from \"../DashboardSkeleton\";\r\nimport {\r\n dashboardFetchTopTrustees,\r\n dashboardExportTopTrustees,\r\n} from \"../../../actions/dashboard.actions\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { TopChartCompany } from \"../../../types/dashboard/TopChartCompany\";\r\nimport { PipelineWidgetColumn } from \"../../../types/dashboard/PipelineWidgetColumn\";\r\nimport { getAvailableYears, getSortingParamsForExport } from \"./top-list.utils\";\r\nimport { DropDownList, DropDownListItem } from \"../../controls/DropDownList\";\r\nimport { YearSelector } from \"../../controls/YearSelector\";\r\nimport { DashboardNoSelectedFilters } from \"../DashboardNoSelectedFilters\";\r\nimport { useSortedList } from \"../../../effects\";\r\nimport { ShowFor } from \"../../access\";\r\nimport ImExportButton from \"../../amrPipeline/common/ImExportButton\";\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { hasWidgetsAccess } from '../../../utils/amr-pipeline.utils';\r\nimport { CollateralTypesList } from \"../../../constants/dashboard/collateral-types\";\r\nimport { amrChartUtils } from \"../../../utils/amr-chart.utils\";\r\nimport { ChartRequiredFeature } from \"../../access/ChartRequiredFeature\";\r\nimport { TopIssuersCurrencyTypes, TopIssuersTransactionTypes } from './constants';\r\n\r\nconst availableYears: number[] = getAvailableYears(2013);\r\n\r\nconst getFilterValue = (value: string) =>\r\n value === constants.allListItem ? undefined : value;\r\n\r\ninterface Props {\r\n onListItemClick?: () => void;\r\n}\r\n\r\nexport function TopTrusteesWidget({ onListItemClick }: Props) {\r\n const [type, setType] = useState(constants.allListItem);\r\n const [currency, setCurrency] = useState(constants.allListItem);\r\n const [year, setYear] = useState(availableYears[0]);\r\n const [page, setPage] = useState(1);\r\n const [collateralType, setCollateralType] = useState(CollateralTypesList[0].value);\r\n\r\n const [sortBy, setSortBy] = useState(\"\");\r\n const [sortDirection, setSortDirection] = useState(SORT.DESC);\r\n\r\n const topTrustees = useSelector((s: AppState) => s.dashboard.topTrustees);\r\n const requestStateFetchTopTrustees = useSelector(\r\n (s: AppState) => s.dashboard.requestStateFetchTopTrustees\r\n );\r\n const requestStateExportTopTrustees = useSelector(\r\n (s: AppState) => s.dashboard.requestStateExportTopTrustees\r\n );\r\n\r\n const hasAccess = hasWidgetsAccess(SubscriptionFeature.Top10TrusteesTable);\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n if (!hasAccess) {\r\n return;\r\n }\r\n\r\n dispatch(\r\n dashboardFetchTopTrustees(\r\n getFilterValue(type),\r\n getFilterValue(currency),\r\n year,\r\n getFilterValue(collateralType)\r\n )\r\n );\r\n setPage(1);\r\n }, [dispatch, hasAccess, type, currency, year, collateralType])\r\n\r\n const columnContext = () => ({\r\n onListItemClick,\r\n currency,\r\n });\r\n\r\n const isSortByCompany = sortBy === PipelineWidgetColumn.company;\r\n const sortingType = isSortByCompany ? SORTING_TYPE.company : '';\r\n const [sortedDataItems] = useSortedList(\r\n topTrustees,\r\n sortBy,\r\n sortDirection,\r\n sortingType\r\n );\r\n\r\n const withSizeColumn = type !== constants.allListItem && currency !== constants.allListItem;\r\n\r\n const handleTypeChange = ({ value }: DropDownListItem) => setType(value.toString());\r\n const handleCurrencyChange = ({ value }: DropDownListItem) => setCurrency(value.toString());\r\n const handleYearChange = (yearValue?: number) => setYear(yearValue);\r\n\r\n const handleSortChange = (field: string, direction: string) => {\r\n setSortBy(field);\r\n setSortDirection(direction);\r\n };\r\n\r\n const handleExportChart = () =>\r\n dispatch(\r\n dashboardExportTopTrustees(\r\n getFilterValue(type),\r\n getFilterValue(currency),\r\n year,\r\n getFilterValue(collateralType),\r\n getSortingParamsForExport(sortBy, sortDirection),\r\n )\r\n );\r\n const onPageChanged = (selectedPage: number) => setPage(selectedPage);\r\n\r\n const tableColumns = withSizeColumn\r\n ? topTrusteesColumns.filter(c => c.column.columnKey !== PipelineWidgetColumn.emptySize)\r\n : topTrusteesColumns.filter(c => c.column.columnKey !== PipelineWidgetColumn.dealBalanceTotal);\r\n\r\n const renderTable = () =>\r\n sortedDataItems.length > issuanceMonitorWidget.itemsOnPage ? (\r\n \r\n {(items: TopChartCompany[]) => (\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n );\r\n\r\n const chartName = \"Top-10 Trustees\";\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}

\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n ({\r\n value,\r\n text,\r\n selected: value === type,\r\n })\r\n )}\r\n onChange={handleTypeChange}\r\n className=\"custom-drop-down-ghost\"\r\n prefix=\"Type: \"\r\n />\r\n
\r\n
\r\n ({\r\n value,\r\n text,\r\n selected: value === currency,\r\n }))}\r\n onChange={handleCurrencyChange}\r\n className=\"custom-drop-down-ghost\"\r\n defaultSortingEnabled={false}\r\n prefix=\"Ccy: \"\r\n />\r\n
\r\n
\r\n ({\r\n ...x,\r\n selected: collateralType === x.value,\r\n }))}\r\n defaultSortingEnabled={false}\r\n onChange={({ value }) => setCollateralType(value as string)}\r\n renderSelectedItemCallback={amrChartUtils.renderSelectedFilterOptionWithPrefix('Collat.')}\r\n className=\"custom-drop-down-ghost\"\r\n />\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {sortedDataItems.length ? renderTable() : }\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport moment, { Moment } from 'moment';\r\nimport { flatten, sortedUniqBy } from 'lodash';\r\nimport { Plot, mainConfig } from '../../common/charts';\r\nimport { chartUsBslEsgNewIssue } from '../../../constants';\r\nimport { chartUtils, numericUtils } from '../../../utils';\r\nimport { arrayUtils } from '../../../utils/array.utils';\r\nimport { IssueTransactionVolume } from '../../../types/dashboard/IssueTransactionVolume';\r\nimport { ChartGrouping, ChartUnits, ChartView } from '../../../types/dashboard/AmrChart';\r\nimport { UsBslEsgNewIssueChartFilter } from './UsBslEsgNewIssueFilter';\r\nimport { amrChartUtils } from '../../../utils/amr-chart.utils';\r\n\r\ninterface UsBslEsgNewIssueChartProps {\r\n esgLanguageDeals: IssueTransactionVolume[];\r\n usBslNewIssue: IssueTransactionVolume[];\r\n filter: UsBslEsgNewIssueChartFilter,\r\n divId?: string;\r\n}\r\n\r\ntype GroupedData = {\r\n [key: string]: number\r\n};\r\n\r\nconst MaxRangeYears = 12;\r\n\r\nconst GroupingTickFormat: Partial> = {\r\n [ChartGrouping.M]: {\r\n tickformat: '%b `%y',\r\n dtick: 'M1'\r\n },\r\n [ChartGrouping.Q]: {\r\n tickformat: '%qQ `%y',\r\n dtick: 'M3'\r\n },\r\n [ChartGrouping.Y]: {\r\n tickformat: '%Y',\r\n dtick: 'M12'\r\n },\r\n};\r\n\r\nconst MonthDateFormat = 'YYYY-MM';\r\nconst YearDateFormat = 'YYYY';\r\n\r\nexport function UsBslEsgNewIssueChart({ esgLanguageDeals, usBslNewIssue, filter, divId }: UsBslEsgNewIssueChartProps) {\r\n const {\r\n chartLayout,\r\n tickColor,\r\n tickFont,\r\n barColors,\r\n zeroLineColor,\r\n hoverlabel,\r\n } = chartUsBslEsgNewIssue;\r\n\r\n const formatByGrouping = (date: Moment) => {\r\n switch (filter.grouping) {\r\n case ChartGrouping.Y:\r\n return date.format(YearDateFormat);\r\n case ChartGrouping.Q:\r\n // Group by first month of each quarter\r\n return `${date.year()}-${date.quarter() * 3 - 2}`;\r\n default:\r\n return date.format(MonthDateFormat);\r\n }\r\n };\r\n\r\n const getDimension = (row: IssueTransactionVolume) => {\r\n return moment.utc([row.year, row.month - 1]);\r\n };\r\n\r\n const getMetric = (row: IssueTransactionVolume) => {\r\n switch (filter.units) {\r\n case ChartUnits.Count:\r\n return row.numberOfTransactions;\r\n default:\r\n return row.dealBalanceTotal;\r\n }\r\n };\r\n\r\n const getRatioTrace = (uniqDimensions: string[], groupedEsgLanguageDeals: GroupedData, groupedUsBslNewIssue: GroupedData) => {\r\n const values = uniqDimensions.map(dimension => {\r\n const esgLanguageBalance = groupedEsgLanguageDeals[dimension] || 0;\r\n const usBslNewIssueBalance = groupedUsBslNewIssue[dimension] || 0;\r\n\r\n return esgLanguageBalance && usBslNewIssueBalance\r\n ? numericUtils.round((esgLanguageBalance / usBslNewIssueBalance) * 100)\r\n : 0;\r\n });\r\n\r\n return {\r\n x: uniqDimensions,\r\n y: values\r\n };\r\n };\r\n\r\n const groupData = (data: IssueTransactionVolume[]): GroupedData => {\r\n const map = arrayUtils.groupBy(\r\n data,\r\n (row: IssueTransactionVolume) => `${formatByGrouping(getDimension(row))}`\r\n );\r\n\r\n return Array.from(map.entries())\r\n .reduce((acc: GroupedData, [dimension, elements]) => {\r\n const metric = arrayUtils.sum(elements, (value: IssueTransactionVolume) => getMetric(value));\r\n\r\n return {\r\n ...acc,\r\n [dimension]: metric,\r\n };\r\n }, {});\r\n };\r\n\r\n const getTraceFromGroupedData = (data: GroupedData) => {\r\n return Object.entries(data)\r\n .reduce((acc: any, [dimension, metric]) => ({\r\n x: [...acc.x, dimension],\r\n y: [...acc.y, metric],\r\n }), { x: [], y: [] });\r\n };\r\n\r\n const getChartRange = (min: Moment, max: Moment) => {\r\n let rangeMin = min.clone();\r\n let rangeMax = max.clone();\r\n\r\n switch (filter.grouping) {\r\n case ChartGrouping.M:\r\n rangeMin = max.clone()\r\n .subtract(11, 'months')\r\n .subtract(15, 'days');\r\n rangeMax.add(15, 'days');\r\n break;\r\n case ChartGrouping.Q:\r\n rangeMin = max.clone()\r\n .subtract(11, 'quarters')\r\n .subtract(45, 'days');\r\n rangeMax.startOf('quarter')\r\n .add(45, 'days');\r\n break;\r\n default: {\r\n rangeMin = max.clone()\r\n .subtract(MaxRangeYears - 1, 'years')\r\n .startOf('year')\r\n .subtract(6, 'months');\r\n\r\n if (rangeMin.isBefore(min)) {\r\n rangeMin = min.clone()\r\n .startOf('year')\r\n .subtract(6, 'months');\r\n }\r\n\r\n rangeMax.startOf('year')\r\n .add(6, 'months');\r\n }\r\n }\r\n\r\n return [\r\n rangeMin.format(),\r\n rangeMax.format(),\r\n ];\r\n };\r\n\r\n const groupAll = (...args: IssueTransactionVolume[][]): [IssueTransactionVolume[], ...GroupedData[]] => {\r\n const grouped = args.map(groupData);\r\n\r\n const dimensions = flatten(args)\r\n .sort((a, b) => a.year - b.year\r\n ? a.year - b.year\r\n : a.month - b.month);\r\n\r\n return [\r\n sortedUniqBy(dimensions, x => `${x.year}-${x.month}`),\r\n ...grouped,\r\n ];\r\n };\r\n\r\n const getChartData = (dataByUniqueDimensions: IssueTransactionVolume[], ...grouped: GroupedData[]) => {\r\n const [\r\n groupedEsgLanguageDeals,\r\n groupedUsBslNewIssue,\r\n ] = grouped;\r\n\r\n const formattedDimensions = dataByUniqueDimensions.map(x => formatByGrouping(getDimension(x)));\r\n\r\n const ratioTrace = getRatioTrace(\r\n formattedDimensions,\r\n groupedEsgLanguageDeals,\r\n groupedUsBslNewIssue,\r\n );\r\n\r\n const esgLanguageDealsTrace = getTraceFromGroupedData(groupedEsgLanguageDeals);\r\n const usBslNewIssueTrace = getTraceFromGroupedData(groupedUsBslNewIssue);\r\n\r\n return [\r\n {\r\n ...esgLanguageDealsTrace,\r\n name: 'Deals with ESG Language',\r\n type: 'bar',\r\n hovertemplate: `Deals with ESG Language: %{y}`,\r\n marker: {\r\n color: barColors[0],\r\n },\r\n },\r\n {\r\n ...usBslNewIssueTrace,\r\n name: 'US BSL New Issue',\r\n type: 'bar',\r\n hovertemplate: `US BSL New Issue: %{y}`,\r\n marker: {\r\n color: barColors[1],\r\n },\r\n },\r\n {\r\n ...ratioTrace,\r\n type: 'scatter',\r\n mode: 'lines',\r\n marker: {\r\n color: barColors[2],\r\n },\r\n yaxis: 'y2',\r\n hovertemplate: `% of Issuance with ESG: %{y}`,\r\n }\r\n ];\r\n };\r\n\r\n const getLayout = (dataByUniqueDimensions: IssueTransactionVolume[]) => {\r\n const { min, max } = amrChartUtils.getEdgeDimensionValues(dataByUniqueDimensions, getDimension);\r\n const chartRange = getChartRange(min, max);\r\n const sliderRange = [min.format(), max.format()];\r\n const { dtick, tickformat } = GroupingTickFormat[filter.grouping];\r\n\r\n const tickprefix = filter.units === ChartUnits.Volume ? '$' : '';\r\n\r\n return {\r\n ...chartLayout,\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: 'x unified',\r\n hoverlabel,\r\n barmode: ChartView.Grouped,\r\n xaxis: {\r\n tickcolor: tickColor,\r\n type: 'date',\r\n tickfont: tickFont,\r\n fixedrange: true,\r\n dtick,\r\n tickformat,\r\n range: chartRange,\r\n rangeslider: {\r\n range: sliderRange,\r\n bgcolor: 'rgba(79, 123, 156, 0.2)',\r\n },\r\n },\r\n yaxis: {\r\n showgrid: true,\r\n showtickprefix: 'all',\r\n fixedrange: true,\r\n tickprefix,\r\n gridcolor: tickColor,\r\n ticks: 'inside',\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n zerolinecolor: zeroLineColor,\r\n },\r\n yaxis2: {\r\n gridcolor: tickColor,\r\n tickfont: tickFont,\r\n zeroline: false,\r\n fixedrange: true,\r\n autorange: false,\r\n automargin: true,\r\n showgrid: false,\r\n showline: false,\r\n autotick: true,\r\n ticks: 'none',\r\n ticklabelposition: 'outside',\r\n side: 'right',\r\n range: [0, 100],\r\n overlaying: 'y',\r\n ticksuffix: '%',\r\n },\r\n }\r\n };\r\n\r\n const [\r\n dimensions,\r\n groupedEsgLanguageDeals,\r\n groupedUsBslNewIssue,\r\n ] = groupAll(esgLanguageDeals, usBslNewIssue);\r\n\r\n const data = getChartData(dimensions, groupedEsgLanguageDeals, groupedUsBslNewIssue);\r\n const layout = getLayout(dimensions);\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
Deals with ESG Language
\r\n
US BSL New Issue
\r\n
% of Issuance with ESG
\r\n
\r\n \r\n );\r\n}\r\n\r\nUsBslEsgNewIssueChart.defaultProps = {\r\n divId: 'us-bsl-esg-new-issue-chart'\r\n};\r\n","import React from 'react';\r\nimport { ChartGrouping, ChartUnits } from '../../../types/dashboard/AmrChart';\r\nimport { FilterPanel, FilterSection, FilterSwitch } from '../../filters';\r\n\r\nexport interface UsBslEsgNewIssueChartFilter {\r\n grouping: ChartGrouping;\r\n units: ChartUnits;\r\n}\r\n\r\ninterface IssueTransactionVolumeFilterProps extends UsBslEsgNewIssueChartFilter {\r\n onChange: (value: UsBslEsgNewIssueChartFilter) => void;\r\n}\r\n\r\nexport function UsBslEsgNewIssueFilter({\r\n onChange,\r\n ...values\r\n}: IssueTransactionVolumeFilterProps) {\r\n const handleValueChange = (prop: string) => (value: any) => {\r\n onChange({\r\n ...values,\r\n [prop]: value,\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n {[ChartUnits.Volume, ChartUnits.Count].map(unit =>\r\n handleValueChange('units')(unit)}\r\n />\r\n )}\r\n
\r\n
\r\n \r\n
\r\n {[\r\n ChartGrouping.M,\r\n ChartGrouping.Q,\r\n ChartGrouping.Y,\r\n ].map(grouping =>\r\n handleValueChange('grouping')(grouping)}\r\n />)}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { UsBslEsgNewIssueChart } from './UsBslEsgNewIssueChart';\r\nimport { UsBslEsgNewIssueFilter, UsBslEsgNewIssueChartFilter } from './UsBslEsgNewIssueFilter';\r\nimport { isRequesting } from '../../../utils';\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from '../widget';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { dashboardUsBslEsgNewIssueRequest } from '../../../actions';\r\nimport { ChartGrouping, ChartUnits } from '../../../types/dashboard/AmrChart';\r\nimport { DashboardNoSelectedFilters } from \"../DashboardNoSelectedFilters\";\r\nimport { ShowFor } from '../../access';\r\nimport { hasWidgetsAccess } from '../../../utils/amr-pipeline.utils';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\n\r\nexport function UsBslEsgNewIssueWidget() {\r\n const usBslEsgNewIssue = useSelector((state: AppState) => state.dashboard.usBslEsgNewIssue);\r\n const requestStateUsBslEsgNewIssue = useSelector((state: AppState) => state.dashboard.requestStateUsBslEsgNewIssue);\r\n\r\n const dispatch = useDispatch();\r\n const hasAccess = hasWidgetsAccess(SubscriptionFeature.EsgAsPercentOfBslNewIssueGraph);\r\n\r\n const [filterState, setFilterState] = useState({\r\n grouping: ChartGrouping.M,\r\n units: ChartUnits.Volume,\r\n });\r\n\r\n const isDataLoaded = !!(usBslEsgNewIssue.esgLanguageDeals?.length || usBslEsgNewIssue.usBslNewIssue?.length);\r\n\r\n useEffect(() => {\r\n if (hasAccess) {\r\n dispatch(dashboardUsBslEsgNewIssueRequest(filterState.grouping));\r\n }\r\n }, [filterState, dispatch, hasAccess]);\r\n\r\n const chart = useMemo(() =>\r\n ,\r\n [usBslEsgNewIssue, filterState]);\r\n\r\n const chartName = \"ESG as % of BSL New Issue\";\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}

\r\n \r\n \r\n \r\n
\r\n \r\n {isDataLoaded ? chart : }\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React, { useContext } from 'react';\r\nimport { ClampLines } from '../common/Clamp';\r\nimport { DashboardWidgetContext } from './widget';\r\nimport IconSVG from \"../../styles/svg-icons\";\r\n\r\ninterface WidgetDescriptionProps {\r\n text: string;\r\n id: string;\r\n lines: number;\r\n}\r\n\r\nexport function WidgetDescription({ text, id, lines }: WidgetDescriptionProps) {\r\n const { setDescriptionExpanded, descriptionExpanded } = useContext(DashboardWidgetContext);\r\n return (\r\n
\r\n Show description}\r\n lessText={<>Hide description}\r\n innerElement=\"div\"\r\n onClick={() => setDescriptionExpanded(!descriptionExpanded)}\r\n />\r\n
\r\n )\r\n}\r\n","import React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { SecuritiesSearchInput } from '../../filters';\r\nimport { dashboardOnSelectedSecurity, dashboardExportBwiStatistic } from '../../../actions';\r\nimport { dashboardChartBox, roles } from '../../../constants';\r\nimport { ChartBox } from '../../common/charts';\r\nimport { RequestState } from '../../../constants/request-state';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { DashboardNoData } from '../DashboardNoData'\r\nimport { WidgetDescription } from '../WidgetDescription';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport IconSVG from '../../../styles/svg-icons';\r\nimport { ShowFor } from '../../access';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\nimport { user } from '../../../user';\r\n\r\nexport function BoxPxTalkAndColorWidget() {\r\n const dispatch = useDispatch();\r\n\r\n const selectedSecurityHistory = useSelector(s => s.dashboard.selectedSecurityHistory) || [];\r\n const requestStateFetchSecurityHistory = useSelector(s => s.dashboard.requestStateFetchSecurityHistory);\r\n const searchTermItem = useSelector(s => s.dashboard.searchTermItem);\r\n const lookupCache = useSelector((s) => s.searchSecurities.lookupCache);\r\n const searchTerm = useSelector((s) => s.searchSecurities.searchTerm);\r\n\r\n const chartHasData = () => {\r\n return selectedSecurityHistory.some(s => (s.color || (s.pxTalks && s.pxTalks.length)));\r\n };\r\n\r\n const chartVisible = () => {\r\n return selectedSecurityHistory.length && requestStateFetchSecurityHistory === RequestState.success && searchTermItem && chartHasData();\r\n };\r\n\r\n const renderContent = () => {\r\n if (chartVisible()) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n }\r\n if ((searchTermItem && !lookupCache.length) || (searchTermItem && searchTermItem.length < 8)) {\r\n return (\r\n \r\n );\r\n }\r\n if (!searchTermItem && !searchTerm) {\r\n return (\r\n Start your search
by identifiers.}\r\n />\r\n );\r\n }\r\n if (!chartHasData() && requestStateFetchSecurityHistory === RequestState.success && searchTermItem) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n const chartName = \"Security Lookup: Price History (Px Talk & Color)\";\r\n\r\n return (\r\n \r\n \r\n \r\n

{chartName}

\r\n \r\n {chartVisible() ? (\r\n
\r\n dispatch(dashboardExportBwiStatistic())}\r\n >\r\n \r\n \r\n
\r\n ) : null}\r\n
\r\n
\r\n \r\n dispatch(dashboardOnSelectedSecurity())}\r\n className=\"securities-search\"\r\n maxLength=\"32\"\r\n requiredFeature={SubscriptionFeature.getSecurityBwicStatistics}\r\n />\r\n {renderContent()}\r\n \r\n \r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport moment from 'moment';\r\nimport { Plot, mainConfig } from '../../common/charts';\r\nimport { constants, chartBarDnt } from '../../../constants';\r\nimport { numericUtils } from '../../../utils/numeric.utils';\r\nimport { chartUtils, formatUtils } from '../../../utils';\r\nimport { RatingWithGroup, ratingWithGroupValues } from '../../../types/dashboard/RatingGroup';\r\nimport { DntRate, DntRateData } from '../../../types/dashboard/DntRate';\r\n\r\ninterface BarDntChartProps {\r\n data: DntRate[];\r\n divId?: string;\r\n selectedCurrencies: string[];\r\n}\r\n\r\ninterface DataToDisplay {\r\n percent: number;\r\n startDate: Date;\r\n endDate: Date;\r\n USD: number | null;\r\n EUR: number | null;\r\n}\r\n\r\nexport function BarDntChart({ data, divId, selectedCurrencies }: BarDntChartProps) {\r\n const {\r\n chartLayout, tickColor, tickFont, barColors, xAxisRange, zeroLineColor, dTick, hoverlabel,\r\n yAxisLastLineMargin, defaultYRangeMaxValue, defaultDTick\r\n } = chartBarDnt;\r\n let maxValue = 0;\r\n\r\n const getTotalAmount = (dataForAmount: DntRateData[]) => dataForAmount.reduce((result, current) => {\r\n result += current.amount;\r\n return result;\r\n }, 0);\r\n\r\n const getPercentValue = (dntRates: DntRateData[], rating: RatingWithGroup) => {\r\n const ratingData = dntRates.filter(rate => rate.rating === rating);\r\n const ratingDataWithDnt = ratingData.filter(d => d.dnt);\r\n const amount = getTotalAmount(ratingData);\r\n const amountByDnt = getTotalAmount(ratingDataWithDnt);\r\n const dividedValue = numericUtils.divideSafe(amountByDnt, amount);\r\n return dividedValue ? dividedValue * 100 : 0;\r\n };\r\n\r\n const getChartData = () => {\r\n const x = ratingWithGroupValues;\r\n const y = data.map((rates, index) => {\r\n return {\r\n name: index,\r\n color: barColors[index],\r\n values: x.map((rating) => {\r\n const percent = getPercentValue(rates.dntRates, rating);\r\n if (percent > maxValue) {\r\n maxValue = percent;\r\n }\r\n return percent;\r\n }),\r\n text: x.map((rating) => {\r\n const ratingDataUSD = rates.dntRates\r\n .filter(d => (d.currency === 'USD' && d.dnt && d.rating === rating));\r\n const ratingDataEUR = rates.dntRates\r\n .filter(d => (d.currency === 'EUR' && d.dnt && d.rating === rating));\r\n const percent = getPercentValue(rates.dntRates, rating);\r\n const amountUSD = selectedCurrencies.length\r\n ? (selectedCurrencies.some(currency => currency === 'USD') ? getTotalAmount(ratingDataUSD) : null)\r\n : getTotalAmount(ratingDataUSD);\r\n const amountEUR = selectedCurrencies.length\r\n ? (selectedCurrencies.some(currency => currency === 'EUR') ? getTotalAmount(ratingDataEUR) : null)\r\n : getTotalAmount(ratingDataEUR);\r\n return getBarText({\r\n percent,\r\n startDate: rates.startDate,\r\n endDate: rates.endDate,\r\n USD: amountUSD,\r\n EUR: amountEUR\r\n });\r\n }),\r\n };\r\n });\r\n\r\n return y.map(data => ({\r\n x,\r\n y: data.values,\r\n name: data.name,\r\n type: \"bar\",\r\n marker: {\r\n color: data.color,\r\n },\r\n hoverinfo: 'text',\r\n text: data.text || [],\r\n textposition: 'none',\r\n }));\r\n };\r\n\r\n const getBarText = (data: DataToDisplay) =>\r\n `DNT %: ${formatUtils.formatDecimal(data.percent, 2)}
` +\r\n `Last day of the range: ${moment.utc(data.endDate).format(constants.dashboardDateFormat)}
` +\r\n `Volume: ${data.USD == null ? '' : chartUtils.getMoneyString(data.USD, '$')}` +\r\n `${data.USD == null || data.EUR == null ? '' : ' / '}` +\r\n `${data.EUR == null ? '' : chartUtils.getMoneyString(data.EUR, '€')}`;\r\n\r\n const chartData = getChartData();\r\n\r\n const getYRange = () => {\r\n const max = chartUtils.roundToNumber(maxValue, dTick) || defaultYRangeMaxValue;\r\n const maxRange = max + numericUtils.getPercentage(max, yAxisLastLineMargin);\r\n return [0, maxRange]\r\n };\r\n\r\n const layout = {\r\n ...chartLayout,\r\n showlegend: false,\r\n barmode: \"group\",\r\n autosize: true,\r\n hovermode: 'closest',\r\n hoverlabel,\r\n xaxis: {\r\n range: xAxisRange,\r\n tickcolor: tickColor,\r\n tickfont: tickFont\r\n },\r\n yaxis: {\r\n showgrid: true,\r\n range: getYRange(),\r\n mirror: 'ticks',\r\n showtickprefix: 'none',\r\n fixedrange: true,\r\n gridcolor: tickColor,\r\n ticks: 'inside',\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n zerolinecolor: zeroLineColor,\r\n dtick: maxValue ? ( maxValue < dTick ? dTick / defaultDTick : dTick) : defaultDTick\r\n },\r\n };\r\n\r\n const renderPoints = () => {\r\n return data.map((dntRates, index) => (\r\n \r\n \r\n {moment(dntRates.endDate, 'YYYY-MM-DD').format(constants.dashboardDateFormat)}\r\n \r\n ));\r\n };\r\n\r\n const renderChart = () => (\r\n \r\n );\r\n\r\n return (\r\n <>\r\n {renderChart()}\r\n
{renderPoints()}
\r\n \r\n );\r\n}\r\n\r\nBarDntChart.defaultProps = {\r\n divId: 'bar-dnt-chart'\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport { BarDntChart } from './BarDntChart';\r\nimport { isRequesting } from '../../../utils';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { useAppSelector } from '../../../effects/useAppSelector';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\nimport { ShowFor } from '../../access';\r\n\r\nconst chartName = \"DNT %: Demand Barometer\";\r\n\r\nexport function BarDntWidget() {\r\n const dntRates = useAppSelector(s => s.dashboard.dntRates);\r\n const requestStateFetchDntRates = useAppSelector(s => s.dashboard.requestStateFetchDntRates);\r\n const filter = useAppSelector(s => s.dashboard.filter);\r\n const filterActive = useAppSelector(s => s.dashboard.filterActive);\r\n\r\n const { selectedCurrencies, selectedRatings } = filter;\r\n\r\n const filteredDntRates = useMemo(() => [...dntRates]\r\n .sort((a, b) => new Date(a.startDate).getTime() - new Date(b.startDate).getTime())\r\n .map(rates => ({\r\n ...rates,\r\n dntRates: rates.dntRates.filter(rate => {\r\n if (selectedRatings.length && !selectedRatings.some(rating => rate.rating === rating)) {\r\n return false;\r\n }\r\n return !(selectedCurrencies.length && !selectedCurrencies.some(currency => rate.currency === currency));\r\n })\r\n })), [dntRates, selectedRatings, selectedCurrencies]);\r\n const chart = useMemo(() => ,\r\n [filteredDntRates, selectedCurrencies]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}rolling 30-day avg

\r\n
\r\n \r\n DNT (did-not-trade) % represents the percentage of listed securities that did not trade as\r\n indicated in post-BWIC color.\r\n \r\n }\r\n >\r\n {chart}\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { TabList, TabItem } from '../../bidding/common/tab-list/index';\r\nimport { DashboardSellBuyTabs } from '../../../types/dashboard/SellBuyTabs';\r\n\r\ninterface TabsProps {\r\n activeTab: DashboardSellBuyTabs;\r\n onTabClick: (tab: DashboardSellBuyTabs) => void;\r\n}\r\n\r\nexport function Tabs({ activeTab, onTabClick }: TabsProps) {\r\n return (\r\n \r\n onTabClick(DashboardSellBuyTabs.Buy)}\r\n active={activeTab === DashboardSellBuyTabs.Buy}\r\n title=\"Buy\"\r\n />\r\n onTabClick(DashboardSellBuyTabs.Sell)}\r\n active={activeTab === DashboardSellBuyTabs.Sell}\r\n title=\"Sell\"\r\n />\r\n \r\n )\r\n}\r\n","import React from 'react';\r\nimport { ColumnBuilder } from '../../../bidding/common/table/columns/column-builder/ColumnBuilder';\r\nimport { IColumnDefinition } from '../../../bidding/common/table/types/ColumnDefinition';\r\nimport { BwicStatusLabel, OnHoverTooltip } from '../../../common';\r\nimport { DashboardMyBwic } from '../../../../types/dashboard/MyBwic';\r\nimport dateTimeUtils from '../../../../utils/dateTime.utils';\r\nimport { SameDayBwicIcon } from '../../../common/SameDayBwicIcon';\r\nimport { BwicViewLink } from '../../../common/BwicViewLink';\r\n\r\nconst sellColumnsDefinitions: IColumnDefinition[] = [\r\n {\r\n columnKey: 'bwic-status',\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: entity =>\r\n ,\r\n headerClassName: 'data-list-cell-lg',\r\n bodyClassName: 'data-list-cell-lg flex-none',\r\n },\r\n {\r\n columnKey: 'same-day',\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: entity =>\r\n <>\r\n {entity.isSameDayBwic && }\r\n ,\r\n className: 'data-list-cell-icon'\r\n }, {\r\n columnKey: 'bwic-name',\r\n renderColumnHeaderContent: () => 'BWIC Name',\r\n renderColumnContent: entity => {\r\n const dateTime = dateTimeUtils.utcToLocalString(entity.bidsDueDateUtc);\r\n return (\r\n \r\n {`${dateTime} ${entity.bwicName}`}\r\n \r\n )\r\n },\r\n className: 'data-list-cell-xs-flexible',\r\n sortingField: 'bwicName'\r\n }, {\r\n columnKey: 'bwic-view',\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: entity =>\r\n ,\r\n headerClassName: 'data-list-cell-xs',\r\n bodyClassName: 'data-list-cell-sm-01 flex-item-right',\r\n }\r\n];\r\n\r\nexport const sellColumns = sellColumnsDefinitions.map(c => new ColumnBuilder(c));\r\n","import { SetStateAction, useState } from 'react';\r\nimport { useHistory } from 'react-router';\r\nimport { ScheduledBwic } from '../../../types/dashboard/ScheduledBwic';\r\nimport { Pagination } from '../tables/Pagination';\r\nimport { sellColumns } from '../tables/columns/SellColumns';\r\nimport { useSortedList } from '../../../effects';\r\nimport { isRequesting, isRequestNone } from '../../../utils';\r\nimport { Table } from '../../bidding/common/table';\r\nimport { roles, routes, SORT } from '../../../constants';\r\nimport { isRequestSuccess } from '../../../utils';\r\nimport { ShowFor } from '../../access/ShowFor';\r\nimport { FeatureButton } from '../../access/FeatureButton';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { DirectBiddingDisclaimerActionBlocker } from '../../direct-bidding-agreement-disclaimer/DirectBiddingDisclaimerActionBlocker';\r\nimport { DashboardNoData } from '../DashboardNoData';\r\nimport { RequestState } from '../../../constants/request-state';\r\nimport { RoleActionBlocker } from '../../access/RoleActionBlocker';\r\n\r\ninterface Props {\r\n myBwics: ScheduledBwic[];\r\n hideCreateNewBwic?: boolean;\r\n requestStateFetchBwics: RequestState;\r\n}\r\n\r\nexport function MyBwics({ myBwics, requestStateFetchBwics, hideCreateNewBwic = false }: Props) {\r\n const itemsOnPage = 7;\r\n const history = useHistory();\r\n\r\n const [sortBy, setSortBy] = useState(null);\r\n const [sortDirection, setSortDirection] = useState(SORT.ASC);\r\n const [sortedDataItems] = useSortedList(myBwics, sortBy, sortDirection);\r\n\r\n const setSortParams = (field: SetStateAction, direction: string) => {\r\n setSortBy(field);\r\n setSortDirection(direction);\r\n };\r\n\r\n const handleNewBwicClick = () => history.push(routes.newBWIC);\r\n\r\n return (\r\n \r\n {isRequestSuccess(requestStateFetchBwics) && !myBwics.length ? (\r\n
\r\n \r\n \r\n {!hideCreateNewBwic && (\r\n \r\n \r\n \r\n
\r\n \r\n Create new bwic\r\n \r\n
\r\n
\r\n
\r\n
\r\n )}\r\n \r\n
\r\n
\r\n ) : (\r\n \r\n {(items: any) => (\r\n \r\n )}\r\n \r\n )}\r\n
\r\n )\r\n}\r\n","import React from 'react';\r\nimport { ColumnBuilder } from '../../../bidding/common/table/columns/column-builder/ColumnBuilder';\r\nimport { IColumnDefinition } from '../../../bidding/common/table/types/ColumnDefinition';\r\nimport { SellerBuysideSearchResult } from '../../../../types/bid-as-dealer/SellerBuysideSearchResult';\r\nimport { moneyUtils } from '../../../../utils';\r\nimport { routes, SORTING_TYPE } from '../../../../constants';\r\nimport { ParsedBwicLabel } from '../../../common/ParsedBwicLabel';\r\nimport { Link } from '../../../controls/Link';\r\n\r\ninterface BuyColumns extends SellerBuysideSearchResult {\r\n isinCusip: string;\r\n ticker: string;\r\n}\r\n\r\nconst buyColumnsDefinitions: IColumnDefinition[] = [{\r\n columnKey: 'parsed',\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: entity => ,\r\n className: 'data-list-parsed hidden'\r\n}, {\r\n columnKey: 'isin-cusip',\r\n renderColumnHeaderContent: () => 'Identifier',\r\n renderColumnContent: entity => entity.position.isinCusip,\r\n className: 'data-list-isin hidden',\r\n sortingField: 'isinCusip',\r\n sortingType: SORTING_TYPE.string\r\n}, {\r\n columnKey: 'ticker',\r\n renderColumnHeaderContent: () => 'Ticker',\r\n renderColumnContent: entity => entity.position.ticker,\r\n className: 'data-list-ticker',\r\n sortingField: 'ticker',\r\n sortingType: SORTING_TYPE.string\r\n}, {\r\n columnKey: 'rating',\r\n renderColumnHeaderContent: () => 'Rtg',\r\n renderColumnContent: entity => entity.position.rating,\r\n className: 'data-list-rating'\r\n}, {\r\n columnKey: 'size',\r\n renderColumnHeaderContent: () => 'Size, MM',\r\n renderColumnContent: entity => moneyUtils.amountToMM(entity.position.size),\r\n className: 'data-list-size padding-r-0 text-right'\r\n}, {\r\n columnKey: 'view',\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: () => View,\r\n headerClassName: '',\r\n bodyClassName: 'flex-item-right',\r\n}];\r\n\r\nexport const buyColumns = buyColumnsDefinitions.map(c => new ColumnBuilder(c));\r\n","import React, { SetStateAction, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { Pagination } from '../tables/Pagination';\r\nimport { SORT } from '../../../constants';\r\nimport { useSortedList } from '../../../effects';\r\nimport { isRequesting, isRequestNone } from '../../../utils';\r\nimport { Table } from '../../bidding/common/table';\r\nimport { buyColumns } from '../tables/columns/BuyColumns';\r\nimport { DashboardNoData } from '../DashboardNoData';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\n\r\nexport function BidAsDealerRequests() {\r\n const itemsOnPage = 7;\r\n\r\n const bidAsDealerRequests = useSelector((s: AppState) => s.dashboard.bidAsDealerRequests);\r\n const requestStateBidAsDealerRequests = useSelector((s: AppState) => s.dashboard.requestStateBidAsDealerRequests);\r\n\r\n const [sortBy, setSortBy] = useState(null);\r\n const [sortDirection, setSortDirection] = useState(SORT.ASC);\r\n\r\n const [sortedDataItems] = useSortedList(bidAsDealerRequests, sortBy, sortDirection);\r\n\r\n const setSortParams = (field: SetStateAction, direction: string) => {\r\n setSortBy(field);\r\n setSortDirection(direction);\r\n };\r\n\r\n return (\r\n \r\n {bidAsDealerRequests.length ? (\r\n \r\n {(items: any) => (\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useAllToAllAgreementBlocked } from '../../../effects/useAllToAllAgreementBlocked';\r\nimport { ScheduledBwic } from '../../../types/dashboard/ScheduledBwic';\r\nimport { DashboardSellBuyTabs } from '../../../types/dashboard/SellBuyTabs';\r\nimport { Tabs } from './Tabs';\r\nimport { MyBwics } from './MyBwics';\r\nimport { BidAsDealerRequests } from './BidAsDealerRequests';\r\nimport { user } from '../../../user';\r\nimport { roles } from '../../../constants';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { RequestState } from '../../../constants/request-state';\r\nimport { DashboardWidgetLoadContentError } from '../widget/DashboardWidgetLoadContentError';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { RequiredFeature } from '../../access/RequiredFeature';\r\nimport { useMyBidRequests } from './useMyBidRequests';\r\nimport { useScheduledBwics } from '../hooks/useScheduledBwics';\r\n\r\nexport function MyScheduledBwicsWidget() {\r\n const [activeTab, setActiveTab] = useState(DashboardSellBuyTabs.Sell);\r\n const requestStateBidAsDealerRequests = useSelector((state: AppState) => state.dashboard.requestStateBidAsDealerRequests);\r\n const { myBwics, requestStateFetchBwics } = useScheduledBwics();\r\n\r\n const blocked = useAllToAllAgreementBlocked();\r\n\r\n const isBd = user.hasRoles(...roles.bd());\r\n const isBdTrader = user.hasRoles(roles.BrokerDealerTrader);\r\n const isSeller = user.hasRoles(...roles.seller());\r\n const currentUser = user.current();\r\n\r\n useMyBidRequests(!((isBdTrader && !blocked) || isSeller));\r\n\r\n const renderBidAsDealerRequests = () =>\r\n requestStateBidAsDealerRequests === RequestState.failure\r\n ? \r\n : (\r\n \r\n \r\n \r\n );\r\n\r\n const renderMyBwics = (myBwics: ScheduledBwic[], hideCreateNewBwic: boolean) =>\r\n requestStateFetchBwics === RequestState.failure\r\n ? \r\n : ;\r\n\r\n const renderContent = () => {\r\n if (isSeller) {\r\n return (\r\n <>\r\n \r\n {activeTab === DashboardSellBuyTabs.Buy ? renderBidAsDealerRequests() : renderMyBwics(myBwics, false)}\r\n \r\n )\r\n }\r\n if (isBd && !blocked && !currentUser?.isClearingBank) {\r\n return (\r\n <>\r\n \r\n {renderMyBwics(activeTab === DashboardSellBuyTabs.Buy\r\n ? myBwics.filter(b => b.isParticipant)\r\n : myBwics.filter(b => b.isMy),\r\n activeTab === DashboardSellBuyTabs.Buy\r\n )}\r\n \r\n )\r\n }\r\n return renderMyBwics(myBwics, true);\r\n };\r\n\r\n const chartName = \"My Scheduled BWICs\";\r\n\r\n return (\r\n \r\n \r\n

{chartName}

\r\n
\r\n \r\n {renderContent()}\r\n \r\n
\r\n )\r\n}\r\n","import moment from 'moment/moment';\r\nimport { useCallback, useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { dashboardFetchBidRequestsAsSeller, errorActions } from '../../../actions';\r\nimport { RequestState } from '../../../constants/request-state';\r\nimport { bidAsDealerRequestService } from '../../../services';\r\nimport { BwicStatus } from '../../../types/enums/BwicStatus';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { isRequestNone } from '../../../utils';\r\n\r\nexport function useMyBidRequests(disabled?: boolean) {\r\n const dispatch = useDispatch();\r\n const requestStateBidAsDealerRequests = useSelector((state: AppState) => state.dashboard.requestStateBidAsDealerRequests);\r\n\r\n const getRequests = useCallback(async () => {\r\n try {\r\n dispatch(dashboardFetchBidRequestsAsSeller(RequestState.request));\r\n const response = await bidAsDealerRequestService.findBidRequestsAsSeller({\r\n isinCusipsAndTickers: [],\r\n from: moment().format('YYYY-MM-DD'),\r\n to: undefined,\r\n statuses: [BwicStatus.scheduled, BwicStatus.bidding, BwicStatus.finished],\r\n currency: undefined,\r\n ratings: [],\r\n types: [],\r\n page: 1,\r\n pageSize: 200,\r\n submittedBids: null\r\n })\r\n dispatch(dashboardFetchBidRequestsAsSeller(RequestState.success, response));\r\n } catch (e) {\r\n dispatch(dashboardFetchBidRequestsAsSeller(RequestState.failure));\r\n dispatch(errorActions.unexpectedError(e));\r\n }\r\n }, [dispatch])\r\n\r\n useEffect(() => {\r\n if (!disabled && isRequestNone(requestStateBidAsDealerRequests)) {\r\n getRequests()\r\n }\r\n }, [disabled, requestStateBidAsDealerRequests, getRequests])\r\n}\r\n","import React, { useState } from 'react';\r\nimport { useHistory } from 'react-router';\r\nimport { Pagination } from '../tables/Pagination';\r\nimport { Table } from '../../bidding/common/table';\r\nimport { dateTimeUtils, isRequestSuccess } from '../../../utils';\r\nimport { DashboardNoData } from '../DashboardNoData';\r\nimport { constants, routes, SORT, SORTING_TYPE } from '../../../constants';\r\nimport { useSortedList } from '../../../effects';\r\nimport { useSelector } from 'react-redux';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { IColumnDefinition } from '../../bidding/common/table/types/ColumnDefinition';\r\nimport { BwicStatusLabel } from '../../common';\r\nimport { DashboardPortfolioSecurity } from '../../../types/dashboard/DashboardPortfolioSecurity';\r\nimport { ColumnBuilder } from '../../bidding/common/table/columns/column-builder/ColumnBuilder';\r\nimport { SameDayBwicIcon } from '../../common/SameDayBwicIcon';\r\nimport { OnHoverTooltip } from '../../common';\r\nimport { PortfolioAgreementDisclaimerActionBlocker } from '../../portfolio-agreement-disclaimer/PortfolioAgreementDisclaimerActionBlocker';\r\nimport { CreatePortfolioButton } from '../../portfolio-agreement-disclaimer/CreatePortfolioButton';\r\nimport { BwicViewLink } from '../../common/BwicViewLink';\r\n\r\nexport const DashboardPortfolioBwicSecurities = () => {\r\n const history = useHistory();\r\n\r\n const portfolioSecurities = useSelector((s: AppState) => s.dashboard.portfolioSecurities);\r\n const portfolioExist = useSelector((s: AppState) => s.dashboard.portfolioExist);\r\n const requestStateFetchPortfolioSecurities = useSelector((s: AppState) => s.dashboard.requestStateFetchPortfolioSecurities);\r\n\r\n const [sortBy, setSortBy] = useState(null);\r\n const [sortDirection, setSortDirection] = useState(SORT.ASC);\r\n\r\n const [sortedDataItems] = useSortedList(portfolioSecurities, sortBy, sortDirection);\r\n\r\n const getColumns = () => {\r\n const columnsDefinitions: IColumnDefinition[] = [\r\n {\r\n columnKey: 'bwicStatus',\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: entity => (\r\n \r\n ),\r\n headerClassName: 'data-list-bwic-status',\r\n bodyClassName: 'data-list-bwic-status flex-item-left',\r\n }, {\r\n columnKey: 'bwicDate',\r\n renderColumnHeaderContent: () => 'Date',\r\n renderColumnContent: entity => entity.date\r\n ? <>{!entity.isSameDayBwic && } {dateTimeUtils.utcToLocalString(entity.date, constants.dashboardDateFormat)}\r\n : constants.emptyPlaceholder,\r\n headerClassName: 'data-list-date sort-column',\r\n bodyClassName: 'data-list-date flex-item-left',\r\n sortingField: 'date',\r\n sortingType: SORTING_TYPE.date,\r\n }, {\r\n columnKey: 'ticker',\r\n renderColumnHeaderContent: () => 'Ticker',\r\n renderColumnContent: entity => (\r\n \r\n {entity.ticker}\r\n \r\n ),\r\n className: 'data-list-ticker-bwics',\r\n sortingField: 'ticker'\r\n }, {\r\n columnKey: 'viewBwic',\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: entity =>\r\n ,\r\n headerClassName: '',\r\n bodyClassName: 'flex-item-right'\r\n }\r\n ]\r\n return columnsDefinitions.map(c => new ColumnBuilder(c))\r\n }\r\n\r\n const setSortParams = (field: string, direction: string) => {\r\n setSortBy(field);\r\n setSortDirection(direction)\r\n };\r\n\r\n const handleClick = () => history.push(routes.newPortfolio);\r\n\r\n return (\r\n <>\r\n {!!portfolioSecurities.length && (\r\n \r\n {(items: DashboardPortfolioSecurity[]) => (\r\n \r\n )}\r\n \r\n )}\r\n {isRequestSuccess(requestStateFetchPortfolioSecurities) && !portfolioSecurities.length &&\r\n <>\r\n
\r\n \r\n {!portfolioExist && (\r\n
\r\n \r\n \r\n Create Portfolio\r\n \r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n }\r\n \r\n )\r\n}\r\n","import React, { useEffect } from 'react';\r\nimport moment from 'moment';\r\nimport classNames from 'classnames';\r\nimport { Pagination } from '../tables/Pagination';\r\nimport { Preloader } from '../../common';\r\nimport { isRequestFailed, isRequesting, isRequestSuccess, moneyUtils } from '../../../utils';\r\nimport { Table } from '../../bidding/common/table';\r\nimport { IColumnDefinition } from '../../bidding/common/table/types/ColumnDefinition';\r\nimport { InventoryPosition } from '../../../types/inventory/InventoryPosition';\r\nimport { ColumnBuilder } from '../../bidding/common/table/columns/column-builder/ColumnBuilder';\r\nimport { constants, routes } from '../../../constants';\r\nimport { InventoryPositionStatus } from '../../../types/inventory/InventoryPositionStatus';\r\nimport { useHistory } from 'react-router';\r\nimport { DashboardNoData } from '../DashboardNoData';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport {\r\n dashboardGetPortfolioInventorySecuritiesRequest,\r\n dashboardPortfolioInventorySortParamsChanged,\r\n dashboardSetPortfolioInventoryCurrentPage\r\n} from '../../../actions';\r\nimport { user } from '../../../user';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport {\r\n InventorySecurityOrderByColumn,\r\n InventorySecuritySortOrder\r\n} from '../../../types/inventory/InventorySecurityOrderByColumn';\r\nimport { RequiredFeature } from '../../access/RequiredFeature';\r\nimport { PortfolioAgreementDisclaimerActionBlocker } from '../../portfolio-agreement-disclaimer/PortfolioAgreementDisclaimerActionBlocker';\r\nimport { CreatePortfolioButton } from '../../portfolio-agreement-disclaimer/CreatePortfolioButton';\r\nimport { Link } from '../../controls/Link';\r\n\r\nconst inventorySecuritiesItemsOnPage = 7;\r\n\r\nexport const DashboardPortfolioInventorySecurities: React.FC = () => {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n\r\n const portfolioExist = useSelector((s: AppState) => s.dashboard.portfolioExist);\r\n const {\r\n currentPage,\r\n securities,\r\n totalRecordNumber,\r\n requestStateGetSecurities,\r\n sortField,\r\n sortOrder,\r\n } = useSelector((s: AppState) => s.dashboard.portfolioInventory);\r\n\r\n const items = securities[currentPage];\r\n\r\n useEffect(() => {\r\n if (\r\n !securities[currentPage] &&\r\n !isRequesting(requestStateGetSecurities) &&\r\n !isRequestFailed(requestStateGetSecurities) &&\r\n user.hasFeatures(SubscriptionFeature.viewIncludedToPortfolioInventory)\r\n ) {\r\n dispatch(\r\n dashboardGetPortfolioInventorySecuritiesRequest(\r\n currentPage,\r\n inventorySecuritiesItemsOnPage,\r\n InventorySecurityOrderByColumn[sortField as keyof typeof InventorySecurityOrderByColumn],\r\n InventorySecuritySortOrder[sortOrder as keyof typeof InventorySecuritySortOrder]\r\n )\r\n )\r\n }\r\n }, [dispatch, currentPage, securities, requestStateGetSecurities, sortField, sortOrder])\r\n\r\n const handlePageChanged = (page: number) => {\r\n dispatch(dashboardSetPortfolioInventoryCurrentPage(page))\r\n }\r\n\r\n const getColumns = () => {\r\n const columnsDefinitions: IColumnDefinition[] = [\r\n {\r\n columnKey: 'status',\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: entity => <>{entity.status === InventoryPositionStatus.added &&\r\n NEW},\r\n headerClassName: 'data-list-status',\r\n bodyClassName: 'data-list-status',\r\n }, {\r\n columnKey: 'date',\r\n renderColumnHeaderContent: () => 'Last Updated',\r\n renderColumnContent: entity => entity.lastUpdateDate ? moment.utc(entity.lastUpdateDate).local().format(constants.dashboardDateFormat) : constants.emptyPlaceholder,\r\n headerClassName: 'data-list-updated sort-column',\r\n bodyClassName: 'data-list-updated',\r\n sortingField: 'lastUpdateDate',\r\n }, {\r\n columnKey: 'ticker',\r\n renderColumnHeaderContent: () => 'Ticker',\r\n renderColumnContent: entity => entity.ticker,\r\n headerClassName: 'data-list-ticker',\r\n bodyClassName: 'data-list-ticker',\r\n sortingField: 'ticker'\r\n }, {\r\n columnKey: 'size',\r\n renderColumnHeaderContent: () => 'Size, MM',\r\n renderColumnContent: entity => moneyUtils.amountToMM(entity.size),\r\n headerClassName: 'data-list-size flex-item-left text-right',\r\n bodyClassName: 'data-list-size flex-item-left text-right',\r\n sortingField: 'size'\r\n }, {\r\n columnKey: 'view',\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: entity => (\r\n \r\n View\r\n \r\n ),\r\n headerClassName: 'flex-item-right',\r\n bodyClassName: 'flex-item-right',\r\n },\r\n ]\r\n return columnsDefinitions.map(c => new ColumnBuilder(c))\r\n };\r\n\r\n const handleClick = () => history.push(routes.newPortfolio);\r\n\r\n if (isRequestSuccess(requestStateGetSecurities) && !totalRecordNumber) {\r\n return (\r\n
\r\n \r\n {!portfolioExist && (\r\n
\r\n \r\n \r\n Create Portfolio\r\n \r\n \r\n
\r\n )}\r\n \r\n
\r\n )\r\n }\r\n\r\n const createSecurityCustomClassName = (inventory: InventoryPosition) => {\r\n return classNames({ 'sold-status': inventory.status === InventoryPositionStatus.traded })\r\n };\r\n\r\n const handleSortChange = (field: string, order: string) => {\r\n dispatch(dashboardPortfolioInventorySortParamsChanged(field, order))\r\n }\r\n\r\n return (\r\n \r\n \r\n {totalRecordNumber && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n","import { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport {\r\n dashboardPortfolioInventoryReset,\r\n dashboardInitPortfolioSecurities\r\n} from '../../../actions/dashboard.actions';\r\nimport { isRequesting, isRequestNone } from '../../../utils';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { DashboardPortfolioBwicSecurities } from './DashboardPortfolioBwicSecurities';\r\nimport { DashboardPortfolioInventorySecurities } from './DashboardPortfolioInventorySecurities';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { TabItem, TabList } from '../../bidding/common/tab-list';\r\nimport { BwicInventoriesTabs } from '../../../types/dashboard/BwicInventoriesTabs';\r\nimport { PortfolioAlertsPreferences } from '../../portfolio/portfolio-alert/PortfolioAlertsPreferences';\r\nimport { useEmailPreferences } from '../../../effects/data-accessors/useEmailPreferences';\r\nimport { PageConfigType } from '../../../types/page-config/PageConfigType';\r\nimport { BwicFilterType } from '../../../types/filters/FilterState';\r\nimport { usePageConfig } from '../../common/pageConfig/usePageConfig';\r\n\r\ninterface PortfolioWidgetProps {\r\n showAlerts?: boolean;\r\n}\r\n\r\nexport const PortfolioWidget = ({ showAlerts = true }: PortfolioWidgetProps) => {\r\n const dispatch = useDispatch();\r\n\r\n const hasPortfolio = useSelector((s: AppState) => s.dashboard.portfolioExist);\r\n const requestStateFetchPortfolioSecurities = useSelector((s: AppState) => s.dashboard.requestStateFetchPortfolioSecurities);\r\n const requestStateFetchPortfolioExist = useSelector((s: AppState) => s.dashboard.requestStateFetchPortfolioExist);\r\n\r\n useEmailPreferences();\r\n usePageConfig(PageConfigType.Portfolio, false, BwicFilterType.Portfolio);\r\n\r\n useEffect(() => {\r\n dispatch(dashboardInitPortfolioSecurities());\r\n\r\n return () => {\r\n dispatch(dashboardPortfolioInventoryReset());\r\n };\r\n }, [dispatch]);\r\n\r\n const [activeTab, setActiveTab] = useState(BwicInventoriesTabs.Bwic);\r\n\r\n const chartName = \"My Securities on\";\r\n\r\n return (\r\n \r\n \r\n \r\n

{chartName}

\r\n {showAlerts &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n \r\n \r\n setActiveTab(BwicInventoriesTabs.Bwic)}\r\n active={activeTab === BwicInventoriesTabs.Bwic}\r\n title=\"BWICs\"\r\n />\r\n setActiveTab(BwicInventoriesTabs.Inventory)}\r\n active={activeTab === BwicInventoriesTabs.Inventory}\r\n title=\"Dealer Inventory\"\r\n />\r\n \r\n {\r\n activeTab === BwicInventoriesTabs.Bwic\r\n ? \r\n : \r\n }\r\n \r\n \r\n
\r\n )\r\n}\r\n","import React from 'react';\r\nimport moment from 'moment';\r\nimport { Plot, mainConfig } from '../../common/charts/plotlyConfig'\r\nimport { constants } from '../../../constants';\r\nimport { chartColorBar } from '../../../constants/dashboard';\r\nimport { chartUtils } from '../../../utils';\r\n\r\nexport function BarColorChart({ chartData, divId, onClick = () => {} }) {\r\n const { tickColor, tickFont, chartLayout, zeroLineColor, yAxisRange, annotationMargin, barColor, hoverlabel } = chartColorBar;\r\n const annotations = chartData.dates.map((d) => {\r\n return {\r\n x: moment(d).format(constants.dashboardDateFormat),\r\n y: chartData.data[d].amountPercent + annotationMargin,\r\n xref: 'x',\r\n yref: 'y',\r\n text: `${chartData.data[d].amountPercent.toFixed(2)} %`,\r\n arrowhead: 0,\r\n ax: 0,\r\n ay: 0\r\n }\r\n });\r\n\r\n const getChartData = () => {\r\n return [{\r\n x: chartData.dates.map((d) => moment(d).format(constants.dashboardDateFormat)),\r\n y: chartData.dates.map((d) => chartData.data[d].amountPercent),\r\n name: 'bar-color',\r\n type: \"bar\",\r\n marker: {\r\n color: barColor,\r\n },\r\n hoverinfo: 'text',\r\n text: chartData.dates\r\n .map((d) => ` Color %: ${chartData.data[d].amountPercent.toFixed(2)}
Volume: ${chartData.data[d].amountMoney}`),\r\n textposition: 'none',\r\n }]\r\n };\r\n\r\n const layout = {\r\n ...chartLayout,\r\n annotations,\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: 'closest',\r\n hoverlabel,\r\n yaxis: {\r\n showgrid: true,\r\n range: yAxisRange,\r\n fixedrange: true,\r\n showtickprefix: 'none',\r\n gridcolor: tickColor,\r\n ticks: 'inside',\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n zerolinecolor: zeroLineColor,\r\n },\r\n xaxis: {\r\n zeroline: false,\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n },\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nBarColorChart.defaultProps = {\r\n divId: 'bar-color-chart'\r\n};\r\n","import React, { useCallback, useMemo } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useHistory } from 'react-router';\r\nimport moment from 'moment';\r\nimport { BarColorChart } from './BarColorChart';\r\nimport { getRatingForSearchString, getVolume, isRequesting } from '../../../utils';\r\nimport { constants, routes, chartColorBar } from '../../../constants';\r\nimport { dateFrom, dateTo, ratings, currency } from '../../../utils/filtering/serializers/serializer.definitions';\r\nimport { queryStringSerializer } from '../../../utils/filtering/query-string-serializer';\r\nimport { Rating, Ratings } from '../../../types/enums/Rating';\r\nimport { RatingGroup, ratingWithGroupValues } from '../../../types/dashboard/RatingGroup';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { WidgetDescription } from '../WidgetDescription';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { Currencies } from '../../../types/enums/Currency';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\n\r\nconst chartName = \"Color % in BWICs: Transparency Barometer\";\r\n\r\nexport function BarColorWidget() {\r\n const history = useHistory();\r\n const colorRates = useSelector((s) => s.dashboard.colorRates);\r\n const requestStateFetchColorRates = useSelector((s) => s.dashboard.requestStateFetchColorRates);\r\n const filter = useSelector((s) => s.dashboard.filter);\r\n const filterActive = useSelector((s) => s.dashboard.filterActive);\r\n\r\n const { selectedCurrencies, selectedRatings } = filter;\r\n const getCurrentRatings = () => {\r\n if (selectedRatings.length) {\r\n return ratingWithGroupValues.filter(r => selectedRatings.some(sr => sr === r));\r\n }\r\n return ratingWithGroupValues;\r\n };\r\n const getCurrentCurrencies = () => {\r\n if (selectedCurrencies.length) {\r\n return Currencies.filter(c => selectedCurrencies.some(sc => sc === c));\r\n }\r\n return Currencies;\r\n };\r\n\r\n const getPercent = (amount, count) => {\r\n if (!amount || !count) {\r\n return 0;\r\n }\r\n return ((amount / count) * 100);\r\n };\r\n\r\n const getAmountVolume = (amountMoneyInCurrency) => {\r\n const { currencySign } = chartColorBar;\r\n const currenciesKeys = Object.keys(amountMoneyInCurrency);\r\n return currenciesKeys.map(c => `${currencySign[c]}${getVolume(amountMoneyInCurrency[c])}`).join(' / ') + 'MM';\r\n };\r\n\r\n const getAmountByDay = (ratesList) => {\r\n const getCurrencies = () => {\r\n return getCurrentCurrencies().reduce((result, currency) => {\r\n result[currency] = 0;\r\n return result;\r\n }, {});\r\n };\r\n\r\n const total = ratesList.reduce((result, current) => {\r\n result.count += current.main.length;\r\n const { amountInColor, amountMoneyInCurrency } = current.main.reduce((mainResult, current) => {\r\n mainResult.amountInColor += current.priceInColor;\r\n if (current.priceInColor) mainResult.amountMoneyInCurrency[current.currency] += current.amount;\r\n return mainResult;\r\n }, { amountInColor: 0, amountMoneyInCurrency: getCurrencies() });\r\n result.amountInColor += amountInColor;\r\n if (result.amountMoneyInCurrency.USD || result.amountMoneyInCurrency.USD === 0) result.amountMoneyInCurrency.USD += amountMoneyInCurrency.USD;\r\n if (result.amountMoneyInCurrency.EUR || result.amountMoneyInCurrency.EUR === 0) result.amountMoneyInCurrency.EUR += amountMoneyInCurrency.EUR;\r\n return result;\r\n }, { count: 0, amountInColor: 0, amountMoneyInCurrency: getCurrencies() });\r\n\r\n return {\r\n amountPercent: getPercent(total.amountInColor, total.count),\r\n amountMoneyInCurrency: total.amountMoneyInCurrency,\r\n amountMoney: getAmountVolume(total.amountMoneyInCurrency)\r\n };\r\n };\r\n\r\n const sortByDates = () => {\r\n const dates = [];\r\n const sortedByDates = colorRates.reduce((result, current) => {\r\n if (!Object.keys(result).some((d) => d === current.date)) {\r\n result[current.date] = {\r\n ratings: getCurrentRatings().map(r => ({\r\n rating: r,\r\n main: [],\r\n })),\r\n amountPercent: 0,\r\n amountMoneyInCurrency: 0,\r\n };\r\n dates.push(current.date);\r\n }\r\n // Filter by selected ratings\r\n if (selectedRatings.length) {\r\n if (current.rating === Rating.CCC || current.rating === Rating.D) {\r\n if (!selectedRatings.some(r => r === RatingGroup.OTHER)) {\r\n return result;\r\n }\r\n } else if (!selectedRatings.some(r => r === current.rating)) {\r\n return result;\r\n }\r\n }\r\n // Filter by selected currencies\r\n if (selectedCurrencies.length && !selectedCurrencies.some(c => c === current.currency)) {\r\n return result;\r\n }\r\n\r\n let currentRating = current.rating;\r\n if (current.rating === Rating.CCC || current.rating === Rating.D) {\r\n currentRating = RatingGroup.OTHER;\r\n }\r\n\r\n result[current.date].ratings.map(item => {\r\n if (item.rating === currentRating) {\r\n item.main.push(current);\r\n }\r\n return item;\r\n });\r\n return result;\r\n }, {});\r\n return { dates, sortedByDates };\r\n };\r\n\r\n const getChartData = () => {\r\n const { dates, sortedByDates } = sortByDates();\r\n const data = dates.sort((a, b) => a.localeCompare(b)).reduce((result, date) => {\r\n const dateData = sortedByDates[date];\r\n if (!result[date]) {\r\n result[date] = {};\r\n }\r\n const { amountPercent, amountMoneyInCurrency, amountMoney } = getAmountByDay(dateData.ratings);\r\n result[date].amountPercent = amountPercent;\r\n result[date].amountMoneyInCurrency = amountMoneyInCurrency;\r\n result[date].amountMoney = amountMoney;\r\n result[date].ratings = dateData.ratings;\r\n return result;\r\n }, {});\r\n return { dates, data };\r\n };\r\n\r\n const handleBarClick = useCallback((e) => {\r\n const point = e && e.points && e.points[0];\r\n const date = moment(point.x, constants.dashboardDateFormat).format(constants.formatTimeStringWithoutTimeZone);\r\n const searchRatings = selectedRatings.reduce((result, current) => {\r\n const rating = getRatingForSearchString(current);\r\n result = result.concat(rating);\r\n return result;\r\n }, []);\r\n const searchParams = {\r\n dateFrom: date,\r\n dateTo: date,\r\n currency: selectedCurrencies.length === 2 ? '' : selectedCurrencies[0],\r\n ratings: searchRatings.length && searchRatings.length !== Ratings.length ? searchRatings : []\r\n };\r\n const serializers = [ratings(), currency(), dateFrom(), dateTo()];\r\n const queryString = queryStringSerializer.serialize(searchParams, serializers);\r\n history.push({\r\n pathname: routes.allBWICs,\r\n search: queryString\r\n });\r\n }, [history, selectedCurrencies, selectedRatings]);\r\n\r\n const chartData = getChartData();\r\n\r\n const chart = useMemo(() => ,\r\n [chartData, handleBarClick]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}

\r\n
\r\n \r\n {chart}\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Plot, mainConfig } from '../../common/charts/plotlyConfig';\r\nimport { chartBarSameDay } from '../../../constants/dashboard/chartBarSameDay';\r\nimport { chartUtils } from '../../../utils';\r\n\r\nexport function BarSameDayChart({ data, divId }) {\r\n const { chartLayout, yAxisRange, xAxisRange, tickFont, tickColor, dTick, zeroLineColor, annotationMargin, barColor, hoverlabel } = chartBarSameDay;\r\n\r\n const getChartData = () => [{\r\n x: data.map(d => d.periodFrom),\r\n y: data.map(d => d.amountPercentBySameDay),\r\n type: 'bar',\r\n hoverinfo: 'text',\r\n marker: {\r\n color: barColor,\r\n },\r\n text: data.map((d) =>\r\n d.amountPercentBySameDay > 0\r\n ? ` Date: ${d.periodToDisplay}
Value %: ${d.amountPercentBySameDay}
Volume: ${d.amountToDisplay}`\r\n : ''\r\n ),\r\n textposition: 'none',\r\n }];\r\n\r\n const chartData = getChartData();\r\n\r\n const annotations = data.map((d) => {\r\n return {\r\n x: d.periodFrom,\r\n y: Number(d.amountPercentBySameDay) + annotationMargin,\r\n xref: 'x',\r\n yref: 'y',\r\n text: `${d.amountPercentBySameDay} %`,\r\n arrowhead: 0,\r\n ax: 0,\r\n ay: 0\r\n };\r\n });\r\n\r\n const layout = {\r\n ...chartLayout,\r\n annotations,\r\n hoverlabel,\r\n xaxis: {\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n range: xAxisRange\r\n },\r\n yaxis: {\r\n range: yAxisRange,\r\n dtick: dTick,\r\n showgrid: true,\r\n mirror: 'ticks',\r\n showtickprefix: 'none',\r\n fixedrange: true,\r\n gridcolor: tickColor,\r\n ticks: 'inside',\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n zerolinecolor: zeroLineColor,\r\n }\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n","import React, { useMemo } from 'react';\r\nimport { cloneDeep } from 'lodash';\r\nimport moment from \"moment\";\r\nimport { BarSameDayChart } from './BarSameDayChart';\r\nimport { useSelector } from 'react-redux';\r\nimport { chartBarSameDay } from '../../../constants/dashboard/chartBarSameDay';\r\nimport { constants } from '../../../constants';\r\nimport { getVolume, isRequesting } from '../../../utils';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { WidgetDescription } from '../WidgetDescription';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { Currencies } from '../../../types/enums/Currency';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\n\r\nconst chartName = \"Same-Day BWICs %: Stability Barometer\";\r\n\r\nexport function BarSameDayWidget() {\r\n const { serverDateType } = chartBarSameDay;\r\n\r\n const sameDayPeriods = useSelector((s) => s.dashboard.sameDayPeriods);\r\n const requestStateFetchSameDayPeriods = useSelector((s) => s.dashboard.requestStateFetchSameDayPeriods);\r\n const filter = useSelector((s) => s.dashboard.filter);\r\n const filterActive = useSelector((s) => s.dashboard.filterActive);\r\n\r\n const { selectedRatings, selectedCurrencies } = filter;\r\n\r\n const filterByRatingCurrency = (periodData) => {\r\n let byRating = periodData;\r\n if (selectedRatings.length) {\r\n byRating = periodData.filter(d => !!selectedRatings.some(r => d.rating === r));\r\n }\r\n if (selectedCurrencies.length) {\r\n return byRating.filter(d => !!selectedCurrencies.some(c => d.currency === c));\r\n }\r\n return byRating;\r\n };\r\n\r\n const filterData = () => {\r\n return cloneDeep(sameDayPeriods).map(d => {\r\n if (selectedRatings.length || selectedCurrencies.length) {\r\n d.sameDayBwicsData = filterByRatingCurrency(d.sameDayBwicsData);\r\n }\r\n return d;\r\n });\r\n };\r\n\r\n const getSelectedCurrency = () => {\r\n if (selectedCurrencies.length) {\r\n return Currencies.filter(c => selectedCurrencies.some(sc => sc === c)).map(c => ({\r\n currencyName: c,\r\n amount: 0\r\n }));\r\n }\r\n return Currencies.map(c => ({ currencyName: c, amount: 0 }));\r\n };\r\n\r\n const getAmountPercent = (amountByPeriod, amountBySameDay) => {\r\n if (amountBySameDay && amountByPeriod) {\r\n return ((amountBySameDay / amountByPeriod) * 100).toFixed(2);\r\n }\r\n return 0;\r\n };\r\n\r\n const getAmountToDisplay = (amountByCurrency) => {\r\n const { currencySign } = chartBarSameDay;\r\n return amountByCurrency.map(c => `${currencySign[c.currencyName]}${getVolume(c.amount)}`).join(' / ') + 'MM';\r\n };\r\n\r\n const getTotalAmount = (sameDayBwicsData = []) => {\r\n return sameDayBwicsData.reduce((result, current) => {\r\n result.amountByPeriod += current.amount;\r\n if (current.sameDay) {\r\n result.amountBySameDay += current.amount;\r\n }\r\n result.amountBySameDayByCurrency = result.amountBySameDayByCurrency.map(c => {\r\n if (current.currency === c.currencyName && current.sameDay) {\r\n c.amount += current.amount;\r\n }\r\n return c;\r\n });\r\n return result;\r\n }, { amountByPeriod: 0, amountBySameDay: 0, amountBySameDayByCurrency: getSelectedCurrency() });\r\n };\r\n\r\n const formatPeriodToDisplay = (period) => {\r\n const from = moment(period, serverDateType).format(constants.dashboardDateFormat);\r\n const to = moment(period, serverDateType).add(6, 'days').format(constants.dashboardDateFormat);\r\n return `${from} - ${to}`;\r\n };\r\n\r\n const getChartData = () => {\r\n const data = filterData();\r\n return data.map((d) => {\r\n const { amountByPeriod, amountBySameDay, amountBySameDayByCurrency } = getTotalAmount(d.sameDayBwicsData || []);\r\n const amountPercentBySameDay = getAmountPercent(amountByPeriod, amountBySameDay);\r\n const amountToDisplay = getAmountToDisplay(amountBySameDayByCurrency);\r\n const periodToDisplay = formatPeriodToDisplay(d.periodName);\r\n return {\r\n amountByPeriod,\r\n amountBySameDay,\r\n amountBySameDayByCurrency,\r\n amountPercentBySameDay,\r\n amountToDisplay,\r\n periodToDisplay,\r\n periodFrom: moment(d.periodName.split('-')[0], serverDateType).format(constants.dashboardDateFormat)\r\n };\r\n });\r\n };\r\n\r\n const chartData = getChartData();\r\n\r\n const chart = useMemo(() => , [chartData]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}weekly avg

\r\n
\r\n \r\n {chart}\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { mainConfig, Plot } from '../../common/charts';\r\nimport { chartDtcSellingBuyingConstants } from '../../../constants/dashboard/chartDtcSellingBuying';\r\nimport { chartUtils, numericUtils, moneyUtils } from '../../../utils';\r\n\r\ninterface ChartData {\r\n x: string;\r\n y: number;\r\n}\r\n\r\ninterface DtcSellingBuyingChartProps {\r\n data: ChartData[]\r\n chartDiv?: string;\r\n}\r\n\r\nexport function DtcSellingBuyingChart({ data, chartDiv }: DtcSellingBuyingChartProps) {\r\n\r\n const formatChartMoney = (value: number) => value > 0 ?\r\n `$${moneyUtils.money(value)}MM` :\r\n `-$${moneyUtils.money(-value)}MM`;\r\n\r\n const getYLineValues = () => {\r\n let currentYValue = 0;\r\n return data.map(value => {\r\n currentYValue = currentYValue + value.y;\r\n return currentYValue\r\n });\r\n };\r\n\r\n const createPlotData = () => {\r\n const { positiveBarColor, negativeBarColor, lineColor } = chartDtcSellingBuyingConstants;\r\n const x = data.map(d => d.x);\r\n const y = data.map(d => d.y);\r\n const colors = data.map(d => d.y > 0 ? positiveBarColor : negativeBarColor);\r\n return [\r\n {\r\n x,\r\n y,\r\n marker: { color: colors },\r\n type: 'bar',\r\n name: 'Bars',\r\n hoverinfo: 'text',\r\n text: data.map(d => `Dealer Flow: ${formatChartMoney(d.y)}`),\r\n textposition: 'none',\r\n },\r\n {\r\n x,\r\n y: getYLineValues(),\r\n mode: 'lines',\r\n name: 'Line',\r\n hoverinfo: 'text',\r\n text: getYLineValues().map(d => `Cumulative Flow: ${formatChartMoney(d)}`),\r\n textposition: 'none',\r\n line: { dash: 'dash', width: 2, color: lineColor, shape: 'spline' },\r\n }\r\n ]\r\n };\r\n\r\n const plotData = createPlotData();\r\n\r\n const getYAxesRange = () => {\r\n const { yAxisDTick, yAxisMargin } = chartDtcSellingBuyingConstants;\r\n let maxValue = 0;\r\n let minValue = 0;\r\n data.forEach(d => {\r\n if (d.y > maxValue) {\r\n maxValue = d.y\r\n }\r\n if (d.y < minValue) {\r\n minValue = d.y\r\n }\r\n });\r\n getYLineValues().forEach(d => {\r\n if (d > maxValue) {\r\n maxValue = d\r\n }\r\n if (d < minValue) {\r\n minValue = d\r\n }\r\n });\r\n\r\n const minRange = minValue < 0 ? minValue - numericUtils.getPercentage(yAxisDTick, yAxisMargin) : minValue;\r\n const maxRange = maxValue + numericUtils.getPercentage(maxValue, yAxisMargin);\r\n return [minRange, maxRange];\r\n };\r\n\r\n const annotations = data.map((d) => {\r\n const { annotationMargin, annotationsFont } = chartDtcSellingBuyingConstants;\r\n const range = getYAxesRange();\r\n const totalRangeValue = Math.abs(range[0] - range[1]);\r\n const margin = totalRangeValue / annotationMargin;\r\n return {\r\n x: d.x,\r\n y: d.y > 0 ? d.y + margin : d.y - margin,\r\n text: moneyUtils.money(d.y),\r\n arrowhead: 0,\r\n ax: 0,\r\n ay: 0,\r\n font: annotationsFont,\r\n }\r\n });\r\n\r\n const layout = {\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: 'closest',\r\n annotations,\r\n margin: chartDtcSellingBuyingConstants.margin,\r\n hoverlabel: chartDtcSellingBuyingConstants.hoverlabel,\r\n xaxis: {\r\n tickcolor: chartDtcSellingBuyingConstants.tickColor,\r\n tickfont: chartDtcSellingBuyingConstants.tickFont,\r\n tickangle: 0,\r\n },\r\n yaxis: {\r\n separatethousands: true,\r\n zerolinecolor: chartDtcSellingBuyingConstants.tickColor,\r\n range: getYAxesRange(),\r\n dtick: chartDtcSellingBuyingConstants.yAxisDTick,\r\n gridcolor: chartDtcSellingBuyingConstants.tickColor,\r\n ticks: 'inside',\r\n tickcolor: chartDtcSellingBuyingConstants.tickColor,\r\n tickfont: chartDtcSellingBuyingConstants.tickFont,\r\n },\r\n };\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nDtcSellingBuyingChart.defaultProps = {\r\n chartDiv: 'dtc-selling-buying-chart'\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport moment from 'moment';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { numericUtils } from '../../../utils/numeric.utils';\r\nimport { DtcSellingBuyingChart } from './DtcSellingBuyingChart';\r\nimport { isRequesting } from '../../../utils';\r\nimport { chartDtcSellingBuyingConstants } from '../../../constants/dashboard/chartDtcSellingBuying';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { WidgetDescription } from '../WidgetDescription';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\n\r\nconst chartName = \"TRACE Broker-Dealer Net Flow\";\r\n\r\nexport function DtcSellingBuyingWidget() {\r\n const dtcSellingBuying = useSelector((s: AppState) => s.dashboard.dtcSellingBuying);\r\n const requestStateDtcSellingBuying = useSelector((s: AppState) => s.dashboard.requestStateDtcSellingBuying);\r\n\r\n const data = useMemo(() => dtcSellingBuying.map(d => {\r\n const amountByMonth = (d.igCustomerSell + d.hyCustomerSell - d.igCustomerBuy - d.hyCustomerBuy) * 1000;\r\n const y = numericUtils.round(amountByMonth / 1000000, 0);\r\n const x = moment(d.period).format(chartDtcSellingBuyingConstants.dateFormat);\r\n return { x, y }\r\n }), [dtcSellingBuying]);\r\n\r\n const minMaxYear = useMemo(() => {\r\n const dates = dtcSellingBuying.map(d => new Date(d.period).getTime());\r\n const maxYear = new Date(Math.max.apply(null, dates)).getFullYear();\r\n const minYear = new Date(Math.min.apply(null, dates)).getFullYear();\r\n if (maxYear === minYear) {\r\n return maxYear;\r\n }\r\n return `${minYear || ''} - ${maxYear || ''}`;\r\n }, [dtcSellingBuying]);\r\n\r\n const chart = useMemo(() => , [data]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}USD, MM

\r\n
\r\n \r\n {chart}\r\n
\r\n
Dealer Net Flow
\r\n
\r\n {minMaxYear} Cumulative Position\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\nimport { mainConfig, Plot } from '../../common/charts';\r\nimport { chartDtcIgHyConstants } from '../../../constants/dashboard';\r\nimport { numericUtils } from '../../../utils/numeric.utils';\r\nimport { chartUtils } from '../../../utils/chart.utils';\r\nimport { moneyUtils } from '../../../utils/money.utils';\r\n\r\ninterface ChartData {\r\n x: string;\r\n y: {\r\n hy: number,\r\n ig: number,\r\n };\r\n}\r\n\r\ninterface ChartDtcIgHyChartProps {\r\n data: ChartData[]\r\n chartDiv?: string;\r\n}\r\n\r\nexport function DtcIgHyChart({ data, chartDiv }: ChartDtcIgHyChartProps) {\r\n const formatChartMoney = (value: number) => `$${moneyUtils.money(value)}MM`;\r\n\r\n const createPlotData = () => {\r\n const { igBarColor, hyBarColor, barWidth } = chartDtcIgHyConstants;\r\n const x = data.map(d => d.x);\r\n const yIg = data.map(d => d.y.ig);\r\n const yHy = data.map(d => d.y.hy);\r\n const width = data.map(() => barWidth);\r\n return [\r\n {\r\n x,\r\n y: yIg,\r\n marker: { color: igBarColor },\r\n type: 'bar',\r\n name: 'Bar Ig',\r\n hoverinfo: 'text',\r\n textposition: 'none',\r\n text: data.map(d => getBarText(d)),\r\n width\r\n },\r\n {\r\n x,\r\n y: yHy,\r\n marker: { color: hyBarColor },\r\n type: 'bar',\r\n name: 'Bar Hy',\r\n hoverinfo: 'text',\r\n textposition: 'none',\r\n text: data.map(d => getBarText(d)),\r\n width\r\n },\r\n ]\r\n };\r\n\r\n const getBarText = (pointData: any) => {\r\n return `IG Volume: ${formatChartMoney(pointData.y.ig)}
HY Volume: ${formatChartMoney(pointData.y.hy)}`\r\n };\r\n\r\n const plotData = createPlotData();\r\n\r\n const getYAxesMaxValue = () => {\r\n let maxValue = 0;\r\n data.forEach(d => {\r\n const total = d.y.ig + d.y.hy;\r\n if (total > maxValue) {\r\n maxValue = total\r\n }\r\n });\r\n return maxValue\r\n };\r\n\r\n const getYAxesRange = () => {\r\n const { yAxesMaxValueLineMargin } = chartDtcIgHyConstants;\r\n const maxValue = getYAxesMaxValue();\r\n\r\n let roundTo = 500;\r\n if (maxValue < roundTo) {\r\n roundTo = 100; \r\n }\r\n\r\n const roundMaxValue = chartUtils.roundToNumber(maxValue, roundTo);\r\n return [0, roundMaxValue + numericUtils.getPercentage(roundMaxValue, yAxesMaxValueLineMargin)];\r\n };\r\n\r\n const annotations = data.map((d) => {\r\n const { annotationMargin, annotationsFont } = chartDtcIgHyConstants;\r\n const total = d.y.ig + d.y.hy;\r\n const maxValue = getYAxesMaxValue();\r\n return {\r\n x: d.x,\r\n y: total + numericUtils.getPercentage(maxValue, annotationMargin),\r\n text: moneyUtils.money(total),\r\n arrowhead: 0,\r\n ax: 0,\r\n ay: 0,\r\n font: annotationsFont\r\n }\r\n });\r\n\r\n const layout = {\r\n barmode: 'stack',\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: 'closest',\r\n annotations,\r\n margin: chartDtcIgHyConstants.margin,\r\n hoverlabel: chartDtcIgHyConstants.hoverlabel,\r\n xaxis: {\r\n tickcolor: chartDtcIgHyConstants.tickColor,\r\n tickfont: chartDtcIgHyConstants.font,\r\n },\r\n yaxis: {\r\n separatethousands: true,\r\n zerolinecolor: chartDtcIgHyConstants.tickColor,\r\n range: getYAxesRange(),\r\n gridcolor: chartDtcIgHyConstants.tickColor,\r\n ticks: 'inside',\r\n tickcolor: chartDtcIgHyConstants.tickColor,\r\n tickfont: chartDtcIgHyConstants.font,\r\n },\r\n };\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nDtcIgHyChart.defaultProps = {\r\n chartDiv: 'dtc-ig-hy-chart'\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport moment from 'moment';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { numericUtils } from '../../../utils/numeric.utils';\r\nimport { isRequesting } from '../../../utils';\r\nimport { DtcIgHyChart } from './DtcIgHyChart';\r\nimport { constants } from '../../../constants';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { WidgetDescription } from '../WidgetDescription';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\n\r\nconst chartName = \"TRACE Volume\";\r\n\r\nexport function DtcIgHyWidget() {\r\n const dtcIgHy = useSelector((s: AppState) => s.dashboard.dtcIgHy);\r\n const requestStateDtcInvestmentGrade = useSelector((s: AppState) => s.dashboard.requestStateDtcInvestmentGrade);\r\n\r\n const data = useMemo(() => dtcIgHy.map(d => {\r\n const hy = numericUtils.round((d.hyVolume * 1000) / 1000000, 0);\r\n const ig = numericUtils.round((d.igVolume * 1000) / 1000000, 0);\r\n const y = { hy, ig };\r\n const x = moment.utc(d.date).format(constants.dashboardDateFormat);\r\n return { x, y }\r\n }), [dtcIgHy]);\r\n\r\n const chart = useMemo(() => , [data]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}USD, MM

\r\n
\r\n \r\n {chart}\r\n
\r\n
IG
\r\n
HY (includes unrated securities)
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n","import React from 'react';\r\nimport moment from 'moment';\r\nimport { mainConfig, Plot } from '../../common/charts'\r\nimport { chartUtils } from '../../../utils';\r\nimport { aaaPriceLevelConstants } from '../../../constants/dashboard/aaaPriceLevel';\r\nimport { AAAPriceLevel } from '../../../types/dashboard/AAAPriceLevel';\r\n\r\ninterface MedianRatingAAAChartProps {\r\n chartData: AAAPriceLevel[];\r\n}\r\n\r\nexport function AAAPriceLevelChart({ chartData }: MedianRatingAAAChartProps) {\r\n const chartDiv = 'triple-a-chart';\r\n\r\n const momentDates = chartData.map(d => moment(d.startDate));\r\n\r\n const formatDates = momentDates.map(md => md.format(aaaPriceLevelConstants.dateFormat));\r\n\r\n const shapes = chartData.map((d, index) => ({\r\n type: 'line',\r\n x0: formatDates[index],\r\n y0: Number(d.minAvgPriceTalk),\r\n x1: formatDates[index],\r\n y1: Number(d.maxAvgPriceTalk),\r\n line: aaaPriceLevelConstants.shapeLine\r\n }\r\n ));\r\n\r\n const trace1 = {\r\n x: formatDates,\r\n y: chartData.map(d => d.avgColor),\r\n text: chartData.map(data => `Color: ${data.avgColor}`),\r\n hoverinfo: 'text',\r\n mode: 'lines',\r\n type: 'scatter',\r\n name: 'avgColor',\r\n marker: aaaPriceLevelConstants.avgColorMarker\r\n };\r\n\r\n const trace2 = {\r\n x: formatDates,\r\n y: chartData.map(d => d.avgPriceTalk),\r\n text: chartData.map(data => `Price Talk: ${data.avgPriceTalk}`),\r\n hoverinfo: 'text',\r\n mode: 'lines',\r\n type: 'scatter',\r\n name: 'avgPriceTalk',\r\n marker: aaaPriceLevelConstants.avgPriceTalkMarker\r\n };\r\n\r\n const layout = {\r\n font: aaaPriceLevelConstants.layoutFont,\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: 'closest',\r\n margin: aaaPriceLevelConstants.margin,\r\n autoscale: false,\r\n hoverlabel: aaaPriceLevelConstants.hoverlabel,\r\n xaxis: {\r\n showgrid: false,\r\n zeroline: false,\r\n tickcolor: aaaPriceLevelConstants.tickColor,\r\n tickfont: aaaPriceLevelConstants.tickFont,\r\n range: [moment.min(momentDates), moment.max(momentDates)]\r\n },\r\n yaxis: {\r\n titlefont: aaaPriceLevelConstants.titlefont,\r\n zerolinecolor: aaaPriceLevelConstants.tickColor,\r\n gridcolor: aaaPriceLevelConstants.tickColor,\r\n tickcolor: aaaPriceLevelConstants.tickColor,\r\n tickfont: aaaPriceLevelConstants.tickFont,\r\n autorange: true\r\n },\r\n shapes\r\n };\r\n\r\n return (\r\n \r\n )\r\n}\r\n","import React, { useMemo } from 'react';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget'\r\nimport { WidgetDescription } from '../WidgetDescription';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { AAAPriceLevelChart } from './AAAPriceLevelChart';\r\nimport { isRequesting, numericUtils } from '../../../utils';\r\nimport { useSelector } from 'react-redux';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\n\r\nconst chartName = \"AAA Px Talk and Color Levels\";\r\n\r\nexport function AAAPriceLevelWidget() {\r\n const aaaPriceLevel = useSelector((s: AppState) => s.dashboard.aaaPriceLevel);\r\n const requestStateFetchAAAPriceLevel = useSelector((s: AppState) => s.dashboard.requestStateFetchAAAPriceLevel);\r\n const chart = useMemo(() => {\r\n const chartData = aaaPriceLevel.map(d => ({\r\n ...d,\r\n avgColor: d.avgColor ? numericUtils.round(d.avgColor, 2) : null,\r\n avgPriceTalk: d.avgPriceTalk ? numericUtils.round(d.avgPriceTalk, 2) : null,\r\n minAvgPriceTalk: d.minAvgPriceTalk ? numericUtils.round(d.minAvgPriceTalk, 2) : null,\r\n maxAvgPriceTalk: d.maxAvgPriceTalk ? numericUtils.round(d.maxAvgPriceTalk, 2) : null,\r\n }));\r\n return \r\n }, [aaaPriceLevel]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}

\r\n
\r\n \r\n {chart}\r\n
\r\n
Avg Color
\r\n
Avg Px Talk
\r\n
Px Talk Range
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n","import React, { SetStateAction, useMemo, useState } from 'react';\r\nimport { createSelector } from 'reselect';\r\nimport { useSelector } from 'react-redux';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { MostTradedTickersData } from '../../../types/dashboard/MostTradedTickers';\r\nimport { isRequesting, isRequestSuccess, moneyUtils, numericUtils } from '../../../utils';\r\nimport { Table } from '../../bidding/common/table';\r\nimport { useSortedList } from '../../../effects';\r\nimport { SORT, SORTING_TYPE, constants } from '../../../constants';\r\nimport { Pagination } from '../tables/Pagination';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { DashboardNoSelectedFilters } from '../DashboardNoSelectedFilters';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { IColumnDefinition } from '../../bidding/common/table/types/ColumnDefinition';\r\nimport { ColumnBuilder } from '../../bidding/common/table/columns/column-builder/ColumnBuilder';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\nimport { ShowFor } from '../../access';\r\n\r\nconst chartName = \"Most Traded Bonds\";\r\n\r\nexport function MostTradedTickersWidget() {\r\n const itemsOnPage = 6;\r\n const mostTradedTickers = useSelector(mostTradedTickersSelector);\r\n const filterActive = useSelector((s: AppState) => s.dashboard.filterActive);\r\n const requestStateMostTradedTickers = useSelector((s: AppState) => s.dashboard.requestStateMostTradedTickers);\r\n\r\n const [sortBy, setSortBy] = useState(null);\r\n const [sortDirection, setSortDirection] = useState(SORT.ASC);\r\n\r\n const [sortedDataItems] = useSortedList(mostTradedTickers.mostTradedTickers, sortBy, sortDirection);\r\n\r\n const setSortParams = (field: SetStateAction, direction: string) => {\r\n setSortBy(field);\r\n setSortDirection(direction);\r\n };\r\n\r\n const isEmptyList = isRequestSuccess(requestStateMostTradedTickers) && !sortedDataItems.length;\r\n\r\n const renderTable = useMemo(() => {\r\n if (isEmptyList) {\r\n return \r\n }\r\n return (\r\n \r\n {(items: MostTradedTickersData[]) => (\r\n \r\n )}\r\n \r\n )\r\n }, [sortedDataItems, isEmptyList]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

\r\n {chartName}rolling 30 days\r\n

\r\n
\r\n \r\n {isEmptyList ? '' : 'This table shows which Tickers have been traded the most over the past 30 days. Filter and sort for more detail.'}\r\n \r\n }\r\n >\r\n {renderTable}\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst mostTradedTickersSelector = createSelector([\r\n (s: AppState) => s.dashboard.mostTradedTickers,\r\n (s: AppState) => s.dashboard.filter.selectedRatings,\r\n (s: AppState) => s.dashboard.filter.selectedCurrencies\r\n], (\r\n tickersData,\r\n selectedRatings,\r\n selectedCurrencies\r\n) => {\r\n let mostTradedTickers = tickersData.mostTradedTickers;\r\n if (selectedRatings.length) {\r\n mostTradedTickers = mostTradedTickers.filter(t => selectedRatings.some(c => c === t.rating));\r\n }\r\n if (selectedCurrencies.length) {\r\n mostTradedTickers = mostTradedTickers.filter(t => selectedCurrencies.some(c => c === t.currency));\r\n }\r\n return { ...tickersData, mostTradedTickers }\r\n});\r\n\r\nconst buyColumnsDefinitions: IColumnDefinition[] = [\r\n {\r\n columnKey: 'ticker',\r\n renderColumnHeaderContent: () => 'Ticker',\r\n renderColumnContent: entity => entity.ticker,\r\n className: 'data-list-ticker',\r\n sortingField: 'ticker',\r\n sortingType: SORTING_TYPE.string,\r\n }, {\r\n columnKey: 'rating',\r\n renderColumnHeaderContent: () => 'Rtg',\r\n renderColumnContent: entity => entity.rating,\r\n className: 'data-list-rating',\r\n sortingField: 'rating',\r\n sortingType: SORTING_TYPE.rating,\r\n }, {\r\n columnKey: 'trades',\r\n renderColumnHeaderContent: () => 'Trades #',\r\n renderColumnContent: entity => entity.trades,\r\n className: 'text-right data-list-trades',\r\n sortingField: 'trades',\r\n sortingType: SORTING_TYPE.string,\r\n }, {\r\n columnKey: 'trades-vol',\r\n renderColumnHeaderContent: () => 'Trades Vol (MM)',\r\n renderColumnContent: entity => moneyUtils.amountToMM(entity.tradesVol),\r\n className: 'text-right data-list-trades-vol p-r-0',\r\n sortingField: 'tradesVol',\r\n sortingType: SORTING_TYPE.number,\r\n }, {\r\n columnKey: 'avg-size',\r\n renderColumnHeaderContent: () => 'Avg Size, MM',\r\n renderColumnContent: entity => moneyUtils.amountToMM(entity.avgSize),\r\n className: 'text-right data-list-avg-size hidden',\r\n sortingField: 'avgSize',\r\n sortingType: SORTING_TYPE.number,\r\n }, {\r\n columnKey: 'avg-px-talk',\r\n renderColumnHeaderContent: () => 'Avg Px Talk',\r\n renderColumnContent: entity => entity.avgPxTalk ? numericUtils.round(entity.avgPxTalk, 2) : constants.emptyPlaceholder,\r\n className: 'text-right data-list-avg-px hidden',\r\n sortingField: 'avgPxTalk',\r\n sortingType: SORTING_TYPE.number,\r\n }, {\r\n columnKey: 'avg-color',\r\n renderColumnHeaderContent: () => 'Avg Color',\r\n renderColumnContent: entity => entity.avgColor ? numericUtils.round(entity.avgColor, 2) : constants.emptyPlaceholder,\r\n className: 'text-right data-list-avg-color hidden',\r\n sortingField: 'avgColor',\r\n sortingType: SORTING_TYPE.number,\r\n }\r\n];\r\n\r\nconst mostTradedTickersColumns = buyColumnsDefinitions.map(c => {\r\n return new ColumnBuilder(c);\r\n});\r\n","import React from 'react';\r\nimport { Plot, mainConfig } from '../../common/charts';\r\nimport { chartUtils } from '../../../utils';\r\nimport { chartPxTalkDeviation } from '../../../constants/dashboard/chartPxTalkDeviation';\r\nimport { formatUtils, numericUtils } from '../../../utils';\r\n\r\n\r\nexport interface PxTalkDeviationChartData {\r\n x: string[];\r\n y: number[];\r\n markersColors: string[];\r\n ratings: string[];\r\n}\r\n\r\nexport interface PxTalkDeviationData {\r\n data: PxTalkDeviationChartData[];\r\n maxValue: number\r\n}\r\n\r\ninterface PxTalkDeviationChartProps {\r\n chartDiv?: string;\r\n chartData: PxTalkDeviationData;\r\n}\r\n\r\nexport function PxTalkDeviationChart({chartDiv, chartData}: PxTalkDeviationChartProps) {\r\n\r\n const getHoverText = (data: PxTalkDeviationChartData) =>\r\n data.x.map((d, index) =>\r\n ` Rating: ${data.ratings[index]}
Value: ${formatUtils.formatDecimal(data.y[index], 2)}%`\r\n );\r\n\r\n const createPlotData = () => {\r\n return chartData.data.map(data => ({\r\n x: data.x,\r\n y: data.y,\r\n mode: 'markers',\r\n type: 'scatter',\r\n name: data.x,\r\n text: getHoverText(data),\r\n hoverinfo: 'text',\r\n marker: {\r\n size: chartPxTalkDeviation.markerSize,\r\n color: data.markersColors\r\n }\r\n }))\r\n };\r\n\r\n const getYRange = () => {\r\n const additionalValueInPercentagesForLastLine = 30;\r\n if(chartData.maxValue) {\r\n const maxValue = numericUtils.round(chartData.maxValue, 0);\r\n const max = maxValue + numericUtils.getPercentage(maxValue, additionalValueInPercentagesForLastLine);\r\n return [0, max];\r\n }\r\n return []\r\n };\r\n\r\n const plotData = createPlotData();\r\n\r\n const layout = {\r\n barmode: 'stack',\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: 'closest',\r\n margin: chartPxTalkDeviation.margin,\r\n hoverlabel: chartPxTalkDeviation.hoverlabel,\r\n xaxis: {\r\n showgrid: false,\r\n tickcolor: chartPxTalkDeviation.tickColor,\r\n tickfont: chartPxTalkDeviation.font,\r\n ticks: 'none'\r\n },\r\n yaxis: {\r\n fixedrange: true,\r\n separatethousands: true,\r\n zerolinecolor: chartPxTalkDeviation.tickColor,\r\n range: getYRange(),\r\n gridcolor: chartPxTalkDeviation.tickColor,\r\n ticks: 'inside',\r\n tickcolor: chartPxTalkDeviation.tickColor,\r\n tickfont: chartPxTalkDeviation.font,\r\n },\r\n };\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nPxTalkDeviationChart.defaultProps = {\r\n chartDiv: 'px-talk-deviation-chart'\r\n};\r\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { isEqual } from 'lodash';\r\nimport { PxTalkDeviationChart, PxTalkDeviationChartData, PxTalkDeviationData } from './PxTalkDeviationChart';\r\nimport { numericUtils } from '../../../utils/numeric.utils';\r\nimport { Rating } from '../../../types/enums/Rating';\r\nimport { ratingColors } from '../../../constants/dashboard/ratings';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { isRequesting } from '../../../utils';\r\nimport { RatingColorLabel } from '../RatingColorLabel';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { chartPxTalkDeviation } from '../../../constants/dashboard/chartPxTalkDeviation';\r\nimport { RatingWithGroup } from '../../../types/dashboard/RatingGroup';\r\nimport { WidgetDescription } from '../WidgetDescription';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { Currencies } from '../../../types/enums/Currency';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\n\r\nconst chartName = \"Px Talk Deviation from Color: Liquidity Barometer\";\r\n\r\nexport function PxTalkDeviationWidget() {\r\n const currentFilter = useRef([]);\r\n\r\n const pxTalkDeviation = useSelector((s: AppState) => s.dashboard.pxTalkDeviation);\r\n const requestStateFetchPxTalkDeviation = useSelector((s: AppState) => s.dashboard.requestStateFetchPxTalkDeviation);\r\n const filter = useSelector((s: AppState) => s.dashboard.filter);\r\n const notAppliedFilter = useSelector((s: AppState) => s.dashboard.notAppliedFilter);\r\n const filterActive = useSelector((s: AppState) => s.dashboard.filterActive);\r\n\r\n const [filterChanged, setFilterChanged] = useState(false);\r\n\r\n const { selectedRatings } = filter;\r\n const notAppliedSelectedRatings = notAppliedFilter.selectedRatings;\r\n\r\n useEffect(() => {\r\n const isActive =\r\n !isEqual(currentFilter.current, notAppliedSelectedRatings) &&\r\n notAppliedSelectedRatings.some(selectedRating => chartPxTalkDeviation.ratings\r\n .some(rating => rating === selectedRating)\r\n ) && filterActive;\r\n setFilterChanged(isActive);\r\n currentFilter.current = notAppliedSelectedRatings\r\n }, [notAppliedSelectedRatings, setFilterChanged, filterActive]);\r\n\r\n const average = (array: number[] = []) => {\r\n const defaultValue = -10;\r\n const sum = array.reduce((sum, current) => {\r\n sum += current;\r\n return sum;\r\n }, 0);\r\n const result = numericUtils.divideSafe(sum, array.length);\r\n return result ? numericUtils.round(result, 2) : defaultValue\r\n };\r\n\r\n const data: PxTalkDeviationData = useMemo(() => {\r\n let maxValue = 0;\r\n\r\n const data = pxTalkDeviation.map(p => {\r\n const result: PxTalkDeviationChartData = {\r\n x: [],\r\n y: [],\r\n markersColors: [],\r\n ratings: [],\r\n };\r\n const sortedByRatings: { [rating: string]: number[] } = {};\r\n p.priceTalkDeviation\r\n .filter(pxTalk => (\r\n pxTalk.currency === Currencies[0] &&\r\n (\r\n (\r\n selectedRatings.length &&\r\n chartPxTalkDeviation.ratings\r\n .some(rating =>\r\n selectedRatings.some(selectedRating => selectedRating === rating)\r\n )\r\n )\r\n ? selectedRatings.some(r => r === pxTalk.rating)\r\n : true)\r\n ))\r\n .forEach(pxTalk => {\r\n const rating = pxTalk.rating;\r\n if (!sortedByRatings[rating]) {\r\n sortedByRatings[rating] = []\r\n }\r\n sortedByRatings[rating].push(pxTalk.avgDeviation)\r\n });\r\n chartPxTalkDeviation.ratings.forEach(r => {\r\n const yValue = average(sortedByRatings[r]);\r\n result.x.push(p.name);\r\n result.y.push(yValue);\r\n result.ratings.push(r);\r\n result.markersColors.push(ratingColors[r]);\r\n if (maxValue < yValue) {\r\n maxValue = yValue\r\n }\r\n });\r\n return result\r\n });\r\n\r\n return { data, maxValue }\r\n }, [pxTalkDeviation, selectedRatings]);\r\n\r\n const chart = useMemo(() => , [data]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}

\r\n
\r\n \r\n {chart}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n","import React from 'react';\r\nimport { Plot, mainConfig } from '../../common/charts'\r\nimport { chartUtils } from '../../../utils';\r\nimport { bwicPercentOfTrace } from '../../../constants/dashboard/bwicPercentOfTrace';\r\nimport { numericUtils } from '../../../utils/numeric.utils';\r\n\r\ninterface ChartData {\r\n x: string;\r\n igPercent: number;\r\n hyPercent: number;\r\n}\r\n\r\ninterface BwicPercentOfTraceChartProps {\r\n chartData: ChartData[];\r\n chartDiv: string;\r\n}\r\n\r\nexport function BwicPercentOfTraceChart({ chartData, chartDiv }: BwicPercentOfTraceChartProps) {\r\n const createPlotData = () => {\r\n const chartLineIg = {\r\n x: chartData.map(data => data.x),\r\n y: chartData.map(data => data.igPercent),\r\n mode: 'lines+markers',\r\n name: 'IG',\r\n hoverinfo: 'text',\r\n text: chartData.map(data => `IG Value: ${data.igPercent}%`),\r\n line: { width: bwicPercentOfTrace.lineWidth, color: bwicPercentOfTrace.igLineColor, shape: 'linear' },\r\n marker: {\r\n size: bwicPercentOfTrace.markerSize,\r\n color: bwicPercentOfTrace.igMarkerColor,\r\n symbol: 'diamond'\r\n }\r\n };\r\n const chartLineHy = {\r\n x: chartData.map(data => data.x),\r\n y: chartData.map(data => data.hyPercent),\r\n mode: 'lines+markers',\r\n name: 'HY',\r\n hoverinfo: 'text',\r\n text: chartData.map(data => `HY Value: ${data.hyPercent}%`),\r\n line: { width: bwicPercentOfTrace.lineWidth, color: bwicPercentOfTrace.hyLineColor, shape: 'linear' },\r\n marker: {\r\n size: bwicPercentOfTrace.markerSize,\r\n color: bwicPercentOfTrace.hyMarkerColor,\r\n symbol: 'diamond'\r\n }\r\n };\r\n return [chartLineIg, chartLineHy]\r\n };\r\n\r\n const plotData = createPlotData();\r\n\r\n const getYRange = () => {\r\n const igPercent = chartData.map(data => data.igPercent);\r\n const hyPercent = chartData.map(data => data.hyPercent);\r\n const allYValues = igPercent.concat(hyPercent);\r\n if(allYValues.length) {\r\n const maxValue = Math.max(...allYValues);\r\n const max = chartUtils.roundToNumber(maxValue, bwicPercentOfTrace.additionalValueInPercentagesForLastLine) +\r\n numericUtils.getPercentage(maxValue, bwicPercentOfTrace.additionalValueInPercentagesForLastLine);\r\n return [0, max];\r\n }\r\n return []\r\n };\r\n\r\n const layout = {\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: 'closest',\r\n margin: bwicPercentOfTrace.margin,\r\n autoscale: false,\r\n hoverlabel: bwicPercentOfTrace.hoverlabel,\r\n xaxis: {\r\n showgrid: false,\r\n tickcolor: bwicPercentOfTrace.tickColor,\r\n tickfont: bwicPercentOfTrace.font,\r\n ticks: 'none',\r\n },\r\n yaxis: {\r\n titlefont: bwicPercentOfTrace.titlefont,\r\n separatethousands: true,\r\n zerolinecolor: bwicPercentOfTrace.tickColor,\r\n gridcolor: bwicPercentOfTrace.tickColor,\r\n ticks: 'inside',\r\n tickcolor: bwicPercentOfTrace.tickColor,\r\n tickfont: bwicPercentOfTrace.font,\r\n rangemode:'tozero',\r\n range: getYRange()\r\n },\r\n };\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nBwicPercentOfTraceChart.defaultProps = {\r\n chartDiv: 'bwic-percent-of-trace'\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport moment from 'moment';\r\nimport { useSelector } from 'react-redux';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { isRequesting } from '../../../utils';\r\nimport { numericUtils } from '../../../utils/numeric.utils';\r\nimport { BwicPercentOfTraceChart } from './BwicPercentOfTraceChart';\r\nimport { constants } from '../../../constants';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\n\r\nconst chartName = \"BWICs as % of TRACE\";\r\n\r\nexport function BwicPercentOfTraceWidget() {\r\n const bwicPercentOfTrace = useSelector((s: AppState) => s.dashboard.bwicPercentOfTrace);\r\n const requestStateFetchBwicPercentOfTrace = useSelector((s: AppState) => s.dashboard.requestStateFetchBwicPercentOfTrace);\r\n\r\n const chartData = useMemo(() => bwicPercentOfTrace.map(data => ({\r\n x: moment.utc(data.date).format(constants.dashboardDateFormat),\r\n igPercent: numericUtils.round(data.igPercent, 2),\r\n hyPercent: numericUtils.round(data.hyPercent, 2)\r\n })), [bwicPercentOfTrace]);\r\n\r\n const chart = useMemo(() => , [chartData]);\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}

\r\n
\r\n \r\n {chart}\r\n
\r\n
HY
\r\n
IG
\r\n
\r\n
\r\n All CLO/CDO trades involving FINRA participants are recorded on TRACE and aggregated daily.\r\n To determine how much trading volume is conducted via BWICs, we divide our recorded BWIC volumes\r\n by TRACE-reported volumes, using 5-day rolling averages for each metric. Historically, BWICs have\r\n represented one-quarter to one-third of all CLO trading volume. This graph shows how 'open' the\r\n market is at any given time. High values indicate more activity on BWICs, while lower values\r\n indicate more out-of-comp trades are occurring.\r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n","import { useSelector } from \"react-redux\";\r\nimport { AppState } from \"../../../types/state/AppState\";\r\nimport { KWatchNewsWidget } from './KWatchNewsWidget';\r\n\r\nexport const DashboardKWatchNewsWidget = () => {\r\n const kWatchNews = useSelector((s: AppState) => s.dashboard.kWatchNews);\r\n const requestStateFetchKWatchNews = useSelector(\r\n (s: AppState) => s.dashboard.requestStateFetchKWatchNews\r\n );\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import React, { useMemo, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { constants, SORT, SORTING_TYPE } from '../../../constants';\r\nimport { Table } from '../../bidding/common/table';\r\nimport { isRequesting, isRequestSuccess } from '../../../utils';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { Pagination } from '../tables/Pagination';\r\nimport { useSortedList } from '../../../effects';\r\nimport { BiggestMoversDetails } from '../../../types/dashboard/BiggestMovers';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { DashboardNoSelectedFilters } from '../DashboardNoSelectedFilters';\r\nimport { IColumnDefinition } from '../../bidding/common/table/types/ColumnDefinition';\r\nimport dateTimeUtils from '../../../utils/dateTime.utils';\r\nimport { ColumnBuilder } from '../../bidding/common/table/columns/column-builder/ColumnBuilder';\r\nimport { formatUtils } from '../../../utils/format.utils';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\n\r\nconst chartName = \"Biggest Movers\";\r\n\r\nexport function BiggestMoversWidget() {\r\n const itemsOnPage = 7;\r\n const biggestMovers= useSelector(biggestMoversSelector);\r\n const requestStateFetchBiggestMovers = useSelector((s: AppState) => s.dashboard.requestStateFetchBiggestMovers);\r\n const filterActive = useSelector((s: AppState) => s.dashboard.filterActive);\r\n const biggestMoversDetails = useSelector((s: AppState) => s.dashboard.biggestMovers.details);\r\n\r\n const [sortBy, setSortBy] = useState('absDifference');\r\n const [sortDirection, setSortDirection] = useState(SORT.DESC);\r\n\r\n const [sortedDataItems] = useSortedList(biggestMovers.details, sortBy, sortDirection);\r\n\r\n const setSortParams = (field: string, direction: string) => {\r\n setSortBy(field);\r\n setSortDirection(direction);\r\n };\r\n\r\n const renderTable = useMemo(() => {\r\n if (isRequestSuccess(requestStateFetchBiggestMovers) && !biggestMoversDetails.length) {\r\n return \r\n }\r\n if (isRequestSuccess(requestStateFetchBiggestMovers) && !sortedDataItems.length) {\r\n return \r\n }\r\n return (\r\n \r\n {(items: BiggestMoversDetails[]) => (\r\n
\r\n )}\r\n \r\n )\r\n }, [sortedDataItems, requestStateFetchBiggestMovers, biggestMoversDetails.length]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

\r\n {chartName}\r\n rolling 30 days\r\n

\r\n
\r\n \r\n {renderTable}\r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nconst biggestMoversSelector = createSelector([\r\n (s: AppState) => s.dashboard.biggestMovers,\r\n (s: AppState) => s.dashboard.filter.selectedRatings,\r\n (s: AppState) => s.dashboard.filter.selectedCurrencies,\r\n], (\r\n biggestMovers,\r\n selectedRatings,\r\n selectedCurrencies\r\n) => {\r\n let details = biggestMovers.details;\r\n if (selectedRatings.length) {\r\n details = details.filter(i => selectedRatings.some(r => r === i.rating))\r\n }\r\n if (selectedCurrencies.length) {\r\n details = details.filter(i => selectedCurrencies.some(c => c === i.currency))\r\n }\r\n return {\r\n ...biggestMovers,\r\n details\r\n }\r\n});\r\n\r\nconst biggestMoversColumnsDefinitions: IColumnDefinition[] = [\r\n {\r\n columnKey: 'ticker',\r\n renderColumnHeaderContent: () => 'Ticker',\r\n renderColumnContent: entity => entity.ticker,\r\n headerClassName: 'data-list-ticker',\r\n bodyClassName: 'data-list-ticker',\r\n sortingField: 'ticker',\r\n sortingType: SORTING_TYPE.string,\r\n },{\r\n columnKey: 'rating',\r\n renderColumnHeaderContent: () => 'Rtg',\r\n renderColumnContent: entity => entity.rating,\r\n headerClassName: 'data-list-rating',\r\n bodyClassName: 'data-list-rating',\r\n sortingField: 'rating',\r\n sortingType: SORTING_TYPE.rating\r\n },{\r\n columnKey: 'last-price',\r\n renderColumnHeaderContent: () => 'Last Price',\r\n renderColumnContent: entity => formatUtils.formatDecimal(entity.lastPrice, 2),\r\n headerClassName: 'text-right data-list-price p-r-0',\r\n bodyClassName: 'text-right data-list-price p-r-0',\r\n sortingField: 'lastPrice',\r\n sortingType: SORTING_TYPE.number,\r\n },{\r\n columnKey: 'prev-price',\r\n renderColumnHeaderContent: () => 'Prev Price',\r\n renderColumnContent: entity => formatUtils.formatDecimal(entity.prevPrice, 2),\r\n headerClassName: 'text-right data-list-price p-r-0',\r\n bodyClassName: 'text-right data-list-price p-r-0',\r\n sortingField: 'prevPrice',\r\n sortingType: SORTING_TYPE.number\r\n },{\r\n columnKey: 'difference',\r\n renderColumnHeaderContent: () => 'Diff',\r\n renderColumnContent: entity => formatUtils.formatDecimal(entity.difference, 2),\r\n headerClassName: 'text-right data-list-diff p-r-0',\r\n bodyClassName: 'text-right data-list-diff p-r-0',\r\n sortingField: 'difference',\r\n sortingType: SORTING_TYPE.number,\r\n },{\r\n columnKey: 'abs-difference',\r\n renderColumnHeaderContent: () => 'Abs Diff',\r\n renderColumnContent: entity => formatUtils.formatDecimal(entity.absDifference, 2),\r\n headerClassName: 'text-right data-list-abs-diff hidden',\r\n bodyClassName: 'text-right data-list-abs-diff hidden',\r\n sortingField: 'absDifference',\r\n sortingType: SORTING_TYPE.number,\r\n },{\r\n columnKey: 'last-date',\r\n renderColumnHeaderContent: () => 'Last Date',\r\n renderColumnContent: entity => entity.lastDate\r\n ? dateTimeUtils.utcToLocalString(entity.lastDate, constants.dashboardDateFormat) : constants.emptyPlaceholder,\r\n headerClassName: 'data-list-last-date hidden',\r\n bodyClassName: 'data-list-last-date hidden',\r\n sortingField: 'lastDate',\r\n sortingType: SORTING_TYPE.date,\r\n },{\r\n columnKey: 'prev-date',\r\n renderColumnHeaderContent: () => 'Prev Date',\r\n renderColumnContent: entity => entity.prevDate\r\n ? dateTimeUtils.utcToLocalString(entity.prevDate, constants.dashboardDateFormat) : constants.emptyPlaceholder,\r\n headerClassName: 'data-list-prev-date hidden',\r\n bodyClassName: 'data-list-prev-date hidden',\r\n sortingField: 'prevDate',\r\n sortingType: SORTING_TYPE.date\r\n },{\r\n columnKey: 'days-diff',\r\n renderColumnHeaderContent: () => 'Days Diff',\r\n renderColumnContent: entity => entity.daysBetweenTrade,\r\n headerClassName: 'text-right data-list-days-diff hidden',\r\n bodyClassName: 'text-right data-list-days-diff hidden',\r\n sortingField: 'daysBetweenTrade',\r\n sortingType: SORTING_TYPE.number,\r\n },{\r\n columnKey: 'price-velocity',\r\n renderColumnHeaderContent: () => 'Price Velocity',\r\n renderColumnContent: entity => formatUtils.formatDecimal(entity.priceVelocity, 2),\r\n headerClassName: 'text-right data-list-price-velocity hidden',\r\n bodyClassName: 'text-right data-list-price-velocity hidden',\r\n sortingField: 'priceVelocity',\r\n sortingType: SORTING_TYPE.number,\r\n }\r\n];\r\n\r\nconst biggestMoversColumns = biggestMoversColumnsDefinitions.map(c => {\r\n return new ColumnBuilder(c);\r\n});\r\n","import React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport xor from 'lodash/xor';\r\nimport isEqual from 'lodash/isEqual';\r\nimport { OnHoverTooltip } from '../common';\r\nimport { dashboardClearFilter, dashboardSetFilter, dashboardSetNotAppliedFilter } from '../../actions';\r\nimport { AppState } from '../../types/state/AppState';\r\nimport { RatingGroup } from '../../types/dashboard/RatingGroup';\r\nimport { Currencies, Currency } from '../../types/enums/Currency';\r\nimport IconSVG from '../../styles/svg-icons';\r\nimport { FilterClear } from '../filters';\r\nimport { FilterSelect } from '../common/filters/FilterSelect';\r\nimport { Rating, Ratings } from '../../types/enums/Rating';\r\nimport { ActionBlocker } from '../access/ActionBlocker';\r\nimport { SubscriptionFeature } from '../../types/billing/SubscriptionFeature';\r\nimport { FeatureButton } from '../access/FeatureButton';\r\n\r\nexport function Filter() {\r\n const dispatch = useDispatch();\r\n const filter = useSelector((state: AppState) => state.dashboard.filter);\r\n const notAppliedFilter = useSelector((state: AppState) => state.dashboard.notAppliedFilter);\r\n\r\n const onChangeRating = (filter: (Rating | RatingGroup)[]) => {\r\n const selectedRatings = xor(filter, notAppliedFilter.selectedRatings);\r\n dispatch(dashboardSetNotAppliedFilter({\r\n ...notAppliedFilter,\r\n selectedRatings\r\n }));\r\n };\r\n\r\n const onChangeCurrency = (filter: Currency[]) => {\r\n const selectedCurrencies = xor(filter, notAppliedFilter.selectedCurrencies);\r\n dispatch(dashboardSetNotAppliedFilter({\r\n ...notAppliedFilter,\r\n selectedCurrencies\r\n }));\r\n };\r\n\r\n const onClearFilters = () => {\r\n dispatch(dashboardClearFilter());\r\n };\r\n\r\n const handleApply = () => {\r\n dispatch(dashboardSetFilter(notAppliedFilter));\r\n };\r\n\r\n const disabledApplyButton = () => (isEqual(notAppliedFilter, filter));\r\n const isRatingFilterApplied = isEqual(notAppliedFilter.selectedRatings, filter.selectedRatings);\r\n const isCurrencyFilterApplied = isEqual(notAppliedFilter.selectedCurrencies, filter.selectedCurrencies);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n ({\r\n text: x,\r\n value: x,\r\n selected: (\r\n notAppliedFilter.selectedRatings.some(el => el === x)\r\n ),\r\n visible: true,\r\n disabled: false\r\n }))\r\n }\r\n onChangeItemSelection={item => onChangeRating([item.value])}\r\n onClearAll={() => onChangeRating(notAppliedFilter.selectedRatings)}\r\n onSelectAll={() => onChangeRating(Ratings)}\r\n />\r\n \r\n \r\n ({\r\n text: x,\r\n value: x,\r\n selected: (\r\n notAppliedFilter.selectedCurrencies.some(el => el === x)\r\n ),\r\n visible: true,\r\n disabled: false\r\n }))\r\n }\r\n onChangeItemSelection={item => onChangeCurrency([item.value])}\r\n onClearAll={() => onChangeCurrency(notAppliedFilter.selectedCurrencies as Currency[])}\r\n onSelectAll={() => onChangeCurrency(Currencies)}\r\n />\r\n \r\n \r\n \r\n Apply\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React, { FC, useMemo } from 'react';\r\nimport moment from 'moment';\r\nimport { mainConfig, Plot } from '../../common/charts'\r\nimport { kIndicator } from '../../../constants/dashboard/kIndicator';\r\nimport { KIndicator } from '../../../types/dashboard/KIndicator';\r\nimport {minBy, maxBy} from 'lodash';\r\n\r\ninterface Props {\r\n chartDiv?: string;\r\n data: KIndicator[];\r\n}\r\n\r\nexport const KIndicatorChart: FC = ({ chartDiv, data }) => {\r\n const dates = data.map(d => d.date);\r\n\r\n const trace = {\r\n x: dates,\r\n y: data.map(d => d.value),\r\n hoverinfo: 'none',\r\n mode: 'lines',\r\n type: 'scatter',\r\n name: 'k-indicator',\r\n marker: kIndicator.traceMarker\r\n };\r\n\r\n const traceZeroLine = {\r\n x: dates,\r\n y: data.map(() => 0),\r\n mode: 'lines',\r\n type: 'scatter',\r\n name: 'k-indicator-zero-line',\r\n hoverinfo: 'none',\r\n line: { dash: 'dot', width: 1, color: kIndicator.zerolinecolor },\r\n };\r\n\r\n const range = useMemo(() => [\r\n Math.floor(minBy(data, (d) => d.value)?.value || 0),\r\n Math.ceil(maxBy(data, (d) => d.value)?.value || 0)\r\n ], [data])\r\n\r\n const totalYTicks = Math.abs(range[0]) + Math.abs(range[1]);\r\n const endFirstShape = (totalYTicks - (range[1] - 1)) / totalYTicks ;\r\n const endSecondShape = Math.abs(range[0] + 1) / totalYTicks\r\n\r\n const layout = {\r\n font: kIndicator.layoutFont,\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: 'closest',\r\n margin: kIndicator.margin,\r\n autoscale: false,\r\n hoverlabel: kIndicator.hoverlabel,\r\n xaxis: {\r\n type: 'date',\r\n showgrid: false,\r\n tickcolor: kIndicator.tickColor,\r\n tickfont: kIndicator.tickFont,\r\n range: [moment().subtract(1, 'year').toDate(), moment().toDate()],\r\n tickformat: kIndicator.xAxisTickFormat,\r\n dtick: kIndicator.xAxisDTick,\r\n /* rangeslider: {\r\n bgcolor: 'rgba(79, 123, 156, 0.2)',\r\n },*/\r\n },\r\n yaxis: {\r\n titlefont: kIndicator.titlefont,\r\n gridcolor: kIndicator.tickColor,\r\n tickcolor: kIndicator.tickColor,\r\n tickfont: kIndicator.tickFont,\r\n dtick: kIndicator.yaxisDtick,\r\n range,\r\n zeroline: false,\r\n showgrid: false,\r\n\r\n },\r\n shapes: [\r\n {\r\n layer: 'below',\r\n xref: 'paper',\r\n yref: 'paper',\r\n x0: 0,\r\n x1: 1,\r\n y0: endFirstShape,\r\n y1: 1,\r\n type: 'rect',\r\n fillcolor: '#B2EDC7',\r\n line: {\r\n width: 0,\r\n }\r\n },\r\n {\r\n layer: 'below',\r\n xref: 'paper',\r\n yref: 'paper',\r\n x0: 0,\r\n x1: 1,\r\n y0: endSecondShape,\r\n y1: endFirstShape,\r\n type: 'rect',\r\n fillcolor: '#FFE8B6',\r\n line: {\r\n width: 0,\r\n }\r\n },\r\n {\r\n layer: 'below',\r\n xref: 'paper',\r\n yref: 'paper',\r\n x0: 0,\r\n x1: 1,\r\n y0: 0,\r\n y1: endSecondShape,\r\n type: 'rect',\r\n fillcolor: '#FCDED4',\r\n line: {\r\n width: 0,\r\n }\r\n },\r\n ]\r\n };\r\n\r\n return (\r\n \r\n )\r\n};\r\n\r\nKIndicatorChart.defaultProps = {\r\n chartDiv: 'k-indicator-chart'\r\n};\r\n","import React, { FC } from 'react';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { WidgetDescription } from '../WidgetDescription';\r\nimport { KIndicatorChart } from './KIndicatorChart';\r\nimport { useSelector } from 'react-redux';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { isRequesting } from '../../../utils';\r\n\r\nconst title = \"K-Indicator\";\r\n\r\nexport const KIndicatorWidget: FC = () => {\r\n const dataKIndicator = useSelector((s: AppState) => s.dashboard.kIndicator);\r\n const requestStateFetchKIndicator = useSelector((s: AppState) => s.dashboard.requestStateFetchKIndicator);\r\n \r\n return (\r\n \r\n \r\n \r\n

{title}

\r\n
\r\n \r\n \r\n Values close to zero indicate the market is neutral, with lower values indicating more stress and higher values indicating less stress.\r\n
Values below -1 correspond to a very stressed market, and values below -2 imply an extremely stressed market.\r\n
Values above 1 correspond to a very well-functioning market, and values above 2 imply near-perfect liquidity.\"\r\n />\r\n
\r\n
\r\n
\r\n )\r\n};\r\n","import { useEffect, useRef } from 'react';\r\nimport { useHistory, withRouter } from 'react-router';\r\nimport { trim } from 'lodash';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport classNames from 'classnames';\r\nimport { dashboardInit, dashboardResetNotAppliedFilter } from '../../actions/dashboard.actions';\r\nimport { BarScheduledBwicsWidget } from './barScheduledBwics/BarScheduledBwicsWidget';\r\nimport { HeatMapScheduledBwicsWidget } from './heatmapScheduledBwics/HeatmapScheduledBwicsWidget';\r\nimport { BoxPxTalkAndColorWidget } from './boxPxTalkAndColor/BoxPxTalkAndColorWidget';\r\nimport { BarDntWidget } from './barDnt/BarDntWidget';\r\nimport { MyScheduledBwicsWidget } from './mySellBuy/MyScheduledBwicsWidget';\r\nimport { PortfolioWidget } from './portfolio/PortfolioWidget';\r\nimport { Preloader } from '../common';\r\nimport { searchSecuritiesActions } from '../../actions';\r\nimport { BarColorWidget } from './barColor/BarColorWidget';\r\nimport { BarSameDayWidget } from './sameDay/BarSameDayWidget';\r\nimport { DailyTradingStatsWidget } from './dailyTradingStats/DailyTradingStatsWidget';\r\nimport { PriceLevelWidget } from './priceLevel/PriceLevelWidget';\r\nimport { DtcSellingBuyingWidget } from './dtcSellingBuying/DtcSellingBuyingWidget';\r\nimport { DtcIgHyWidget } from './dtcIgHy/DtcIgHyWidget';\r\nimport { AAAPriceLevelWidget } from './aaaPriceLevel/AAAPriceLevelWidget';\r\nimport { MostTradedTickersWidget } from './mostTradedTickers/MostTradedTickersWidget';\r\nimport { PxTalkDeviationWidget } from './pxTalkDeviation/PxTalkDeviationWidget';\r\nimport { BwicPercentOfTraceWidget } from './bwicPercentOfTrace/BwicPercentOfTraceWidget';\r\nimport { DashboardKWatchNewsWidget } from './k-watchNews/DashboardKWatchNewsWidget';\r\nimport { BiggestMoversWidget } from './biggestMovers/BiggestMoversWidget';\r\nimport { isRequestSuccess } from '../../utils';\r\nimport { Filter } from './Filter';\r\nimport { TopIssuersWidget } from './topIssuers/TopIssuersWidget';\r\nimport { TopArrangersWidget } from './topIssuers/TopArrangersWidget';\r\nimport { TopTrusteesWidget } from './topIssuers/TopTrusteesWidget';\r\nimport { TopStaticDeals } from './topIssuers/TopStaticDeals';\r\nimport { TopDebutDeals } from './topIssuers/TopDebutDeals';\r\nimport { KIndicatorWidget } from './k-indicator/KIndicatorWidget';\r\nimport { IssueTransactionVolumeWidget } from './issueTransactionVolume/IssueTransactionVolumeWidget';\r\nimport { UsBslEsgNewIssueWidget } from './usBslEsgNewIssue/UsBslEsgNewIssueWidget';\r\nimport { UsBslEuCompliantDealsWidget } from './usBslEuCompliantDeals/UsBslEuCompliantDealsWidget';\r\nimport { ShortLongDatedDealsWidget } from './shortLongDatedDeals/ShortLongDatedDealsWidget';\r\nimport { IssuanceSpreadWidget } from './issuanceSpread/IssuanceSpreadWidget';\r\nimport { UsBslNewIssueWeeklySpreads } from './usBslNewIssueSpreads/UsBslNewIssueWeeklySpreads';\r\nimport { pipelineRequestCriteria, roles, routes } from '../../constants';\r\nimport { useScheduledBwics } from './hooks/useScheduledBwics';\r\nimport { ShowFor } from '../access';\r\nimport { IntersectionObserverProvider } from '../common/IntersectionObsereverProvider';\r\n\r\nfunction DashboardComponent({ location }) {\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const anchorElement = useRef(null);\r\n const requestStateInitDashboard = useSelector((s) => s.dashboard.requestStateInitDashboard);\r\n const filterActive = useSelector((s) => s.dashboard.filterActive);\r\n\r\n useScheduledBwics(false);\r\n\r\n useEffect(() => {\r\n dispatch(dashboardInit());\r\n\r\n return () => {\r\n dispatch(searchSecuritiesActions.reset());\r\n dispatch(dashboardResetNotAppliedFilter());\r\n };\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n anchorElement.current?.scrollIntoView({ behavior: 'smooth' });\r\n }, []);\r\n\r\n const setAnchorRef = (anchor) => {\r\n if (anchor === trim(location.hash, '#')) {\r\n return anchorElement;\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n const redirectToIssuanceMonitor = () => history.push(routes.AMRPipeline)\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

Dashboard

\r\n
\r\n
\r\n \r\n
\r\n \r\n {\r\n isRequestSuccess(requestStateInitDashboard) &&\r\n \r\n

BWICs Volume & Price

\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

Market Health Indicators

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n

Issuance Monitor

\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 \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n

My Portfolio

\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\nexport const Dashboard = withRouter(DashboardComponent);\r\n","import { ColumnBuilder } from \"../../../bidding/common/table/columns/column-builder/ColumnBuilder\";\r\nimport { IColumnDefinition } from \"../../../bidding/common/table/types/ColumnDefinition\";\r\nimport { TopFilterTypes } from \"../../../../types/dashboard/RedirectFilterTypes\";\r\nimport { AmrTransaction } from \"../../../../types/amr-pipeline/models/AmrTransaction\";\r\nimport { OriginatingTransaction } from \"../../../../types/amr-pipeline/models/OriginatingTransaction\";\r\nimport { PipelineWidgetColumn } from \"../../../../types/dashboard/PipelineWidgetColumn\";\r\nimport { formatUtils } from \"../../../../utils\";\r\nimport { constants } from \"../../../../constants\";\r\nimport moment from \"moment\";\r\nimport { ManagerLink } from '../../../amrPipeline/common/ManagerLink';\r\nimport { FilterLinkIcon } from '../../../amrPipeline/common/FilterLinkIcon';\r\nimport { FilterRelatedTransactionsIcon } from '../../../amrPipeline/common/FilterRelatedTransactionsIcon';\r\nimport { DetailedPageLink } from \"../../../amrPipeline/common/DetailedPageLink\";\r\nimport { OnHoverTooltip } from \"../../../common\";\r\nimport { ActionBlocker } from \"../../../access/ActionBlocker\";\r\nimport { SubscriptionFeature } from \"../../../../types/billing/SubscriptionFeature\";\r\n\r\nconst buyColumnsDefinitions: IColumnDefinition<\r\n AmrTransaction | OriginatingTransaction\r\n>[] = [\r\n {\r\n columnKey: PipelineWidgetColumn.dealName,\r\n renderColumnHeaderContent: () => \"Deal Name\",\r\n renderColumnContent: (transaction) => (\r\n \r\n {blocked => (\r\n \r\n \r\n \r\n )}\r\n \r\n ),\r\n headerClassName: \"data-list-cell-xs-flexible\",\r\n bodyClassName: \"data-list-cell-xs-flexible\",\r\n sortingField: \"dealLegalName\",\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.relatedTransactions,\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: ({ dealLegalName, dealReferenceName, numberOfDealPublishedTransactions }, context) =>\r\n numberOfDealPublishedTransactions > 1 &&\r\n \r\n {blocked => (\r\n \r\n )}\r\n ,\r\n headerClassName: 'data-list-cell-xxxs',\r\n bodyClassName: 'data-list-cell-xxxs',\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.collateralManager,\r\n renderColumnHeaderContent: () => \"Manager\",\r\n renderColumnContent: ({ collateralManager }, context) =>\r\n collateralManager ? (\r\n \r\n ) : constants.emptyPlaceholder,\r\n headerClassName: \"data-list-cell-xs-flexible\",\r\n bodyClassName: \"data-list-cell-xs-flexible\",\r\n sortingField: \"collateralManager\",\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.redirectToIm,\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: ({ collateralManager }, context) =>\r\n collateralManager &&\r\n \r\n {blocked => (\r\n \r\n )}\r\n ,\r\n headerClassName: \"data-list-cell-xxxs\",\r\n bodyClassName: \"data-list-cell-xxxs\",\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.collateralType,\r\n renderColumnHeaderContent: () => \"Collat.\",\r\n renderColumnContent: ({ collateralType }) =>\r\n formatUtils.formatCollateralType(collateralType),\r\n sortingField: \"collateralType\",\r\n headerClassName: \"data-list-cell-xs\",\r\n bodyClassName: \"data-list-cell-xs\",\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.currency,\r\n renderColumnHeaderContent: () => \"Ccy\",\r\n renderColumnContent: ({ currency }) => currency ? currency.code : constants.emptyPlaceholder,\r\n sortingField: \"currency\",\r\n headerClassName: \"data-list-cell-xxs-02\",\r\n bodyClassName: \"data-list-cell-xxs-02\",\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.pricingDate,\r\n renderColumnHeaderContent: () => \"Pricing Date\",\r\n renderColumnContent: ({ pricingDate }) =>\r\n moment(pricingDate).format(constants.dateFormat),\r\n headerClassName: \"data-list-cell-sm\",\r\n bodyClassName: \"data-list-cell-sm\",\r\n sortingField: \"pricingDate\",\r\n },\r\n];\r\nexport const topDebutDealsColumns = buyColumnsDefinitions.map((c) => {\r\n return new ColumnBuilder(c);\r\n});\r\n","import { useEffect, useState } from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { AppState } from \"../../../types/state/AppState\";\r\nimport { isRequesting } from \"../../../utils\";\r\nimport { SORT, SORTING_TYPE, issuanceMonitorWidget } from \"../../../constants\";\r\nimport { Table } from \"../../bidding/common/table\";\r\nimport { topDebutDealsColumns } from \"./columns/TopDebutDealsColumns\";\r\nimport { Pagination } from \"../tables/Pagination\";\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from \"../widget\";\r\nimport { DashboardSkeleton } from \"../DashboardSkeleton\";\r\nimport { dashboardExportTopDebutDeals, dashboardFetchTopDebutDeals } from \"../../../actions/dashboard.actions\";\r\nimport { getAvailableYears, getSortingParamsForStatisticExport } from \"./top-list.utils\";\r\nimport { YearSelector } from \"../../controls/YearSelector\";\r\nimport { DashboardNoSelectedFilters } from \"../DashboardNoSelectedFilters\";\r\nimport { AmrClass } from \"../../../types/amr-pipeline/models/AmrClass\";\r\nimport { OriginatingTransaction } from \"../../../types/amr-pipeline/models/OriginatingTransaction\";\r\nimport { useSortedList } from \"../../../effects\";\r\nimport { ShowFor } from \"../../access\";\r\nimport ImExportButton from \"../../amrPipeline/common/ImExportButton\";\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { hasWidgetsAccess } from '../../../utils/amr-pipeline.utils';\r\nimport moment from 'moment';\r\nimport { ChartRequiredFeature } from \"../../access/ChartRequiredFeature\";\r\n\r\nconst availableYears: number[] = getAvailableYears(issuanceMonitorWidget.dealsMinYear);\r\n\r\nconst getSortType = (type: string) => {\r\n switch (type) {\r\n case \"collateralManager\":\r\n return SORTING_TYPE.company;\r\n case \"currency\":\r\n return SORTING_TYPE.transactionCurrency;\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\ninterface Props {\r\n onListItemClick?: () => void;\r\n}\r\n\r\nexport function TopDebutDeals({ onListItemClick }: Props) {\r\n const [year, setYear] = useState(availableYears[0]);\r\n const [page, setPage] = useState(1);\r\n const [sortBy, setSortBy] = useState(\"\");\r\n const [sortDirection, setSortDirection] = useState(SORT.ASC);\r\n\r\n const topDebutDeals = useSelector((s: AppState) => s.dashboard.topDebutDeals);\r\n const requestStateFetchTopDebutDeals = useSelector((s: AppState) => s.dashboard.requestStateFetchTopDebutDeals);\r\n const requestStateExportDebutManagers = useSelector((s: AppState) => s.dashboard.requestStateExportDebutManagers);\r\n\r\n const hasAccess = hasWidgetsAccess(SubscriptionFeature.DebutManagersTable);\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n hasAccess && dispatch(dashboardFetchTopDebutDeals(moment().year()));\r\n }, [dispatch, hasAccess]);\r\n\r\n const columnContext = () => {\r\n return {\r\n onListItemClick: onListItemClick,\r\n };\r\n };\r\n\r\n const sortByType = getSortType(sortBy)\r\n const [sortedDataItems] = useSortedList(topDebutDeals, sortBy, sortDirection, sortByType);\r\n\r\n const handleSortChange = (field: string, direction: string) => {\r\n setSortBy(field);\r\n setSortDirection(direction);\r\n };\r\n\r\n const handleYearChange = (yearValue?: number) => {\r\n setYear(yearValue);\r\n dispatch(dashboardFetchTopDebutDeals(yearValue));\r\n };\r\n\r\n const handleExportChart = () =>\r\n dispatch(\r\n dashboardExportTopDebutDeals(\r\n year,\r\n getSortingParamsForStatisticExport(sortBy, sortDirection),\r\n )\r\n );\r\n\r\n const onPageChanged = (selectedPage: number) => setPage(selectedPage);\r\n\r\n const renderTable = () =>\r\n sortedDataItems.length > issuanceMonitorWidget.itemsOnPage ? (\r\n \r\n {(items: AmrClass[] | OriginatingTransaction[]) => (\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n );\r\n\r\n const chartName = \"Debut Managers\";\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}

\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 {sortedDataItems.length ? renderTable() : }\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { DashboardNoData } from './DashboardNoData';\r\n\r\nexport const DashboardNoSelectedFilters = ({ text = 'No data is available for the selected filters.' }) => (\r\n
\r\n \r\n
\r\n);\r\n","import React from 'react';\r\nimport { UserSlim } from '../../types/account/UserSlim';\r\nimport { OnHoverTooltip } from '../common/OnHoverTooltip';\r\nimport { constants } from '../../constants';\r\n\r\ninterface DealerUserProps {\r\n user: UserSlim\r\n}\r\n\r\nexport const DealerUser: React.FC = ({ user }) => {\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {user.firstName} {user.lastName}\r\n \r\n
\r\n
\r\n \r\n {user.title || constants.emptyPlaceholder}\r\n \r\n
\r\n
\r\n \r\n \r\n {{user.email} || constants.emptyPlaceholder}\r\n \r\n \r\n
\r\n
{user.phone || constants.emptyPlaceholder}
\r\n
\r\n )\r\n};\r\n","import * as React from 'react';\r\nimport IconSVG from '../../styles/svg-icons';\r\nimport { ContextMenu } from '../controls';\r\nimport { ListBuilder } from '../../utils/ListBuilder';\r\nimport { roles } from '../../constants';\r\n\r\ninterface Props {\r\n canEditContact?: boolean;\r\n sending: boolean;\r\n disabled?: boolean;\r\n onSend: () => void;\r\n onEditContact?: () => void;\r\n onDeleteContact?: () => void;\r\n onMenuShow: () => void;\r\n onMenuHide: () => void;\r\n invitationSent?: boolean;\r\n}\r\n\r\nexport const DealerContactOptions: React.FC = (\r\n {\r\n canEditContact = false,\r\n sending,\r\n disabled = false,\r\n onEditContact,\r\n onDeleteContact,\r\n onSend,\r\n onMenuShow,\r\n onMenuHide,\r\n invitationSent\r\n }\r\n) => {\r\n const handleEditContact = () => {\r\n onEditContact && onEditContact();\r\n };\r\n\r\n const handleDeleteContact = () => {\r\n onDeleteContact && onDeleteContact();\r\n };\r\n\r\n const handleInviteToJoin = () => {\r\n if (!sending) {\r\n onSend();\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n menuItems={new ListBuilder()\r\n .addWhen(() => canEditContact, {\r\n text: 'Edit Contact',\r\n action: handleEditContact\r\n })\r\n .addWhen(() => !invitationSent, {\r\n text: 'Invite to Join',\r\n requiredRoles: [roles.SellerTrader],\r\n action: handleInviteToJoin\r\n })\r\n .addWhen(() => canEditContact, {\r\n text: 'Delete Contact',\r\n action: handleDeleteContact\r\n })\r\n .result()\r\n }\r\n onShow={onMenuShow}\r\n onHide={onMenuHide}\r\n />\r\n );\r\n};\r\n","import * as React from 'react';\r\nimport cn from 'classnames';\r\nimport { Contact } from '../../types/company/Contact';\r\nimport { DealerContactOptions } from './DealerContactOptions';\r\nimport { dealerListActions } from '../../actions/dealer-list.actions';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { AppState } from '../../types/state/AppState';\r\nimport { OnHoverTooltip } from '../common/OnHoverTooltip';\r\nimport { nameUtils } from '../../utils';\r\nimport { constants } from '../../constants';\r\n\r\ninterface DealerContactProps {\r\n contact: Contact;\r\n enableContactOptions: boolean;\r\n}\r\n\r\nexport const DealerContact: React.FC = ({ contact, enableContactOptions }) => {\r\n const dispatch = useDispatch();\r\n const [active, setActive] = React.useState(false);\r\n const brokerDealerList = useSelector((state: AppState) => state.entities.brokerDealerList.items);\r\n const editableContact = useSelector((state: AppState) => state.dealerList.editableContact.contact);\r\n const inviteToJoinRequestStatus = useSelector((state: AppState) => state.dealerList.inviteToJoinRequestStatus);\r\n\r\n const handleEditContact = () => {\r\n const dealerName = brokerDealerList.find(dealer => dealer.id === contact?.companyId)?.name || '';\r\n dispatch(dealerListActions.setEditableContact({ ...contact }, dealerName))\r\n };\r\n\r\n const handleDeleteContact = () => {\r\n dispatch(dealerListActions.deleteContact(contact.id));\r\n };\r\n\r\n const handleSendInviteToJoin = () => {\r\n dispatch(dealerListActions.contactInviteToJoin(contact.id))\r\n };\r\n\r\n const fullName = nameUtils.getFullName(contact.firstName, contact.lastName);\r\n\r\n return (\r\n
\r\n
\r\n {contact.invitationSent &&\r\n \r\n }\r\n \r\n {fullName}\r\n \r\n
\r\n
\r\n \r\n {contact.role || constants.emptyPlaceholder}\r\n \r\n
\r\n
\r\n \r\n {{contact.email} || constants.emptyPlaceholder}\r\n \r\n
\r\n
{contact.phone || constants.emptyPlaceholder}
\r\n {\r\n enableContactOptions &&\r\n
\r\n setActive(true)}\r\n onMenuHide={() => setActive(false)}\r\n invitationSent={contact.invitationSent}\r\n />\r\n
\r\n }\r\n
\r\n )\r\n};\r\n","import * as React from 'react';\r\nimport cn from 'classnames';\r\nimport IconSVG from '../../styles/svg-icons';\r\nimport { DealerContactOptions } from './DealerContactOptions';\r\nimport { BrokerDealerCompanySlim } from '../../types/company/BrokerDealerCompanySlim';\r\nimport { companyStatuses, constants } from '../../constants';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { AppState } from '../../types/state/AppState';\r\nimport { dealerListActions } from '../../actions/dealer-list.actions';\r\nimport { OnHoverTooltip } from '../common/OnHoverTooltip';\r\nimport { nameUtils } from '../../utils';\r\n\r\ninterface DealerHeadOfTradingProps {\r\n dealer: BrokerDealerCompanySlim;\r\n enableContactOptions: boolean;\r\n}\r\n\r\nexport const DealerHeadOfTrading: React.FC = ({ dealer, enableContactOptions }) => {\r\n const dispatch = useDispatch();\r\n const [active, setActive] = React.useState(false);\r\n\r\n const inviteToJoinRequestStatus = useSelector((state: AppState) => state.dealerList.inviteToJoinRequestStatus);\r\n\r\n const handleSendInviteToJoin = () => {\r\n dispatch(dealerListActions.headOfTradingInviteToJoin(dealer.id))\r\n };\r\n\r\n const fullName = nameUtils.getFullName(dealer?.headOfTrading.firstName, dealer?.headOfTrading.lastName);\r\n\r\n return (\r\n
\r\n
\r\n \r\n {fullName}\r\n \r\n
\r\n
\r\n Head of trading\r\n
\r\n
\r\n \r\n \r\n {dealer?.headOfTrading.email}\r\n \r\n \r\n
\r\n
{constants.emptyPlaceholder}
\r\n
\r\n {dealer.status !== companyStatuses.active.statusCode && enableContactOptions && (\r\n \r\n setActive(true)}\r\n onMenuHide={() => setActive(false)}\r\n />\r\n \r\n )}\r\n
\r\n
\r\n )\r\n};\r\n","import * as React from 'react';\r\nimport cn from 'classnames';\r\nimport IconSVG from '../../styles/svg-icons';\r\nimport { DealerContactOptions } from './DealerContactOptions';\r\nimport { BrokerDealerCompanySlim } from '../../types/company/BrokerDealerCompanySlim';\r\nimport { companyStatuses, constants } from '../../constants';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { AppState } from '../../types/state/AppState';\r\nimport { dealerListActions } from '../../actions/dealer-list.actions';\r\nimport { OnHoverTooltip } from '../common/OnHoverTooltip';\r\n\r\ninterface DealerDistributionListProps {\r\n dealer: BrokerDealerCompanySlim;\r\n enableContactOptions: boolean;\r\n}\r\n\r\nexport const DealerDistributionList: React.FC = ({ dealer, enableContactOptions }) => {\r\n const dispatch = useDispatch();\r\n const [active, setActive] = React.useState(false);\r\n const inviteToJoinRequestStatus = useSelector((state: AppState) => state.dealerList.inviteToJoinRequestStatus);\r\n\r\n const handleSendInviteToJoin = () => {\r\n dispatch(dealerListActions.distributionListInviteToJoin(dealer.id))\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {constants.emptyPlaceholder}\r\n
\r\n
\r\n Distribution list\r\n
\r\n
\r\n \r\n \r\n {dealer.distributionList}\r\n \r\n \r\n
\r\n
{constants.emptyPlaceholder}
\r\n
\r\n {dealer.status !== companyStatuses.active.statusCode && enableContactOptions && (\r\n \r\n setActive(true)}\r\n onMenuHide={() => setActive(false)}\r\n />\r\n \r\n )}\r\n
\r\n
\r\n )\r\n};\r\n","import * as React from 'react';\r\nimport { SettlementAgentCommissionByRating } from '../../types/bid-as-dealer/SettlementAgentCommissionByRating';\r\nimport { CompanySlim } from '../../types/company/CompanySlim';\r\nimport { ViewSettlementAgentCommissionPopup } from '../management/companies/clearing-bank/ViewSettlementAgentComissionPopup';\r\n\r\ninterface Props {\r\n company: CompanySlim;\r\n commission: SettlementAgentCommissionByRating;\r\n}\r\n\r\nexport function ViewSettlementAgentCommission({ company, commission }: Props) {\r\n const [isPopupVisible, setPopupVisible] = React.useState(false);\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n setPopupVisible(true);\r\n }\r\n\r\n return (\r\n
e.stopPropagation()}>\r\n \r\n {\r\n isPopupVisible &&\r\n setPopupVisible(false)}\r\n />\r\n }\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport moment from 'moment';\r\nimport { SettlementAgreementStatus } from '../../types/bid-as-dealer/SettlementAgreementStatus';\r\nimport { BidAsDealerAgreementStatusLabel } from '../bid-as-dealer/BidAsDealerAgreementStatusLabel';\r\nimport { OnHoverTooltip } from '../common/OnHoverTooltip';\r\nimport { FeatureButton } from '../access/FeatureButton';\r\nimport { companyStatuses, constants, roles } from '../../constants';\r\nimport { BrokerDealerCompanySlim } from '../../types/company/BrokerDealerCompanySlim';\r\nimport { useDispatch } from 'react-redux';\r\nimport { UserSlim } from '../../types/account/UserSlim';\r\nimport { dealersActions } from '../../actions';\r\nimport { useSettlementAgentAgreements } from '../../effects/useSettlementAgentAgreements';\r\nimport { ViewSettlementAgentCommission } from './ViewSettlementAgentCommission';\r\nimport { DailyTradingLimitDialog } from '../common/DailyTradingLimitDialog';\r\nimport { RoleActionBlocker } from '../access/RoleActionBlocker';\r\n\r\ninterface Props {\r\n dealer: BrokerDealerCompanySlim;\r\n dealerUsers: UserSlim[];\r\n enableRequestToBid: boolean;\r\n}\r\n\r\nexport const DealerRequestToBidButton: React.FC = ({ dealer, enableRequestToBid, dealerUsers }) => {\r\n const dispatch = useDispatch();\r\n const settlementAgentAgreements = useSettlementAgentAgreements().items;\r\n\r\n if (dealer.status !== companyStatuses.active.statusCode || !enableRequestToBid) {\r\n return null;\r\n }\r\n\r\n const agreement = settlementAgentAgreements.find(d => d.settlementAgent.id === dealer.id);\r\n const agreementStatus = agreement?.agreementStatus;\r\n const getRequestDate = () => agreement && moment(agreement.date).format(constants.dateFormat4);\r\n const handleRequestToBid = (e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n dispatch(dealersActions.showBidRequestConfirmPopup(dealer.id));\r\n };\r\n if (!dealer.isClearingBank) {\r\n return null;\r\n }\r\n switch (agreementStatus) {\r\n case SettlementAgreementStatus.pending:\r\n case SettlementAgreementStatus.rejected:\r\n return (\r\n
\r\n {getRequestDate()}\r\n \r\n
\r\n );\r\n case SettlementAgreementStatus.confirmed:\r\n return (\r\n
\r\n
\r\n {\r\n agreement?.dailyTradingLimit &&\r\n \r\n }\r\n \r\n
\r\n
\r\n );\r\n default: // No agreement\r\n return (\r\n
\r\n \r\n {\r\n !dealerUsers.length\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n REQUEST DirrectBidding\r\n \r\n }\r\n \r\n
\r\n );\r\n }\r\n};\r\n","import React, { FC, useMemo } from 'react';\r\nimport cn from 'classnames';\r\nimport { dealerListActions } from '../../actions/dealer-list.actions';\r\nimport { useDispatch } from 'react-redux';\r\nimport { BrokerDealerCompanySlim } from '../../types/company/BrokerDealerCompanySlim';\r\nimport { Contact } from '../../types/company/Contact';\r\nimport { UserSlim } from '../../types/account/UserSlim';\r\nimport { DealerUser } from './DealerUser';\r\nimport { DealerContact } from './DealerContact';\r\nimport { DealerHeadOfTrading } from './DealerHeadOfTrading';\r\nimport { DealerDistributionList } from './DealerDistributionList';\r\nimport { FavoriteButton, OnHoverTooltip, Pluralize } from '../common';\r\nimport { DealerRequestToBidButton } from './DealerRequestToBidButton';\r\nimport { Checkbox } from '../controls/Checkbox';\r\nimport { Bid } from '../../types/bidding/Bid';\r\nimport IconSVG from '../../styles/svg-icons';\r\nimport { SettlementAgentAgreement } from '../../types/bid-as-dealer/SettlementAgentAgreement';\r\nimport { SettlementAgreementStatus } from '../../types/bid-as-dealer/SettlementAgreementStatus';\r\nimport { CompanyStatus } from '../../types/company/CompanyStatus';\r\n\r\ninterface DealerCompanyProps {\r\n dealer: BrokerDealerCompanySlim;\r\n expanded: boolean;\r\n expandEnabled: boolean;\r\n selected: boolean;\r\n contacts: Contact[];\r\n users: UserSlim[];\r\n enableContactOptions: boolean;\r\n enableRequestToBid: boolean;\r\n selectEnabled: boolean;\r\n favoriteButtonDisabled: boolean;\r\n companyBids: Bid[];\r\n onSelectAllChange?: (dealerId: number) => void;\r\n agreements?: SettlementAgentAgreement[];\r\n liveBidding?: boolean;\r\n}\r\n\r\ntype TCompanyMember = UserSlim | Contact;\r\n\r\nexport const DealerCompany: FC = (\r\n {\r\n dealer,\r\n expanded,\r\n expandEnabled,\r\n contacts,\r\n users,\r\n enableContactOptions,\r\n enableRequestToBid,\r\n selectEnabled,\r\n selected,\r\n companyBids,\r\n favoriteButtonDisabled,\r\n onSelectAllChange,\r\n agreements,\r\n liveBidding = false\r\n }\r\n) => {\r\n const dispatch = useDispatch();\r\n\r\n const isConfirmedClearingBank = useMemo(() => (\r\n dealer.isClearingBank && agreements?.find(a => a.settlementAgent.id === dealer.id)?.agreementStatus === SettlementAgreementStatus.confirmed),\r\n [dealer, agreements]\r\n );\r\n const members: TCompanyMember[] = React.useMemo(() => users\r\n .concat(contacts)\r\n .sort((a, b) => a.firstName.localeCompare(b.firstName) || a.lastName.localeCompare(b.lastName)),\r\n [users, contacts]);\r\n\r\n const handleSetExpanded = (e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n if (expandEnabled) {\r\n dispatch(dealerListActions.setDealerExpanded(dealer.id))\r\n }\r\n };\r\n\r\n const totalUsersContacts = useMemo(() =>\r\n (contacts.length + users.length + Number(!!dealer.headOfTrading) + Number(!!dealer.distributionList)),\r\n [contacts, users, dealer]\r\n );\r\n\r\n const renderHeadOfTrading = () => dealer.headOfTrading &&\r\n ;\r\n\r\n const renderDistributionList = () => dealer.distributionList &&\r\n ;\r\n\r\n const renderList = () =>\r\n <>\r\n {renderDistributionList()}\r\n {renderHeadOfTrading()}\r\n {\r\n members.map(m => users.indexOf(m) >= 0\r\n ? \r\n : \r\n )\r\n }\r\n ;\r\n\r\n const handleSetSelected = (e: React.ChangeEvent) => {\r\n e.stopPropagation();\r\n onSelectAllChange?.(dealer.id)\r\n };\r\n\r\n const renderSelectCheckBox = () => {\r\n if (!selectEnabled) {\r\n return null;\r\n }\r\n\r\n const isLiveBiddingBlockedOffplatform = liveBidding && dealer.status !== CompanyStatus.active;\r\n\r\n const checkboxDisabled = isConfirmedClearingBank || isLiveBiddingBlockedOffplatform;\r\n const tooltip =\r\n (isConfirmedClearingBank && 'You can’t uncheck Settlement Agent.') ||\r\n (isLiveBiddingBlockedOffplatform && 'Only platform Broker-Dealers will be able to participate on LiveBidding\\u2122 BWICs.')\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const renderIcon = () => {\r\n if (dealer.status === CompanyStatus.active) {\r\n if ((agreements && isConfirmedClearingBank) || (!agreements && dealer.isClearingBank)) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n return null;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n {renderSelectCheckBox()}\r\n \r\n {renderIcon()}\r\n \r\n {dealer.name} ({totalUsersContacts})\r\n {!expandEnabled && No users or contacts yet}\r\n \r\n \r\n {!!companyBids.length &&\r\n
\r\n \r\n
}\r\n
\r\n
\r\n {expanded && renderList()}\r\n
\r\n
\r\n )\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport { Form, Formik } from 'formik';\r\nimport { InputField } from '../forms';\r\nimport { AutoCompleteInput, FormError, Popup, PopupBody, PopupFooter } from '../controls';\r\nimport { constants, errorMessages } from '../../constants';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { AppState } from '../../types/state/AppState';\r\nimport { dealerListActions } from '../../actions/dealer-list.actions';\r\nimport { stringUtils } from '../../utils';\r\nimport { yup } from '../../validation/yup';\r\nimport { SaveContactModel } from '../../types/company/Contact';\r\n\r\nconst initialFormState: SaveContactModel = {\r\n id: 0,\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n phone: '',\r\n role: '',\r\n dealerName: '',\r\n};\r\n\r\nexport const EditContactPanel: React.FC = () => {\r\n const dispatch = useDispatch();\r\n const editableContact = useSelector((state: AppState) => state.dealerList.editableContact);\r\n const brokerDealerList = useSelector((state: AppState) => state.entities.brokerDealerList.items);\r\n const brokerDealerContactList = useSelector((state: AppState) => state.entities.brokerDealerContactList.items);\r\n const companyNames = useMemo(() => brokerDealerList.map(b => b.name), [brokerDealerList]);\r\n\r\n const initialFormData = useMemo(() => editableContact.contact\r\n ? {\r\n id: editableContact.contact.id,\r\n dealerName: editableContact.dealerName,\r\n firstName: editableContact.contact.firstName,\r\n lastName: editableContact.contact.lastName,\r\n email: editableContact.contact.email,\r\n role: editableContact.contact.role || '',\r\n phone: editableContact.contact.phone || '',\r\n }\r\n : initialFormState,\r\n [editableContact.contact, editableContact.dealerName]\r\n );\r\n\r\n if (!editableContact.contact) {\r\n return null\r\n }\r\n\r\n const handleSubmit = (contact: SaveContactModel) => {\r\n dispatch(dealerListActions.editableContactSave({ ...contact, id: editableContact.contact?.id || 0 }));\r\n };\r\n\r\n const handleBrokerDealerCustomValidate = (dealerName: string | null | undefined) =>\r\n brokerDealerList\r\n .map(c => c.name)\r\n .some(n => n.localeCompare(String(dealerName), undefined, { sensitivity: 'accent' }) === 0);\r\n\r\n const handleEmailCustomValidate = (email: string) => {\r\n if (!stringUtils.isNullOrEmpty(email)) {\r\n return !brokerDealerContactList.some(contact => {\r\n return (\r\n contact.email.localeCompare(email, undefined, { sensitivity: 'accent' }) === 0\r\n && (editableContact.contact?.id === 0 || (editableContact.contact?.id !== contact.id))\r\n )\r\n }\r\n );\r\n }\r\n return true;\r\n };\r\n\r\n const handleCustomValidate = (email: string | null | undefined) => handleEmailCustomValidate(email || '');\r\n\r\n const validationSchema = yup.object().shape({\r\n firstName: yup.string().trim().matches(constants.name).max(64),\r\n lastName: yup.string().trim().matches(constants.name).max(64),\r\n email: yup.string().trim().required().email().max(256).test('email', errorMessages.duplicateDealerEmail, handleCustomValidate),\r\n role: yup.string().trim().max(256, errorMessages.maxLength(256)),\r\n phone: yup.string().trim().matches(constants.nonWhitespace).max(constants.phoneMaxLength),\r\n dealerName: yup.string().required().test('dealerName', errorMessages.invalidValue, handleBrokerDealerCustomValidate)\r\n });\r\n\r\n const renderError = (error: string | undefined, isTouched: boolean | undefined) => (\r\n isTouched && \r\n );\r\n\r\n const handleSetDealerName = (name: string, setFieldValue: (field: string, value: string) => void) => {\r\n dispatch(dealerListActions.editableContactUpdateDealer(name));\r\n setFieldValue('dealerName', name);\r\n };\r\n\r\n const renderContent = () => (\r\n \r\n {({ errors, touched, setFieldValue }) => (\r\n
\r\n \r\n
\r\n \r\n
\r\n handleSetDealerName(dealerName, setFieldValue)}\r\n placeholder=\"Choose Company\"\r\n isInvalid={touched.dealerName && errors.dealerName}\r\n />\r\n {renderError(Array.isArray(errors.dealerName) ? errors.dealerName?.join(',') : errors.dealerName, touched.dealerName)}\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
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n dispatch(dealerListActions.resetEditableContact())}\r\n >\r\n cancel\r\n \r\n \r\n save\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n\r\n return (\r\n dispatch(dealerListActions.resetEditableContact())}\r\n title={editableContact.contact?.id ? 'Edit Contact' : 'Add Contact'}\r\n >\r\n {renderContent()}\r\n \r\n )\r\n};\r\n","import React, { useMemo, useEffect } from 'react';\r\nimport cn from 'classnames';\r\nimport { keys, size, some } from 'lodash';\r\nimport IconSVG from '../../styles/svg-icons';\r\nimport { DealerCompany } from './DealerCompany';\r\nimport { BrokerDealerCompanySlim } from '../../types/company/BrokerDealerCompanySlim';\r\nimport { UserSlim } from '../../types/account/UserSlim';\r\nimport { Contact } from '../../types/company/Contact';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { AppState } from '../../types/state/AppState';\r\nimport { dealerListActions } from '../../actions/dealer-list.actions';\r\nimport { EditContactPanel } from './EditContact';\r\nimport { EmptyPlaceholder } from '../common';\r\nimport { Bid } from '../../types/bidding/Bid';\r\nimport { apiUtils } from '../../utils/api.utils';\r\nimport { SettlementAgentAgreement } from '../../types/bid-as-dealer/SettlementAgentAgreement';\r\nimport { useFavorites } from '../../effects/useFavorites';\r\nimport { Summary } from \"../newBWIC/steps/Summary\";\r\nimport { Checkbox } from '../controls/Checkbox';\r\nimport { roles } from '../../constants';\r\nimport { user } from '../../user';\r\nimport { arrayUtils } from '../../utils';\r\n\r\ninterface DealersListProps {\r\n enableContactOptions?: boolean;\r\n enableRequestToBid?: boolean;\r\n selectEnabled?: boolean;\r\n dealers: BrokerDealerCompanySlim[];\r\n contacts: Contact[];\r\n users: UserSlim[];\r\n bidsByCompany?: Map;\r\n allSelected?: boolean;\r\n favoriteButtonDisabled?: boolean;\r\n onSelectAllChange?: () => void;\r\n selectedDealers?: { [dealerId: number]: boolean };\r\n onSelectChange?: (dealerId: number) => void;\r\n agreements?: SettlementAgentAgreement[];\r\n noResultsFoundMessage?: string | undefined;\r\n onResetClick?: () => void;\r\n selectAllCheckboxDisabled?: boolean;\r\n liveBidding?: boolean;\r\n}\r\n\r\nexport const DealerList: React.FC = (\r\n {\r\n dealers,\r\n contacts,\r\n users,\r\n enableContactOptions = false,\r\n enableRequestToBid = false,\r\n selectEnabled = false,\r\n bidsByCompany,\r\n allSelected = false,\r\n favoriteButtonDisabled = false,\r\n onSelectAllChange,\r\n selectedDealers,\r\n onSelectChange,\r\n agreements,\r\n noResultsFoundMessage,\r\n selectAllCheckboxDisabled,\r\n onResetClick,\r\n liveBidding = false\r\n }\r\n) => {\r\n const dispatch = useDispatch();\r\n useFavorites(user.hasRoles(...roles.admin(), roles.BrokerDealerTrader));\r\n\r\n const expandedDealers = useSelector((state: AppState) => state.dealerList.expandedDealers);\r\n const expandedAll = useSelector((state: AppState) => state.dealerList.expandedAll);\r\n\r\n const dealersByExpandableState = useMemo(() =>\r\n apiUtils.normalize(\r\n dealers,\r\n (d: BrokerDealerCompanySlim) => d.id,\r\n (dealer: BrokerDealerCompanySlim) =>\r\n !!(\r\n dealer.distributionList ||\r\n dealer.headOfTrading ||\r\n contacts.some(c => c.companyId === dealer.id) ||\r\n users.some(u => u.companyId === dealer.id))),\r\n [dealers, contacts, users]\r\n );\r\n\r\n const selectedDealersCount = size(selectedDealers);\r\n const expandAllEnabled = useMemo(() =>\r\n keys(dealersByExpandableState).some(key => dealersByExpandableState[+key]),\r\n [dealersByExpandableState]\r\n );\r\n\r\n useEffect(() => {\r\n dispatch(dealerListActions.setExpandAllDealers(expandAllEnabled));\r\n }, [expandAllEnabled, dispatch])\r\n\r\n useEffect(() => {\r\n if (\r\n dealers.length &&\r\n !!size(expandedDealers) &&\r\n dealers.filter(d => dealersByExpandableState[d.id]).every(d => (expandedDealers[d.id] ?? true) !== expandedAll)\r\n ) {\r\n dispatch(dealerListActions.toggleExpandedAllDealers());\r\n }\r\n }, [expandedDealers, expandedAll, dealers, dealersByExpandableState, dispatch]);\r\n\r\n const handleToggleCollapseAll = (e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n if (expandAllEnabled) {\r\n const list: { [dealerId: number]: boolean } = expandedAll\r\n ? apiUtils.normalize(dealers, (d: BrokerDealerCompanySlim) => d.id, () => false)\r\n : {};\r\n\r\n dispatch(dealerListActions.expandDealers(list, !expandedAll));\r\n }\r\n };\r\n\r\n const usersByCompany = useMemo(() => arrayUtils.groupBy(users, u => u.companyId), [users])\r\n const contactsByCompany = useMemo(() => arrayUtils.groupBy(contacts, c => c.companyId), [contacts]);\r\n\r\n const renderSelectAllCheckbox = () => {\r\n if (!selectEnabled) {\r\n return null;\r\n }\r\n const isIndeterminate = !allSelected && some(selectedDealers, (d) => d);\r\n return (\r\n {\r\n e.stopPropagation();\r\n onSelectAllChange && onSelectAllChange()\r\n }}\r\n checked={allSelected}\r\n disabled={!dealers.length || selectAllCheckboxDisabled}\r\n />\r\n )\r\n };\r\n\r\n const renderCollapseAllButton = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {!!dealers.length\r\n ? (\r\n <>\r\n
\r\n {renderCollapseAllButton()}\r\n {renderSelectAllCheckbox()}\r\n {\r\n !selectedDealersCount &&\r\n <>\r\n
Name
\r\n
Title
\r\n
Email
\r\n
Phone
\r\n
Actions
\r\n \r\n }\r\n {\r\n !!selectedDealersCount && \r\n }\r\n
\r\n
\r\n {\r\n dealers.map(dealer =>\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","import * as React from 'react';\r\nimport { ReactNode } from 'react';\r\nimport ImageSVG from '../../styles/svg';\r\n\r\ninterface Props {\r\n imgName?: string;\r\n imgWidth?: number;\r\n imgHeight?: number;\r\n title?: ReactNode;\r\n text?: ReactNode;\r\n children?: ReactNode;\r\n}\r\n\r\nexport const DashboardNoData = ({ imgName, imgWidth, imgHeight, title, text, children }: Props) => (\r\n
\r\n {\r\n !!imgName &&\r\n \r\n }\r\n {!!title &&

{title}

}\r\n {!!text &&

{text}

}\r\n {children}\r\n
\r\n);\r\n","import React from 'react';\r\n\r\nexport const DashboardWidgetContext = React.createContext({\r\n descriptionExpanded: false,\r\n setDescriptionExpanded: (value: boolean) => {}\r\n});\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport classNames from 'classnames';\r\nimport { DashboardWidgetContext } from './DashboardWidgetContext';\r\nimport { useContentVisibilityLogger } from '../../../logging/useContentVisibilityLogger';\r\n\r\ninterface DashboardWidgetProps {\r\n children: React.ReactNode;\r\n filterActive?: boolean;\r\n className?: string;\r\n title?: string;\r\n}\r\n\r\nexport function DashboardWidget({ children, filterActive, className, title }: DashboardWidgetProps) {\r\n const [descriptionExpanded, setDescriptionExpanded] = useState(false);\r\n const containerRef = useRef(null);\r\n const initialClientHeight = useRef(0);\r\n\r\n const { id } = useContentVisibilityLogger(\r\n containerRef,\r\n title ? `Dashboard scroll tracking: ${title} is shown` : undefined\r\n );\r\n\r\n useEffect(() => {\r\n const current = containerRef.current;\r\n if (current) {\r\n initialClientHeight.current = current.clientHeight;\r\n }\r\n }, [containerRef]);\r\n\r\n const getContainerStyles = () => {\r\n const current = containerRef.current;\r\n if (current && descriptionExpanded) {\r\n return {\r\n marginBottom: -(current.clientHeight - initialClientHeight.current),\r\n }\r\n }\r\n return {};\r\n };\r\n\r\n return (\r\n setDescriptionExpanded(value)\r\n }}\r\n >\r\n \r\n {children}\r\n \r\n \r\n )\r\n}\r\n\r\nDashboardWidget.defaultProps = {\r\n filterActive: false,\r\n className: '',\r\n defaultIsMinimized: false\r\n};\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { RequestState } from '../../../constants/request-state';\r\nimport { DashboardWidgetLoadContentError } from './DashboardWidgetLoadContentError';\r\n\r\ninterface DashboardWidgetContentProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n requestState?: RequestState;\r\n description?: string | React.ReactNode;\r\n}\r\n\r\nexport function DashboardWidgetContent({\r\n children,\r\n className,\r\n requestState,\r\n description\r\n}: DashboardWidgetContentProps) {\r\n const renderContent = () => (\r\n <>\r\n {children}\r\n {!!description &&
{description}
}\r\n \r\n );\r\n\r\n return (\r\n
\r\n {requestState === RequestState.failure ? : renderContent()}\r\n
\r\n )\r\n}\r\n\r\nDashboardWidgetContent.defaultProps = {\r\n className: ''\r\n};\r\n","import React from 'react'\r\nimport classNames from 'classnames';\r\n\r\ninterface DashboardWidgetMaximizedHeaderProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function DashboardWidgetHeader({ children, className }: DashboardWidgetMaximizedHeaderProps) {\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n}\r\n","import React from 'react';\r\nimport { IColumnDefinition } from '../../../bidding/common/table/types/ColumnDefinition';\r\nimport { ColumnBuilder } from '../../../bidding/common/table/columns/column-builder/ColumnBuilder';\r\nimport { moneyUtils } from '../../../../utils';\r\nimport { TradingStatsColumnDefinitions } from '../../../bidding/common/table/types/TradingStatsColumnDefinitions';\r\n\r\nconst tradingStatsColumnDefinitions: IColumnDefinition[] = [\r\n {\r\n columnKey: 'rating',\r\n renderColumnHeaderContent: () => 'Rtg',\r\n renderColumnContent: entity => entity.rating,\r\n headerClassName: 'data-rating',\r\n bodyClassName: 'data-rating',\r\n },\r\n {\r\n columnKey: 'tot-traded-vol-mm',\r\n renderColumnHeaderContent: () => (<>Traded1),\r\n renderColumnContent: entity => moneyUtils.amountToMM(entity.totalTradingVolume),\r\n headerClassName: 'data-total text-right',\r\n bodyClassName: 'data-total text-right',\r\n },\r\n {\r\n columnKey: 'tot-posted-vol-mm',\r\n renderColumnHeaderContent: () => (<>Posted1),\r\n renderColumnContent: entity => moneyUtils.amountToMM(entity.totalPostedVolume),\r\n headerClassName: 'data-total text-right',\r\n bodyClassName: 'data-total text-right',\r\n },\r\n {\r\n columnKey: 'traded-count',\r\n renderColumnHeaderContent: () => (<>Traded#),\r\n renderColumnContent: entity => String(entity.tradedCount),\r\n headerClassName: 'data-count text-right',\r\n bodyClassName: 'data-count text-right',\r\n },\r\n {\r\n columnKey: 'posted-count',\r\n renderColumnHeaderContent: () => (<>Posted#),\r\n renderColumnContent: entity => String(entity.postedCount),\r\n headerClassName: 'data-count text-right',\r\n bodyClassName: 'data-count text-right',\r\n },\r\n {\r\n columnKey: 'dnt-rate',\r\n renderColumnHeaderContent: () => <>DNT%,\r\n renderColumnContent: entity => entity.dntRate.toFixed(2),\r\n headerClassName: 'data-dnt text-right',\r\n bodyClassName: 'data-dnt text-right',\r\n },\r\n {\r\n columnKey: 'price-in-color',\r\n renderColumnHeaderContent: () => (<>Color%2),\r\n renderColumnContent: entity => entity.priceInColor.toFixed(2),\r\n headerClassName: 'data-color text-right',\r\n bodyClassName: 'data-color text-right',\r\n },\r\n {\r\n columnKey: 'avg-trade-vol-mm',\r\n renderColumnHeaderContent: () => (<>Trade1,3),\r\n renderColumnContent: entity => moneyUtils.amountToMM(entity.avgTradeVolume),\r\n headerClassName: 'data-volume text-right',\r\n bodyClassName: 'data-volume text-right',\r\n },\r\n {\r\n columnKey: 'avg-color-price',\r\n renderColumnHeaderContent: () => (<>Color3),\r\n renderColumnContent: entity => isNaN(entity.avgColorPrice) ? '' : entity.avgColorPrice.toFixed(2),\r\n headerClassName: 'data-avg-color text-right',\r\n bodyClassName: 'data-avg-color text-right',\r\n },\r\n {\r\n columnKey: 'avg-px-talk',\r\n renderColumnHeaderContent: () => (<>Px Talk3),\r\n renderColumnContent: entity => isNaN(entity.avgPxTalk) ? '' : String(entity.avgPxTalk.toFixed(2)),\r\n headerClassName: 'data-px-talk text-right',\r\n bodyClassName: 'data-px-talk text-right',\r\n },\r\n];\r\n\r\nexport const dailyTradingStatsColumns = tradingStatsColumnDefinitions.map(c => {\r\n return new ColumnBuilder(c);\r\n});\r\n","import { useEffect, useState } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { isRequesting } from '../../../utils';\r\nimport { bwicStatuses } from '../../../constants';\r\nimport { Table } from '../../bidding/common/table';\r\nimport { dailyTradingStatsColumns } from '../tables/columns/tradingStats';\r\nimport { numericUtils } from '../../../utils';\r\nimport { dashboardExportTradingStats, dashboardInitTradingStats } from '../../../actions';\r\nimport { TradingStats } from '../../../types/models/TradingStats';\r\nimport { TradingStatsColumnDefinitions } from '../../bidding/common/table/types/TradingStatsColumnDefinitions';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport IconSVG from '../../../styles/svg-icons';\r\nimport { RatingGroup, ratingWithGroupValues } from '../../../types/dashboard/RatingGroup';\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from '../widget';\r\nimport { RequestState } from '../../../constants/request-state';\r\nimport { ShowFor } from '../../access';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { OnHoverTooltip, Preloader } from '../../common';\r\nimport { PxTalkNormalizationTable } from '../../common/PxTalk/PxTalkNormalizationTable'\r\nimport { Currencies } from '../../../types/enums/Currency';\r\nimport { Accordion, AccordionItem, AccordionItemBody, AccordionItemHeader } from '../../common/accordion';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\n\r\nconst chartName = \"Daily Trade Analytics\";\r\n\r\ninterface Props {\r\n collapsibleDescription?: boolean;\r\n}\r\n\r\nexport function DailyTradingStatsWidget({ collapsibleDescription }: Props) {\r\n const dispatch = useDispatch();\r\n const filter = useSelector((s: AppState) => s.dashboard.filter);\r\n const filterActive = useSelector((s: AppState) => s.dashboard.filterActive);\r\n const tradingStats = useSelector((s: AppState) => s.dashboard.tradingStats);\r\n const requestStateExportTradingStats = useSelector((s: AppState) => s.dashboard.requestStateExportTradingStats);\r\n const requestStateFetchTradingStats = useSelector((s: AppState) => s.dashboard.requestStateFetchTradingStats);\r\n\r\n const { periodName, tradingStatsData } = tradingStats;\r\n const { selectedCurrencies, selectedRatings } = filter;\r\n\r\n const [showDescription, setShowDescription] = useState(false);\r\n\r\n useEffect(() => {\r\n dispatch(dashboardInitTradingStats());\r\n }, [dispatch]);\r\n\r\n const tradedCondition = (security: TradingStats) =>\r\n security.bwicStatus === bwicStatuses.finished.key &&\r\n security.traded &&\r\n security.hasColor;\r\n\r\n const colorCondition = (security: TradingStats) =>\r\n security.normalizedLevel &&\r\n security.traded &&\r\n security.bwicStatus === bwicStatuses.finished.key &&\r\n security.hasColor;\r\n\r\n const calculateStats = (data: TradingStats[]) => {\r\n const totalTradingVolume = data.reduce((result: number, current: TradingStats) => {\r\n if (tradedCondition(current)) {\r\n result += current.amount;\r\n }\r\n return result\r\n }, 0);\r\n\r\n const totalPostedVolume = data.reduce((result: number, current: TradingStats) => {\r\n result += current.amount;\r\n return result;\r\n }, 0);\r\n\r\n const tradedCount = data.filter((s: TradingStats) => tradedCondition(s)).length;\r\n\r\n const postedCount = data.length;\r\n\r\n const dntRate = postedCount > 0 ? (1 - tradedCount / postedCount) * 100 : 0;\r\n\r\n const countNormalizedLevel = data.filter((s: TradingStats) => colorCondition(s)).length;\r\n\r\n const amountPriceInColor = data.reduce((result: number, current: TradingStats) => {\r\n if (tradedCondition(current)) {\r\n result += current.priceInColor;\r\n }\r\n return result;\r\n }, 0);\r\n\r\n const priceInColor = (numericUtils.divideSafe(amountPriceInColor, tradedCount) || 0) * 100;\r\n\r\n const avgTradeVolume = numericUtils.divideSafe(totalTradingVolume, tradedCount) || 0;\r\n\r\n const tradedWithColorData = data.reduce((result: number, current: TradingStats) => {\r\n if (colorCondition(current) && current.normalizedLevel) {\r\n result += current.normalizedLevel\r\n }\r\n return result;\r\n }, 0);\r\n\r\n const avgColorPrice = numericUtils.divideSafe(tradedWithColorData, countNormalizedLevel) || 0;\r\n\r\n const pxTalkAmount = data.reduce((result: number, current: TradingStats) => {\r\n if (current.avgPxTalk && tradedCondition(current)) {\r\n result += current.avgPxTalk\r\n }\r\n return result;\r\n }, 0);\r\n\r\n const pxTalkCount = data.filter((s: TradingStats) => (s.avgPxTalk && tradedCondition(s))).length;\r\n\r\n const avgPxTalk = numericUtils.divideSafe(pxTalkAmount, pxTalkCount) || 0;\r\n\r\n return {\r\n totalTradingVolume,\r\n totalPostedVolume,\r\n tradedCount,\r\n postedCount,\r\n dntRate,\r\n priceInColor,\r\n avgTradeVolume,\r\n avgColorPrice,\r\n avgPxTalk\r\n }\r\n };\r\n\r\n const getTotal = (stats: TradingStatsColumnDefinitions[]) => {\r\n const total = {\r\n totalTradingVolume: 0,\r\n totalPostedVolume: 0,\r\n tradedCount: 0,\r\n postedCount: 0,\r\n dntRate: 0,\r\n priceInColor: 0,\r\n avgTradeVolume: 0\r\n };\r\n\r\n let sumProductForDntRange = 0;\r\n let sumProductForPriceInColor = 0;\r\n\r\n stats.forEach((s: TradingStatsColumnDefinitions) => {\r\n total.totalTradingVolume += s.totalTradingVolume;\r\n total.totalPostedVolume += s.totalPostedVolume;\r\n total.tradedCount += s.tradedCount;\r\n total.postedCount += s.postedCount;\r\n total.dntRate += s.dntRate;\r\n total.priceInColor += s.priceInColor;\r\n total.avgTradeVolume += s.avgTradeVolume;\r\n sumProductForDntRange += (s.postedCount * s.dntRate);\r\n sumProductForPriceInColor += (s.tradedCount * s.priceInColor);\r\n });\r\n\r\n return {\r\n rating: 'Total',\r\n ...total,\r\n dntRate: numericUtils.divideSafe(sumProductForDntRange, total.postedCount) || 0,\r\n priceInColor: numericUtils.divideSafe(sumProductForPriceInColor, total.tradedCount) || 0,\r\n avgTradeVolume: numericUtils.divideSafe(total.totalTradingVolume, total.tradedCount) || 0,\r\n avgColorPrice: NaN,\r\n avgPxTalk: NaN,\r\n }\r\n };\r\n\r\n const filterDataByCurrency = () => {\r\n if (selectedCurrencies.length) {\r\n return tradingStatsData.filter((statItem: TradingStats) => selectedCurrencies.some(c => c === statItem.currency))\r\n }\r\n return tradingStatsData\r\n };\r\n\r\n const getTableData = () => {\r\n const ratingsList = selectedRatings.length\r\n ? ratingWithGroupValues\r\n .filter(rating =>\r\n selectedRatings.some(selectedRating => selectedRating === rating)\r\n )\r\n : ratingWithGroupValues;\r\n const stats: TradingStatsColumnDefinitions[] = ratingsList.map(r => {\r\n const dataByRating = filterDataByCurrency().filter((data: TradingStats) => data.rating === r);\r\n return {\r\n rating: r === RatingGroup.OTHER ? 'Other' : r,\r\n ...calculateStats(dataByRating),\r\n }\r\n });\r\n\r\n const total = getTotal(stats);\r\n stats.push(total);\r\n return stats;\r\n };\r\n\r\n const tableData = getTableData();\r\n\r\n const handleExport = () => {\r\n const filterCurrencies = selectedCurrencies.length ? selectedCurrencies : Currencies;\r\n const filterRatings = selectedRatings.length ? selectedRatings : ratingWithGroupValues;\r\n dispatch(dashboardExportTradingStats(filterCurrencies, filterRatings))\r\n };\r\n\r\n const renderDescription = () => (\r\n
\r\n

\r\n 1 MM 2 Traded Only 3 Average\r\n Updated daily at 5:00 PM EST.\r\n

\r\n

Color% - % of trades where a seller discloses second best price received

\r\n
\r\n Color - second best price received during BWIC; digitized by the KTX ATS Platform according to the Rules\r\n }>\r\n \r\n \r\n
\r\n
\r\n Px Talk - expected price for a security sent by market-makers prior to a BWIC; digitized by the KTX ATS\r\n Platform according to the Rules\r\n }>\r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n const renderAccordionDescription = () =>\r\n \r\n \r\n {\r\n e.stopPropagation();\r\n setShowDescription(!showDescription)\r\n }}\r\n showAdditionalIcon={false}\r\n >\r\n {showDescription ? \"Hide\" : \"Show\"} Description\r\n \r\n \r\n \r\n {renderDescription()}\r\n \r\n \r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}{periodName}

\r\n {\r\n requestStateFetchTradingStats !== RequestState.failure &&\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n \r\n {collapsibleDescription ? renderAccordionDescription() : renderDescription()}\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n","import { News } from \"../../../types/news/News\";\r\nimport {\r\n NewsCategory,\r\n newsCategoryTitles,\r\n} from \"../../../types/news/enums/NewsCategory\";\r\nimport {\r\n NewsLabel,\r\n newsLabelTitles,\r\n} from \"../../../types/news/enums/NewsLabel\";\r\nimport { NewsProvider, newsProviderLogos, newsProviderTitles } from \"../../../types/news/enums/NewsProvider\";\r\n//import cloImage from \"../../../images/clo.png\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { routes } from \"../../../constants\";\r\nimport { OnHoverTooltip } from \"../../common\";\r\nimport { NewsAdditionalSection } from \"../../news/news-list/NewsItem\";\r\nimport classNames from 'classnames';\r\nimport { ActionBlocker } from \"../../access/ActionBlocker\";\r\nimport { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\ninterface Props {\r\n newsItem: News;\r\n}\r\n\r\nexport const KWatchNewsListItem = ({ newsItem }: Props) => {\r\n const { category, label, provider, title, referenceName } = newsItem;\r\n\r\n const renderTopSection = () => (\r\n
\r\n {category !== NewsCategory.None && (\r\n
\r\n
\r\n {newsCategoryTitles[category]}\r\n
\r\n
\r\n )}\r\n\r\n {label !== NewsLabel.None && (\r\n
\r\n
\r\n {newsLabelTitles[label]}\r\n
\r\n
\r\n )}\r\n\r\n {provider && provider !== NewsProvider.None && (\r\n
\r\n
\r\n
\r\n {newsProviderTitles[provider]}\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n\r\n return (\r\n
\r\n {renderTopSection()}\r\n
\r\n \r\n \r\n {blocked => (\r\n \r\n {title}\r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\n","import { useEffect, useRef } from \"react\";\r\nimport { News } from \"../../../types/news/News\";\r\nimport { KWatchNewsListItem } from \"./KWatchNewsListItem\";\r\nimport Slider from \"react-slick\";\r\nimport { constants } from '../../../constants';\r\n\r\nconst speed = 2000;\r\nconst autoplaySpeed = 5000;\r\nconst slidesToShow = constants.maxCountNewsOnSlider;\r\n\r\ninterface Props {\r\n data: News[];\r\n}\r\n\r\nexport const KWatchNewsList = ({ data }: Props) => {\r\n const sliderRef = useRef(null);\r\n const sliderStateRef = useRef({\r\n isHovered: false,\r\n slideIndex: 0,\r\n });\r\n\r\n const lastScrolledIndex = data.length - slidesToShow;\r\n\r\n const settings = {\r\n dots: false,\r\n infinite: false,\r\n slidesToShow,\r\n slidesToScroll: slidesToShow,\r\n vertical: true,\r\n verticalSwiping: true,\r\n autoplay: true,\r\n autoplaySpeed: autoplaySpeed + speed,\r\n speed,\r\n afterChange: (index: number) => {\r\n const sliderRefCurrent = sliderRef.current;\r\n const sliderStateRefCurrent = sliderStateRef.current;\r\n\r\n sliderStateRefCurrent.slideIndex = index;\r\n if (\r\n index === lastScrolledIndex &&\r\n !sliderStateRefCurrent.isHovered\r\n ) {\r\n setTimeout(() => {\r\n if (sliderRefCurrent) {\r\n sliderRefCurrent.slickGoTo(0);\r\n }\r\n }, autoplaySpeed);\r\n }\r\n },\r\n };\r\n\r\n useEffect(() => {\r\n const slickListDiv = document.getElementsByClassName(\r\n \"slick-list\"\r\n )[0] as HTMLElement;\r\n\r\n if (slickListDiv) {\r\n const handleWheel = (event: WheelEvent) => {\r\n event.preventDefault();\r\n \r\n const nextIndex =\r\n event.deltaY > 0\r\n ? sliderStateRef.current.slideIndex + slidesToShow\r\n : sliderStateRef.current.slideIndex - slidesToShow;\r\n \r\n return sliderRef.current?.slickGoTo(nextIndex);\r\n };\r\n \r\n slickListDiv.addEventListener(\"wheel\", handleWheel);\r\n \r\n return () => slickListDiv.removeEventListener(\"wheel\", handleWheel);\r\n }\r\n \r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const handleMouseEnter = () => (sliderStateRef.current.isHovered = true);\r\n const handleMouseLeave = () => {\r\n const sliderRefCurrent = sliderRef.current;\r\n const sliderStateRefCurrent = sliderStateRef.current;\r\n\r\n sliderStateRefCurrent.isHovered = false;\r\n if (\r\n sliderStateRefCurrent.slideIndex === lastScrolledIndex &&\r\n sliderRefCurrent\r\n ) {\r\n sliderRefCurrent.slickNext();\r\n }\r\n };\r\n\r\n const renderNews = () => {\r\n return data.map((n) => (\r\n \r\n ))\r\n }\r\n\r\n return (\r\n
\r\n {data.length <= constants.maxCountNewsOnSlider ? \r\n renderNews()\r\n : (\r\n \r\n {renderNews()}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n","import classnames from 'classnames';\r\nimport { DashboardSkeleton } from \"../DashboardSkeleton\";\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from \"../widget\";\r\nimport { isRequesting } from \"../../../utils\";\r\nimport IconSVG from \"../../../styles/svg-icons\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { routes } from \"../../../constants\";\r\nimport { KWatchNewsList } from \"./KWatchNewsList\";\r\nimport { hasKWatchNewsAccess } from \"../../../utils/amr-pipeline.utils\";\r\nimport { News } from '../../../types/news/News';\r\nimport { RequestState } from '../../../constants/request-state';\r\n\r\ninterface KWatchNewsWidgetProps {\r\n news: News[];\r\n requestState: RequestState;\r\n className?: string;\r\n onAllNewsClick?: () => void;\r\n}\r\n\r\nconst title = \"K-Watch News\";\r\n\r\nexport const KWatchNewsWidget = ({ news, requestState, className = \"double-size\", onAllNewsClick }: KWatchNewsWidgetProps) => {\r\n if (!hasKWatchNewsAccess()) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n

{title}

\r\n \r\n \r\n All News\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\nimport moment from 'moment';\r\nimport { Plot, mainConfig } from '../../common/charts';\r\nimport { chartIssueTransactionVolume } from '../../../constants';\r\nimport { collateralTypes } from '../../../constants/collateral-types';\r\nimport { chartUtils } from '../../../utils';\r\nimport { arrayUtils } from '../../../utils/array.utils';\r\nimport { IssueTransactionVolume } from '../../../types/dashboard/IssueTransactionVolume';\r\nimport { ChartGrouping, ChartUnits } from '../../../types/dashboard/AmrChart';\r\nimport { ChartFilter } from './IssueTransactionVolumeFilter';\r\nimport { CollateralType } from '../../../types/amr-pipeline/enums/CollateralType';\r\nimport { Currency } from '../../../types/enums/Currency';\r\n\r\ninterface IssueTransactionVolumeChartProps {\r\n data: IssueTransactionVolume[];\r\n filter: ChartFilter,\r\n divId?: string;\r\n}\r\n\r\nconst CurrencyTickPrefix = {\r\n [Currency.EUR]: '€',\r\n [Currency.USD]: '$',\r\n};\r\n\r\nconst GroupingTickFormat: Partial> = {\r\n [ChartGrouping.M]: {\r\n tickformat: '%b `%y',\r\n dtick: 'M1'\r\n },\r\n [ChartGrouping.Q]: {\r\n tickformat: '%qQ `%y',\r\n dtick: 'M3'\r\n },\r\n [ChartGrouping.Y]: {\r\n tickformat: '%Y',\r\n dtick: 'M12'\r\n },\r\n};\r\n\r\nconst MonthDateFormat = 'YYYY-MM';\r\nconst ChartRangeFormat = 'YYYY-MM-DD';\r\nconst YearDateFormat = 'YYYY';\r\nconst MaxRangeYears = 6;\r\n\r\nexport function IssueTransactionVolumeChart({ data, filter, divId }: IssueTransactionVolumeChartProps) {\r\n const {\r\n chartLayout,\r\n tickColor,\r\n tickFont,\r\n barColors,\r\n zeroLineColor,\r\n hoverlabel,\r\n } = chartIssueTransactionVolume;\r\n\r\n const getEdgeDimensionValues = () => {\r\n const valueGetter = (data: any) => moment.utc([data.year, data.month - 1]);\r\n const minDateRow = arrayUtils.min(data, valueGetter);\r\n const maxDateRow = arrayUtils.max(data, valueGetter);\r\n\r\n const toMoment = (value?: any) => moment.utc([\r\n value ? value.year : 1,\r\n value ? value.month - 1 : 0\r\n ]);\r\n\r\n return {\r\n min: toMoment(minDateRow),\r\n max: toMoment(maxDateRow),\r\n };\r\n };\r\n\r\n const getDimension = (row: IssueTransactionVolume) => {\r\n const momentDate = moment.utc([row.year, row.month - 1]);\r\n\r\n switch (filter.grouping) {\r\n case ChartGrouping.Y:\r\n return momentDate.format(YearDateFormat);\r\n case ChartGrouping.Q:\r\n // Group by first month of each quarter\r\n return `${momentDate.year()}-${momentDate.quarter() * 3 - 2}`;\r\n default:\r\n return momentDate.format(MonthDateFormat);\r\n }\r\n };\r\n\r\n const getMetric = (row: IssueTransactionVolume) => {\r\n switch (filter.units) {\r\n case ChartUnits.Count:\r\n return row.numberOfTransactions;\r\n default:\r\n return row.dealBalanceTotal;\r\n }\r\n };\r\n\r\n const groupData = (data: IssueTransactionVolume[]): IssueTransactionVolume[][] => {\r\n // Aggregate for year and querter dimensions\r\n const map = arrayUtils.groupBy(data, (row: IssueTransactionVolume) =>\r\n `${row.collateralType}-${getDimension(row)}`);\r\n\r\n return Array.from(map.values());\r\n };\r\n\r\n const getChartRange = () => {\r\n let { min, max } = getEdgeDimensionValues();\r\n\r\n switch (filter.grouping) {\r\n case ChartGrouping.M:\r\n min = max.clone()\r\n .subtract(5, 'months')\r\n .subtract(15, 'days');\r\n max.add(15, 'days');\r\n break;\r\n case ChartGrouping.Q:\r\n min = max.clone()\r\n .subtract(1, 'years')\r\n .startOf('year')\r\n .subtract(45, 'days');\r\n max.startOf('quarter')\r\n .add(45, 'days');\r\n break;\r\n default: {\r\n if (max.year() - min.year() >= MaxRangeYears) {\r\n min = max.clone()\r\n .subtract(MaxRangeYears - 1, 'years')\r\n .startOf('year');\r\n }\r\n\r\n min.startOf('year')\r\n .subtract(6, 'months');\r\n max.startOf('year')\r\n .add(6, 'months');\r\n }\r\n }\r\n\r\n return [\r\n min.format(ChartRangeFormat),\r\n max.format(ChartRangeFormat),\r\n ];\r\n };\r\n\r\n const getChartData = () => {\r\n const grouped = groupData(data);\r\n\r\n const charts = grouped.reduce((acc: Record, row) => {\r\n const [ firstElement ] = row;\r\n const { collateralType } = firstElement;\r\n\r\n const dimension = getDimension(firstElement);\r\n const metric = arrayUtils.sum(row, (value: IssueTransactionVolume) => getMetric(value));\r\n\r\n const [x = [], y = []] = acc[collateralType] || [];\r\n\r\n return {\r\n ...acc,\r\n [collateralType]: [\r\n [...x, dimension],\r\n [...y, metric],\r\n ],\r\n };\r\n },\r\n {\r\n [CollateralType.broadlySyndicated]: [],\r\n [CollateralType.middleMarket]: [],\r\n });\r\n\r\n return Object\r\n .entries(charts)\r\n .map(([collateralType, [x, y]], index) => ({\r\n x,\r\n y,\r\n name: collateralTypes[collateralType],\r\n type: 'bar',\r\n // This tag here is on purpose!\r\n hovertemplate: `${collateralTypes[collateralType]}: %{y}`,\r\n marker: {\r\n color: barColors[index],\r\n },\r\n }));\r\n };\r\n\r\n const getLayout = () => {\r\n const { dtick, tickformat } = GroupingTickFormat[filter.grouping];\r\n\r\n const tickprefix = filter.units === ChartUnits.Volume\r\n ? CurrencyTickPrefix[filter.currencyCode]\r\n : '';\r\n\r\n const xAxisRange = getChartRange();\r\n\r\n return {\r\n ...chartLayout,\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: 'x unified',\r\n hoverlabel,\r\n barmode: filter.view,\r\n xaxis: {\r\n tickcolor: tickColor,\r\n type: 'date',\r\n range: xAxisRange,\r\n tickfont: tickFont,\r\n fixedrange: true,\r\n dtick,\r\n tickformat,\r\n rangeslider: {\r\n bgcolor: 'rgba(79, 123, 156, 0.2)',\r\n },\r\n },\r\n yaxis: {\r\n showgrid: true,\r\n showtickprefix: 'all',\r\n tickprefix,\r\n gridcolor: tickColor,\r\n ticks: 'inside',\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n zerolinecolor: zeroLineColor,\r\n },\r\n }\r\n };\r\n\r\n const renderChart = () => (\r\n \r\n );\r\n\r\n return (\r\n <>\r\n {renderChart()}\r\n
\r\n
{collateralTypes[CollateralType.broadlySyndicated]}
\r\n
{collateralTypes[CollateralType.middleMarket]}
\r\n
\r\n \r\n );\r\n}\r\n\r\nIssueTransactionVolumeChart.defaultProps = {\r\n divId: 'issue-transaction-volume-chart'\r\n};\r\n","import { constants } from '../../../constants';\r\nimport { TransactionType } from '../../../types/amr-pipeline/enums/TransactionType';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { ChartGrouping, ChartTypes, ChartUnits, ChartView } from '../../../types/dashboard/AmrChart';\r\nimport { Currency } from '../../../types/enums/Currency';\r\nimport { ActionBlocker } from '../../access/ActionBlocker';\r\nimport { DropDownList } from '../../controls/DropDownList';\r\nimport { FilterPanel, FilterSection, FilterSwitch } from '../../filters';\r\n\r\nexport interface ChartFilter {\r\n transactionType: TransactionType | string;\r\n units: ChartUnits;\r\n grouping: ChartGrouping;\r\n view: ChartView;\r\n currencyCode: Currency;\r\n}\r\n\r\ninterface IssueTransactionVolumeFilterProps extends ChartFilter {\r\n onChange: (value: ChartFilter) => void;\r\n}\r\n\r\nconst ViewLabel = {\r\n [ChartView.Grouped]: 'Grouped',\r\n [ChartView.Stacked]: 'Stacked',\r\n};\r\n\r\nconst ChartTypeList = [\r\n {\r\n value: constants.allListItem,\r\n text: 'All',\r\n },\r\n ...ChartTypes,\r\n];\r\n\r\nexport function IssueTransactionVolumeFilter({\r\n onChange,\r\n ...values\r\n}: IssueTransactionVolumeFilterProps) {\r\n const handleValueChange = (prop: string) => (value: any) => {\r\n let changedFilter = {\r\n ...values,\r\n [prop]: value,\r\n };\r\n\r\n onChange(changedFilter);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {blocked =>\r\n ({\r\n value,\r\n text,\r\n selected: values.transactionType === value,\r\n }))}\r\n className=\"custom-drop-down-ghost\"\r\n prefix=\"Type: \"\r\n disabled={blocked}\r\n onChange={({ value }) => handleValueChange('transactionType')(value)}\r\n />}\r\n \r\n \r\n \r\n
\r\n {[ChartUnits.Volume, ChartUnits.Count].map(unit =>\r\n \r\n {blocked =>\r\n handleValueChange('units')(unit)}\r\n />}\r\n \r\n )}\r\n
\r\n
\r\n \r\n
\r\n {[Currency.USD, Currency.EUR].map(currencyCode =>\r\n \r\n {blocked =>\r\n handleValueChange('currencyCode')(currencyCode)}\r\n />}\r\n \r\n )}\r\n
\r\n
\r\n \r\n
\r\n {[\r\n ChartGrouping.M,\r\n ChartGrouping.Q,\r\n ChartGrouping.Y,\r\n ].map(grouping =>\r\n \r\n {blocked =>\r\n handleValueChange('grouping')(grouping)}\r\n />}\r\n \r\n )}\r\n
\r\n
\r\n \r\n
\r\n {[ChartView.Grouped, ChartView.Stacked].map(view =>\r\n \r\n {blocked =>\r\n handleValueChange('view')(view)}\r\n />}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect, useMemo, useState } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { lowerCase, capitalize } from 'lodash';\r\nimport { IssueTransactionVolumeChart } from './IssueTransactionVolumeChart';\r\nimport { IssueTransactionVolumeFilter, ChartFilter } from './IssueTransactionVolumeFilter';\r\nimport { isRequesting } from '../../../utils';\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from '../widget';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { dashboardInitIssueTransactionVolume, dashboardIssueTransactionVolumeRequest } from '../../../actions';\r\nimport { Currency } from '../../../types/enums/Currency';\r\nimport { ChartGrouping, ChartUnits, ChartView } from '../../../types/dashboard/AmrChart';\r\nimport { DashboardNoSelectedFilters } from \"../DashboardNoSelectedFilters\";\r\nimport { constants, roles } from '../../../constants';\r\nimport { ShowFor } from '../../access';\r\nimport { hasWidgetsAccess } from '../../../utils/amr-pipeline.utils';\r\n\r\ninterface IssueTransactionVolumeWidgetProps {\r\n defaultFilter?: Partial;\r\n withFilter?: boolean;\r\n}\r\n\r\nexport function IssueTransactionVolumeWidget({\r\n defaultFilter = {},\r\n withFilter = true,\r\n}: IssueTransactionVolumeWidgetProps) {\r\n const issueTransactionVolume = useSelector((state: AppState) => state.dashboard.issueTransactionVolume);\r\n const requestStateIssueTransactionVolume = useSelector((state: AppState) => state.dashboard.requestStateIssueTransactionVolume);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const hasAccess = hasWidgetsAccess();\r\n\r\n const [filterState, setFilterState] = useState({\r\n transactionType: constants.allListItem,\r\n units: ChartUnits.Count,\r\n grouping: ChartGrouping.Y,\r\n view: ChartView.Grouped,\r\n currencyCode: Currency.USD,\r\n ...defaultFilter,\r\n });\r\n\r\n useEffect(() => {\r\n hasAccess && dispatch(dashboardInitIssueTransactionVolume());\r\n }, [dispatch, hasAccess]);\r\n\r\n const handleFilterChange = (filter: ChartFilter) => {\r\n setFilterState(filter);\r\n\r\n const { transactionType, currencyCode } = filter;\r\n\r\n hasAccess && dispatch(dashboardIssueTransactionVolumeRequest({\r\n transactionType,\r\n currencyCode,\r\n }));\r\n }\r\n\r\n const chart = useMemo(() =>\r\n ,\r\n [issueTransactionVolume, filterState]);\r\n\r\n const chartName = `${capitalize(lowerCase(filterState.transactionType))} transaction ${filterState.units}`;\r\n\r\n return (\r\n \r\n \r\n \r\n

{chartName}

\r\n \r\n {withFilter && }\r\n \r\n
\r\n \r\n {!!issueTransactionVolume?.length ? chart : }\r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Plot, mainConfig } from '../../common/charts';\r\nimport { numericUtils, chartUtils } from '../../../utils';\r\nimport { PriceLevelData } from '../../../types/dashboard/PriceLevel';\r\nimport { chartsPriceLevel } from '../../../constants/dashboard/chartsPriceLevel';\r\nimport { priceLevelBarColors } from '../../../constants/dashboard/priceLevelBarsColors';\r\nimport { ratingWithGroupValues } from '../../../types/dashboard/RatingGroup';\r\n\r\ninterface ChartProps {\r\n chartDiv: string;\r\n priceLevelData: PriceLevelData[];\r\n}\r\n\r\nexport function PriceLevelChart({ chartDiv, priceLevelData }: ChartProps) {\r\n\r\n const getDataByRating = (rating: string) => {\r\n const filteredData = priceLevelData.filter(d => d.rating === rating);\r\n return filteredData.length ? filteredData.map(d => d.normalizedLevel) : [-1]\r\n };\r\n\r\n const getHoverInfoText = (rating: string) => {\r\n const data = priceLevelData.filter(d => d.rating === rating);\r\n const values = data.map(d => d.normalizedLevel);\r\n const averageColorValue = values.reduce((a, b) => (a + b), 0) / data.length;\r\n const arrayStats = chartUtils.getArrayStats(values);\r\n return `Number of trades w/color: ${data.length}
` +\r\n `Color: ${numericUtils.round(averageColorValue)}
` +\r\n `Q1: ${numericUtils.round(arrayStats.q3) || ''}
` +\r\n `Med: ${numericUtils.round(arrayStats.median) || ''}
` +\r\n `Q3: ${numericUtils.round(arrayStats.q1) || ''}`;\r\n };\r\n\r\n const boxData = ratingWithGroupValues.map((r, index) => {\r\n const arrayStats = chartUtils.getArrayStats(getDataByRating(r));\r\n return {\r\n q1: [arrayStats.q1],\r\n q3: [arrayStats.q3],\r\n median: [arrayStats.median],\r\n lowerfence: [arrayStats.min],\r\n upperfence: [arrayStats.max],\r\n x: [ratingWithGroupValues[index]],\r\n exclusive: getDataByRating(r),\r\n type: 'box',\r\n name: getHoverInfoText(r),\r\n marker: {\r\n color: priceLevelBarColors[r].border\r\n },\r\n fillcolor: priceLevelBarColors[r].bar,\r\n hoverinfo: 'name',\r\n boxpoints: false,\r\n }\r\n });\r\n\r\n const getYRange = () => {\r\n const defaultMinValue = -0.1;\r\n const defaultMinMargin = 0.01;\r\n const defaultMaxvalue = 1;\r\n const marginInPercent = 4;\r\n const linesInChart = 5;\r\n const valuesForRange = ratingWithGroupValues.reduce((result: number[], rating) => {\r\n return result.concat(getDataByRating(rating).filter(r => r >= 0))\r\n }, []);\r\n let minValue = valuesForRange.length ? Math.min(...valuesForRange) : defaultMinValue;\r\n let maxValue = valuesForRange.length ? Math.max(...valuesForRange) : defaultMaxvalue;\r\n const difference = maxValue - minValue;\r\n let roundTo = defaultMaxvalue;\r\n if (difference > linesInChart && difference < (linesInChart * 2)) {\r\n roundTo = linesInChart\r\n } else if (difference >= (linesInChart * 2) && difference < (linesInChart * 10)) {\r\n roundTo = linesInChart * 2\r\n } else if (difference >= (linesInChart * 10) && difference < (linesInChart * 50)) {\r\n roundTo = linesInChart * 4\r\n } else if (difference >= (linesInChart * 50)){\r\n roundTo = linesInChart * 10\r\n }\r\n minValue = chartUtils.roundToNumber(minValue, roundTo, true);\r\n maxValue = chartUtils.roundToNumber(maxValue, roundTo);\r\n let margin = numericUtils.getPercentage(difference || marginInPercent, marginInPercent);\r\n if (margin < defaultMinMargin) {\r\n margin = defaultMinMargin\r\n }\r\n\r\n return [\r\n minValue <= 0 ? defaultMinValue : minValue - margin,\r\n maxValue + margin\r\n ]\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nPriceLevelChart.defaultProps = {\r\n chartDiv: 'price-level-chart'\r\n};\r\n","import React, { useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { PriceLevelChart } from './PriceLevelChart';\r\nimport { isRequesting } from '../../../utils';\r\nimport { DashboardNoData } from \"../DashboardNoData\";\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { dashboardInitPriceLevel } from '../../../actions';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\nimport { ShowFor } from '../../access';\r\n\r\nconst chartName = \"Price Dispersion by Rating\";\r\n\r\nexport function PriceLevelWidget() {\r\n const dispatch = useDispatch();\r\n const filter = useSelector((s: AppState) => s.dashboard.filter);\r\n const requestStateFetchPriceLevel = useSelector((s: AppState) => s.dashboard.requestStateFetchPriceLevel);\r\n const priceLevel = useSelector((s: AppState) => s.dashboard.priceLevel);\r\n const filterActive = useSelector((s: AppState) => s.dashboard.filterActive);\r\n const { selectedCurrencies, selectedRatings } = filter;\r\n const hasData = priceLevel?.isBusinessDay && !!priceLevel?.priceLevelData.length;\r\n\r\n useEffect(() => {\r\n dispatch(dashboardInitPriceLevel());\r\n }, [dispatch]);\r\n\r\n const filterChartData = () => {\r\n let data = [...priceLevel.priceLevelData];\r\n if (selectedCurrencies.length) {\r\n data = data.filter(d => selectedCurrencies.some(c => c === d.currency))\r\n }\r\n if (selectedRatings.length) {\r\n data = data.filter(d => selectedRatings.some(r => r === d.rating))\r\n }\r\n return data\r\n };\r\n\r\n const renderContent = () => {\r\n if (!hasData) {\r\n return (\r\n \r\n )\r\n }\r\n return \r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

\r\n {chartName}\r\n {hasData && {priceLevel.periodName}}\r\n

\r\n
\r\n \r\n Updated daily at 5:00 PM EST.\r\n \r\n }\r\n >\r\n {renderContent()}\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\nexport function DashboardSkeleton({ inProgress = false, children }) {\r\n if (inProgress) {\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 return children;\r\n}\r\n","import { useMemo } from 'react';\r\nimport moment, { Moment } from 'moment';\r\nimport { Plot, mainConfig } from '../../common/charts';\r\nimport { chartIssuanceSpread, constants } from '../../../constants';\r\nimport { chartUtils } from '../../../utils';\r\nimport { ChartGrouping, Term } from '../../../types/dashboard/AmrChart';\r\nimport { WeeklyIssuanceSpread } from '../../../types/dashboard/IssuanceSpread';\r\nimport { IssuanceSpreadChartFilter } from './IssuanceSpreadFilter';\r\nimport { PlotMouseEvent } from 'plotly.js';\r\nimport { IssuanceSpreadsChartClickHandler } from './types';\r\nimport { TransactionType } from '../../../types/amr-pipeline/enums/TransactionType';\r\nimport { FloaterIndex } from '../../../types/amr-pipeline/enums/FloaterIndex';\r\nimport { amrChartUtils } from '../../../utils/amr-chart.utils';\r\n\r\ninterface IssuanceSpreadChartProps {\r\n issuanceSpread: WeeklyIssuanceSpread[];\r\n commonMedian: number;\r\n filter: IssuanceSpreadChartFilter;\r\n withSlider?: boolean;\r\n divId?: string;\r\n onClick?: IssuanceSpreadsChartClickHandler;\r\n}\r\n\r\nconst MaxRangeYears = 12;\r\n\r\nconst BarWidthInDays = {\r\n [ChartGrouping.M]: 15,\r\n [ChartGrouping.Q]: 45,\r\n [ChartGrouping.Y]: 182,\r\n [ChartGrouping.W]: 3,\r\n};\r\n\r\nconst GroupingTickFormat = {\r\n [ChartGrouping.M]: {\r\n tickformat: '%b `%y',\r\n dtick: 'M1',\r\n },\r\n [ChartGrouping.Q]: {\r\n tickformat: '%qQ `%y',\r\n dtick: 'M3',\r\n },\r\n [ChartGrouping.Y]: {\r\n tickformat: '%Y',\r\n dtick: 'M12',\r\n },\r\n [ChartGrouping.W]: {\r\n tickformat: '%m/%d/%y',\r\n // 7 days (1 week)\r\n dtick: constants.dayMs * 7,\r\n },\r\n};\r\n\r\nconst ChartDimensionFormat = {\r\n [ChartGrouping.M]: 'YYYY-MM',\r\n [ChartGrouping.Q]: 'YYYY-MM',\r\n [ChartGrouping.Y]: 'YYYY',\r\n [ChartGrouping.W]: 'YYYY-MM-DD',\r\n};\r\n\r\nconst TooltipDimensionFormat = {\r\n [ChartGrouping.M]: 'MMM `YY',\r\n [ChartGrouping.Q]: 'Q[Q] `YY',\r\n [ChartGrouping.Y]: 'YYYY',\r\n [ChartGrouping.W]: 'MM/DD/YYYY',\r\n};\r\n\r\nexport function IssuanceSpreadChart({\r\n issuanceSpread,\r\n commonMedian,\r\n filter,\r\n divId,\r\n withSlider = false,\r\n onClick,\r\n}: IssuanceSpreadChartProps) {\r\n const {\r\n chartLayout,\r\n tickColor,\r\n tickFont,\r\n bar,\r\n border,\r\n zeroLineColor,\r\n hoverlabel,\r\n minAdditionalYAmount,\r\n } = chartIssuanceSpread;\r\n\r\n const filteredData = useMemo(() => {\r\n switch (filter.grouping) {\r\n case ChartGrouping.W:\r\n return issuanceSpread\r\n .filter((x) => !!x.week)\r\n .sort(\r\n (a, b) =>\r\n new Date(a.week as Date).getTime() -\r\n new Date(b.week as Date).getTime()\r\n );\r\n case ChartGrouping.M:\r\n return issuanceSpread\r\n .filter((x) => !!x.month)\r\n .sort((a, b) => {\r\n const yearA = a.year || 0;\r\n const yearB = b.year || 0;\r\n const monthA = a.month || 0;\r\n const monthB = b.month || 0;\r\n return yearA - yearB ? yearA - yearB : monthA - monthB;\r\n });\r\n case ChartGrouping.Q:\r\n return issuanceSpread\r\n .filter((x) => !!x.quarter)\r\n .sort((a, b) => {\r\n const yearA = a.year || 0;\r\n const yearB = b.year || 0;\r\n const quarterA = a.quarter || 0;\r\n const quarterB = b.quarter || 0;\r\n return yearA - yearB\r\n ? yearA - yearB\r\n : quarterA - quarterB;\r\n });\r\n default:\r\n return issuanceSpread\r\n .filter(\r\n (x) => !!x.year && !x.month && !x.quarter && !x.week\r\n )\r\n .sort((a, b) => (a.year as number) - (b.year as number));\r\n }\r\n }, [issuanceSpread, filter.grouping]);\r\n\r\n const handleChartClick = (e: PlotMouseEvent) => {\r\n if (!onClick) {\r\n return;\r\n }\r\n\r\n if (!e.points.length) {\r\n return;\r\n }\r\n\r\n const [point] = e.points;\r\n\r\n const dimension = point.x;\r\n\r\n const periodStart = moment.utc(dimension);\r\n\r\n const periodEnd = periodStart.clone();\r\n\r\n switch (filter.grouping) {\r\n case ChartGrouping.M:\r\n periodEnd.endOf('month');\r\n break;\r\n case ChartGrouping.Q:\r\n periodEnd.endOf('quarter');\r\n break;\r\n case ChartGrouping.W:\r\n periodEnd.endOf('week');\r\n break;\r\n case ChartGrouping.Y:\r\n periodEnd.endOf('year');\r\n break;\r\n }\r\n\r\n onClick({\r\n startPeriod: periodStart.toDate(),\r\n endPeriod: periodEnd.toDate(),\r\n transactionType: filter.transactionType === constants.allListItem\r\n ? undefined\r\n : filter.transactionType as TransactionType,\r\n collateralType: filter.collateralType,\r\n rating: filter.rating,\r\n currencyCode: filter.currencyCode,\r\n term: filter.term === constants.allListItem\r\n ? undefined\r\n : filter.term as Term,\r\n floaterIndex: filter.floaterIndex === constants.allListItem\r\n ? undefined\r\n : filter.floaterIndex as FloaterIndex,\r\n });\r\n };\r\n\r\n const getDimension = (row: WeeklyIssuanceSpread) => {\r\n switch (filter.grouping) {\r\n case ChartGrouping.M:\r\n return row.year && row.month\r\n ? moment([row.year, row.month - 1])\r\n : undefined;\r\n case ChartGrouping.W:\r\n return row.week ? moment(row.week) : undefined;\r\n case ChartGrouping.Q:\r\n return row.year && row.quarter\r\n ? moment(`${row.year}-${row.quarter}`, 'YYYY-Q', true)\r\n : undefined;\r\n default:\r\n return row.year ? moment([row.year]) : undefined;\r\n }\r\n };\r\n\r\n const getTooltipDimesion = (row: WeeklyIssuanceSpread) =>\r\n getDimension(row)?.format(TooltipDimensionFormat[filter.grouping]);\r\n\r\n const getChartDimension = (row: WeeklyIssuanceSpread) =>\r\n getDimension(row)?.format(ChartDimensionFormat[filter.grouping]);\r\n\r\n const getHoverInfoText = (row: WeeklyIssuanceSpread) => {\r\n const outliers =\r\n row.bottomOutlier && row.topOutlier\r\n ? row.bottomOutlier + '; ' + row.topOutlier\r\n : row.bottomOutlier || row.topOutlier;\r\n return (\r\n `${getTooltipDimesion(row)}
` +\r\n `Min: ${row.min}
` +\r\n `Q1: ${row.q1}
` +\r\n `Med: ${row.median}
` +\r\n `Q3: ${row.q3}
` +\r\n `Max: ${row.max}
` +\r\n `Common Med: ${commonMedian}
` +\r\n `Trend Mean: ${row.mean}
` +\r\n (outliers ? `Outlier(s): ${outliers}
` : '')\r\n );\r\n };\r\n\r\n const getChartRange = (min: Moment, max: Moment) => {\r\n let rangeMin = min.clone();\r\n let rangeMax = max.clone();\r\n\r\n switch (filter.grouping) {\r\n case ChartGrouping.M:\r\n rangeMin = max.clone()\r\n .subtract(11, 'months')\r\n .subtract(15, 'days');\r\n rangeMax.add(15, 'days');\r\n break;\r\n case ChartGrouping.W:\r\n rangeMin = max.clone()\r\n .subtract(11, 'weeks')\r\n .startOf('week')\r\n .subtract(3.5, 'days');\r\n rangeMax.startOf('week')\r\n .add(3.5, 'days');\r\n break;\r\n case ChartGrouping.Q:\r\n rangeMin = max.clone()\r\n .subtract(11, 'quarters')\r\n .subtract(45, 'days');\r\n rangeMax.startOf('quarter')\r\n .add(45, 'days');\r\n break;\r\n default: {\r\n rangeMin = max.clone()\r\n .subtract(MaxRangeYears - 1, 'years')\r\n .startOf('year')\r\n .subtract(6, 'months');\r\n\r\n if (rangeMin.isBefore(min)) {\r\n rangeMin = min.clone()\r\n .startOf('year')\r\n .subtract(6, 'months');\r\n }\r\n\r\n rangeMax.startOf('year')\r\n .add(6, 'months');\r\n }\r\n }\r\n\r\n return [\r\n rangeMin.format(),\r\n rangeMax.format(),\r\n ];\r\n };\r\n\r\n const getAdditionalYData = () => {\r\n const maxValue = Math.max(...issuanceSpread.map(i => i.topOutlier || i.q3));\r\n const minValue = Math.min(...issuanceSpread.map(i => i.bottomOutlier || i.q1));\r\n\r\n const difference = (maxValue - minValue);\r\n const isLowData = difference < minAdditionalYAmount;\r\n // adding of number with half to prevent empty row on the top and bottom\r\n const rowsToAdd = difference < minAdditionalYAmount ? 2.5 : 1.5;\r\n const rangeY = isLowData ? [minValue - rowsToAdd, maxValue + rowsToAdd] : [];\r\n const dtickY = isLowData ? 1 : 0;\r\n\r\n return {\r\n rangeY,\r\n dtickY,\r\n }\r\n };\r\n\r\n const getChartData = () => {\r\n return filteredData.reduce((accum: any, row) => {\r\n const xAxis = [getChartDimension(row)];\r\n const box = {\r\n q1: [row.q1],\r\n q3: [row.q3],\r\n median: [row.median],\r\n lowerfence: [row.min],\r\n upperfence: [row.max],\r\n x: xAxis,\r\n name: getHoverInfoText(row),\r\n type: 'box',\r\n marker: {\r\n color: border,\r\n },\r\n width: BarWidthInDays[filter.grouping] * constants.dayMs,\r\n fillcolor: bar,\r\n hoverinfo: 'name',\r\n boxpoints: false,\r\n };\r\n\r\n const topOutlier = {\r\n x: xAxis,\r\n y: [row.topOutlier],\r\n mode: 'markers',\r\n type: 'scatter',\r\n hoverinfo: 'skip',\r\n marker: {\r\n size: 6,\r\n color: border,\r\n },\r\n };\r\n\r\n const bottomOutliers = {\r\n x: xAxis,\r\n y: [row.bottomOutlier],\r\n mode: 'markers',\r\n type: 'scatter',\r\n hoverinfo: 'skip',\r\n marker: {\r\n size: 6,\r\n color: border,\r\n },\r\n };\r\n\r\n return [...accum, box, topOutlier, bottomOutliers];\r\n }, []);\r\n };\r\n\r\n const commonMedianData = {\r\n type: 'scatter',\r\n x: [0, 100],\r\n y: filteredData.map(() => commonMedian),\r\n mode: 'lines',\r\n xaxis: 'x2',\r\n line: {\r\n color: 'red',\r\n width: 2,\r\n dash: 'dash',\r\n },\r\n };\r\n\r\n const trendMeanData = {\r\n type: 'scatter',\r\n x: filteredData.map((row) => getChartDimension(row)),\r\n y: filteredData.map((row) => row.mean),\r\n mode: 'lines',\r\n hoverinfo: 'skip',\r\n line: {\r\n color: 'green',\r\n width: 2,\r\n dash: 'dash',\r\n },\r\n };\r\n\r\n const getLayout = () => {\r\n const { dtick, tickformat } = GroupingTickFormat[filter.grouping];\r\n\r\n const { min, max } = amrChartUtils.getEdgeDimensionValues(filteredData, getDimension);\r\n const chartRange = getChartRange(min, max);\r\n const sliderRange = [min.format(), max.format()];\r\n const { dtickY, rangeY } = getAdditionalYData();\r\n const tick0 = min.format(ChartDimensionFormat[filter.grouping]);\r\n\r\n return {\r\n ...chartLayout,\r\n showlegend: false,\r\n autosize: true,\r\n hovermode: 'closest',\r\n hoverlabel,\r\n xaxis: {\r\n tickcolor: tickColor,\r\n type: 'date',\r\n tickfont: tickFont,\r\n range: withSlider ? chartRange : sliderRange,\r\n fixedrange: true,\r\n dtick,\r\n tickformat,\r\n tick0,\r\n rangeslider: withSlider ? {\r\n range: sliderRange,\r\n bgcolor: 'rgba(79, 123, 156, 0.2)',\r\n } : undefined,\r\n },\r\n yaxis: {\r\n showgrid: true,\r\n showtickprefix: 'all',\r\n fixedrange: true,\r\n gridcolor: tickColor,\r\n ticks: 'inside',\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n zerolinecolor: zeroLineColor,\r\n ticksuffix: ' bps',\r\n range: rangeY,\r\n dtick : dtickY,\r\n },\r\n xaxis2: {\r\n zeroline: false,\r\n showgrid: false,\r\n fixedrange: true,\r\n range: [0, 100],\r\n overlaying: 'x',\r\n showticklabels: false,\r\n },\r\n };\r\n };\r\n\r\n const data = [...getChartData(), commonMedianData, trendMeanData];\r\n const layout = getLayout();\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
Common Median
\r\n
Trend Mean
\r\n
Outlier(s)
\r\n
\r\n \r\n );\r\n}\r\n\r\nIssuanceSpreadChart.defaultProps = {\r\n divId: 'issuance-spread-chart',\r\n};\r\n","import { useMemo } from 'react';\r\nimport { constants } from '../../../constants';\r\nimport { CollateralType } from '../../../types/amr-pipeline/enums/CollateralType';\r\nimport { FloaterIndex } from '../../../types/amr-pipeline/enums/FloaterIndex';\r\nimport { TransactionType } from '../../../types/amr-pipeline/enums/TransactionType';\r\nimport { ChartGrouping, ChartTypes, Term } from '../../../types/dashboard/AmrChart';\r\nimport { Currency } from '../../../types/enums/Currency';\r\nimport { Rating } from '../../../types/enums/Rating';\r\nimport { DropDownList, DropDownListItem } from '../../controls/DropDownList';\r\nimport { FilterPanel, FilterSection } from '../../filters';\r\n\r\nexport interface IssuanceSpreadChartFilter {\r\n transactionType: TransactionType | string;\r\n collateralType: CollateralType;\r\n rating: Rating;\r\n currencyCode: Currency;\r\n grouping: ChartGrouping;\r\n term: Term | string;\r\n floaterIndex: FloaterIndex | string;\r\n}\r\n\r\ninterface IssuanceSpreadFilterProps extends IssuanceSpreadChartFilter {\r\n onChange: (value: IssuanceSpreadChartFilter) => void;\r\n availableGroupings?: ChartGrouping[];\r\n withAllTermsOption?: boolean;\r\n}\r\n\r\nconst ChartTypeList = [\r\n {\r\n value: constants.allListItem,\r\n text: 'All',\r\n },\r\n ...ChartTypes,\r\n];\r\n\r\nconst FloaterIndexList = [\r\n {\r\n value: constants.allListItem,\r\n text: 'All',\r\n },\r\n ...[\r\n FloaterIndex.Fixed,\r\n FloaterIndex.Sofr,\r\n FloaterIndex.Libor,\r\n FloaterIndex.Euribor\r\n ].map(floaterIndex => ({\r\n text: floaterIndex,\r\n value: floaterIndex,\r\n })),\r\n];\r\n\r\nconst RatingsList = [Rating.AAA, Rating.AA, Rating.A, Rating.BBB, Rating.BB]\r\n .map(rating => ({\r\n text: rating,\r\n value: rating,\r\n }));\r\n\r\nconst CollateralTypesList = [\r\n {\r\n text: 'BSL',\r\n value: CollateralType.broadlySyndicated,\r\n },\r\n {\r\n text: 'MM',\r\n value: CollateralType.middleMarket,\r\n }\r\n];\r\n\r\nconst AllTermsItem = {\r\n text: 'All',\r\n value: constants.allListItem,\r\n payload: ''\r\n};\r\n\r\nconst TermsList = [\r\n {\r\n text: Term.Short,\r\n value: Term.Short,\r\n payload: 'Short Dated',\r\n },\r\n {\r\n text: Term.Long,\r\n value: Term.Long,\r\n payload: 'Long Dated',\r\n }\r\n];\r\n\r\nconst PeriodsList = [\r\n {\r\n text: ChartGrouping.W,\r\n value: ChartGrouping.W,\r\n payload: 'Week',\r\n },\r\n {\r\n text: ChartGrouping.M,\r\n value: ChartGrouping.M,\r\n payload: 'Month',\r\n },\r\n {\r\n text: ChartGrouping.Q,\r\n value: ChartGrouping.Q,\r\n payload: 'Quarter',\r\n },\r\n {\r\n text: ChartGrouping.Y,\r\n value: ChartGrouping.Y,\r\n payload: 'Year',\r\n },\r\n];\r\n\r\nconst CurrencyList = [Currency.USD, Currency.EUR]\r\n .map(currency => ({\r\n text: currency,\r\n value: currency,\r\n }));\r\n\r\nexport function IssuanceSpreadFilter({\r\n onChange,\r\n availableGroupings = Object.values(ChartGrouping),\r\n withAllTermsOption = false,\r\n ...values\r\n}: IssuanceSpreadFilterProps) {\r\n const handleValueChange = (prop: keyof IssuanceSpreadChartFilter) => (value: any) => {\r\n onChange({\r\n ...values,\r\n [prop]: value,\r\n });\r\n };\r\n\r\n const renderSelectedWithPrefix = (prefix: string) =>\r\n (item: DropDownListItem) => `${prefix}: ${item.text}`;\r\n\r\n const renderListItemWithDescription = (item: DropDownListItem) => (\r\n
\r\n {item.text}\r\n {item.payload}\r\n
\r\n );\r\n\r\n const periods = useMemo(() =>\r\n PeriodsList.filter(x => availableGroupings.includes(x.value)),\r\n [availableGroupings]\r\n );\r\n\r\n const terms = useMemo(() => withAllTermsOption\r\n ? [AllTermsItem, ...TermsList]\r\n : TermsList,\r\n [withAllTermsOption])\r\n\r\n return (\r\n \r\n \r\n ({ ...x, selected: values.transactionType === x.value }))}\r\n onChange={({ value }) => handleValueChange('transactionType')(value)}\r\n renderSelectedItemCallback={renderSelectedWithPrefix('Type')}\r\n className=\"custom-drop-down-ghost\"\r\n />\r\n \r\n \r\n ({ ...x, selected: values.floaterIndex === x.value }))}\r\n defaultSortingEnabled={false}\r\n onChange={({ value }) => handleValueChange('floaterIndex')(value)}\r\n renderSelectedItemCallback={renderSelectedWithPrefix('Coupon')}\r\n className=\"custom-drop-down-ghost\"\r\n />\r\n \r\n \r\n ({ ...x, selected: values.rating === x.value }))}\r\n defaultSortingEnabled={false}\r\n onChange={({ value }) => handleValueChange('rating')(value)}\r\n renderSelectedItemCallback={renderSelectedWithPrefix('Rtg')}\r\n className=\"custom-drop-down-ghost\"\r\n />\r\n \r\n \r\n ({ ...x, selected: values.collateralType === x.value }))}\r\n defaultSortingEnabled={false}\r\n onChange={({ value }) => handleValueChange('collateralType')(value)}\r\n renderSelectedItemCallback={renderSelectedWithPrefix('Collat.')}\r\n className=\"custom-drop-down-ghost\"\r\n />\r\n \r\n \r\n ({ ...x, selected: values.term === x.value }))}\r\n defaultSortingEnabled={false}\r\n onChange={({ value }) => handleValueChange('term')(value)}\r\n renderSelectedItemCallback={renderSelectedWithPrefix('Term')}\r\n renderItemContentCallback={renderListItemWithDescription}\r\n className=\"custom-drop-down-ghost custom-drop-down-term\"\r\n />\r\n \r\n \r\n ({ ...x, selected: values.grouping === x.value }))}\r\n defaultSortingEnabled={false}\r\n onChange={({ value }) => handleValueChange('grouping')(value)}\r\n renderSelectedItemCallback={renderSelectedWithPrefix('Period')}\r\n renderItemContentCallback={renderListItemWithDescription}\r\n className=\"custom-drop-down-ghost custom-drop-down-period\"\r\n />\r\n \r\n \r\n ({ ...x, selected: values.currencyCode === x.value }))}\r\n defaultSortingEnabled={false}\r\n onChange={({ value }) => handleValueChange('currencyCode')(value)}\r\n renderSelectedItemCallback={renderSelectedWithPrefix('Ccy')}\r\n className=\"custom-drop-down-ghost\"\r\n />\r\n \r\n \r\n );\r\n};\r\n","import { useEffect, useMemo, useState } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { dashboardIssuanceSpreadRequest } from '../../../actions';\r\nimport { constants } from '../../../constants';\r\nimport { CollateralType } from '../../../types/amr-pipeline/enums/CollateralType';\r\nimport { ChartGrouping, Term } from '../../../types/dashboard/AmrChart';\r\nimport { Currency } from '../../../types/enums/Currency';\r\nimport { Rating } from '../../../types/enums/Rating';\r\nimport { isRequesting } from '../../../utils';\r\nimport { hasWidgetsAccess } from '../../../utils/amr-pipeline.utils';\r\nimport { ShowFor } from '../../access';\r\nimport { DashboardNoSelectedFilters } from '../DashboardNoSelectedFilters';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from '../widget';\r\nimport { IssuanceSpreadChart } from './IssuanceSpreadChart';\r\nimport {\r\n IssuanceSpreadFilter,\r\n IssuanceSpreadChartFilter,\r\n} from './IssuanceSpreadFilter';\r\nimport { IssuanceSpreadsChartClickHandler } from './types';\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { ChartRequiredFeature } from '../../access/ChartRequiredFeature';\r\nimport { useAppSelector } from '../../../effects/useAppSelector';\r\n\r\ninterface IssuanceSpreadWidgetProps {\r\n className?: string;\r\n managerReferenceName?: string;\r\n availableGroupings?: ChartGrouping[];\r\n startDate?: Date;\r\n defaultFilter?: Partial;\r\n withSlider?: boolean;\r\n withAllTermsOption?: boolean;\r\n feature?: SubscriptionFeature;\r\n onChartClick?: IssuanceSpreadsChartClickHandler;\r\n}\r\n\r\nexport function IssuanceSpreadWidget({\r\n className = 'double-size im-chart issuance-spread-chart',\r\n managerReferenceName,\r\n availableGroupings,\r\n startDate,\r\n defaultFilter,\r\n withSlider = false,\r\n withAllTermsOption = false,\r\n feature = SubscriptionFeature.IssuanceSpreadsGraph,\r\n onChartClick,\r\n}: IssuanceSpreadWidgetProps) {\r\n const issuanceSpread = useAppSelector(s => s.dashboard.issuanceSpread);\r\n const requestStateIssuanceSpread = useAppSelector(s => s.dashboard.requestStateIssuanceSpread);\r\n\r\n const { issuanceSpreads, median } = issuanceSpread;\r\n\r\n const dispatch = useDispatch();\r\n\r\n const hasAccess = hasWidgetsAccess(feature);\r\n\r\n const [filterState, setFilterState] = useState({\r\n transactionType: constants.allListItem,\r\n collateralType: CollateralType.broadlySyndicated,\r\n rating: Rating.AAA,\r\n currencyCode: Currency.USD,\r\n grouping: ChartGrouping.M,\r\n term: Term.Long,\r\n floaterIndex: constants.allListItem,\r\n ...defaultFilter,\r\n });\r\n\r\n useEffect(() => {\r\n hasAccess && dispatch(dashboardIssuanceSpreadRequest(filterState, managerReferenceName, startDate));\r\n }, [hasAccess, dispatch, filterState, managerReferenceName, startDate]);\r\n\r\n const chart = useMemo(() => {\r\n return (\r\n \r\n );\r\n }, [filterState, issuanceSpreads, median, withSlider, onChartClick]);\r\n\r\n const chartName = \"Issuance Spreads\";\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}

\r\n \r\n \r\n \r\n
\r\n \r\n Spread are shown over LIBOR base rate until December 31, 2021 and over SOFR thereafter.
\r\n All statistics are calculated based on the transaction pricing date.\r\n \r\n ) : null\r\n }\r\n >\r\n {issuanceSpreads?.length ? chart : }\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import moment from 'moment';\r\nimport { PlotMouseEvent } from 'plotly.js';\r\nimport { mainConfig, Plot } from '../../common/charts';\r\nimport { dashboardChartHeatMapConstants } from '../../../constants/dashboard';\r\nimport { user } from '../../../user';\r\nimport { constants, roles } from '../../../constants';\r\nimport { RatingGroup, ratingGroupValues, ratingWithGroupValues } from '../../../types/dashboard/RatingGroup';\r\nimport { Rating } from '../../../types/enums/Rating';\r\nimport { ScheduledBwic } from '../../../types/dashboard/ScheduledBwic';\r\nimport { chartUtils } from '../../../utils';\r\n\r\ninterface ZItemSize {\r\n [currency: string]: number;\r\n}\r\n\r\ninterface ZItem {\r\n totalSize?: ZItemSize;\r\n count: number;\r\n size: ZItemSize;\r\n ratings: { [rating: string]: ZItemSize };\r\n securities: number;\r\n}\r\n\r\ninterface HeatMapScheduledBwicsProps {\r\n bwics: ScheduledBwic[];\r\n nextBusinessDates: Date[];\r\n onHeatMapCellClick: (date: string, hour: number, ratings: string[]) => void;\r\n}\r\n\r\nexport function HeatMapScheduledBwics({ bwics, nextBusinessDates, onHeatMapCellClick }: HeatMapScheduledBwicsProps) {\r\n const ratingGroupOtherValues = ratingGroupValues[RatingGroup.OTHER];\r\n const {\r\n colorScale, whiteColorScale, lineColor, tickColor, tickFont, margin, linkFontColor, textColor, annotationFontColors, lineWidth, firstTimeSlot, maxColumns, hoverlabel\r\n } = dashboardChartHeatMapConstants;\r\n\r\n const getMoney = (size: ZItemSize) => {\r\n let result = '';\r\n if (size.USD && Number(size.USD)) {\r\n result = chartUtils.getMoneyString(size.USD, '$', false, true)\r\n }\r\n if (size.EUR && Number(size.EUR)) {\r\n result = `${result ? result + '/' : ''}${chartUtils.getMoneyString(size.EUR, '€', false, true)}`\r\n }\r\n\r\n if (result) {\r\n result += 'MM';\r\n }\r\n\r\n return result\r\n };\r\n\r\n const getAnnotationText = (zItem: ZItem) => {\r\n if (zItem.totalSize) {\r\n return getMoney(zItem.totalSize) || '―';\r\n }\r\n if (zItem.count === 0 && user.hasRoles(...roles.seller())) {\r\n return `New BWIC`\r\n }\r\n if (zItem.count === 0 && user.hasRoles(roles.Viewer, ...roles.bd())) {\r\n return ` ― `\r\n }\r\n if (!zItem.count) {\r\n return `0MM`\r\n }\r\n return `${getMoney(zItem.size)}`\r\n };\r\n\r\n const getTimeValues = () => {\r\n let resultTimeValues = [];\r\n let resultYTick = [];\r\n const { hours, yLabels, workingTimeInterval } = dashboardChartHeatMapConstants;\r\n const userTimeOffsetInMin = moment().utcOffset();\r\n const from = ((firstTimeSlot - -userTimeOffsetInMin) / 60) - 1;\r\n let to = from + workingTimeInterval;\r\n if (from < 0) {\r\n resultTimeValues = hours.slice(hours.length - -from, hours.length);\r\n resultTimeValues = resultTimeValues.concat(hours.slice(0, to));\r\n resultYTick = yLabels.slice(yLabels.length - -from, yLabels.length);\r\n resultYTick = resultYTick.concat(yLabels.slice(0, to))\r\n } else if (hours.length - from < workingTimeInterval) {\r\n const toItem = to - hours.length;\r\n resultTimeValues = hours.slice(from, to);\r\n resultTimeValues = resultTimeValues.concat(hours.slice(0, toItem));\r\n resultYTick = yLabels.slice(from, to);\r\n resultYTick = resultYTick.concat(yLabels.slice(0, toItem))\r\n } else {\r\n resultTimeValues = hours.slice(from, to);\r\n resultYTick = yLabels.slice(from, to)\r\n }\r\n const timeValues = resultTimeValues.reverse();\r\n timeValues.unshift('-1');\r\n const yTick = resultYTick.reverse();\r\n yTick.unshift(`Total`);\r\n return { timeValues, yTick };\r\n };\r\n\r\n const { timeValues, yTick } = getTimeValues();\r\n\r\n const getInitialValues = () => {\r\n const x: string[] = [];\r\n const y = timeValues.map((item, index) => index);\r\n const z: ZItem[][] = y.map(() => []);\r\n nextBusinessDates.forEach(day => {\r\n if (x.length < maxColumns) {\r\n x.push(moment.utc(day).startOf('day').format(constants.dashboardDateFormat));\r\n z.map((item: ZItem[], index: number) => {\r\n let value: ZItem = { size: { USD: 0, EUR: 0 }, count: 0, ratings: {}, securities: 0 };\r\n if (index === 0) {\r\n value.totalSize = { USD: 0, EUR: 0 }\r\n }\r\n return item.push(value);\r\n });\r\n }\r\n });\r\n return { x, y, z };\r\n };\r\n\r\n const getChartData = () => {\r\n const initialValues = getInitialValues();\r\n let maxValue = 0;\r\n let minValue = 0;\r\n const { x, y, z } = initialValues;\r\n bwics.forEach(bwic => {\r\n if (bwic && bwic.bidsDueDateUtc && x.length <= maxColumns) {\r\n const date = moment.utc(bwic.bidsDueDateUtc).local().format(constants.dashboardDateFormat);\r\n const time = moment.utc(bwic.bidsDueDateUtc).local().format('HH');\r\n const dateIndex = x.indexOf(date);\r\n let timeIndex = timeValues.indexOf(time);\r\n if (bwic.securities && bwic.securities.length) {\r\n const { securities } = bwic;\r\n securities.forEach(security => {\r\n if (timeIndex === -1) {\r\n if (timeValues.indexOf(\"24\") === -1) {\r\n if (time < timeValues[timeValues.length - 1]) {\r\n timeIndex = timeValues.indexOf(timeValues[timeValues.length - 1]);\r\n }\r\n if (time > timeValues[1]) {\r\n timeIndex = timeValues.indexOf(timeValues[1]);\r\n }\r\n } else {\r\n if (time > timeValues[timeValues.length - 1]) {\r\n timeIndex = timeValues.indexOf(timeValues[timeValues.length - 1]);\r\n }\r\n if (time < timeValues[1]) {\r\n timeIndex = timeValues.indexOf(timeValues[1]);\r\n }\r\n }\r\n }\r\n if (timeIndex > -1) {\r\n const zItem: ZItem = z[timeIndex][dateIndex];\r\n const zItemTotal: ZItem = z[0][dateIndex];\r\n if (zItem) {\r\n zItem.size[security.currency] += security.size;\r\n zItem.count += 1;\r\n let securityRating: Rating | RatingGroup = security.rating;\r\n if (ratingGroupOtherValues.indexOf(security.rating) > -1) {\r\n securityRating = RatingGroup.OTHER;\r\n }\r\n if (!zItem.ratings[securityRating]) {\r\n zItem.ratings[securityRating] = { USD: 0, EUR: 0, count: 0 };\r\n }\r\n zItem.ratings[securityRating][security.currency] += security.size;\r\n zItem.ratings[securityRating].count += 1;\r\n z[timeIndex][dateIndex] = zItem;\r\n\r\n if (maxValue < (zItem.size.USD + zItem.size.EUR)) {\r\n maxValue = zItem.size.USD + zItem.size.EUR\r\n }\r\n if (!minValue) {\r\n minValue = zItem.size.USD + zItem.size.EUR\r\n }\r\n if ((zItem.size.USD + zItem.size.EUR) < minValue) {\r\n minValue = (zItem.size.USD + zItem.size.EUR)\r\n }\r\n }\r\n if (zItemTotal && zItemTotal.totalSize) {\r\n zItemTotal.totalSize[security.currency] += security.size;\r\n zItemTotal.count += 1;\r\n }\r\n }\r\n })\r\n }\r\n }\r\n });\r\n return { x, y, z, maxValue, minValue }\r\n };\r\n\r\n const { x, y, z, minValue, maxValue } = getChartData();\r\n\r\n const getAnnotationsFontColor = (zValue: ZItem) => {\r\n if ((zValue.size.USD + zValue.size.EUR) > 0) {\r\n if (maxValue === minValue) {\r\n return annotationFontColors[annotationFontColors.length - 1]\r\n }\r\n const byOnePercent = (maxValue - minValue) / 100;\r\n const valueInPercent = ((zValue.size.USD + zValue.size.EUR) - minValue) / byOnePercent;\r\n const colorIndex = Math.ceil(valueInPercent / (100 / annotationFontColors.length));\r\n if (colorIndex > annotationFontColors.length) {\r\n return annotationFontColors[annotationFontColors.length - 1]\r\n }\r\n return annotationFontColors[(colorIndex - 1 >= 0 ? colorIndex - 1 : 0)]\r\n }\r\n return annotationFontColors[0];\r\n };\r\n\r\n const getYRange = (x: string[] = []) => {\r\n const xLength = x.length;\r\n switch (xLength) {\r\n case 5:\r\n return [-0.5, 4.5];\r\n case 4:\r\n return [-0.5, 3.5];\r\n case 3:\r\n return [-0.5, 2.5];\r\n case 2:\r\n return [-0.5, 1.5];\r\n case 1:\r\n return [-0.5, 0.5];\r\n default:\r\n return [-0.5, 4.5]\r\n }\r\n };\r\n\r\n const getWarningText = (cellData: ZItem) => {\r\n if (\r\n cellData.count === 0 &&\r\n !cellData.totalSize &&\r\n user.hasRoles(roles.SellerViewer)) {\r\n return \"You have limited access to the KTX ATS Platform.\";\r\n }\r\n };\r\n\r\n const getCellText = (cellData: ZItem) => {\r\n const cellRatings = Object.keys(cellData.ratings);\r\n return cellRatings.length\r\n ? cellRatings\r\n .sort((a, b) => ratingWithGroupValues.indexOf(a as Rating) - ratingWithGroupValues.indexOf(b as Rating))\r\n .map((key: string) =>\r\n `${key === RatingGroup.OTHER ? 'Other' : key} ${getMoney(cellData.ratings[key])} - ${cellData.ratings[key].count} securities   `\r\n ).join('
')\r\n : getWarningText(cellData)\r\n };\r\n\r\n const getChartText = () => {\r\n return z\r\n .map((columnCollection) => columnCollection\r\n .map((cellData) => getCellText(cellData))\r\n )\r\n };\r\n\r\n const layout = {\r\n plot_bgcolor: lineColor,\r\n annotations: z.map((i1, index1) => i1.map((i2, index2) => {\r\n return {\r\n x: x[index2],\r\n y: y[index1],\r\n text: getAnnotationText(i2),\r\n font: {\r\n family: 'Roboto Medium, Arial, Helvetica, sans- serif',\r\n size: 10,\r\n color: getAnnotationsFontColor(i2),\r\n },\r\n showarrow: false,\r\n }\r\n })).reduce((n, current) => {\r\n return n.concat(current)\r\n }, []),\r\n hoverlabel,\r\n xaxis: {\r\n linecolor: lineColor,\r\n linewidth: lineWidth,\r\n range: getYRange(x),\r\n fixedrange: true,\r\n mirror: true,\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n },\r\n yaxis: {\r\n linecolor: lineColor,\r\n linewidth: lineWidth,\r\n mirror: true,\r\n fixedrange: true,\r\n tickvals: y,\r\n ticktext: yTick,\r\n tickcolor: tickColor,\r\n tickfont: tickFont,\r\n zeroline: false\r\n },\r\n margin\r\n };\r\n\r\n const heatMap = [{\r\n x: x,\r\n y: y,\r\n z: z.map((i1) => i1.map((i2) => i2.size.USD + i2.size.EUR)),\r\n type: 'heatmap',\r\n showscale: false,\r\n hoverongaps: true,\r\n colorscale: maxValue ? colorScale : whiteColorScale,\r\n hoverinfo: 'text',\r\n text: getChartText(),\r\n xgap: .6,\r\n ygap: .6\r\n }];\r\n\r\n const handleOnHeatMapCellClick = (e: PlotMouseEvent) => {\r\n const point: any = e && e.points && e.points[0];\r\n const [columnIndex, cellIndex] = point.pointIndex;\r\n const cellData = z[columnIndex][cellIndex];\r\n const hour = Number(timeValues[point.y]);\r\n const date = String(point.x);\r\n const ratings = Object.keys(cellData.ratings);\r\n if (point.y !== 0) {\r\n onHeatMapCellClick(date, hour, ratings)\r\n }\r\n };\r\n\r\n return (\r\n \r\n )\r\n}\r\n","import { useCallback, useMemo } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport moment from 'moment';\r\nimport { useHistory } from 'react-router';\r\nimport { AppState } from '../../../types/state/AppState';\r\nimport { chartUtils, isRequesting } from '../../../utils';\r\nimport { HeatMapScheduledBwics } from './HeatmapScheduledBwics';\r\nimport { DashboardWidget, DashboardWidgetContent, DashboardWidgetHeader } from '../widget';\r\nimport { RatingGroup, ratingGroupValues } from '../../../types/dashboard/RatingGroup';\r\nimport {\r\n currency, dateFrom, dateTo, ratings, statuses\r\n} from '../../../utils/filtering/serializers/serializer.definitions';\r\nimport { queryStringSerializer } from '../../../utils/filtering/query-string-serializer';\r\nimport { constants, roles, routes } from '../../../constants';\r\nimport { user } from '../../../user';\r\nimport { dashboardChartHeatMapConstants } from '../../../constants/dashboard';\r\nimport { ShowFor } from '../../access/ShowFor';\r\nimport { DashboardSkeleton } from '../DashboardSkeleton';\r\nimport { QueryStringArgumentSerializer } from '../../../utils/filtering/serializers/QueryStringArgumentSerializer';\r\nimport { useNextBusinessDates } from '../../../effects/data-accessors/useNextBusinessDates';\r\nimport { useScheduledBwics } from '../hooks/useScheduledBwics';\r\nimport { BwicStatus } from '../../../types/enums/BwicStatus';\r\n\r\nexport function HeatMapScheduledBwicsWidget() {\r\n const history = useHistory();\r\n\r\n const filter = useSelector((s: AppState) => s.dashboard.filter);\r\n const { requestStateFetchNextBusinessDates, nextBusinessDates } = useNextBusinessDates(moment());\r\n const filterActive = useSelector((s: AppState) => s.dashboard.filterActive);\r\n const { bwics, requestStateFetchBwics } = useScheduledBwics();\r\n\r\n const { selectedRatings, selectedCurrencies } = filter;\r\n\r\n const filteredBwics = useMemo(() => bwics.map(bwic => ({\r\n ...bwic,\r\n securities: bwic.securities\r\n .filter(security => (selectedRatings.length\r\n ? (\r\n selectedRatings.some(r => r === security.rating) ||\r\n (\r\n selectedRatings.some(r => r === RatingGroup.OTHER) &&\r\n ratingGroupValues[RatingGroup.OTHER].some(r => r === security.rating)\r\n )\r\n )\r\n : true\r\n ) &&\r\n (selectedCurrencies.length ? selectedCurrencies.some(currency => currency === security.currency) : true)\r\n )\r\n })), [bwics, selectedCurrencies, selectedRatings]);\r\n\r\n const onHeatMapCellClick = useCallback((date: string, hour: number, cellRatings: string[]) => {\r\n const { minHourForRedirect } = dashboardChartHeatMapConstants;\r\n const momentDate = moment(String(date), constants.dashboardDateFormat);\r\n if (cellRatings.length) {\r\n const date = momentDate.format();\r\n const searchParams = {\r\n ratings: chartUtils.getRatingsForSearchUrl(cellRatings),\r\n statuses: [BwicStatus.scheduled, BwicStatus.bidding, BwicStatus.finished],\r\n dateFrom: date,\r\n dateTo: date,\r\n currency: selectedCurrencies.length === 2 ? '' : selectedCurrencies[0]\r\n };\r\n const serializers: QueryStringArgumentSerializer[] = [ratings(), statuses(), currency(selectedCurrencies), dateFrom(), dateTo()];\r\n const queryString = queryStringSerializer.serialize(searchParams, serializers);\r\n history.push({\r\n pathname: routes.allBWICs,\r\n search: queryString,\r\n });\r\n } else if (user.hasRoles(roles.SellerTrader)) {\r\n momentDate.set({ hour: Number(hour), minute: 0, second: 0, millisecond: 0 });\r\n momentDate.tz('EST');\r\n if (momentDate.hours() < minHourForRedirect) {\r\n momentDate.set({ hour: minHourForRedirect, minute: 0, second: 0 })\r\n }\r\n history.push({\r\n pathname: routes.newBWIC,\r\n state: { dateTime: momentDate.format() }\r\n });\r\n }\r\n }, [history, selectedCurrencies]);\r\n\r\n const renderHeatMap = useMemo(() => (\r\n \r\n ), [filteredBwics, nextBusinessDates, onHeatMapCellClick]);\r\n\r\n const title = \"BWICs Heatmap\";\r\n\r\n return (\r\n \r\n \r\n \r\n

{title}

\r\n
\r\n \r\n {renderHeatMap}\r\n
\r\n \r\n Plan out your bidding schedule all in one place. Filter by rating and click on any time\r\n slot to view the most relevant listings.\r\n \r\n \r\n Find the ideal time to run your next BWIC; data suggest that intra-day competition can\r\n affect execution.\r\n \r\n
\r\n
\r\n \r\n
\r\n )\r\n}\r\n","import { ColumnBuilder } from \"../../../bidding/common/table/columns/column-builder/ColumnBuilder\";\r\nimport { IColumnDefinition } from \"../../../bidding/common/table/types/ColumnDefinition\";\r\nimport { TopChartCompany } from \"../../../../types/dashboard/TopChartCompany\";\r\nimport { PipelineWidgetColumn } from \"../../../../types/dashboard/PipelineWidgetColumn\";\r\nimport { TopFilterTypes } from \"../../../../types/dashboard/RedirectFilterTypes\";\r\nimport { moneyUtils } from \"../../../../utils\";\r\nimport { FilterLinkIcon } from '../../../amrPipeline/common/FilterLinkIcon';\r\nimport { ImSubscriptionActionBlocker } from '../../../amrPipeline/subscription/ImSubscriptionActionBlocker';\r\nimport { BankLink } from \"../../../amrPipeline/common/BankLink\";\r\n\r\nconst buyColumnsDefinitions: IColumnDefinition[] = [\r\n {\r\n columnKey: PipelineWidgetColumn.company,\r\n renderColumnHeaderContent: () => \"Arrangers\",\r\n renderColumnContent: ({ company }) => (\r\n \r\n ),\r\n headerClassName: \"data-list-cell-md-flexible\",\r\n bodyClassName: \"data-list-cell-md-flexible\",\r\n sortingField: PipelineWidgetColumn.company,\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.redirectToIm,\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: ({ company }, context) =>\r\n \r\n {blocked => (\r\n \r\n )}\r\n ,\r\n headerClassName: \"data-list-cell-xxxs\",\r\n bodyClassName: \"data-list-cell-xxxs\",\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.dealBalanceTotal,\r\n renderColumnHeaderContent: () => \"Size\",\r\n renderColumnContent: ({ dealBalanceTotal }, context) =>\r\n `${context.currency} ${moneyUtils.amountToRoundedMM(dealBalanceTotal, true)}`,\r\n headerClassName: \"data-list-cell-sm-01 text-right\",\r\n bodyClassName: \"data-list-cell-sm-01 text-right\",\r\n sortingField: PipelineWidgetColumn.dealBalanceTotal,\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.emptySize, // Empty column if there is no \"Size\" column\r\n renderColumnHeaderContent: () => \"\",\r\n renderColumnContent: () => \"\",\r\n headerClassName: \"data-list-cell-sm-01 text-right\",\r\n bodyClassName: \"data-list-cell-sm-01 text-right\",\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.numberOfTransactions,\r\n renderColumnHeaderContent: () => \"Trans\",\r\n renderColumnContent: ({ numberOfTransactions }) => numberOfTransactions,\r\n headerClassName: \"data-list-cell-xs text-right\",\r\n bodyClassName: \"data-list-cell-xs text-right\",\r\n sortingField: PipelineWidgetColumn.numberOfTransactions,\r\n },\r\n];\r\nexport const topArrangersColumns = buyColumnsDefinitions.map((c) => {\r\n return new ColumnBuilder(c);\r\n});\r\n","import { useState, useEffect } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { AppState } from \"../../../types/state/AppState\";\r\nimport { isRequesting } from \"../../../utils\";\r\nimport { SORT, SORTING_TYPE, constants, issuanceMonitorWidget } from \"../../../constants\";\r\nimport { Table } from \"../../bidding/common/table\";\r\nimport { topArrangersColumns } from \"./columns/TopArrangersColumns\";\r\nimport { Pagination } from \"../tables/Pagination\";\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from \"../widget\";\r\nimport { DashboardSkeleton } from \"../DashboardSkeleton\";\r\nimport {\r\n dashboardFetchTopArrangers,\r\n dashboardExportTopArrangers,\r\n} from \"../../../actions/dashboard.actions\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { TopChartCompany } from \"../../../types/dashboard/TopChartCompany\";\r\nimport { getAvailableYears, getSortingParamsForExport } from \"./top-list.utils\";\r\nimport { YearSelector } from \"../../controls/YearSelector\";\r\nimport { DashboardNoSelectedFilters } from \"../DashboardNoSelectedFilters\";\r\nimport { useSortedList } from \"../../../effects\";\r\nimport { ShowFor } from \"../../access\";\r\nimport { DropDownList, DropDownListItem } from \"../../controls/DropDownList\";\r\nimport ImExportButton from \"../../amrPipeline/common/ImExportButton\";\r\nimport { PipelineWidgetColumn } from \"../../../types/dashboard/PipelineWidgetColumn\";\r\nimport { SubscriptionFeature } from '../../../types/billing/SubscriptionFeature';\r\nimport { hasWidgetsAccess } from '../../../utils/amr-pipeline.utils';\r\nimport { CollateralTypesList } from \"../../../constants/dashboard/collateral-types\";\r\nimport { amrChartUtils } from \"../../../utils/amr-chart.utils\";\r\nimport { ChartRequiredFeature } from \"../../access/ChartRequiredFeature\";\r\nimport { TopIssuersCurrencyTypes, TopIssuersTransactionTypes } from './constants';\r\n\r\nconst availableYears: number[] = getAvailableYears();\r\n\r\nconst getFilterValue = (value: string) =>\r\n value === constants.allListItem ? undefined : value;\r\n\r\ninterface Props {\r\n onListItemClick?: () => void;\r\n}\r\n\r\nexport function TopArrangersWidget({ onListItemClick }: Props) {\r\n const [type, setType] = useState(constants.allListItem);\r\n const [year, setYear] = useState(availableYears[0]);\r\n const [currency, setCurrency] = useState(constants.allListItem);\r\n const [collateralType, setCollateralType] = useState(CollateralTypesList[0].value);\r\n const [page, setPage] = useState(1);\r\n const [sortBy, setSortBy] = useState(\"\");\r\n const [sortDirection, setSortDirection] = useState(SORT.DESC);\r\n\r\n const topArrangers = useSelector((s: AppState) => s.dashboard.topArrangers);\r\n\r\n const isSortByCompany = sortBy === PipelineWidgetColumn.company;\r\n const sortingType = isSortByCompany ? SORTING_TYPE.company : '';\r\n const [sortedDataItems] = useSortedList(topArrangers, sortBy, sortDirection, sortingType);\r\n\r\n const withSizeColumn = type !== constants.allListItem && currency !== constants.allListItem;\r\n\r\n const requestStateFetchTopArrangers = useSelector(\r\n (s: AppState) => s.dashboard.requestStateFetchTopArrangers\r\n );\r\n const requestStateExportTopArrangers = useSelector(\r\n (s: AppState) => s.dashboard.requestStateExportTopArrangers\r\n );\r\n\r\n const hasAccess = hasWidgetsAccess(SubscriptionFeature.Top10ArrangersTable);\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n if (!hasAccess) {\r\n return;\r\n }\r\n\r\n dispatch(\r\n dashboardFetchTopArrangers(\r\n getFilterValue(type),\r\n getFilterValue(currency),\r\n year,\r\n getFilterValue(collateralType)\r\n )\r\n );\r\n setPage(1);\r\n }, [dispatch, hasAccess, type, currency, year, collateralType]);\r\n\r\n const columnContext = () => ({\r\n onListItemClick,\r\n currency,\r\n });\r\n\r\n const handleTypeChange = ({ value }: DropDownListItem) => setType(value.toString());\r\n const handleCurrencyChange = ({ value }: DropDownListItem) => setCurrency(value.toString());\r\n const handleYearChange = (yearValue?: number) => setYear(yearValue);\r\n\r\n const handleSortChange = (field: string, direction: string) => {\r\n setSortBy(field);\r\n setSortDirection(direction);\r\n };\r\n\r\n const handleExportChart = () =>\r\n dispatch(\r\n dashboardExportTopArrangers(\r\n getFilterValue(type),\r\n getFilterValue(currency),\r\n year,\r\n getFilterValue(collateralType),\r\n getSortingParamsForExport(sortBy, sortDirection),\r\n )\r\n );\r\n const onPageChanged = (selectedPage: number) => setPage(selectedPage);\r\n\r\n const tableColumns = withSizeColumn\r\n ? topArrangersColumns.filter(c => c.column.columnKey !== PipelineWidgetColumn.emptySize)\r\n : topArrangersColumns.filter(c => c.column.columnKey !== PipelineWidgetColumn.dealBalanceTotal);\r\n\r\n const renderTable = () =>\r\n sortedDataItems.length > issuanceMonitorWidget.itemsOnPage ? (\r\n \r\n {(items: TopChartCompany[]) => (\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n );\r\n\r\n const chartName = \"Top-10 Arrangers\";\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{chartName}

\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n ({\r\n value,\r\n text,\r\n selected: value === type,\r\n }))}\r\n onChange={handleTypeChange}\r\n className=\"custom-drop-down-ghost\"\r\n prefix=\"Type: \"\r\n />\r\n
\r\n
\r\n ({\r\n value,\r\n text,\r\n selected: value === currency,\r\n }))}\r\n onChange={handleCurrencyChange}\r\n className=\"custom-drop-down-ghost\"\r\n defaultSortingEnabled={false}\r\n prefix=\"Ccy: \"\r\n />\r\n
\r\n
\r\n ({\r\n ...x,\r\n selected: collateralType === x.value,\r\n }))}\r\n defaultSortingEnabled={false}\r\n onChange={({ value }) => setCollateralType(value as string)}\r\n renderSelectedItemCallback={amrChartUtils.renderSelectedFilterOptionWithPrefix('Collat.')}\r\n className=\"custom-drop-down-ghost\"\r\n />\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {sortedDataItems.length ? renderTable() : }\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import { ColumnBuilder } from \"../../../bidding/common/table/columns/column-builder/ColumnBuilder\";\r\nimport { IColumnDefinition } from \"../../../bidding/common/table/types/ColumnDefinition\";\r\nimport { TopChartCompany } from \"../../../../types/dashboard/TopChartCompany\";\r\nimport { TopFilterTypes } from \"../../../../types/dashboard/RedirectFilterTypes\";\r\nimport { PipelineWidgetColumn } from \"../../../../types/dashboard/PipelineWidgetColumn\";\r\nimport { moneyUtils } from \"../../../../utils\";\r\nimport { ManagerLink } from \"../../../amrPipeline/common/ManagerLink\";\r\nimport { FilterLinkIcon } from '../../../amrPipeline/common/FilterLinkIcon';\r\nimport { ImSubscriptionActionBlocker } from '../../../amrPipeline/subscription/ImSubscriptionActionBlocker';\r\n\r\nconst buyColumnsDefinitions: IColumnDefinition[] = [\r\n {\r\n columnKey: PipelineWidgetColumn.company,\r\n renderColumnHeaderContent: () => \"Issuers\",\r\n renderColumnContent: ({ company }) => (\r\n \r\n ),\r\n headerClassName: \"data-list-cell-md-flexible\",\r\n bodyClassName: \"data-list-cell-md-flexible\",\r\n sortingField: PipelineWidgetColumn.company,\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.redirectToIm,\r\n renderColumnHeaderContent: () => '',\r\n renderColumnContent: ({ company }, context) =>\r\n \r\n {blocked => (\r\n \r\n )}\r\n ,\r\n headerClassName: \"data-list-cell-xxxs\",\r\n bodyClassName: \"data-list-cell-xxxs\",\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.dealBalanceTotal,\r\n renderColumnHeaderContent: () => \"Size\",\r\n renderColumnContent: ({ dealBalanceTotal }, context) =>\r\n `${context.currency} ${moneyUtils.amountToRoundedMM(dealBalanceTotal, true)}`,\r\n headerClassName: \"data-list-cell-sm-01 text-right\",\r\n bodyClassName: \"data-list-cell-sm-01 text-right\",\r\n sortingField: PipelineWidgetColumn.dealBalanceTotal,\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.emptySize, // Empty column if there is no \"Size\" column\r\n renderColumnHeaderContent: () => \"\",\r\n renderColumnContent: () => \"\",\r\n headerClassName: \"data-list-cell-sm-01 text-right\",\r\n bodyClassName: \"data-list-cell-sm-01 text-right\",\r\n },\r\n {\r\n columnKey: PipelineWidgetColumn.numberOfTransactions,\r\n renderColumnHeaderContent: () => \"Trans\",\r\n renderColumnContent: ({ numberOfTransactions }) => numberOfTransactions,\r\n headerClassName: \"data-list-cell-xs text-right\",\r\n bodyClassName: \"data-list-cell-xs text-right\",\r\n sortingField: PipelineWidgetColumn.numberOfTransactions,\r\n },\r\n];\r\nexport const topIssuersColumns = buyColumnsDefinitions.map((c) => {\r\n return new ColumnBuilder(c);\r\n});\r\n","import { useState, useEffect } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { AppState } from \"../../../types/state/AppState\";\r\nimport { isRequesting } from \"../../../utils\";\r\nimport { SORT, SORTING_TYPE, constants, issuanceMonitorWidget, roles } from \"../../../constants\";\r\nimport { Table } from \"../../bidding/common/table\";\r\nimport { topIssuersColumns } from \"./columns/TopIssuersColumns\";\r\nimport { Pagination } from \"../tables/Pagination\";\r\nimport {\r\n DashboardWidget,\r\n DashboardWidgetContent,\r\n DashboardWidgetHeader,\r\n} from \"../widget\";\r\nimport { DashboardSkeleton } from \"../DashboardSkeleton\";\r\nimport {\r\n dashboardFetchTopIssuers,\r\n dashboardExportTopIssuers,\r\n} from \"../../../actions/dashboard.actions\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { TopChartCompany } from \"../../../types/dashboard/TopChartCompany\";\r\nimport { PipelineWidgetColumn } from \"../../../types/dashboard/PipelineWidgetColumn\";\r\nimport { getAvailableYears, getSortingParamsForExport } from \"./top-list.utils\";\r\nimport { DropDownList, DropDownListItem } from \"../../controls/DropDownList\";\r\nimport { YearSelector } from \"../../controls/YearSelector\";\r\nimport { DashboardNoSelectedFilters } from \"../DashboardNoSelectedFilters\";\r\nimport { useSortedList } from \"../../../effects\";\r\nimport { ShowFor } from \"../../access\";\r\nimport ImExportButton from \"../../amrPipeline/common/ImExportButton\";\r\nimport { CollateralTypesList } from \"../../../constants/dashboard/collateral-types\";\r\nimport { amrChartUtils } from \"../../../utils/amr-chart.utils\";\r\nimport { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\nimport { ActionBlocker } from \"../../access/ActionBlocker\";\r\nimport { TopIssuersCurrencyTypes, TopIssuersTransactionTypes } from './constants';\r\n\r\nconst availableYears: number[] = getAvailableYears();\r\n\r\nconst getFilterValue = (value: string) =>\r\n value === constants.allListItem ? undefined : value;\r\n\r\ninterface Props {\r\n onListItemClick?: () => void;\r\n}\r\n\r\nexport function TopIssuersWidget({ onListItemClick }: Props) {\r\n const [type, setType] = useState(constants.allListItem);\r\n const [currency, setCurrency] = useState(constants.allListItem);\r\n const [year, setYear] = useState(availableYears[0]);\r\n const [page, setPage] = useState(1);\r\n const [collateralType, setCollateralType] = useState(CollateralTypesList[0].value);\r\n\r\n const [sortBy, setSortBy] = useState(\"\");\r\n const [sortDirection, setSortDirection] = useState(SORT.DESC);\r\n\r\n const topIssuers = useSelector((s: AppState) => s.dashboard.topIssuers);\r\n const requestStateFetchTopIssuers = useSelector(\r\n (s: AppState) => s.dashboard.requestStateFetchTopIssuers\r\n );\r\n const requestStateExportTopIssuers = useSelector(\r\n (s: AppState) => s.dashboard.requestStateExportTopIssuers\r\n );\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n dispatch(\r\n dashboardFetchTopIssuers(\r\n getFilterValue(type),\r\n getFilterValue(currency),\r\n year,\r\n getFilterValue(collateralType)\r\n )\r\n );\r\n setPage(1);\r\n }, [dispatch, type, currency, year, collateralType])\r\n\r\n const isSortByCompany = sortBy === PipelineWidgetColumn.company;\r\n const sortingType = isSortByCompany ? SORTING_TYPE.company : '';\r\n const [sortedDataItems] = useSortedList(topIssuers, sortBy, sortDirection, sortingType);\r\n\r\n const withSizeColumn = type !== constants.allListItem && currency !== constants.allListItem;\r\n\r\n const columnContext = () => ({\r\n onListItemClick,\r\n currency,\r\n });\r\n\r\n const handleTypeChange = ({ value }: DropDownListItem) => setType(value.toString());\r\n const handleCurrencyChange = ({ value }: DropDownListItem) => setCurrency(value.toString());\r\n const handleYearChange = (yearValue?: number) => setYear(yearValue);\r\n\r\n const handleSortChange = (field: string, direction: string) => {\r\n setSortBy(field);\r\n setSortDirection(direction);\r\n };\r\n\r\n const handleExportChart = () =>\r\n dispatch(\r\n dashboardExportTopIssuers(\r\n getFilterValue(type),\r\n getFilterValue(currency),\r\n year,\r\n getFilterValue(collateralType),\r\n getSortingParamsForExport(sortBy, sortDirection),\r\n )\r\n );\r\n const onPageChanged = (selectedPage: number) => setPage(selectedPage);\r\n\r\n const tableColumns = withSizeColumn\r\n ? topIssuersColumns.filter(c => c.column.columnKey !== PipelineWidgetColumn.emptySize)\r\n : topIssuersColumns.filter(c => c.column.columnKey !== PipelineWidgetColumn.dealBalanceTotal);\r\n\r\n const renderTable = () =>\r\n sortedDataItems.length > issuanceMonitorWidget.itemsOnPage ? (\r\n \r\n {(items: TopChartCompany[]) => (\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n );\r\n\r\n const chartName = \"Top-10 Issuers\";\r\n\r\n return (\r\n \r\n \r\n \r\n

{chartName}

\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n {blocked =>\r\n ({\r\n value,\r\n text,\r\n selected: value === type,\r\n }))}\r\n className=\"custom-drop-down-ghost\"\r\n prefix=\"Type: \"\r\n disabled={blocked}\r\n onChange={handleTypeChange}\r\n />}\r\n \r\n
\r\n
\r\n \r\n {blocked =>\r\n ({\r\n value,\r\n text,\r\n selected: value === currency,\r\n }))}\r\n disabled={blocked}\r\n className=\"custom-drop-down-ghost\"\r\n defaultSortingEnabled={false}\r\n prefix=\"Ccy: \"\r\n onChange={handleCurrencyChange}\r\n />}\r\n \r\n
\r\n
\r\n \r\n {blocked =>\r\n ({\r\n ...x,\r\n selected: collateralType === x.value,\r\n }))}\r\n disabled={blocked}\r\n defaultSortingEnabled={false}\r\n renderSelectedItemCallback={amrChartUtils.renderSelectedFilterOptionWithPrefix('Collat.')}\r\n className=\"custom-drop-down-ghost\"\r\n onChange={({ value }) => setCollateralType(value as string)}\r\n />}\r\n \r\n
\r\n
\r\n \r\n {blocked =>\r\n }\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {sortedDataItems.length ? renderTable() : }\r\n \r\n
\r\n
\r\n );\r\n}\r\n"],"names":["UsBslNewIssueDsWidget","_jsx","UsBslNewIssueWeeklySpread","divId","title","field","feature","SubscriptionFeature","UsBslNewIssueDsGraph","_ref","usBslNewIssueSpreads","useSelector","state","dashboard","requestStateUsBslNewIssueSpreads","withData","useMemo","some","spread","currentField","Object","values","value","chart","IssuanceSpreadChart","spreads","fieldSelector","DashboardWidget","className","children","DashboardSkeleton","inProgress","isRequesting","_jsxs","ChartRequiredFeature","chartName","blockedClassName","lowerCase","replace","DashboardWidgetHeader","DashboardWidgetContent","requestState","description","ShowFor","undefined","DashboardNoData","imgName","imgWidth","imgHeight","text","DealerFilterOptions","Pagination","list","total","itemsOnPage","onPageChanged","_ref$currentPage","currentPage","_ref$withGoToPageNavi","withGoToPageNavigation","_useState","useState","_useState2","_slicedToArray","selectedPage","setSelectedPage","_useState3","_useState4","pages","setPages","_useState5","_useState6","pageInput","setPageInput","_useState7","_useState8","errorPageInput","setErrorPageInput","totalItems","length","useEffect","Math","ceil","validatePageInput","concat","handleChangePageInput","e","Number","target","error","handlePageChange","page","getLastItemIndexInList","_Fragment","slice","onClick","disabled","IconSVG","classNames","name","width","height","visiblePages","i","push","getVisiblePages","result","forEach","p","index","renderPagesList","MaskedInput","mask","createNumberMask","prefix","allowDecimal","onChange","defaultProps","DealerListFilter","filterOptions","onFilterChange","getDealerTypeOptions","map","o","_objectSpread","visible","FilterSelect","isApplied","selected","options","onSelectAll","_getDealerTypeOptions","_getDealerTypeOptions2","favorite","onPlatform","offPlatform","onClearAll","_getDealerTypeOptions3","_getDealerTypeOptions4","onChangeItemSelection","DashboardWidgetLoadContentError","getAvailableYears","minYear","arguments","issuanceMonitorWidget","currentYear","Date","getFullYear","arrayUtils","arrayFromRange","reverse","getSortingParamsForExport","sortBy","sortDirection","ascending","SORT","ASC","companySorting","PipelineWidgetColumn","company","numberOfTransactions","getSortingParamsForStatisticExport","dealNameSorting","dealName","CurrencyTickPrefix","_defineProperty","Currency","EUR","USD","GroupingTickFormat","ChartGrouping","M","tickformat","dtick","Q","Y","ChartRangeFormat","MonthDateFormat","YearDateFormat","ChartLegends","ShortLongDatedDealsChart","deals","filter","_ref$periodsCount","periodsCount","chartLayout","chartShortLongDatedDeals","tickColor","tickFont","barColors","zeroLineColor","hoverlabel","dealsWithDate","_ref2","year","month","rest","_objectWithoutProperties","_excluded","date","moment","isPercentMode","ChartUnits","PercentByCount","PercentByVolume","includes","units","getDimension","grouping","format","quarter","getMetric","row","Count","dealBalanceTotal","groupByDate","data","isSame","iteratee","amrChartUtils","groupingToUnitOfTime","reduce","acc","existingEntry","find","_toConsumableArray","x","entries","actualDataRange","valueGetter","minDateRow","min","maxDateRow","max","toMoment","getActualDataRange","chartRange","_ref3","chartRangeMin","chartRangeMax","clone","add","subtract","startOf","getChartRange","dataRange","isBefore","getDataRange","groupedData","Volume","groupedByType","groupBy","shortOrLong","ShortOrLongDated","Short","Long","shortOrLongDated","dataByType","get","groupedByDate","fillGaps","gapsFiller","stats","dimension","metric","sum","_ref4","_ref5","_ref5$","_ref5$2","y","groupVolumeData","allGroupedByDate","elelemntsByDate","dayTotal","shortOrLongDayTotal","numericUtils","round","_ref6","_ref7","_ref7$","_ref7$2","groupPercentData","_ref8","_ref9","type","hovertemplate","customdata","marker","color","getChartTraces","getChartData","layout","currencyCode","_GroupingTickFormat$f","showlegend","autosize","hovermode","barmode","ChartView","Stacked","xaxis","tickcolor","range","tickfont","fixedrange","rangeslider","bgcolor","yaxis","showgrid","showtickprefix","gridcolor","ticks","zerolinecolor","ticksuffix","tickprefix","getLayout","Plot","onHover","chartUtils","setCursor","onUnhover","points","point","startPeriod","endPeriod","endOf","first","toDate","transactionType","constants","allListItem","config","mainConfig","ShortLongDatedDealsFilter","handleValueChange","prop","chartTypes","ChartTypes","chartUnits","ChartUnitsList","FilterPanel","FilterSection","DropDownList","items","defaultSortingEnabled","FilterSwitch","caption","ShortLongDatedDealsWidget","managerReferenceName","subtitle","_ref$defaultFilter","defaultFilter","startDate","_ref$withFilter","withFilter","_ref$filterComponent","filterComponent","FilterComponent","_ref$className","_ref$feature","ShortAndLongDatedDealsGraph","onChartClick","_useSelector","shortLongDatedDeals","requestStateShortLongDatedDeals","dispatch","useDispatch","hasAccess","hasWidgetsAccess","filterState","setFilterState","dashboardShortLongDatedDealsRequest","DashboardNoSelectedFilters","InviteToJoinPopup","messageMaxLength","currentUser","user","current","defaultMessageText","firstName","lastName","message","setMessage","messageError","setMessageError","s","inviteToJoin","inviteToJoinPopupVisible","handleClose","inviteToJoinActions","setVisiblePopup","disabledSendButton","Popup","onClose","modalClass","errorMessages","maxLength","sendInviteToJoin","InviteToJoinAllButton","_ref$disabled","stopPropagation","RoleActionBlocker","roles","SellerTrader","blocked","OnHoverTooltip","overlay","FeatureButton","ConfirmRequestToBidPopup","useAppDispatch","confirmRequestToBidPopupState","dealers","confirmRequestToBidPopup","isRequestingSendRequestToBidRequest","requestToBidRequestState","brokerDealersState","dealersSelector","brokerDealerUsers","useBrokerDealerUsers","settlementAgentAgreements","useSettlementAgentAgreements","getDealers","useCallback","d","isClearingBank","dealerId","id","status","companyStatuses","active","statusCode","contact","companyId","agreement","settlementAgent","Confirm","onConfirm","dealersActions","requestToBid","clearingBankId","onCancel","hideBidRequestConfirmPopup","TextComponent","c","ConfirmRequestToBid","Dealers","brokerDealers","useBrokerDealers","brokerDealerContacts","useBrokerDealerContacts","favoritesState","useFavorites","favoriteDealers","favorites","agreementsState","disabledInviteAllButton","searchTerm","dealerList","isRequestingBrokerDealers","isRequestedInitialData","isLoading","hasRoles","isRequestSuccess","reset","dealerListActions","useDealersFilter","inviteCompanyButtonDisabledState","dealer","dealerContacts","isOffPlatform","hasNotInvitedParticipant","invitationSent","distributionListInvitationNotSent","distributionList","distributionListInvitationSent","headOfTradingInvitationNotSent","headOfTrading","headOfTradingInvitationSent","canSendRequestToBid","CompanyStatus","handleRequestAllDealers","showBidRequestConfirmPopup","SearchInput","placeholder","setSearchTerm","onClear","maxLengthValue","placement","BrokerDealerTrader","TooltipPlacement","BottomRight","option","updateFilterOptions","expandDealers","Stats","FeatureLink","path","routes","editContacts","setEditableContact","role","email","phone","readonly","deleted","Preloader","DealerList","contacts","users","enableContactOptions","enableRequestToBid","noResultsFoundMessage","onResetClick","clearFilterOptions","topStaticDealColumns","columnKey","renderColumnHeaderContent","renderColumnContent","transaction","ActionBlocker","IssuanceMonitorFullAccess","dealLegalName","DetailedPageLink","headerClassName","bodyClassName","sortingField","relatedTransactions","context","dealReferenceName","numberOfDealPublishedTransactions","FilterRelatedTransactionsIcon","onListItemClick","collateralType","formatUtils","formatCollateralType","currency","code","emptyPlaceholder","ColumnBuilder","availableYears","dealsMinYear","TopStaticDeals","setYear","setPage","setSortBy","setSortDirection","topStaticDeals","requestStateFetchTopStaticDeals","requestStateExportStaticDeals","StaticDealsTable","dashboardFetchTopStaticDeals","sortingType","SORTING_TYPE","transactionCurrency","_useSortedList","useSortedList","sortedDataItems","columnContext","handleSortChange","direction","ImExportButton","isExportLoad","handleExport","dashboardExportTopStaticDeals","YearSelector","years","selectedYear","currentYearPrefix","yearValue","showAllOption","Table","onSort","defaultSortBy","defaultSortByDirection","dataItems","columns","createSecurityCustomArgs","useScheduledBwics","bwics","useAppSelector","myBwics","requestStateFetchBwics","isRequestNone","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","dashboardFetchBwics","RequestState","request","dashboardService","fetchScheduledBwics","sent","success","t0","failure","errorActions","stop","TopIssuersTransactionTypes","TransactionType","newIssue","refi","TopIssuersCurrencyTypes","MaxRangeYears","UsBslEuCompliantDealsChart","usBslEuCompliantDeals","usBslDeals","chartUsBslEuCompliant","formatByGrouping","groupData","Array","from","elements","balance","getTraceFromGroupedData","_groupAll","_len","args","_key","grouped","dimensions","flatten","sort","a","b","sortedUniqBy","groupAll","_groupAll2","dataByUniqueDimensions","_len2","_key2","groupedEuCompliant","groupedUsBsl","ratioTrace","uniqDimensions","groupedEsgLanguageDeals","groupedUsBslNewIssue","esgLanguageBalance","usBslNewIssueBalance","getRatioTrace","euCompliantTrace","usBslTrace","mode","_amrChartUtils$getEdg","getEdgeDimensionValues","rangeMin","rangeMax","sliderRange","Grouped","yaxis2","zeroline","autorange","automargin","showline","autotick","ticklabelposition","side","overlaying","UsBslEuCompliantDealsFilter","unit","UsBslEuCompliantDealsWidget","usBslEuCompliantDealsState","requestStateUsBslEuCompliantDeals","EuCompliantAsPercentOfBslGraph","dashboardUsBslEuCompliantDealsRequest","getDailyDimension","day","isNil","dateFormat4","_ref2$getDimension","_ref2$divId","chartUsBslNewIssueSpreads","bar","border","isSingleValueSpread","median","q1","q3","getHoverInfoText","outliers","moneyUtils","money","bottomOutlier","topOutlier","outlier","isSingleValue","isEmptyMarker","emptyMarker","isEmptyMarkerSpread","box","count","lowerfence","upperfence","fillcolor","hoverinfo","boxpoints","size","bottomOutliers","separatethousands","UsBslNewIssueWarfWidget","UsBslNewIssueWarfGraph","UsBslNewIssueWeeklySpreads","UsBslNewIssueWasGraph","dashboarNewIssuedWeeklySpreadsRequest","UsBslNewIssueWasWidget","ChartBarScheduledBwics","chartDiv","selectedCurrencies","chartData","history","useHistory","yAxisDTick","dashboardChartBar","onBarClick","String","dashboardDateFormat","formatTimeStringWithoutTimeZone","searchParams","statuses","BwicStatus","scheduled","bidding","finished","dateFrom","dateTo","ratings","getRatingForSearchString","serializers","queryString","queryStringSerializer","serialize","pathname","allBWICs","search","roundTo","isInt","n","getYAxesRange","to","maxValue","steppedSlice","cratTo","charts","el","textposition","label","margin","fontSize","xAxisRange","barGap","barGroupGap","bordercolor","bgColor","font","fontColor","family","fontFamily","bargap","bargroupgap","mirror","getDTick","onInitialized","setCursorByDiv","BarScheduledBwicsWidget","_useNextBusinessDates","useNextBusinessDates","requestStateFetchNextBusinessDates","nextBusinessDates","_useScheduledBwics","filterActive","selectedRatings","getDataForBarChart","ratingGroupOtherValues","ratingGroupValues","RatingGroup","OTHER","ratingWithGroupValues","array","indexOf","ratingColors","bwic","bidsDueDateUtc","local","dataIndex","securities","number","security","k","yItem","rating","toFixed","renderMaximized","RatingColorLabel","Rating","AAA","AA","A","BBB","BB","B","NR","style","background","topTrusteesColumns","legalName","redirectToIm","ImSubscriptionActionBlocker","FilterLinkIcon","referenceName","TopFilterTypes","trustees","tooltip","amountToRoundedMM","emptySize","getFilterValue","TopTrusteesWidget","setType","setCurrency","_useState9","CollateralTypesList","_useState10","setCollateralType","_useState11","_useState12","_useState13","DESC","_useState14","topTrustees","requestStateFetchTopTrustees","requestStateExportTopTrustees","Top10TrusteesTable","dashboardFetchTopTrustees","withSizeColumn","tableColumns","column","dashboardExportTopTrustees","toString","renderSelectedItemCallback","renderSelectedFilterOptionWithPrefix","UsBslEsgNewIssueChart","esgLanguageDeals","usBslNewIssue","chartUsBslEsgNewIssue","esgLanguageDealsTrace","usBslNewIssueTrace","UsBslEsgNewIssueFilter","UsBslEsgNewIssueWidget","_usBslEsgNewIssue$esg","_usBslEsgNewIssue$usB","usBslEsgNewIssue","requestStateUsBslEsgNewIssue","EsgAsPercentOfBslNewIssueGraph","isDataLoaded","dashboardUsBslEsgNewIssueRequest","WidgetDescription","lines","_useContext","useContext","DashboardWidgetContext","setDescriptionExpanded","descriptionExpanded","ClampLines","moreText","lessText","innerElement","BoxPxTalkAndColorWidget","selectedSecurityHistory","requestStateFetchSecurityHistory","searchTermItem","lookupCache","searchSecurities","chartHasData","pxTalks","chartVisible","features","getSecurityBwicStatistics","BwicMonitorHistoricalData","requireAllFeatures","dashboardExportBwiStatistic","SecuritiesSearchInput","defaultSearchTerm","singleSearch","onSearch","dashboardOnSelectedSecurity","requiredFeature","ChartBox","historyList","dashboardChartBox","showHoverInfo","evalPriceTalkVisible","Media","BarDntChart","chartBarDnt","dTick","yAxisLastLineMargin","defaultYRangeMaxValue","defaultDTick","getTotalAmount","dataForAmount","amount","getPercentValue","dntRates","ratingData","rate","ratingDataWithDnt","dnt","amountByDnt","dividedValue","divideSafe","getBarText","formatDecimal","percent","endDate","getMoneyString","rates","ratingDataUSD","ratingDataEUR","amountUSD","amountEUR","roundToNumber","getPercentage","getYRange","BarDntWidget","requestStateFetchDntRates","filteredDntRates","getTime","getDntRates","Tabs","activeTab","onTabClick","TabList","TabItem","DashboardSellBuyTabs","Buy","Sell","sellColumns","entity","BwicStatusLabel","liveBidding","openBiddingEnabled","isParsed","directBidding","isClearingBankParticipant","isAllToAll","isSameDayBwic","SameDayBwicIcon","dateTime","dateTimeUtils","utcToLocalString","bwicName","BwicViewLink","small","bwicReferenceName","isDirectBidding","isMy","isParticipant","MyBwics","_ref$hideCreateNewBwi","hideCreateNewBwic","setSortParams","handleNewBwicClick","newBWIC","seller","Administrator","DataEntry","Viewer","bd","DirectBiddingDisclaimerActionBlocker","buyColumns","ParsedBwicLabel","position","isinCusip","string","ticker","amountToMM","Link","sellerBuy","BidAsDealerRequests","bidAsDealerRequests","requestStateBidAsDealerRequests","MyScheduledBwicsWidget","setActiveTab","useAllToAllAgreementBlocked","isBd","apply","isBdTrader","isSeller","getRequests","response","dashboardFetchBidRequestsAsSeller","bidAsDealerRequestService","findBidRequestsAsSeller","isinCusipsAndTickers","types","pageSize","submittedBids","unexpectedError","useMyBidRequests","renderMyBwics","RequiredFeature","getBidAsDealerRequests","DashboardPortfolioBwicSecurities","portfolioSecurities","portfolioExist","requestStateFetchPortfolioSecurities","handleClick","newPortfolio","wrapperClass","PortfolioAgreementDisclaimerActionBlocker","CreatePortfolioButton","DashboardPortfolioInventorySecurities","portfolioInventory","totalRecordNumber","requestStateGetSecurities","sortField","sortOrder","isRequestFailed","hasFeatures","viewIncludedToPortfolioInventory","dashboardGetPortfolioInventorySecuritiesRequest","InventorySecurityOrderByColumn","InventorySecuritySortOrder","dashboardSetPortfolioInventoryCurrentPage","InventoryPositionStatus","added","lastUpdateDate","inventory","traded","createSecurityCustomClassName","order","dashboardPortfolioInventorySortParamsChanged","PortfolioWidget","_ref$showAlerts","showAlerts","hasPortfolio","requestStateFetchPortfolioExist","useEmailPreferences","usePageConfig","PageConfigType","Portfolio","BwicFilterType","dashboardInitPortfolioSecurities","dashboardPortfolioInventoryReset","BwicInventoriesTabs","Bwic","PortfolioAlertsPreferences","Inventory","BarColorChart","_ref$onClick","chartColorBar","yAxisRange","annotationMargin","barColor","annotations","dates","amountPercent","xref","yref","arrowhead","ax","ay","amountMoney","BarColorWidget","colorRates","requestStateFetchColorRates","getAmountVolume","amountMoneyInCurrency","currencySign","keys","getVolume","join","getAmountByDay","ratesList","getCurrencies","Currencies","sc","main","_current$main$reduce","mainResult","amountInColor","priceInColor","handleBarClick","searchRatings","Ratings","_sortByDates","sortedByDates","r","sr","CCC","D","currentRating","item","sortByDates","localeCompare","dateData","_getAmountByDay","getColorRates","BarSameDayChart","chartBarSameDay","periodFrom","amountPercentBySameDay","periodToDisplay","amountToDisplay","BarSameDayWidget","serverDateType","sameDayPeriods","requestStateFetchSameDayPeriods","cloneDeep","sameDayBwicsData","periodData","byRating","filterByRatingCurrency","filterData","_getTotalAmount","amountByPeriod","sameDay","amountBySameDay","amountBySameDayByCurrency","currencyName","getAmountPercent","amountByCurrency","getAmountToDisplay","period","formatPeriodToDisplay","periodName","split","getSameDayBwics","DtcSellingBuyingChart","formatChartMoney","getYLineValues","currentYValue","plotData","positiveBarColor","chartDtcSellingBuyingConstants","negativeBarColor","lineColor","line","dash","shape","createPlotData","yAxisMargin","minValue","annotationsFont","abs","tickangle","DtcSellingBuyingWidget","dtcSellingBuying","requestStateDtcSellingBuying","amountByMonth","igCustomerSell","hyCustomerSell","igCustomerBuy","hyCustomerBuy","dateFormat","minMaxYear","maxYear","getDtcSellingBuying","DtcIgHyChart","pointData","ig","hy","igBarColor","chartDtcIgHyConstants","hyBarColor","barWidth","yIg","yHy","getYAxesMaxValue","yAxesMaxValueLineMargin","roundMaxValue","DtcIgHyWidget","dtcIgHy","requestStateDtcInvestmentGrade","hyVolume","igVolume","getVantageData","AAAPriceLevelChart","momentDates","formatDates","md","aaaPriceLevelConstants","shapes","x0","y0","minAvgPriceTalk","x1","y1","maxAvgPriceTalk","shapeLine","trace1","avgColor","avgColorMarker","trace2","avgPriceTalk","avgPriceTalkMarker","layoutFont","autoscale","titlefont","AAAPriceLevelWidget","aaaPriceLevel","requestStateFetchAAAPriceLevel","getMedianTripleA","MostTradedTickersWidget","mostTradedTickers","mostTradedTickersSelector","requestStateMostTradedTickers","isEmptyList","renderTable","mostTradedTickersColumns","getMostTradedTickers","createSelector","tickersData","t","trades","tradesVol","avgSize","avgPxTalk","PxTalkDeviationChart","getHoverText","chartPxTalkDeviation","markerSize","markersColors","PxTalkDeviationWidget","currentFilter","useRef","pxTalkDeviation","requestStateFetchPxTalkDeviation","notAppliedFilter","filterChanged","setFilterChanged","notAppliedSelectedRatings","isActive","isEqual","selectedRating","sortedByRatings","priceTalkDeviation","pxTalk","avgDeviation","yValue","average","getPriceTalkDeviation","BwicPercentOfTraceChart","igPercent","bwicPercentOfTrace","lineWidth","igLineColor","igMarkerColor","symbol","hyPercent","hyLineColor","hyMarkerColor","rangemode","allYValues","additionalValueInPercentagesForLastLine","BwicPercentOfTraceWidget","requestStateFetchBwicPercentOfTrace","getBwicPercentOfTrace","DashboardKWatchNewsWidget","kWatchNews","requestStateFetchKWatchNews","KWatchNewsWidget","news","BiggestMoversWidget","biggestMovers","biggestMoversSelector","requestStateFetchBiggestMovers","biggestMoversDetails","details","biggestMoversColumns","getBiggestMovers","lastPrice","prevPrice","difference","absDifference","lastDate","prevDate","daysBetweenTrade","priceVelocity","Filter","onChangeRating","xor","dashboardSetNotAppliedFilter","onChangeCurrency","isRatingFilterApplied","isCurrencyFilterApplied","CanUseDashboardFilter","multiply","dashboardSetFilter","FilterClear","isShown","dashboardClearFilter","KIndicatorChart","trace","kIndicator","traceMarker","traceZeroLine","_minBy","_maxBy","floor","minBy","maxBy","totalYTicks","endFirstShape","endSecondShape","xAxisTickFormat","xAxisDTick","yaxisDtick","layer","KIndicatorWidget","dataKIndicator","requestStateFetchKIndicator","Dashboard","withRouter","location","anchorElement","requestStateInitDashboard","dashboardInit","searchSecuritiesActions","dashboardResetNotAppliedFilter","_anchorElement$curren","scrollIntoView","behavior","setAnchorRef","anchor","trim","hash","redirectToIssuanceMonitor","AMRPipeline","filtered","IntersectionObserverProvider","threshold","ref","HeatMapScheduledBwicsWidget","PriceLevelWidget","DailyTradingStatsWidget","issuanceMonitorAccess","IssueTransactionVolumeWidget","TopIssuersWidget","IssuanceSpreadWidget","withSlider","TopArrangersWidget","pipelineRequestCriteria","startDateDashboard","TopDebutDeals","topDebutDealsColumns","collateralManager","ManagerLink","issuer","pricingDate","getSortType","topDebutDeals","requestStateFetchTopDebutDeals","requestStateExportDebutManagers","DebutManagersTable","dashboardFetchTopDebutDeals","sortByType","dashboardExportTopDebutDeals","_ref$text","DealerUser","href","DealerContactOptions","_ref$canEditContact","canEditContact","sending","onEditContact","onDeleteContact","onSend","onMenuShow","onMenuHide","ContextMenu","customTargetComponent","menuItems","ListBuilder","addWhen","action","requiredRoles","onShow","onHide","DealerContact","_React$useState","React","_React$useState2","setActive","brokerDealerList","entities","editableContact","inviteToJoinRequestStatus","fullName","nameUtils","getFullName","cn","_brokerDealerList$fin","dealerName","deleteContact","contactInviteToJoin","DealerHeadOfTrading","headOfTradingInviteToJoin","DealerDistributionList","distributionListInviteToJoin","ViewSettlementAgentCommission","commission","isPopupVisible","setPopupVisible","ViewSettlementAgentCommissionPopup","companyName","DealerRequestToBidButton","dealerUsers","agreementStatus","SettlementAgreementStatus","pending","rejected","BidAsDealerAgreementStatusLabel","rejectReason","comment","confirmed","dailyTradingLimit","DailyTradingLimitDialog","valueLabel","commissions","DealerCompany","expanded","expandEnabled","selectEnabled","companyBids","favoriteButtonDisabled","onSelectAllChange","agreements","_ref$liveBidding","isConfirmedClearingBank","_agreements$find","members","totalUsersContacts","handleSetSelected","setDealerExpanded","isLiveBiddingBlockedOffplatform","checkboxDisabled","Checkbox","checked","renderSelectCheckBox","FavoriteButton","hideWhenNotFavorite","Pluralize","singular","m","initialFormState","EditContactPanel","_editableContact$cont4","brokerDealerContactList","companyNames","initialFormData","handleSubmit","_editableContact$cont","editableContactSave","validationSchema","yup","matches","required","test","duplicateDealerEmail","stringUtils","isNullOrEmpty","_editableContact$cont2","_editableContact$cont3","sensitivity","handleEmailCustomValidate","nonWhitespace","phoneMaxLength","invalidValue","resetEditableContact","Formik","initialValues","onSubmit","_errors$dealerName","isTouched","errors","touched","setFieldValue","Form","noValidate","PopupBody","htmlFor","AutoCompleteInput","sourceItems","editableContactUpdateDealer","handleSetDealerName","isInvalid","isArray","FormError","InputField","markRequired","pattern","source","loading","PopupFooter","updateRequestStatus","_ref$enableContactOpt","_ref$enableRequestToB","_ref$selectEnabled","bidsByCompany","_ref$allSelected","allSelected","_ref$favoriteButtonDi","selectedDealers","onSelectChange","selectAllCheckboxDisabled","admin","expandedDealers","expandedAll","dealersByExpandableState","apiUtils","normalize","u","selectedDealersCount","expandAllEnabled","key","setExpandAllDealers","every","_expandedDealers$d$id","toggleExpandedAllDealers","handleToggleCollapseAll","usersByCompany","contactsByCompany","isIndeterminate","partially","renderSelectAllCheckbox","Summary","_expandedDealers$deal","_contactsByCompany$ge","_usersByCompany$get","_bidsByCompany$get","EmptyPlaceholder","ImageSVG","containerRef","initialClientHeight","useContentVisibilityLogger","clientHeight","Provider","marginBottom","getContainerStyles","defaultIsMinimized","dailyTradingStatsColumns","totalTradingVolume","totalPostedVolume","tradedCount","postedCount","dntRate","avgTradeVolume","isNaN","avgColorPrice","collapsibleDescription","tradingStats","requestStateExportTradingStats","requestStateFetchTradingStats","tradingStatsData","showDescription","setShowDescription","dashboardInitTradingStats","tradedCondition","bwicStatus","bwicStatuses","hasColor","colorCondition","normalizedLevel","tableData","dataByRating","statItem","countNormalizedLevel","amountPriceInColor","tradedWithColorData","pxTalkAmount","pxTalkCount","calculateStats","sumProductForDntRange","sumProductForPriceInColor","NaN","getTotal","getTableData","renderDescription","overlayClassName","PxTalkNormalizationTable","getTradingStats","fullScreen","filterCurrencies","filterRatings","dashboardExportTradingStats","Accordion","AccordionItem","isSelected","AccordionItemHeader","onItemHeaderClick","showAdditionalIcon","AccordionItemBody","KWatchNewsListItem","newsItem","category","provider","NewsCategory","None","newsCategoryTitles","toLowerCase","NewsLabel","newsLabelTitles","NewsProvider","LondonStockExchangeGroup","CLOResearchGroup","src","newsProviderLogos","alt","newsProviderTitles","KWatchNews","noTooltip","newsUrl","NewsAdditionalSection","slidesToShow","maxCountNewsOnSlider","KWatchNewsList","sliderRef","sliderStateRef","isHovered","slideIndex","lastScrolledIndex","settings","dots","infinite","slidesToScroll","vertical","verticalSwiping","autoplay","autoplaySpeed","speed","afterChange","sliderRefCurrent","sliderStateRefCurrent","setTimeout","slickGoTo","slickListDiv","document","getElementsByClassName","handleWheel","event","_sliderRef$current","preventDefault","nextIndex","deltaY","addEventListener","removeEventListener","renderNews","onMouseEnter","onMouseLeave","slickNext","Slider","onAllNewsClick","hasKWatchNewsAccess","classnames","IssueTransactionVolumeChart","chartIssueTransactionVolume","momentDate","_getEdgeDimensionValu","firstElement","_ref3$","_ref3$2","CollateralType","broadlySyndicated","middleMarket","collateralTypes","view","ViewLabel","ChartTypeList","IssueTransactionVolumeFilter","changedFilter","CanUseIssueTransactionChartFilter","issueTransactionVolume","requestStateIssueTransactionVolume","dashboardInitIssueTransactionVolume","capitalize","dashboardIssueTransactionVolumeRequest","PriceLevelChart","priceLevelData","getDataByRating","filteredData","averageColorValue","arrayStats","getArrayStats","boxData","exclusive","priceLevelBarColors","chartsPriceLevel","valuesForRange","linesInChart","layoutXAxisLineColor","margins","requestStateFetchPriceLevel","priceLevel","hasData","isBusinessDay","dashboardInitPriceLevel","filterChartData","getPriceLevels","_ref$inProgress","BarWidthInDays","W","dayMs","ChartDimensionFormat","TooltipDimensionFormat","issuanceSpread","commonMedian","_ref$withSlider","chartIssuanceSpread","minAdditionalYAmount","week","yearA","yearB","monthA","monthB","quarterA","quarterB","getChartDimension","_getDimension2","_getDimension","getTooltipDimesion","mean","commonMedianData","trendMeanData","accum","xAxis","_getAdditionalYData","isLowData","rowsToAdd","rangeY","dtickY","getAdditionalYData","tick0","xaxis2","showticklabels","periodStart","periodEnd","term","floaterIndex","FloaterIndexList","FloaterIndex","Fixed","Sofr","Libor","Euribor","RatingsList","AllTermsItem","payload","TermsList","Term","PeriodsList","CurrencyList","IssuanceSpreadFilter","_ref$availableGroupin","availableGroupings","_ref$withAllTermsOpti","withAllTermsOption","renderSelectedWithPrefix","renderListItemWithDescription","periods","terms","renderItemContentCallback","IssuanceSpreadsGraph","requestStateIssuanceSpread","issuanceSpreads","dashboardIssuanceSpreadRequest","HeatMapScheduledBwics","onHeatMapCellClick","colorScale","dashboardChartHeatMapConstants","whiteColorScale","linkFontColor","textColor","annotationFontColors","firstTimeSlot","maxColumns","getMoney","_getTimeValues","resultTimeValues","resultYTick","hours","yLabels","workingTimeInterval","userTimeOffsetInMin","utcOffset","toItem","timeValues","unshift","yTick","getTimeValues","_getChartData","z","totalSize","getInitialValues","time","dateIndex","timeIndex","zItem","zItemTotal","securityRating","getAnnotationsFontColor","zValue","byOnePercent","valueInPercent","colorIndex","getCellText","cellData","cellRatings","SellerViewer","getWarningText","plot_bgcolor","i1","index1","i2","index2","showarrow","linecolor","linewidth","tickvals","ticktext","heatMap","showscale","hoverongaps","colorscale","columnCollection","xgap","ygap","_point$pointIndex","pointIndex","columnIndex","cellIndex","hour","filteredBwics","minHourForRedirect","getRatingsForSearchUrl","set","minute","second","millisecond","tz","renderHeatMap","topArrangersColumns","BankLink","arranger","topArrangers","requestStateFetchTopArrangers","requestStateExportTopArrangers","Top10ArrangersTable","dashboardFetchTopArrangers","dashboardExportTopArrangers","topIssuersColumns","topIssuers","requestStateFetchTopIssuers","requestStateExportTopIssuers","dashboardFetchTopIssuers","handleTypeChange","handleCurrencyChange","handleYearChange","dashboardExportTopIssuers"],"sourceRoot":""}