{"version":3,"file":"5695.78bb22b207a284a64263.js","mappings":"yJAIA,MAAMA,EAAe,CAAC,CAAE,SAAAC,CAAS,IAAM,CACrC,MAAMC,KAAS,MAAWC,CAAS,EACnC,OAAuB,gBAA6B,MAAO,CAAE,UAAWD,EAAO,IAAK,EAAGD,CAAQ,CACjG,EACME,EAAaC,IAAW,CAC5B,QAAM,OAAI,CACR,QAAS,OACT,SAAU,OACV,WAAY,SACZ,IAAKA,EAAM,QAAQ,CAAC,EACpB,UAAWA,EAAM,QAAQ,CAAC,CAC5B,CAAC,CACH,E,kDCdA,MAAMC,EAAW,CAAC,CAAE,KAAAC,EAAM,OAAAC,CAAO,IACR,gBAA6B,MAAO,CAAE,MAAO,CAAE,QAAS,QAAS,SAAUD,EAAM,WAAYC,CAAO,CAAE,CAAC,C,8FCC5HC,EAAY,OAAO,eACnBC,EAAa,OAAO,iBACpBC,EAAoB,OAAO,0BAC3BC,EAAsB,OAAO,sBAC7BC,EAAe,OAAO,UAAU,eAChCC,EAAe,OAAO,UAAU,qBAChCC,EAAkB,CAACC,EAAKC,EAAKC,IAAUD,KAAOD,EAAMP,EAAUO,EAAKC,EAAK,CAAE,WAAY,GAAM,aAAc,GAAM,SAAU,GAAM,MAAAC,CAAM,CAAC,EAAIF,EAAIC,CAAG,EAAIC,EACtJC,EAAiB,CAACC,EAAGC,IAAM,CAC7B,QAASC,KAAQD,IAAMA,EAAI,CAAC,GACtBR,EAAa,KAAKQ,EAAGC,CAAI,GAC3BP,EAAgBK,EAAGE,EAAMD,EAAEC,CAAI,CAAC,EACpC,GAAIV,EACF,QAASU,KAAQV,EAAoBS,CAAC,EAChCP,EAAa,KAAKO,EAAGC,CAAI,GAC3BP,EAAgBK,EAAGE,EAAMD,EAAEC,CAAI,CAAC,EAEtC,OAAOF,CACT,EACIG,EAAgB,CAACH,EAAGC,IAAMX,EAAWU,EAAGT,EAAkBU,CAAC,CAAC,EAC5DG,EAAY,CAACC,EAAQC,IAAY,CACnC,IAAIC,EAAS,CAAC,EACd,QAASL,KAAQG,EACXZ,EAAa,KAAKY,EAAQH,CAAI,GAAKI,EAAQ,QAAQJ,CAAI,EAAI,IAC7DK,EAAOL,CAAI,EAAIG,EAAOH,CAAI,GAC9B,GAAIG,GAAU,MAAQb,EACpB,QAASU,KAAQV,EAAoBa,CAAM,EACrCC,EAAQ,QAAQJ,CAAI,EAAI,GAAKR,EAAa,KAAKW,EAAQH,CAAI,IAC7DK,EAAOL,CAAI,EAAIG,EAAOH,CAAI,GAEhC,OAAOK,CACT,EACA,SAASC,EAAaC,EAAI,CACxB,IAAIC,EAAKD,EAAI,CAAE,MAAOE,CAAU,EAAID,EAAIE,EAAQR,EAAUM,EAAI,CAAC,OAAO,CAAC,EACvE,MAAM3B,KAAS,MAAW8B,CAAe,EACnC,CAACC,CAAE,KAAI,YAAS,IAAM,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,EACzDC,EAAa,CACjB,gBAAAC,EACA,eAAAC,EACA,YAAaA,CACf,EACA,OAAuB,gBAA6B,MAAO,CAAE,UAAWlC,EAAO,IAAK,EAAG4B,GAA6B,gBAA6B,QAAS,CAAE,UAAW5B,EAAO,MAAO,QAAS+B,CAAG,EAAGH,EAAW,IAAK,MAAM,EAAmB,gBAA6B,KAAQR,EAAcJ,EAAe,CAAE,gBAAiB,GAAM,QAASe,CAAG,EAAGF,CAAK,EAAG,CAAE,WAAAG,CAAW,CAAC,CAAC,CAAC,CACjX,CACA,MAAMC,EAAmBJ,GAAU,CACjC,KAAM,CAAE,SAAA9B,CAAS,EAAI8B,EACf7B,KAAS,MAAW8B,CAAe,EACzC,OAAuB,gBAA6B,IAAmBV,EAAcJ,EAAe,CAAC,EAAGa,CAAK,EAAG,CAAE,aAAW,MAAGA,EAAM,UAAW7B,EAAO,SAAS,CAAE,CAAC,EAAGD,CAAQ,CACjL,EACMmC,EAAkBL,GAAU,CAChC,KAAM,CAAE,UAAAM,EAAW,SAAApC,CAAS,EAAI8B,EAC1B7B,KAAS,MAAW8B,CAAe,EACzC,OAAuB,gBAA6B,MAAO,CAAE,aAAW,MAAGK,EAAWnC,EAAO,cAAc,CAAE,EAAGD,CAAQ,CAC1H,EACM+B,EAAmB5B,IAAW,CAClC,QAAM,OAAI,CACR,QAAS,OACT,SAAU,GACV,WAAY,QACd,CAAC,EACD,SAAO,OAAI,CACT,MAAOA,EAAM,OAAO,KAAK,UACzB,WAAY,QACd,CAAC,EACD,aAAW,OAAI,CACb,WAAY,OACZ,YAAa,aACf,CAAC,EACD,kBAAgB,OAAI,CAClB,QAAS,OACT,WAAY,SACZ,KAAM,UACN,MAAOA,EAAM,OAAO,KAAK,UACzB,SAAU,EACZ,CAAC,CACH,E,mFC1DO,MAAMkC,EAAeP,GAAiB,CAC3C,MAAMQ,EAAaC,EAA8BT,CAAK,EAChDU,EAAWC,EAAuBH,EAAYR,CAAK,EAEzD,OACE,gBAAC,IAAW,CAAC,MAAM,oBAAoB,cAAY,gCACjD,gBAAC,MACC,MAAM,OACN,SAAU,CAAC,CAAE,MAAAd,CAAM,IAAMc,EAAM,SAASd,CAAM,EAC9C,MAAOwB,EACP,QAAS,CACP,CACE,MAAO,qBACP,QAASV,EAAM,uBACjB,EACA,CACE,MAAO,eACP,SAAU,GACV,QAASQ,CACX,CACF,EACA,YAAY,iBACZ,QAAS,GAAGR,EAAM,0BAClB,cAAc,MAChB,CACF,CAEJ,EAEMS,EAAgC,CAAC,CAAE,iBAAAG,CAAiB,IAA6C,CACrG,MAAMC,EAAYD,GAAkB,UAC9BE,EAAaF,GAAkB,WAErC,SAAO,WAAQ,IACT,CAACC,GAAa,CAACC,EACV,CAAC,KAGH,MAA8BD,EAAyBC,CAAwB,EAAE,IAAK1B,IAAO,CAClG,GAAGA,EACH,MAAOA,EAAE,IACX,EAAE,EACD,CAACyB,EAAWC,CAAU,CAAC,CAC5B,EAEMH,EAAyB,CAACH,EAA4CR,OACnE,WAAQ,IACM,CAAC,GAAGQ,EAAY,GAAGR,EAAM,uBAAuB,EACjD,KAAMe,GAAMA,EAAE,QAAUf,EAAM,kBAAkB,EACjE,CAACQ,EAAYR,EAAM,mBAAoBA,EAAM,uBAAuB,CAAC,C,2FCxDnE,MAAMgB,EAAU,CAAC,CAAE,MAAAC,EAAO,MAAA/B,EAAQ,GAAI,SAAAgC,CAAS,IAAa,CACjE,KAAM,CAACC,EAAOC,CAAQ,KAAI,YAASlC,GAAS,EAAE,EAExCmC,KAAoB,YAASH,EAAU,GAAI,EAEjD,OAAAA,EAAYI,GAAW,CACrBF,EAASE,EAAE,OAAO,KAAK,EACvBD,EAAkBC,EAAE,OAAO,KAAK,CAClC,EAGE,gBAAC,IAAW,CAAC,MAAM,YACjB,gBAAC,IAAK,CAAC,GAAI,GAAGL,aAAkB,MAAOE,EAAO,SAAAD,CAAA,CAAoB,CACpE,CAEJ,C,oHCFO,MAAMK,EAAY,CAAC,CACxB,MAAAN,EACA,wBAAAO,EACA,SAAAN,EACA,MAAAO,EACA,eAAAC,EACA,WAAAC,EACA,iBAAAf,EACA,aAAAgB,CACF,IAAa,CACX,MAAMC,KAAiB,WAAQ,OAAM,MAAqBH,EAAgBC,CAAU,EAAG,CAACD,EAAgBC,CAAU,CAAC,EACnH,OACE,gBAAC,IAAgB,KACf,gBAAC,KACC,MAAM,qBACN,QAAQ,kMAER,gBAAC,KACC,QAAS,GAAGV,uBACZ,wBAAAO,EACA,MAAAC,EACA,SAAWK,GAAMZ,EAAS,CAAE,GAAGO,EAAO,GAAGK,CAAE,CAAC,EAC5C,iBAAAlB,EACA,aAAAgB,CAAA,CACF,CACF,EACA,gBAAC,IAAW,CAAC,MAAM,mBAAmB,QAASC,CAAA,EAC7C,gBAAC,KACC,QAAS,GAAGZ,qBACZ,wBAAAO,EACA,QAASC,EAAM,gBACf,SAAWM,GAAWb,EAAS,CAAE,GAAGO,EAAO,gBAAiBM,CAAO,CAAC,EACpE,gBAAiB,KACnB,CACF,CACF,CAEJ,C,wEC5CO,MAAMC,EAAoB,CAAC,CAChC,QAAAC,EACA,MAAAR,EACA,wBAAAD,EACA,SAAAN,EACA,iBAAAN,EACA,aAAAgB,CACF,IAAa,CACX,KAAM,CAAE,iBAAkBM,CAAI,EAAIT,EAClC,GAAI,CAAE,UAAAZ,EAAW,WAAAC,CAAW,EAAIF,GAAoB,CAAC,EAErD,KAAM,CAAE,iBAAAuB,EAAkB,aAAAC,CAAa,KAAI,WACzC,OAAM,MAAuBvB,EAAWC,EAAYoB,EAAKN,CAAY,EACrE,CAACf,EAAWC,EAAYoB,EAAKN,CAAY,CAC3C,EAEA,OACE,gBAAC,MACC,SAAU,CAAC,CAAE,MAAA1C,CAAM,IAAMgC,EAAS,CAAE,GAAGO,EAAO,iBAAkBvC,CAAO,CAAC,EACxE,MAAO,CAAC,GAAGkD,EAAc,GAAGZ,CAAuB,EAAE,KAAMT,GAAMA,EAAE,QAAUoB,CAAgB,EAC7F,QAAS,CACP,CACE,MAAO,qBACP,QAASX,CACX,EACA,CACE,MAAO,oBACP,SAAU,GACV,QAASY,CACX,CACF,EACA,YAAY,mBACZ,QAAAH,EACA,cAAc,MAChB,CAEJ,C,mHChCO,MAAMI,EAAU,CAAC,CACtB,MAAApB,EACA,OAAQqB,EAAW,CAAC,EACpB,MAAAb,EACA,SAAAP,EACA,oBAAAqB,EACA,iBAAA3B,CACF,IAAa,CACX,MAAM4B,KAAU,WACd,IAAM,CAACD,EAAqB,MAAG,MAAuB,CAAC,GAAGD,EAAU,GAAG,IAAa,CAAC,CAAC,EACtF,CAACA,EAAUC,CAAmB,CAChC,EAEA,OACE,gBAAC,IAAgB,KACf,gBAAC,KACC,MAAM,WACN,QAAQ,qTAER,gBAAC,MACC,QAAS,GAAGtB,aACZ,MAAM,OACN,YAAY,eACZ,QAAAuB,EACA,MAAOf,EAAM,UAAY,CAAC,EAC1B,SAAWe,GAAY,CACrBtB,EAAS,CAAE,GAAGO,EAAO,SAAUe,EAAQ,IAAKC,GAAMA,EAAE,KAAM,CAAE,CAAC,CAC/D,EACA,cAAc,MAChB,CACF,EACA,gBAAC,KACC,iBAAA7B,EACA,wBAAyB2B,EAAoB,QAC7C,mBAAoBd,EAAM,mBAC1B,SAAUA,EAAM,UAAY,CAAC,EAC7B,SAAWiB,GAAuBxB,EAAS,CAAE,GAAGO,EAAO,mBAAAiB,CAAmB,CAAC,EAC3E,MAAAzB,CAAA,CACF,CACF,CAEJ,C,0ICzCA,MAAM0B,EAAmB,IACnBC,EAAoB,MAEpBC,EAAwBC,GAC5BA,EAAQ,QAAQ,CAAC,CAAE,IAAA7D,EAAK,SAAA8D,EAAU,MAAA7D,EAAO,UAAA8D,CAAU,IAAM,CAAC/D,EAAK8D,EAAU7D,EAAO8D,CAAS,CAAC,EAAE,MAAM,EAAG,EAAE,EAEnGC,EAAY,CAAC,IAAK,KAAM,KAAM,KAAK,EAAE,IAAI,GAAQ,EAIjDC,EAAsB,CAAC,aAAa,EAE7BC,EAAc,CAAC,CAAE,OAAAC,EAAS,CAAC,EAAG,QAASC,EAAa,SAAUC,EAAW,oBAAAf,CAAoB,IAAa,CACrH,MAAMgB,KAAuB,MAAqBF,CAAW,EACvDP,EAAUS,EAAW,OAAO,CAAC,CAAE,IAAAtE,CAAI,IAAM,CAACiE,EAAoB,SAASjE,CAAG,CAAC,EAC3EuE,EAAmBD,EAAW,OAAO,CAAC,CAAE,IAAAtE,CAAI,IAAMiE,EAAoB,SAASjE,CAAG,CAAC,EAEnFuD,KAAU,WACd,IAAM,CAACD,EAAqB,MAAG,MAAuB,OAAO,KAAKa,CAAM,CAAC,CAAC,EAC1E,CAACA,EAAQb,CAAmB,CAC9B,EAEMkB,EAAa,CAAC,CAAE,IAAAxE,EAAM,GAAI,MAAAC,EAAQ,EAAG,IAAuB,CAE7CsD,EAAQ,KAAMkB,GAC3BA,EAAG,QACElB,EAAQ,KAAMmB,GAAQA,EAAI,QAAU1E,CAAG,EAEzCyE,EAAG,QAAUzE,CACrB,GAECuD,EAAQ,KAAK,CAAE,MAAOvD,EAAK,MAAOA,CAAI,CAAC,EAGzC,MAAM2E,EAAeR,EAAO,eAAenE,CAAG,EAC1C,CAACsD,EAAqB,GAAGa,EAAOnE,CAAG,EAAE,IAAI,GAAQ,CAAC,EAClD,CAACsD,CAAmB,EAExB,OADqBqB,EAAa,KAAMF,GAAOA,EAAG,QAAUxE,CAAK,GAE/D0E,EAAa,KAAK,CAAE,MAAO1E,EAAO,MAAAA,CAAM,CAAC,EAGpC,CAAE,QAAAsD,EAAS,aAAAoB,CAAa,CACjC,EAEM1C,EAAY2C,GAAkC,CAClD,MAAMf,EAAUe,EAAM,OAAOL,CAAgB,EAAE,IAAI,CAAC,CAAE,IAAAvE,EAAK,SAAA8D,EAAU,MAAA7D,EAAO,UAAA8D,CAAU,KAAO,CAC3F,IAAK/D,GAAO,GACZ,SAAU8D,GAAYJ,EACtB,MAAOzD,GAAS,GAChB,UAAW8D,GAAaJ,CAC1B,EAAE,EACFU,EAAUT,EAAqBC,CAAO,CAAC,CACzC,EAEMgB,EAAa,CAACC,EAAuBC,EAAsCC,IAA6B,CAC5G,KAAM,CAAE,IAAAhF,EAAM,GAAI,SAAA8D,EAAWJ,EAAkB,MAAAzD,EAAQ,GAAI,UAAA8D,EAAYJ,CAAkB,EAAImB,EACvF,CAAE,QAAAvB,EAAS,aAAAoB,CAAa,EAAIH,EAAWM,CAAI,EAEjD,OACE,gBAAC,KAAe,CAAC,QAAQ,KAAK,MAAM,QAClC,gBAAC,MACC,aAAW,mBACX,kBAAoBG,GAAM,kBAAkBA,IAC5C,iBAAgB,GAChB,MAAOjF,EACP,QAASuD,EACT,SAAU,CAAC,CAAE,MAAOvD,EAAM,EAAG,IAAM+E,EAAa,CAAE,IAAA/E,EAAK,SAAA8D,EAAU,MAAA7D,EAAO,UAAA8D,CAAU,CAAC,EACrF,EACA,gBAAC,MACC,MAAOD,EACP,QAASE,EACT,SAAU,CAAC,CAAE,MAAOF,EAAWJ,CAAiB,IAAMqB,EAAa,CAAE,IAAA/E,EAAK,SAAA8D,EAAU,MAAA7D,EAAO,UAAA8D,CAAU,CAAC,EACxG,EACA,gBAAC,MACC,aAAW,qBACX,YAAY,mBACZ,kBAAoBkB,GAAM,oBAAoBA,IAC9C,iBAAgB,GAChB,MAAAhF,EACA,QAAS0E,EACT,SAAU,CAAC,CAAE,MAAA1E,EAAQ,EAAG,IAAM8E,EAAa,CAAE,IAAA/E,EAAK,SAAA8D,EAAU,MAAA7D,EAAO,UAAA8D,CAAU,CAAC,EAChF,EACA,gBAAC,IAAe,CAAC,aAAW,SAAS,KAAK,QAAQ,QAAQ,YAAY,QAASiB,EAAc,KAAK,QAAS,EAC7G,CAEJ,EAEA,OACE,gBAAC,IAAS,KACR,gBAAC,KACC,MAAM,SACN,QAAQ,kMAER,gBAAC,IAAU,CAAC,MAAOnB,EAAS,WAAAgB,EAAwB,SAAA5C,CAAA,CAAoB,CAC1E,CACF,CAEJ,C,6DC9GO,SAASiD,EAAe,CAAE,MAAA1C,EAAO,SAAAP,EAAU,WAAAkD,CAAW,EAAmC,CAC9F,MAAMC,EAAaC,GAAe,CAC5BA,EAAM,MAAQ,UAAYA,EAAM,UAAYA,EAAM,WACpDA,EAAM,eAAe,EACrBF,EAAW,EAEf,EAEA,OACE,gCACE,gBAAC,KACC,KAAK,QACL,UAAU,oBACV,MAAO3C,EACP,KAAM,GACN,YAAY,4DACZ,OAAQ2C,EACR,SAAW9C,GAAMJ,EAASI,EAAE,cAAc,KAAK,EAC/C,UAAA+C,CAAA,CACF,CACF,CAEJ,C,wKCfO,MAAME,EAAc,CAAC,CAAE,MAAAtD,EAAO,SAAAC,EAAU,YAAAsD,EAAa,oBAAAjC,CAAoB,IAE5E,gBAACkC,EAAA,EAAS,KACR,gBAACC,EAAA,GACC,MAAM,eACN,QAAS,GAAGzD,iBACZ,QACE,gCAAE,OACI,gBAAC,YAAK,cAAY,EAAO,2GAE/B,GAGF,gBAAC,KAAe,KACd,gBAAC0D,EAAA,GACC,cAAa,GAAG1D,wBAChB,MAAOuD,IAAgB,WACvB,SAAWlD,GAAMJ,EAASI,EAAE,cAAc,QAAU,GAAK,UAAU,EACrE,EACA,gBAAC,MACC,QAAS,GAAGL,iBACZ,wBAAyBsB,EAAoB,QAC7C,QAASiC,EACT,SAAAtD,EACA,SAAUsD,IAAgB,WAC1B,gBAAiB,KACnB,CACF,CACF,CACF,E,oCCrBG,MAAMI,EAAoFC,IAAgB,CAC/G,YAAaA,EAAW,kBAAkB,EAC1C,mBAAoB,cACpB,gBAAiB,wBACjB,iBAAkB,KAAe,WACjC,SAAU,CAAC,EACX,QAAS,CAAC,CACZ,GAEaC,EAAsFD,IAAgB,CACjH,YAAaA,EAAW,kBAAkB,EAC1C,MAAO,EACT,GAEA,SAASE,EAAO,CACd,MAAA9D,EACA,MAAAQ,EACA,WAAAE,EACA,SAAUqD,EACV,WAAAZ,EACA,eAAA1C,EACA,oBAAAa,CACF,EAAmC,CACjC,MAAM0C,KAAyB,eAC5BC,GAAmC,CAClCF,EAAc,CAAE,GAAGvD,EAAO,eAAAyD,CAAe,CAAC,EAC1Cd,EAAW,CACb,EACA,CAACY,EAAeZ,EAAY3C,CAAK,CACnC,EAEM0D,KAA0B,eAC7BC,GAAqC,CACpCJ,EAAc,CAAE,GAAGvD,EAAO,gBAAA2D,CAAgB,CAAC,EAC3ChB,EAAW,CACb,EACA,CAACY,EAAeZ,EAAY3C,CAAK,CACnC,EAEA,sBAAU,IAAM,CACVA,EAAM,YAAc,KAAU,kBAAoB,CAACA,EAAM,gBAC3DuD,EAAc,CACZ,MAAOvD,EAAM,MACb,WAAYA,EAAM,WAClB,UAAW,KAAU,iBACrB,eAAgBmD,EAAsBjD,CAAU,EAChD,QAASF,EAAM,OACjB,CAAC,EAECA,EAAM,YAAc,KAAU,mBAAqB,CAACA,EAAM,iBAC5DuD,EAAc,CACZ,MAAOvD,EAAM,MACb,WAAYA,EAAM,WAClB,UAAW,KAAU,kBACrB,gBAAiBqD,EAAuBnD,CAAU,EAClD,QAASF,EAAM,OACjB,CAAC,CAEL,EAAG,CAACuD,EAAevD,EAAOE,CAAU,CAAC,EAGnC,gBAAC0D,EAAA,EAAU,MACP5D,EAAM,YAAc,KAAU,YAAcA,EAAM,YAAc,KAAU,mBAC1EA,EAAM,gBACJ,gBAAC6D,EAAA,GACC,MAAArE,EACA,oBAAAsB,EACA,eAAAb,EACA,SAAUuD,EACV,WAAAtD,EACA,MAAOF,EAAM,eACb,QAASA,EAAM,QACf,gBAAkB8D,GAAoBP,EAAc,CAAE,GAAGvD,EAAO,QAAA8D,CAAQ,CAAC,EAC3E,EAGH9D,EAAM,YAAc,KAAU,mBAAqBA,EAAM,iBACxD,gCACE,gBAAC+D,EAAA,EAAK,CAAC,IAAK,EAAG,UAAU,OACvB,gBAACC,EAAA,GACC,MAAAxE,EACA,WAAAU,EACA,SAAW+D,GACTP,EAAwB,CAAE,GAAG1D,EAAM,gBAAkB,YAAAiE,CAAyB,CAAC,EAEjF,wBAAyBnD,EAAoB,QAC7C,YAAad,EAAM,gBAAgB,YACrC,EACA,gBAACT,EAAA,GACC,MAAAC,EACA,MAAOQ,EAAM,QACb,SAAW8D,GAAoBP,EAAc,CAAE,GAAGvD,EAAO,QAAA8D,CAAQ,CAAC,EACpE,CACF,EACA,gBAACpB,EAAA,GACC,SAAWrC,GAAcqD,EAAwB,CAAE,GAAG1D,EAAM,gBAAkB,MAAOK,CAAE,CAAC,EACxF,WAAAsC,EACA,MAAO3C,EAAM,gBAAgB,MAC9B,EACD,gBAAC8C,EAAA,CACC,SAAWC,GAAwBW,EAAwB,CAAE,GAAG1D,EAAM,gBAAkB,YAAA+C,CAAY,CAAC,EACrG,YAAa/C,EAAM,gBAAgB,YACnC,MAAAR,EACA,oBAAAsB,CAAA,CACF,CACF,CAEJ,CAEJ,CAEO,MAAMoD,EAAoB,OAAWZ,CAAM,C,6DCtH3C,SAASa,EAAa,CAC3B,QAAA3D,EACA,wBAAAT,EACA,SAAAN,EACA,QAAA2E,EACA,SAAAC,EACA,gBAAAC,CACF,EAAU,CACR,MAAMvD,KAAU,WACd,IACEuD,EAAgB,IAAKC,IAAQ,CAC3B,GAAGA,EACH,MAAOA,EAAG,IACZ,EAAE,EACJ,CAACD,CAAe,CAClB,EACME,KAAiB,WAAQ,IAAMzD,EAAQ,OAAQwD,GAAO,CAACA,EAAG,MAAM,EAAG,CAACxD,CAAO,CAAC,EAElF,OACE,gBAAC,MACC,MAAM,OACN,SAAU,CAAC,CAAE,MAAAtD,CAAM,IAAMgC,EAAShC,CAAM,EACxC,MAAO,CAAC,GAAGsD,EAAS,GAAGhB,CAAuB,EAAE,KAAMT,GAAMA,EAAE,QAAU8E,CAAO,EAC/E,QAAS,CACP,CACE,MAAO,qBACP,QAASrE,CACX,EACA,CACE,MAAO,eACP,SAAU,GACV,QAASyE,CACX,CACF,EACA,YAAY,gBACZ,QAAAhE,EACA,SAAA6D,EACA,iBAAgB,GAChB,cAAc,MAChB,CAEJ,C,8FCjDA,MAAMI,EAAc,CAAE,MAAO,OAAQ,MAAO,KAAiB,IAAK,EAQrDC,EAAe,CAAC,CAAE,MAAA1E,EAAO,iBAAAb,EAAkB,SAAAM,CAAS,IAAa,CAC5E,MAAMsB,EAAU4D,EAAWxF,CAAgB,EAE3C,OACE,gBAAC,KACC,MAAM,iBACN,QAAQ,sWAER,gBAAC,KACC,SAAW1B,GAA4B,CACrC,KAAM,CAAE,iBAAkBgD,CAAI,EAAIT,EAC5B,CAAE,UAAAZ,EAAW,WAAAC,CAAW,EAAIF,GAAoB,CAAC,EACjD,CAAE,iBAAAuB,CAAiB,KAAI,MAAuBtB,EAAWC,EAAYoB,EAAKhD,CAAK,EACrFgC,EAAS,CAAE,GAAGO,EAAO,aAAcvC,EAAO,iBAAAiD,CAAiB,CAAC,CAC9D,EACA,MAAOV,EAAM,cAAgB,KAAiB,KAC9C,QAAAe,CAAA,CACF,CACF,CAEJ,EAEM4D,EAAcxF,GAAkF,CACpG,MAAME,EAAaF,GAAkB,WAC/BC,EAAYD,GAAkB,UAEpC,SAAO,WAAQ,IAAM,CACnB,GAAI,CAACE,GAAcA,IAAe,KAAW,OAASD,IAAc,KAAW,aAC7E,MAAO,CAACqF,CAAW,EAGrB,MAAM1D,EAAU,CACd0D,EACA,CACE,MAAO,OACP,MAAO,KAAiB,KACxB,YAAa,iEACf,CACF,EAEA,OAAOpF,IAAe,KAAW,WAC7B,CACE,GAAG0B,EACH,CACE,MAAO,QACP,MAAO,KAAiB,MACxB,YAAa,qEACf,CACF,EACAA,CACN,EAAG,CAAC1B,EAAYD,CAAS,CAAC,CAC5B,C,uECrDO,SAAS4E,EAAQ,CAAE,MAAAxE,EAAO,YAAAyE,EAAa,WAAA/D,EAAY,SAAAT,EAAU,wBAAAM,CAAwB,EAAU,CACpG,KAAM,CAAC6E,EAAUC,CAAW,KAAI,YAAyC,CAAC,CAAC,KAC3E,aAAU,IAAM,CACd3E,EAAW,YAAY,EAAE,KAAM0E,GAAaC,EAAYD,CAAQ,CAAC,CACnE,EAAG,CAAC1E,CAAU,CAAC,EAEf,MAAM4E,KAAgC,WACpC,IAAM,CACJ,CACE,MAAO,qBACP,QAAS/E,CACX,EACA,GAAG6E,CACL,EACA,CAACA,EAAU7E,CAAuB,CACpC,EAEA,OACE,gBAAC,IAAW,CAAC,MAAM,WACjB,gBAAC,MACC,MAAM,OACN,iBAAgB,GAChB,kBAAoB0C,GAAM,gBAAgBA,IAC1C,SAAU,CAAC,CAAE,MAAAhF,CAAM,IAAMgC,EAAShC,CAAM,EACxC,QAASqH,EACT,MAAO,CAAE,MAAOb,EAAa,MAAOA,CAAY,EAChD,YAAY,iBACZ,QAAS,GAAGzE,WAAA,CACd,CACF,CAEJ,C,wIC1BO,MAAMuF,EAAwE3B,IAAgB,CACnG,YAAaA,EAAW,kBAAkB,EAC1C,KAAM,GACN,KAAM,KACR,GAEO,SAAS4B,EAAkB,CAChC,MAAAxF,EACA,MAAAQ,EACA,WAAAE,EACA,SAAAT,EACA,oBAAAqB,EACA,WAAA6B,CACF,EAAmC,CACjC,SAASsC,EAAgBpF,EAAwB,CAC3CA,EAAE,MAAQ,SAAWA,EAAE,WACzB8C,EAAW,EACX9C,EAAE,eAAe,EACjBA,EAAE,gBAAgB,EAEtB,CAEA,OACE,gCACE,gBAACmD,EAAA,EAAS,KACR,gBAACgB,EAAA,GACC,MAAAxE,EACA,wBAAyBsB,EAAoB,QAC7C,YAAad,EAAM,YACnB,WAAAE,EACA,SAAW+D,GAAgBxE,EAAS,CAAE,GAAGO,EAAO,YAAAiE,CAAY,CAAC,EAC/D,EACA,gBAACiB,EAAA,GACC,KAAK,QACL,UAAU,oBACV,MAAOlF,EAAM,KACb,KAAM,GACN,YAAY,mEACZ,OAAQ2C,EACR,UAAWsC,EACX,SAAWpF,GAAMJ,EAAS,CAAE,GAAGO,EAAO,KAAMH,EAAE,cAAc,KAAM,CAAC,EACrE,EACA,gBAAC,OACC,aAAW,MACT,aACA;AAAA;AAAA,aAGF,EACA,aAAW,cAEX,gBAAC,KACC,MAAO,EACP,QACE,6JAEH,UAED,EACA,gBAAC,SACC,KAAM,SACN,UAAU,wBACV,YAAa,OACb,SAAWA,GAAMJ,EAAS,CAAE,GAAGO,EAAO,KAAMH,EAAE,cAAc,KAAM,CAAC,EACnE,UAAWoF,EACX,MAAOjF,EAAM,MAAQ,GACvB,CACF,CACF,CACF,CAEJ,C,gDC/EO,MAAMmF,EAAe5G,GAAkC,CAC5D,KAAM,CAAE,MAAAyB,EAAO,SAAAP,EAAU,WAAAkD,CAAW,EAAIpE,EAClC,CAAE,UAAA6G,CAAU,EAAIpF,EAEtB,OACE,gBAACxD,EAAA,EAAY,KACX,gBAAC2B,EAAA,GACC,MAAM,aACN,QAAS,KACT,MAAOiH,EACP,SAAU,CAAC,CAAE,MAAA3H,CAAM,IAAM,CACvBgC,EAAS,CAAE,GAAGO,EAAO,UAAWvC,CAAO,CAAC,EACxCkF,EAAW,CACb,EACF,EACA,gBAAC9F,EAAA,EAAQ,CAAC,KAAM,EAAG,CACrB,CAEJ,E,0BCdO,MAAMwI,EAAe9G,GAAiB,CAC3C,KAAM,CAAE,WAAA2B,EAAY,MAAOoF,EAAM,WAAA3C,EAAY,SAAAlD,CAAS,EAAIlB,EAEpD,CAACgH,EAAUC,CAAW,KAAI,YAAS,EAAK,EACxCxF,KAAQ,WAAQ,IAAM,CAC1B,GAAI,CAACuF,EAAU,CACbC,EAAY,EAAI,EAChB,MAAMC,EAAgBvF,EAAW,aAAaoF,CAAI,EAElD,OAAA7F,EAAS,CAAE,GAAGgG,CAAc,CAAC,EACtBA,EAET,OAAOH,CACT,EAAG,CAACA,EAAMpF,EAAYT,EAAU8F,CAAQ,CAAC,EAEnCG,EAAW,CAAE,MAAG,KAAgBxF,CAAU,EAAG,GAAGF,EAAM,QAAS,EAC/D2F,EAAoBtF,GAAgB,CACxCZ,EAAS,CAAE,GAAGO,EAAO,SAAUK,CAAE,CAAC,EAClCsC,EAAW,CACb,EAEMiD,EAAc,CACb,YAAa1F,EAAW,kBAAkB,EAAG,KAAM,GAAI,KAAM,MAClE,GAAGF,EAAM,WACX,EACM6F,EAAuBxF,GAAmB,CAC9CZ,EAAS,CAAE,GAAGO,EAAO,YAAaK,CAAE,CAAC,CACvC,EAGMJ,GADO1B,EAAM,MAAM,OAAO,OAASA,EAAM,MAAM,OAAO,CAAC,EAAE,KAAO,CAAC,IAC1C,QAAU,CAAC,EAClCuC,EAAsB,CAC1B,MAAO,qBACP,SAAU,GACV,QAASZ,EAAW,aAAa,EAAE,IAAI,GAAQ,CACjD,KAGA,aAAU,IAAM,EACV,CAACF,EAAM,WAAa,CAAC,OAAO,OAAO,IAAS,EAAE,SAASA,EAAM,SAAS,IACxEP,EAAS,CAAE,GAAGO,EAAO,UAAW,KAAU,gBAAiB,CAAC,CAEhE,CAAC,EACD,MAAMoF,EAAYpF,EAAM,UAExB,OACE,gBAAC4D,EAAA,EAAU,KACT,gBAACuB,EAAW,CAAC,MAAAnF,EAAc,SAAAP,EAAoB,WAAAkD,CAAA,CAAwB,EAEtEyC,IAAc,KAAU,QACvB,gBAACJ,EAAA,CACC,MAAOhF,EAAM,MACb,oBAAAc,EACA,SAAU+E,EACV,WAAAlD,EACA,WAAAzC,EACA,MAAO0F,CAAA,CACT,EAGDR,IAAc,KAAU,KACvB,gBAAC,MACC,MAAOpF,EAAM,MACb,oBAAAc,EACA,eAAAb,EACA,SAAAR,EACA,WAAAkD,EACA,WAAAzC,EACA,MAAAF,CAAA,CACF,EAGDoF,IAAc,KAAU,KACvB,gBAAC,MACC,MAAOpF,EAAM,MACb,oBAAAc,EACA,eAAAb,EACA,SAAU0F,EACV,WAAAhD,EACA,WAAAzC,EACA,MAAOwF,EACP,QAAS1F,EAAM,QACf,gBAAkB8D,GAAoBrE,EAAS,CAAE,GAAGO,EAAO,QAAA8D,CAAQ,CAAC,EACtE,CAEJ,CAEJ,C,kJCzFO,MAAMgC,EAAuB,CAAC,CAAE,MAAAtG,EAAO,QAAA4E,EAAS,wBAAArE,EAAyB,SAAAN,CAAS,IAAa,CACpG,MAAMsB,EAAU,KAAiB,IAAKgF,IAAQ,CAC5C,GAAGA,EACH,MAAOA,EAAG,IACZ,EAAE,EACE3B,GAAW,CAACrD,EAAQ,KAAMkB,GAAOA,EAAG,QAAUmC,CAAO,GACvDrD,EAAQ,KAAK,CAAE,MAAOqD,EAAS,KAAMA,EAAS,MAAOA,EAAS,OAAQ,EAAM,CAAC,EAE/E,MAAMI,EAAiBzD,EAAQ,OAAQgF,GAAO,CAACA,EAAG,MAAM,EAExD,OACE,gBAAC9C,EAAA,EAAW,CAAC,MAAM,kBAAkB,QAAS,GAAGzD,mBAAA,EAC/C,gBAACwG,EAAA,IACC,QAAS,GAAGxG,oBACZ,MAAM,OACN,iBAAgB,GAChB,MAAO,CAAC,GAAGuB,EAAS,GAAGhB,CAAuB,EAAE,KAAMT,GAAMA,EAAE,QAAU8E,CAAO,EAC/E,QAAS,CACP,CACE,MAAO,qBACP,QAASrE,CACX,EACA,CACE,MAAO,qBACP,SAAU,GACV,QAASyE,CACX,CACF,EACA,SAAU,CAAC,CAAE,MAAA/G,CAAM,IAAMgC,EAAShC,CAAM,EAC1C,CACF,CAEJ,E,yBC9BO,MAAMwI,EAAM,CAAC,CAAE,MAAAzG,EAAO,MAAAQ,EAAO,wBAAAD,EAAyB,SAAAN,EAAU,WAAAS,CAAW,IAAa,CAC7F,KAAM,CAACgG,EAAMC,CAAO,KAAI,YAAyC,CAAC,CAAC,EAC7D,CAAE,YAAAlC,EAAa,UAAAmC,CAAU,EAAIpG,EAEnC,sBAAU,IAAM,CACV,CAACiE,GAAe,CAACmC,GAIrBlG,EAAW,0BAA0B+D,EAAamC,CAAS,EAAE,KAAMC,GAA2C,CAC5GF,EAAQ,CACN,CACE,MAAO,qBACP,QAASpG,CACX,EACA,GAAGsG,CACL,CAAC,CACH,CAAC,CACH,EAAG,CAACnG,EAAY+D,EAAamC,EAAWrG,CAAuB,CAAC,EAG9D,gBAACkD,EAAA,EAAW,CAAC,MAAM,OACjB,gBAAC+C,EAAA,IACC,QAAS,GAAGxG,QACZ,MAAM,OACN,iBAAgB,GAChB,MAAOQ,GAAO,OAAS,CAAE,MAAOA,GAAO,MAAO,MAAOA,GAAO,SAAWA,GAAO,KAAM,EACpF,YAAY,aACZ,QAASkG,EACT,SAAU,MAAO,CAAE,MAAOI,EAAQ,GAAI,MAAOC,EAAU,EAAG,IAAM,CAE9D,MAAMC,GADO,MAAMtG,EAAW,0BAA0B+D,EAAamC,CAAS,GAC7D,KAAK,CAAC,CAAE,MAAA3I,CAAM,IAAMA,IAAUyC,EAAW,YAAY,QAAQoG,CAAK,CAAC,EACpF7G,EAAS,CAAE,GAAGO,EAAO,MAAAsG,EAAO,QAAAC,EAAS,KAAMC,GAAK,IAAK,CAAC,CACxD,EACF,CACF,CAEJ,ECpCaC,EAAW,CAAC,CAAE,MAAAjH,EAAO,MAAAQ,EAAO,wBAAAD,EAAyB,SAAAN,EAAU,WAAAS,CAAW,IAEnF,gBAAC+C,EAAA,EAAW,CAAC,MAAM,WAAW,QAAS,GAAGzD,gBAAA,EACxC,gBAACwG,EAAA,IACC,QAAS,GAAGxG,iBACZ,MAAM,OACN,iBAAgB,GAChB,MAAO,CAAC,GAAG,KAAW,GAAGO,CAAuB,EAAE,KAAMT,GAAMA,EAAE,QAAUU,GAAO,YAAkB,EACnG,QAAS,CACP,CACE,MAAO,qBACP,QAASD,CACX,EACA,GAAG,IACL,EACA,SAAU,CAAC,CAAE,MAAO2G,CAAa,IAAMjH,EAAS,CAAE,GAAGO,EAAO,aAAc0G,GAAgB,EAAG,CAAC,EAChG,CACF,EClBSC,EAAU,CAAC,CAAE,MAAAnH,EAAO,MAAAQ,EAAO,wBAAAD,EAAyB,SAAAN,EAAU,WAAAS,CAAW,IAAa,CACjG,KAAM,CAAC0G,EAAUC,CAAW,KAAI,YAAyC,CAAC,CAAC,EACrE,CAAE,YAAA5C,CAAY,EAAIjE,EAExB,sBAAU,IAAM,CACTiE,GAIL/D,EAAW,eAAe+D,CAAW,EAAE,KAAM2C,GAA6C,CACxFC,EAAY,CACV,CACE,MAAO,qBACP,QAAS9G,CACX,EACA,GAAG6G,CACL,CAAC,CACH,CAAC,CACH,EAAG,CAAC1G,EAAY+D,EAAalE,CAAuB,CAAC,EAGnD,gBAACkD,EAAA,EAAW,CAAC,MAAM,WACjB,gBAAC+C,EAAA,IACC,QAAS,GAAGxG,gBACZ,MAAM,OACN,iBAAgB,GAChB,MAAOQ,GAAO,WAAa,CAAE,MAAOA,GAAO,UAAW,MAAOA,GAAO,aAAeA,GAAO,SAAU,EACpG,YAAY,iBACZ,QAAS4G,EACT,SAAU,CAAC,CAAE,MAAOR,EAAY,GAAI,MAAOU,EAAc,EAAG,IAC1DrH,EAAS,CAAE,GAAGO,EAAO,UAAAoG,EAAW,YAAAU,EAAa,MAAO,EAAG,CAAC,EAE5D,CACF,CAEJ,ECrBa/B,EAAqE3B,IAAgB,CAChG,YAAaA,EAAW,kBAAkB,EAC1C,gBAAiB,wBACjB,iBAAkB,KAAe,WACjC,QAAS,GACT,aAAc,oBACd,UAAW,GACX,YAAa,GACb,MAAO,GACP,QAAS,GACT,eAAgB,EAClB,GAEO,SAAS2D,EAAe,CAC7B,MAAAvH,EACA,MAAAQ,EACA,WAAAE,EACA,SAAAT,EACA,oBAAAqB,EACA,eAAAb,EACA,QAAA6D,EACA,gBAAAkD,CACF,EAAmC,CACjC,MAAM5G,KAAiB,WAAQ,OAAM,MAAqBH,EAAgBC,CAAU,EAAG,CAACD,EAAgBC,CAAU,CAAC,EACnH,OACE,gCACE,gBAAC8C,EAAA,EAAS,KACR,gBAACgB,EAAA,GACC,MAAAxE,EACA,wBAAyBsB,EAAoB,QAC7C,YAAad,EAAM,YACnB,WAAAE,EACA,SAAW+D,GAAgBxE,EAAS,CAAE,GAAGO,EAAO,YAAAiE,CAAY,CAAC,EAC/D,EACA,gBAAC0C,EAAA,CACC,MAAAnH,EACA,WAAAU,EACA,wBAAyBY,EAAoB,QAC7C,MAAAd,EACA,SAAAP,CAAA,CACF,EACA,gBAACwG,EAAA,CACC,MAAAzG,EACA,WAAAU,EACA,wBAAyBY,EAAoB,QAC7C,MAAAd,EACA,SAAAP,CAAA,CACF,EACA,gBAACgH,EAAA,CACC,MAAAjH,EACA,WAAAU,EACA,wBAAyBY,EAAoB,QAC7C,MAAAd,EACA,SAAAP,CAAA,CACF,EACCO,EAAM,eAAiB,MACtB,gBAAC8F,EAAA,CACC,MAAAtG,EACA,SAAWyH,GAAmBxH,EAAS,CAAE,GAAGO,EAAO,eAAAiH,CAA+B,CAAC,EACnF,QAASjH,EAAM,eACf,wBAAyBc,EAAoB,QAC/C,EAGF,gBAACoG,EAAA,EAAgB,KACf,gBAACjE,EAAA,EAAW,CAAC,MAAM,mBAAmB,QAAS7C,CAAA,EAC7C,gBAAC+D,EAAA,GACC,QAAS,GAAG3E,qBACZ,wBAAyBsB,EAAoB,QAC7C,QAASd,EAAM,gBACf,SAAWM,GAAWb,EAAS,CAAE,GAAGO,EAAO,gBAAiBM,CAAO,CAAC,EACpE,gBAAiB,KACnB,CACF,CACF,EAEA,gBAACf,EAAA,EAAO,CAAC,MAAAC,EAAc,MAAOsE,EAAS,SAAUkD,CAAA,CAAiB,CACpE,CACF,CAEJ,C,kRC7EO,SAAS1D,EAAO,CACrB,MAAA9D,EACA,SAAAC,EACA,WAAAS,EACA,MAAAF,EACA,oBAAAc,EACA,eAAAb,EACA,QAAA6D,EACA,gBAAAkD,CACF,EAAmC,CACjC,KAAM,CAACrF,EAAQwF,CAAS,KAAI,YAA+B,CAAC,CAAC,EACvD,CAACC,EAAmBC,EAAoB,KAAI,YAA6B,CAAC,CAAC,EAC3E,CAAClI,GAAkBmI,EAAmB,KAAI,YAA2B,EACrE,CAACC,GAASC,EAAU,KAAI,YAAyC,CAAC,CAAC,EACnE,CAACZ,GAAUC,EAAW,KAAI,YAAyC,CAAC,CAAC,EACrE,CAACY,EAASC,EAAU,KAAI,YAAiB,EAAE,EAC3C,CAACC,EAAWC,EAAY,KAAI,YAAoB,CAAE,GAAG1H,EAAW,QAAQ,UAAU,CAAE,CAAC,GAE1E2H,GAAoB,CAEjCF,IAAc,OACbA,EAAU,IAAI,KAAK,SAAS,IAAME,EAAK,IAAI,KAAK,SAAS,GACxDF,EAAU,IAAI,GAAG,SAAS,IAAME,EAAK,IAAI,GAAG,SAAS,IAEvDD,GAAa,CAAE,GAAGC,CAAK,CAAC,CAE5B,GAEQ3H,EAAW,QAAQ,UAAU,CAAC,EAEtC,MAAMtD,MAAQ,MAAU,EAClBkL,KAAe,KAAgBlL,EAAK,EAEpCmL,KAAc,MAAWpL,CAAS,EAElC,CAAE,YAAAsH,EAAa,SAAApD,GAAU,mBAAAI,EAAmB,EAAIjB,EAChDgI,KAAa,MAAchI,CAAK,EAChC,CAAE,YAAAiI,CAAY,EAAI/H,EAElBgI,KAA8B,eAClC,CAACd,EAAuCY,IAC/BZ,EAAkB,KAAMe,GAAOA,EAAG,OAASF,EAAY,QAAQD,CAAU,CAAC,EAEnF,CAACC,CAAW,CACd,KAEA,aAAU,IAAM,CACVhE,GAAe+D,GACjB9H,EACG,UAAU8H,EAAYxI,EAAOyE,EAAa,CAAE,SAAApD,GAAU,mBAAAI,EAAmB,EAAG0G,CAAS,EACrF,KAAMhG,GAAWwF,EAAUxF,CAAM,CAAC,CAEzC,EAAG,CAACzB,EAAYW,GAAUmH,EAAY/D,EAAazE,EAAOyB,GAAoB0G,CAAS,CAAC,KAExF,aAAU,IAAM,EACgB,SAAY,CACxC,GAAI1D,EAAa,CACf,MAAMmD,EAAoB,MAAMlH,EAAW,eAAe+D,CAAW,KACrE,MAAkB,6CAA8C,CAC9D,MAAOmD,EAAkB,MAC3B,CAAC,EACD,MAAMR,EAAWwB,GAAgBhB,CAAiB,EAClDC,GAAqBD,CAAiB,EACtCP,GAAYD,CAAQ,EAExB,GACsB,CACxB,EAAG,CAAC1G,EAAY+D,EAAa8D,EAAaD,EAAa,iBAAiB,CAAC,KAEzE,aAAU,IAAM,CAyBd,MAAMP,GAxBkBH,GAA0C,CAChE,MAAMiB,EAA2BH,EAA4Bd,EAAmBY,CAAU,EAC1F,OAAKK,EAIoBjB,EACtB,OAAQkB,GAAMA,EAAE,UAAYD,EAAyB,OAAO,EAC5D,IAAKC,IAAO,CACX,QAASA,EAAE,QACX,MAAOA,EAAE,KACT,MAAOA,EAAE,YACT,UAAW,UAA2B,CACpC,OACE,gBAAC,WACC,gBAAC,OAAI,UAAWP,CAAA,EAAcO,EAAE,IAAK,EACrC,gBAAC,OAAI,UAAWR,EAAa,mBAAoBQ,EAAE,WAAY,CACjE,CAEJ,CACF,EAAE,EAjBK,CAAC,CAmBZ,GAE+BlB,CAAiB,EAC1CK,EAAUF,EAAQ,OAAS,EAAIA,EAAQ,CAAC,EAAE,QAAU,GACpDpI,EAAmB+I,EAA4Bd,EAAmBY,CAAU,EAClFV,GAAoBnI,CAAgB,EACpCqI,GAAWD,CAAO,EAClBG,GAAWD,CAAO,CACpB,EAAG,CAACL,EAAmBc,EAA6BF,EAAYD,EAAaD,EAAa,iBAAiB,CAAC,EAE5G,MAAMS,GAAkB,CAAC,CAAE,MAAOd,CAAQ,IAA+B,CACvE,MAAMF,EAAUH,EACb,OAAQkB,GAAwBA,EAAE,UAAYL,EAAY,QAAQR,CAAO,CAAC,EAC1E,IAAKa,IAAyB,CAC7B,QAASA,EAAE,QACX,MAAOA,EAAE,KACT,MAAOA,EAAE,YACT,YAAaA,EAAE,WACjB,EAAE,EAEJtI,EAAM,QAAU,CAAC,EAEbuH,EAAQ,OAAS,GAAK,CAACA,EAAQ,KAAMe,GAAMA,EAAE,QAAUL,EAAY,QAAQD,CAAU,CAAC,GACxFQ,GAAmBjB,EAAQ,CAAC,CAAC,EAC7BG,GAAWD,CAAQ,EACnBD,GAAWD,CAAO,IAElBG,GAAWD,CAAQ,EACnBD,GAAWD,CAAO,EAEtB,EAEMa,GAAmBhB,GAA0C,CACjE,MAAMR,EAAWQ,EAAkB,IAAKkB,IAAO,CAC7C,MAAOA,EAAE,QACT,SAAO,aAAUA,EAAE,gBAAgB,CACrC,EAAE,EAEF,OAAO1B,EAAS,OAAS,KAAI,UAAOA,EAAWtH,GAAMA,EAAE,KAAK,EAAI,CAAC,CACnE,EAEMmJ,GAAgB,MAAOC,GAAmB,CAE9C,MAAMC,GADU,MAAMzI,EAAW,oBAAoB+D,EAAawD,CAAO,GAEtE,OAAQa,GAAMA,EAAE,KAAK,SAASI,EAAO,YAAY,CAAC,CAAC,EACnD,IAAKJ,IAAO,CACX,MAAOA,EAAE,KACT,MAAOA,EAAE,YACT,UAAW,UAA2B,CACpC,OACE,gBAAC,WACC,gBAAC,OAAI,UAAWP,CAAA,EAAcO,EAAE,IAAK,EACrC,gBAAC,OAAI,UAAWR,EAAa,mBAAoBQ,EAAE,WAAY,CACjE,CAEJ,CACF,EAAE,EACJ,MAAO,CACL,CACE,MAAO,qBACP,QAASxH,EAAoB,OAC/B,EACA,GAAG6H,CACL,CACF,EAEMC,GAAiB,IAASH,GAAe,GAAG,EAE5CD,GAAqB,CAAC,CAAE,MAAA/K,CAAM,IAA+B,CACjE,MAAM0B,EAAmB+I,EAA4Bd,EAAmB3J,CAAM,EAC9E6J,GAAoBnI,CAAgB,EACpC,KAAM,CAAE,WAAAE,EAAY,UAAAD,CAAU,EAAID,EAC5BgB,EACJd,IAAe,KAAW,OAASD,IAAc,KAAW,aACxD,KAAiB,KACjB,KAAiB,KACjB,CAAE,iBAAAsB,CAAiB,KAAI,MAAuBtB,EAAWC,EAAYW,EAAM,iBAAkBG,CAAY,EAG/G,OAAO,OAAOH,EAAO,CACnB,MAAG,MAAsBE,CAAU,EACnC,YAAaF,EAAM,YACnB,QAASA,EAAM,OACjB,CAAC,EACDP,EAAS,CACP,MAAG,MACD,CACE,GAAGO,EACH,iBAAAU,CACF,EACAjD,CACF,EACA,aAAA0C,CACF,CAAC,CACH,EAEA,OACE,gCACE,gBAAC,IAAS,KACR,gBAAC,IAAgB,KACf,gBAAC,KACC,MAAAX,EACA,wBAAyBsB,EAAoB,QAC7C,YAAAmD,EACA,WAAA/D,EACA,SAAW+D,GAAgB,CACzBxE,EAAS,CAAE,GAAGO,EAAO,YAAAiE,CAAY,CAAC,CACpC,EACF,EAEA,gBAAC,IAAW,CAAC,MAAM,UAAU,MAAM,QACjC,gBAAC,MACC,MAAM,OACN,SAAUsE,GACV,UAAW3B,GAAS,SAAW,EAC/B,MAAO,CAAC,GAAGA,GAAU,GAAG9F,EAAoB,OAAO,EAAE,KAAMxB,GAAMA,EAAE,QAAUmI,CAAO,EACpF,QAAS,CACP,CACE,MAAO,qBACP,QAAS3G,EAAoB,OAC/B,EACA,GAAG8F,EACL,EACA,YAAY,kBACZ,QAAS,GAAGpH,WAAA,CACd,CACF,EACA,gBAAC,IAAW,CAAC,MAAM,cAAc,MAAM,OAAO,QAAS,GAAGA,iBAAA,EACxD,gBAAC,QAAK,MAAOiI,IAAY,GAAK,yBAA2B,0BACvD,gBAAC,MACC,MAAM,OACN,SAAUe,GACV,MAAO,CAAC,GAAGjB,GAAS,GAAGzG,EAAoB,OAAO,EAAE,KAAMxB,GAAMA,EAAE,QAAU0I,CAAU,EACtF,YAAaY,GACb,eAAgB,CACd,CACE,MAAO,qBACP,QAAS9H,EAAoB,OAC/B,EACA,GAAGyG,GAAQ,MAAM,EAAG,GAAG,CACzB,EACA,YAAY,gBACZ,QAAS,GAAG/H,kBACZ,SAAUiI,IAAY,GACxB,CACF,CACF,CACF,CACF,EAEA,gCACE,gBAAC,KACC,OAAA9F,EACA,QAAS3B,EAAM,QACf,SAAWqB,GAAsB5B,EAAS,CAAE,GAAGO,EAAO,QAAAqB,CAAQ,CAAC,EAC/D,oBAAAP,CAAA,CACF,EACA,gBAAC,IAAS,KACR,gBAAC,IAAY,CAAC,iBAAA3B,GAAoC,MAAAa,EAAc,SAAAP,CAAA,CAAoB,EACpF,gBAAC,KACC,MAAAD,EACA,OAAQ,OAAO,KAAKmC,CAAM,EAC1B,MAAA3B,EACA,SAAAP,EACA,oBAAAqB,EACA,iBAAA3B,EAAA,CACF,EACA,gBAAC,KACC,MAAAK,EACA,WAAAU,EACA,wBAAyBY,EAAoB,QAC7C,MAAAd,EACA,eAAAC,EACA,SAAAR,EACA,iBAAAN,GACA,aAAca,EAAM,aACtB,EACA,gBAAC,IAAO,CAAC,MAAAR,EAAc,MAAOsE,EAAS,SAAUkD,CAAA,CAAiB,CACpE,CACF,CACF,CAEJ,CAEA,MAAMrK,EAAaC,MAAyB;AAAA;AAAA;AAAA;AAAA,WAIjCA,EAAM,OAAO,KAAK;AAAA,EAGhBiH,EAA0B,OAAWP,CAAM,C,wIC3TjD,MAAMuF,EAAkB,IAE3B,gBAAC,OAAI,UAAU,uCACb,gBAAC,WACC,gBAAC,UAAG,yBAAuB,EAC3B,gBAAC,SAAE,0JAE+C,GAClD,EACA,gBAAC,SAAE,oJAGH,EACA,gBAAC,YACE,kBAAuB,eAAa,kBACvC,EACA,gBAAC,SAAE,mBACe,gBAAC,YAAK,wEAAsE,CAC9F,EACA,gBAAC,YAAK,WAAS,EACf,gBAAC,SACC,gBAAC,YAAM,kBAAwB,EAAO,8BACxC,EACA,gBAAC,SACC,gBAAC,YAAM,iBAAuB,EAAO,oEACvC,EACA,gBAAC,SACC,gBAAC,YAAM,iBAAuB,EAAO,qDACvC,EACA,gBAAC,SACC,gBAAC,YAAM,oBAA0B,EAAO,wCAC1C,EACA,gBAAC,SACC,gBAAC,YAAM,6BAAmC,EAAO,0DACnD,EACA,gBAAC,SACC,gBAAC,YAAM,+BAAqC,EAAO,qDACrD,CACF,CACF,E,0FC5BG,MAAMC,EAAqB,CAAC,CACjC,MAAAC,EACA,SAAAtJ,EACA,MAAAhC,EACA,QAAAsD,EACA,iBAAAiI,EAAmB,EACrB,IAEI,gBAACC,EAAA,EAAW,CAAC,MAAAF,EAAc,WAAY,IACrC,gBAAC/C,EAAA,IACC,MAAO,GACP,iBAAAgD,EACA,MAAAvL,EACA,SAAU,CAAC,CAAE,MAAAA,CAAM,IAAMgC,EAAShC,CAAM,EACxC,QAAAsD,CAAA,CACF,CACF,E,+JC1BG,MAAMmI,EAAc,GACdC,EAAc,GACdC,EAAoB,GACpBC,EAAe,GAEfC,EAAa,CACxB,CACE,KAAM,OACN,MAAO,aACP,WAAY,CACV,KAAW,MACX,KAAW,OACX,KAAW,MACX,KAAW,aACX,KAAW,OACX,KAAW,uBACX,KAAW,IACb,EACA,YAAa,CAAC,KAAW,KAAK,CAChC,EACA,CACE,KAAM,QACN,MAAO,cACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,MAAO,KAAW,YAAY,EAC3F,YAAa,CAAC,KAAW,WAAY,KAAW,KAAK,CACvD,EACA,CACE,KAAM,OACN,MAAO,aACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,KAAK,EAClE,YAAa,CAAC,KAAW,WAAY,KAAW,KAAK,CACvD,EACA,CACE,KAAM,cACN,MAAO,oBACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,KAAK,EAClE,YAAa,CAAC,KAAW,KAAK,CAChC,EACA,CACE,KAAM,aACN,MAAO,mBACP,WAAY,CACV,KAAW,MACX,KAAW,OACX,KAAW,MACX,KAAW,aACX,KAAW,OACX,KAAW,uBACX,KAAW,IACb,EACA,YAAa,CAAC,KAAW,KAAK,CAChC,EACA,CACE,KAAM,MACN,MAAO,YACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,KAAK,EAClE,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,EACA,CACE,KAAM,MACN,MAAO,YACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,KAAK,EAClE,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,EACA,CACE,KAAM,OACN,MAAO,aACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,KAAK,EAClE,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,EACA,CACE,KAAM,QACN,MAAO,cACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,MAAO,KAAW,IAAI,EACnF,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,EACA,CACE,KAAM,MACN,MAAO,YACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,MAAO,KAAW,YAAY,EAC3F,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,EACA,CACE,KAAM,SACN,MAAO,eACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,KAAK,EAClE,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,EACA,CACE,KAAM,aACN,MAAO,mBACP,WAAY,CAAC,KAAW,IAAI,EAC5B,YAAa,CAAC,KAAW,KAAK,CAChC,EACA,CACE,KAAM,cACN,MAAO,oBACP,WAAY,CAAC,KAAW,IAAI,EAC5B,YAAa,CAAC,KAAW,KAAK,CAChC,EACA,CACE,KAAM,gBACN,MAAO,sBACP,WAAY,CAAC,KAAW,IAAI,EAC5B,YAAa,CAAC,KAAW,KAAK,CAChC,EACA,CACE,KAAM,gBACN,MAAO,sBACP,WAAY,CAAC,KAAW,YAAY,EACpC,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,EACA,CACE,KAAM,gBACN,MAAO,sBACP,WAAY,CAAC,KAAW,YAAY,EACpC,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,EACA,CACE,KAAM,gBACN,MAAO,sBACP,WAAY,CAAC,KAAW,YAAY,EACpC,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,EACA,CACE,KAAM,gBACN,MAAO,sBACP,WAAY,CAAC,KAAW,YAAY,EACpC,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,EACA,CACE,KAAM,iBACN,MAAO,uBACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,KAAK,EAClE,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,CACF,EAEaC,EAAe,CAC1B,CACE,KAAM,OACN,MAAO,cACP,WAAY,CACV,KAAW,MACX,KAAW,OACX,KAAW,MACX,KAAW,aACX,KAAW,KACX,KAAW,MACb,EACA,YAAa,CAAC,KAAW,MAAO,KAAW,MAAO,KAAW,WAAY,KAAW,uBAAuB,CAC7G,EACA,CACE,KAAM,OACN,MAAO,cACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,MAAO,KAAW,YAAY,EAC3F,YAAa,CAAC,KAAW,MAAO,KAAW,MAAO,KAAW,UAAU,CACzE,EACA,CACE,KAAM,MACN,MAAO,aACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,KAAK,EAClE,YAAa,CAAC,KAAW,MAAO,KAAW,MAAO,KAAW,WAAY,KAAW,uBAAuB,CAC7G,EACA,CACE,KAAM,MACN,MAAO,aACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,KAAK,EAClE,YAAa,CAAC,KAAW,MAAO,KAAW,MAAO,KAAW,WAAY,KAAW,uBAAuB,CAC7G,EACA,CACE,KAAM,MACN,MAAO,aACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,MAAO,KAAW,YAAY,EAC3F,YAAa,CAAC,KAAW,MAAO,KAAW,MAAO,KAAW,WAAY,KAAW,uBAAuB,CAC7G,EACA,CACE,KAAM,YACN,MAAO,gBACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,MAAO,KAAW,YAAY,EAC3F,YAAa,CAAC,KAAW,MAAO,KAAW,MAAO,KAAW,WAAY,KAAW,uBAAuB,CAC7G,EACA,CACE,KAAM,QACN,MAAO,eACP,WAAY,CACV,KAAW,MACX,KAAW,OACX,KAAW,MACX,KAAW,aACX,KAAW,KACX,KAAW,MACb,EACA,YAAa,CAAC,KAAW,MAAO,KAAW,MAAO,KAAW,UAAU,CACzE,EACA,CACE,KAAM,aACN,MAAO,oBACP,WAAY,CAAC,KAAW,IAAI,EAC5B,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,EACA,CACE,KAAM,cACN,MAAO,qBACP,WAAY,CAAC,KAAW,IAAI,EAC5B,YAAa,CAAC,KAAW,MAAO,KAAW,KAAK,CAClD,EACA,CACE,KAAM,kBACN,MAAO,uBACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,MAAO,KAAW,YAAY,EAC3F,YAAa,CAAC,KAAW,MAAO,KAAW,MAAO,KAAW,UAAU,CACzE,EACA,CACE,KAAM,kBACN,MAAO,uBACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,MAAO,KAAW,YAAY,EAC3F,YAAa,CAAC,KAAW,MAAO,KAAW,MAAO,KAAW,UAAU,CACzE,EACA,CACE,KAAM,kBACN,MAAO,uBACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,MAAO,KAAW,YAAY,EAC3F,YAAa,CAAC,KAAW,MAAO,KAAW,MAAO,KAAW,UAAU,CACzE,EACA,CACE,KAAM,iBACN,MAAO,uBACP,WAAY,CAAC,KAAW,MAAO,KAAW,OAAQ,KAAW,MAAO,KAAW,YAAY,EAC3F,YAAa,CAAC,KAAW,MAAO,KAAW,MAAO,KAAW,UAAU,CACzE,CACF,EAQaC,EAAoC,CAC/C,CAAE,KAAM,eAAgB,MAAO,cAAe,EAC9C,CAAE,KAAM,mBAAoB,MAAO,mBAAoB,OAAQ,EAAK,EACpE,CAAE,KAAM,wBAAyB,MAAO,uBAAwB,EAChE,CAAE,KAAM,KAAM,MAAO,MAAO,EAC5B,CAAE,KAAM,KAAM,MAAO,OAAQ,EAC7B,CAAE,KAAM,KAAM,MAAO,OAAQ,EAC7B,CAAE,KAAM,MAAO,MAAO,OAAQ,EAC9B,CAAE,KAAM,MAAO,MAAO,QAAS,EAC/B,CAAE,KAAM,KAAM,MAAO,QAAS,EAC9B,CAAE,KAAM,KAAM,MAAO,QAAS,EAC9B,CAAE,KAAM,KAAM,MAAO,SAAU,EAC/B,CAAE,KAAM,KAAM,MAAO,SAAU,EAC/B,CAAE,KAAM,KAAM,MAAO,UAAW,EAChC,CAAE,KAAM,KAAM,MAAO,UAAW,CAClC,EAEaC,EAAgC,CAC3C,CAAE,KAAM,OAAQ,MAAO,MAAO,EAC9B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,MAAO,MAAO,KAAM,EAC5B,CAAE,KAAM,MAAO,MAAO,KAAM,EAC5B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,CAC5B,EAIaC,EAAmC,CAC9C,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,MAAO,MAAO,KAAM,EAC5B,CAAE,KAAM,MAAO,MAAO,KAAM,EAC5B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,MAAO,MAAO,KAAM,EAC5B,CAAE,KAAM,MAAO,MAAO,KAAM,CAC9B,EAEaC,EAAgB,CAC3B,uCACA,8BACA,gCACA,+BACA,wCACA,mCACA,sCACA,mDACA,mDACA,wCACF,EAEaC,EAA8B,uBAE9BC,EAAY,CACvB,CAAE,MAAO,YAAa,MAAO,mBAAoB,EACjD,CAAE,MAAO,iBAAkB,MAAO,uBAAwB,EAC1D,CAAE,MAAO,6BAA8B,MAAO,4BAA6B,EAC3E,CAAE,MAAO,gBAAiB,MAAOD,CAA4B,CAC/D,EAEaE,EAAc,CACzB,CAAE,MAAO,UAAW,MAAO,KAAU,gBAAiB,EACtD,CAAE,MAAO,MAAO,MAAO,KAAU,iBAAkB,EACnD,CAAE,MAAO,iCAAkC,MAAO,KAAU,GAAI,EAChE,CAAE,MAAO,SAAU,MAAO,KAAU,MAAO,CAC7C,C,2MClTO,MAAMC,EAAwC3C,MACnD,UAAOA,EAAmB,SAAS,EAExB4C,EAA0B,CAAC5C,EAAuCK,IAC7EL,EAAkB,OAAQkB,GAAwBA,EAAE,UAAYb,CAAO,EAE5DwC,EAAiB,CAC5B7C,EACAY,EACAkC,EACAC,IACG,CACH,MAAMC,EAAcJ,EAAwB5C,EAAmB+C,CAAe,EAAE,IAAK7B,IAAO,CAC1F,MAAOA,EAAE,KACT,KAAMA,EAAE,WACV,EAAE,EACI+B,EAAyBD,EAAY,KACxC9B,GAAuCA,EAAE,QAAU4B,CACtD,EACMI,EAAsBF,EAAY,OAASA,EAAY,CAAC,EAAE,MAAQ,GAExE,MAAO,CACL,YAAAA,EACA,mBAHyBC,EAAyBrC,EAAasC,CAIjE,CACF,EAEaC,EAA8B,CACzCC,EACAnL,EACAc,KAEIA,GAAgBA,IAAiB,KAAiB,OACpDd,EAAa,KAAW,OAGlBmL,EAEJ,KAAW,OAAQC,GAEfA,EAAE,WAAW,QAAQD,CAA6B,IAAM,IACxDC,EAAE,YAAY,QAAQpL,CAAwB,IAAM,EAEvD,EAND,CAAC,GASMqL,EAAgC,CAACtL,EAAuBC,IAC3DA,EAEJ,KAAa,OAAQoL,GACZA,EAAE,WAAW,QAAQrL,CAAS,IAAM,IAAMqL,EAAE,YAAY,QAAQpL,CAAU,IAAM,EACxF,EAHD,CAAC,EAMMsL,EAAe,MAC1BzK,EACA0K,EACA3G,IACG,CACH,MAAMzE,EAAQ,uBACRmC,EAAS,MAAMzB,EAAW,UAAU0K,EAAoBpL,EAAOyE,CAAW,EAChF,MAAO,CAAC,GAAG,OAAO,KAAKtC,CAAM,EAAG,GAAG,IAAa,CAClD,EAEakJ,EAAyB,CACpCzL,EAAgC,KAAW,OAC3CC,EAAiC,KAAW,MAC5CqB,EAAuC,KAAe,WACtDP,IACG,CACH,MAAM8H,KAA2B,KAAe,EAC1CtH,EAAe4J,EAA4BnL,EAAWC,EAAYc,CAAY,EAAE,IAAK2K,IAAY,CACrG,GAAGA,EACH,MAAOA,EAAO,IAChB,EAAE,EACF,OAAKnK,EAAa,KAAMK,GAAyBA,EAAE,QAAUiH,EAAY,QAAQvH,CAAgB,CAAC,IAChGA,EAAmBC,EAAa,OAAS,EAAIA,EAAa,CAAC,EAAE,MAAQ,KAAe,YAE/E,CAAE,aAAAA,EAAc,iBAAAD,CAAiB,CAC1C,EAEaqK,EAA0BlK,GAAuB,CAC5D,MAAMmK,EAASnK,EAAS,OAAO,CAACoK,EAAUC,IAAiB,CACzD,MAAMC,EAAMD,EAAK,MAAM,GAAG,EAAE,IAAI,WAAS,EACnCE,GAASD,EAAI,SAAW,EAAIA,KAAM,WAAQA,CAAG,GAAG,KAAK,GAAG,EACxDL,EAAS,CACb,MAAOI,EACP,MAAOA,CACT,EACA,OAAID,EAAIG,CAAK,EACXH,EAAIG,CAAK,EAAI,CAAC,GAAGH,EAAIG,CAAK,EAAGN,CAAM,EAEnCG,EAAIG,CAAK,EAAI,CAACN,CAAM,EAEfG,CACT,EAAG,CAAC,CAAC,EACL,OAAO,OAAO,QAAQD,CAAM,EAAE,IAAI,CAAC,CAACjC,EAAOhI,CAAO,KAAO,CAAE,MAAAgI,EAAO,QAAAhI,EAAS,SAAU,EAAK,GAAI,CAAC,CAAC,CAClG,EAEasK,EAAwBzJ,MACnC,SAAMA,EAAa,CAAC,EAAE,IAAI,CAAC,CAACpE,EAAK8D,EAAU7D,EAAO8D,EAAY,KAAK,KAAO,CACxE,IAAA/D,EACA,SAAA8D,EACA,MAAA7D,EACA,UAAA8D,CACF,EAAE,EAES+J,EAAuB,CAACrL,EAAgCC,IAA0C,CAC7G,KAAM,CAAE,iBAAAQ,EAAkB,gBAAA6K,CAAgB,EAAItL,EAC9C,GAAI,CAACsL,GAAmB,CAAC7K,EACvB,MAAO,GAGT,MAAM8K,EAAY,KAAW,KAAMjH,GAAOA,EAAG,QAAUrE,EAAW,YAAY,QAAQQ,CAAgB,CAAC,EACjG+K,EAAU,SAASF,EAAiB,EAAE,EAE5C,MAAO,GADK,eAAuBE,CAAO,eACfD,GAAW,MAAQ,KAChD,EAEaE,EAAiB1L,GAA2B,CACvD,MAAM2L,EAAgB3L,GAAO,SAAS,UAAW4L,GAAMA,IAAM,aAAa,EAG1E,OADmB5L,GAAO,UAAU2L,EAAgB,CAAC,GAChC,EACvB,EAEaE,EAAgB,CAAC7L,EAAuBgI,IAAuB,CAC1E,GAAI,CAAChI,EAAM,QACT,OAAAA,EAAM,QAAU,CAAC,cAAe,IAAKgI,CAAU,EACxChI,EAET,MAAM2L,EAAgB3L,GAAO,SAAS,UAAW4L,GAAMA,IAAM,aAAa,EAC1E,OAAID,IAAkB,GACpB3L,EAAM,QAAQ,KAAK,cAAe,IAAKgI,CAAU,EAGjDhI,EAAM,QAAS2L,EAAgB,CAAC,EAAI3D,EAE/BhI,CACT,C,iFCzGO,IAAK8L,GAAAA,IACVA,EAAA,WAAa,aACbA,EAAA,OAAS,SACTA,EAAA,IAAM,MACNA,EAAA,iBAAmB,iBACnBA,EAAA,kBAAoB,kBALVA,IAAAA,GAAA,IAsEL,MAAM3I,EAAiD,CAC5D,QAAS,CAAC,EACV,SAAU,CAAC,EACX,kBAAmB,CAAC,CACtB,EAKO,IAAK4I,GAAAA,IACVA,EAAA,MAAQ,QACRA,EAAA,KAAO,OACPA,EAAA,KAAO,OAHGA,IAAAA,GAAA,IA2IL,MAAMC,EAA2C,CACtD,QAAS,CAAC,EACV,SAAU,CAAC,CACb,EAEO,IAAKC,GAAAA,IACVA,EAAA,WAAa,aACbA,EAAA,MAAQ,QACRA,EAAA,MAAQ,QACRA,EAAA,wBAA0B,0BAJhBA,IAAAA,GAAA,IAOAC,GAAAA,IACVA,EAAA,KAAO,OACPA,EAAA,aAAe,eACfA,EAAA,OAAS,SACTA,EAAA,MAAQ,QACRA,EAAA,MAAQ,QACRA,EAAA,OAAS,SACTA,EAAA,uBAAyB,yBAPfA,IAAAA,GAAA,IAUAC,GAAAA,IACVA,EAAA,YAAc,cACdA,EAAA,kBAAoB,oBACpBA,EAAA,iBAAmB,mBACnBA,EAAA,YAAc,cACdA,EAAA,oBAAsB,sBACtBA,EAAA,kBAAoB,oBACpBA,EAAA,UAAY,YACZA,EAAA,WAAa,aACbA,EAAA,UAAY,YACZA,EAAA,iBAAmB,mBACnBA,EAAA,WAAa,aACbA,EAAA,oBAAsB,sBACtBA,EAAA,oBAAsB,sBACtBA,EAAA,oBAAsB,sBACtBA,EAAA,oBAAsB,sBACtBA,EAAA,qBAAuB,uBACvBA,EAAA,WAAa,aACbA,EAAA,aAAe,eACfA,EAAA,UAAY,YAnBFA,IAAAA,GAAA,IAmDL,MAAMC,EAA6F,CACxG,QAAS,CAAC,CACZ,EAwBO,IAAKC,GAAAA,IACVA,EAAA,aAAe,eACfA,EAAA,SAAW,WACXA,EAAA,iBAAmB,mBACnBA,EAAA,eAAiB,iBACjBA,EAAA,UAAY,YACZA,EAAA,YAAc,cACdA,EAAA,YAAc,cACdA,EAAA,SAAW,WACXA,EAAA,cAAgB,gBAChBA,EAAA,IAAM,MACNA,EAAA,YAAc,cACdA,EAAA,UAAY,YACZA,EAAA,SAAW,WAbDA,IAAAA,GAAA,G","sources":["webpack://grafana/./.yarn/__virtual__/@grafana-experimental-virtual-4d6787efaa/3/opt/drone/yarncache/@grafana-experimental-npm-1.7.0-bca9c8fecc-f418072aab.zip/node_modules/@grafana/experimental/dist/esm/QueryEditor/EditorHeader.js","webpack://grafana/./.yarn/__virtual__/@grafana-experimental-virtual-4d6787efaa/3/opt/drone/yarncache/@grafana-experimental-npm-1.7.0-bca9c8fecc-f418072aab.zip/node_modules/@grafana/experimental/dist/esm/QueryEditor/FlexItem.js","webpack://grafana/./.yarn/__virtual__/@grafana-experimental-virtual-4d6787efaa/3/opt/drone/yarncache/@grafana-experimental-npm-1.7.0-bca9c8fecc-f418072aab.zip/node_modules/@grafana/experimental/dist/esm/QueryEditor/InlineSelect.js","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Aggregation.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/AliasBy.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Alignment.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/AlignmentFunction.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/GroupBy.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/LabelFilter.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/MQLQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/GraphPeriod.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/PeriodSelect.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Preprocessor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Project.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/PromQLEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/QueryHeader.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/QueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/LookbackPeriodSelect.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/SLO.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Selector.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Service.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/SLOQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/VisualMetricQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/AnnotationsHelp.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Fields.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/constants.ts","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/functions.ts","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/dataquery.gen.ts"],"sourcesContent":["import { css } from '@emotion/css';\nimport React__default from 'react';\nimport { useStyles2 } from '@grafana/ui';\n\nconst EditorHeader = ({ children }) => {\n const styles = useStyles2(getStyles);\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.root }, children);\n};\nconst getStyles = (theme) => ({\n root: css({\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n gap: theme.spacing(3),\n minHeight: theme.spacing(4)\n })\n});\n\nexport { EditorHeader };\n//# sourceMappingURL=EditorHeader.js.map\n","import React__default from 'react';\n\nconst FlexItem = ({ grow, shrink }) => {\n return /* @__PURE__ */ React__default.createElement(\"div\", { style: { display: \"block\", flexGrow: grow, flexShrink: shrink } });\n};\n\nexport { FlexItem };\n//# sourceMappingURL=FlexItem.js.map\n","import { css, cx } from '@emotion/css';\nimport React__default, { useState } from 'react';\nimport { useStyles2, Select, SelectContainer as SelectContainer$1 } from '@grafana/ui';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction InlineSelect(_a) {\n var _b = _a, { label: labelProp } = _b, props = __objRest(_b, [\"label\"]);\n const styles = useStyles2(getSelectStyles);\n const [id] = useState(() => Math.random().toString(16).slice(2));\n const components = {\n SelectContainer,\n ValueContainer,\n SingleValue: ValueContainer\n };\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: styles.root }, labelProp && /* @__PURE__ */ React__default.createElement(\"label\", { className: styles.label, htmlFor: id }, labelProp, \":\", \"\\xA0\"), /* @__PURE__ */ React__default.createElement(Select, __spreadProps(__spreadValues({ openMenuOnFocus: true, inputId: id }, props), { components })));\n}\nconst SelectContainer = (props) => {\n const { children } = props;\n const styles = useStyles2(getSelectStyles);\n return /* @__PURE__ */ React__default.createElement(SelectContainer$1, __spreadProps(__spreadValues({}, props), { className: cx(props.className, styles.container) }), children);\n};\nconst ValueContainer = (props) => {\n const { className, children } = props;\n const styles = useStyles2(getSelectStyles);\n return /* @__PURE__ */ React__default.createElement(\"div\", { className: cx(className, styles.valueContainer) }, children);\n};\nconst getSelectStyles = (theme) => ({\n root: css({\n display: \"flex\",\n fontSize: 12,\n alignItems: \"center\"\n }),\n label: css({\n color: theme.colors.text.secondary,\n whiteSpace: \"nowrap\"\n }),\n container: css({\n background: \"none\",\n borderColor: \"transparent\"\n }),\n valueContainer: css({\n display: \"flex\",\n alignItems: \"center\",\n flex: \"initial\",\n color: theme.colors.text.secondary,\n fontSize: 12\n })\n});\n\nexport { InlineSelect };\n//# sourceMappingURL=InlineSelect.js.map\n","import React, { useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport { getAggregationOptionsByMetric } from '../functions';\nimport { MetricKind, ValueTypes } from '../types/query';\nimport { MetricDescriptor } from '../types/types';\n\nexport interface Props {\n refId: string;\n onChange: (metricDescriptor: string) => void;\n metricDescriptor?: MetricDescriptor;\n crossSeriesReducer: string;\n groupBys: string[];\n templateVariableOptions: Array>;\n}\n\nexport const Aggregation = (props: Props) => {\n const aggOptions = useAggregationOptionsByMetric(props);\n const selected = useSelectedFromOptions(aggOptions, props);\n\n return (\n \n props.onChange(value!)}\n value={selected}\n options={[\n {\n label: 'Template Variables',\n options: props.templateVariableOptions,\n },\n {\n label: 'Aggregations',\n expanded: true,\n options: aggOptions,\n },\n ]}\n placeholder=\"Select Reducer\"\n inputId={`${props.refId}-group-by-function`}\n menuPlacement=\"top\"\n />\n \n );\n};\n\nconst useAggregationOptionsByMetric = ({ metricDescriptor }: Props): Array> => {\n const valueType = metricDescriptor?.valueType;\n const metricKind = metricDescriptor?.metricKind;\n\n return useMemo(() => {\n if (!valueType || !metricKind) {\n return [];\n }\n\n return getAggregationOptionsByMetric(valueType as ValueTypes, metricKind as MetricKind).map((a) => ({\n ...a,\n label: a.text,\n }));\n }, [valueType, metricKind]);\n};\n\nconst useSelectedFromOptions = (aggOptions: Array>, props: Props) => {\n return useMemo(() => {\n const allOptions = [...aggOptions, ...props.templateVariableOptions];\n return allOptions.find((s) => s.value === props.crossSeriesReducer);\n }, [aggOptions, props.crossSeriesReducer, props.templateVariableOptions]);\n};\n","import { debounce } from 'lodash';\nimport React, { useState } from 'react';\n\nimport { EditorField } from '@grafana/experimental';\nimport { Input } from '@grafana/ui';\n\nexport interface Props {\n refId: string;\n onChange: (alias: any) => void;\n value?: string;\n}\n\nexport const AliasBy = ({ refId, value = '', onChange }: Props) => {\n const [alias, setAlias] = useState(value ?? '');\n\n const propagateOnChange = debounce(onChange, 1000);\n\n onChange = (e: any) => {\n setAlias(e.target.value);\n propagateOnChange(e.target.value);\n };\n\n return (\n \n \n \n );\n};\n","import React, { useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField, EditorFieldGroup } from '@grafana/experimental';\n\nimport { ALIGNMENT_PERIODS } from '../constants';\nimport CloudMonitoringDatasource from '../datasource';\nimport { alignmentPeriodLabel } from '../functions';\nimport { PreprocessorType, TimeSeriesList } from '../types/query';\nimport { CustomMetaData, MetricDescriptor } from '../types/types';\n\nimport { AlignmentFunction } from './AlignmentFunction';\nimport { PeriodSelect } from './PeriodSelect';\n\nexport interface Props {\n refId: string;\n onChange: (query: TimeSeriesList) => void;\n query: TimeSeriesList;\n templateVariableOptions: Array>;\n customMetaData: CustomMetaData;\n datasource: CloudMonitoringDatasource;\n metricDescriptor?: MetricDescriptor;\n preprocessor?: PreprocessorType;\n}\n\nexport const Alignment = ({\n refId,\n templateVariableOptions,\n onChange,\n query,\n customMetaData,\n datasource,\n metricDescriptor,\n preprocessor,\n}: Props) => {\n const alignmentLabel = useMemo(() => alignmentPeriodLabel(customMetaData, datasource), [customMetaData, datasource]);\n return (\n \n \n onChange({ ...query, ...q })}\n metricDescriptor={metricDescriptor}\n preprocessor={preprocessor}\n />\n \n \n onChange({ ...query, alignmentPeriod: period })}\n aligmentPeriods={ALIGNMENT_PERIODS}\n />\n \n \n );\n};\n","import React, { useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { getAlignmentPickerData } from '../functions';\nimport { PreprocessorType, SLOQuery, TimeSeriesList } from '../types/query';\nimport { MetricDescriptor } from '../types/types';\n\nexport interface Props {\n inputId: string;\n onChange: (query: TimeSeriesList | SLOQuery) => void;\n query: TimeSeriesList | SLOQuery;\n templateVariableOptions: Array>;\n metricDescriptor?: MetricDescriptor;\n preprocessor?: PreprocessorType;\n}\n\nexport const AlignmentFunction = ({\n inputId,\n query,\n templateVariableOptions,\n onChange,\n metricDescriptor,\n preprocessor,\n}: Props) => {\n const { perSeriesAligner: psa } = query;\n let { valueType, metricKind } = metricDescriptor || {};\n\n const { perSeriesAligner, alignOptions } = useMemo(\n () => getAlignmentPickerData(valueType, metricKind, psa, preprocessor),\n [valueType, metricKind, psa, preprocessor]\n );\n\n return (\n onChange({ ...query, perSeriesAligner: value! })}\n value={[...alignOptions, ...templateVariableOptions].find((s) => s.value === perSeriesAligner)}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n {\n label: 'Alignment options',\n expanded: true,\n options: alignOptions,\n },\n ]}\n placeholder=\"Select Alignment\"\n inputId={inputId}\n menuPlacement=\"top\"\n />\n );\n};\n","import React, { useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField, EditorFieldGroup } from '@grafana/experimental';\nimport { MultiSelect } from '@grafana/ui';\n\nimport { SYSTEM_LABELS } from '../constants';\nimport { labelsToGroupedOptions } from '../functions';\nimport { TimeSeriesList } from '../types/query';\nimport { MetricDescriptor } from '../types/types';\n\nimport { Aggregation } from './Aggregation';\n\nexport interface Props {\n refId: string;\n variableOptionGroup: SelectableValue;\n labels: string[];\n metricDescriptor?: MetricDescriptor;\n onChange: (query: TimeSeriesList) => void;\n query: TimeSeriesList;\n}\n\nexport const GroupBy = ({\n refId,\n labels: groupBys = [],\n query,\n onChange,\n variableOptionGroup,\n metricDescriptor,\n}: Props) => {\n const options = useMemo(\n () => [variableOptionGroup, ...labelsToGroupedOptions([...groupBys, ...SYSTEM_LABELS])],\n [groupBys, variableOptionGroup]\n );\n\n return (\n \n \n {\n onChange({ ...query, groupBys: options.map((o) => o.value!) });\n }}\n menuPlacement=\"top\"\n />\n \n onChange({ ...query, crossSeriesReducer })}\n refId={refId}\n />\n \n );\n};\n","import React, { useMemo } from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { AccessoryButton, EditorField, EditorList, EditorRow } from '@grafana/experimental';\nimport { HorizontalGroup, Select } from '@grafana/ui';\n\nimport { labelsToGroupedOptions, stringArrayToFilters } from '../functions';\n\nexport interface Props {\n labels: { [key: string]: string[] };\n filters: string[];\n onChange: (filters: string[]) => void;\n variableOptionGroup: SelectableValue;\n}\n\ninterface Filter {\n key: string;\n operator: string;\n value: string;\n condition: string;\n}\n\nconst DEFAULT_OPERATOR = '=';\nconst DEFAULT_CONDITION = 'AND';\n\nconst filtersToStringArray = (filters: Filter[]) =>\n filters.flatMap(({ key, operator, value, condition }) => [key, operator, value, condition]).slice(0, -1);\n\nconst operators = ['=', '!=', '=~', '!=~'].map(toOption);\n\n// These keys are not editable as labels but they have its own selector.\n// For example the 'metric.type' is set with the metric name selector.\nconst protectedFilterKeys = ['metric.type'];\n\nexport const LabelFilter = ({ labels = {}, filters: filterArray, onChange: _onChange, variableOptionGroup }: Props) => {\n const rawFilters: Filter[] = stringArrayToFilters(filterArray);\n const filters = rawFilters.filter(({ key }) => !protectedFilterKeys.includes(key));\n const protectedFilters = rawFilters.filter(({ key }) => protectedFilterKeys.includes(key));\n\n const options = useMemo(\n () => [variableOptionGroup, ...labelsToGroupedOptions(Object.keys(labels))],\n [labels, variableOptionGroup]\n );\n\n const getOptions = ({ key = '', value = '' }: Partial) => {\n // Add the current key and value as options if they are manually entered\n const keyPresent = options.some((op) => {\n if (op.options) {\n return options.some((opp) => opp.label === key);\n }\n return op.label === key;\n });\n if (!keyPresent) {\n options.push({ label: key, value: key });\n }\n\n const valueOptions = labels.hasOwnProperty(key)\n ? [variableOptionGroup, ...labels[key].map(toOption)]\n : [variableOptionGroup];\n const valuePresent = valueOptions.some((op) => op.label === value);\n if (!valuePresent) {\n valueOptions.push({ label: value, value });\n }\n\n return { options, valueOptions };\n };\n\n const onChange = (items: Array>) => {\n const filters = items.concat(protectedFilters).map(({ key, operator, value, condition }) => ({\n key: key || '',\n operator: operator || DEFAULT_OPERATOR,\n value: value || '',\n condition: condition || DEFAULT_CONDITION,\n }));\n _onChange(filtersToStringArray(filters));\n };\n\n const renderItem = (item: Partial, onChangeItem: (item: Filter) => void, onDeleteItem: () => void) => {\n const { key = '', operator = DEFAULT_OPERATOR, value = '', condition = DEFAULT_CONDITION } = item;\n const { options, valueOptions } = getOptions(item);\n\n return (\n \n `Use label key: ${v}`}\n allowCustomValue\n value={key}\n options={options}\n onChange={({ value: key = '' }) => onChangeItem({ key, operator, value, condition })}\n />\n onChangeItem({ key, operator, value, condition })}\n />\n `Use label value: ${v}`}\n allowCustomValue\n value={value}\n options={valueOptions}\n onChange={({ value = '' }) => onChangeItem({ key, operator, value, condition })}\n />\n \n \n );\n };\n\n return (\n \n \n \n \n \n );\n};\n","import React from 'react';\n\nimport { TextArea } from '@grafana/ui';\n\nexport interface Props {\n onChange: (query: string) => void;\n onRunQuery: () => void;\n query: string;\n}\n\nexport function MQLQueryEditor({ query, onChange, onRunQuery }: React.PropsWithChildren) {\n const onKeyDown = (event: any) => {\n if (event.key === 'Enter' && (event.shiftKey || event.ctrlKey)) {\n event.preventDefault();\n onRunQuery();\n }\n };\n\n return (\n <>\n onChange(e.currentTarget.value)}\n onKeyDown={onKeyDown}\n />\n \n );\n}\n","import React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField, EditorRow } from '@grafana/experimental';\nimport { HorizontalGroup, Switch } from '@grafana/ui';\n\nimport { GRAPH_PERIODS } from '../constants';\n\nimport { PeriodSelect } from './index';\n\nexport interface Props {\n refId: string;\n onChange: (period: string) => void;\n variableOptionGroup: SelectableValue;\n graphPeriod?: string;\n}\n\nexport const GraphPeriod = ({ refId, onChange, graphPeriod, variableOptionGroup }: Props) => {\n return (\n \n \n Set graph_period which forces a preferred period between points. Automatically set to the\n current interval if left blank.\n \n }\n >\n \n onChange(e.currentTarget.checked ? '' : 'disabled')}\n />\n \n \n \n \n );\n};\n","import React, { useCallback, useEffect } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorRows, Stack } from '@grafana/experimental';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { AlignmentTypes, CloudMonitoringQuery, QueryType, TimeSeriesList, TimeSeriesQuery } from '../types/query';\nimport { CustomMetaData } from '../types/types';\n\nimport { AliasBy } from './AliasBy';\nimport { GraphPeriod } from './GraphPeriod';\nimport { MQLQueryEditor } from './MQLQueryEditor';\nimport { Project } from './Project';\nimport { VisualMetricQueryEditor } from './VisualMetricQueryEditor';\n\nexport interface Props {\n refId: string;\n customMetaData: CustomMetaData;\n variableOptionGroup: SelectableValue;\n onChange: (query: CloudMonitoringQuery) => void;\n onRunQuery: () => void;\n query: CloudMonitoringQuery;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const defaultTimeSeriesList: (dataSource: CloudMonitoringDatasource) => TimeSeriesList = (dataSource) => ({\n projectName: dataSource.getDefaultProject(),\n crossSeriesReducer: 'REDUCE_NONE',\n alignmentPeriod: 'cloud-monitoring-auto',\n perSeriesAligner: AlignmentTypes.ALIGN_MEAN,\n groupBys: [],\n filters: [],\n});\n\nexport const defaultTimeSeriesQuery: (dataSource: CloudMonitoringDatasource) => TimeSeriesQuery = (dataSource) => ({\n projectName: dataSource.getDefaultProject(),\n query: '',\n});\n\nfunction Editor({\n refId,\n query,\n datasource,\n onChange: onQueryChange,\n onRunQuery,\n customMetaData,\n variableOptionGroup,\n}: React.PropsWithChildren) {\n const onChangeTimeSeriesList = useCallback(\n (timeSeriesList: TimeSeriesList) => {\n onQueryChange({ ...query, timeSeriesList });\n onRunQuery();\n },\n [onQueryChange, onRunQuery, query]\n );\n\n const onChangeTimeSeriesQuery = useCallback(\n (timeSeriesQuery: TimeSeriesQuery) => {\n onQueryChange({ ...query, timeSeriesQuery });\n onRunQuery();\n },\n [onQueryChange, onRunQuery, query]\n );\n\n useEffect(() => {\n if (query.queryType === QueryType.TIME_SERIES_LIST && !query.timeSeriesList) {\n onQueryChange({\n refId: query.refId,\n datasource: query.datasource,\n queryType: QueryType.TIME_SERIES_LIST,\n timeSeriesList: defaultTimeSeriesList(datasource),\n aliasBy: query.aliasBy,\n });\n }\n if (query.queryType === QueryType.TIME_SERIES_QUERY && !query.timeSeriesQuery) {\n onQueryChange({\n refId: query.refId,\n datasource: query.datasource,\n queryType: QueryType.TIME_SERIES_QUERY,\n timeSeriesQuery: defaultTimeSeriesQuery(datasource),\n aliasBy: query.aliasBy,\n });\n }\n }, [onQueryChange, query, datasource]);\n\n return (\n \n {(query.queryType === QueryType.ANNOTATION || query.queryType === QueryType.TIME_SERIES_LIST) &&\n query.timeSeriesList && (\n onQueryChange({ ...query, aliasBy })}\n />\n )}\n\n {query.queryType === QueryType.TIME_SERIES_QUERY && query.timeSeriesQuery && (\n <>\n \n \n onChangeTimeSeriesQuery({ ...query.timeSeriesQuery!, projectName: projectName })\n }\n templateVariableOptions={variableOptionGroup.options}\n projectName={query.timeSeriesQuery.projectName!}\n />\n onQueryChange({ ...query, aliasBy })}\n />\n \n onChangeTimeSeriesQuery({ ...query.timeSeriesQuery!, query: q })}\n onRunQuery={onRunQuery}\n query={query.timeSeriesQuery.query}\n >\n onChangeTimeSeriesQuery({ ...query.timeSeriesQuery!, graphPeriod })}\n graphPeriod={query.timeSeriesQuery.graphPeriod}\n refId={refId}\n variableOptionGroup={variableOptionGroup}\n />\n \n )}\n \n );\n}\n\nexport const MetricQueryEditor = React.memo(Editor);\n","import React, { useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { periodOption } from '../constants';\n\nexport interface Props {\n inputId: string;\n onChange: (period: string) => void;\n templateVariableOptions: Array>;\n aligmentPeriods: periodOption[];\n selectWidth?: number;\n category?: string;\n disabled?: boolean;\n current?: string;\n}\n\nexport function PeriodSelect({\n inputId,\n templateVariableOptions,\n onChange,\n current,\n disabled,\n aligmentPeriods,\n}: Props) {\n const options = useMemo(\n () =>\n aligmentPeriods.map((ap) => ({\n ...ap,\n label: ap.text,\n })),\n [aligmentPeriods]\n );\n const visibleOptions = useMemo(() => options.filter((ap) => !ap.hidden), [options]);\n\n return (\n onChange(value!)}\n value={[...options, ...templateVariableOptions].find((s) => s.value === current)}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n {\n label: 'Aggregations',\n expanded: true,\n options: visibleOptions,\n },\n ]}\n placeholder=\"Select Period\"\n inputId={inputId}\n disabled={disabled}\n allowCustomValue\n menuPlacement=\"top\"\n />\n );\n}\n","import React, { useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { RadioButtonGroup } from '@grafana/ui';\n\nimport { getAlignmentPickerData } from '../functions';\nimport { PreprocessorType, TimeSeriesList, MetricKind, ValueTypes } from '../types/query';\nimport { MetricDescriptor } from '../types/types';\n\nconst NONE_OPTION = { label: 'None', value: PreprocessorType.None };\n\nexport interface Props {\n metricDescriptor?: MetricDescriptor;\n onChange: (query: TimeSeriesList) => void;\n query: TimeSeriesList;\n}\n\nexport const Preprocessor = ({ query, metricDescriptor, onChange }: Props) => {\n const options = useOptions(metricDescriptor);\n\n return (\n \n {\n const { perSeriesAligner: psa } = query;\n const { valueType, metricKind } = metricDescriptor ?? {};\n const { perSeriesAligner } = getAlignmentPickerData(valueType, metricKind, psa, value);\n onChange({ ...query, preprocessor: value, perSeriesAligner });\n }}\n value={query.preprocessor ?? PreprocessorType.None}\n options={options}\n />\n \n );\n};\n\nconst useOptions = (metricDescriptor?: MetricDescriptor): Array> => {\n const metricKind = metricDescriptor?.metricKind;\n const valueType = metricDescriptor?.valueType;\n\n return useMemo(() => {\n if (!metricKind || metricKind === MetricKind.GAUGE || valueType === ValueTypes.DISTRIBUTION) {\n return [NONE_OPTION];\n }\n\n const options = [\n NONE_OPTION,\n {\n label: 'Rate',\n value: PreprocessorType.Rate,\n description: 'Data points are aligned and converted to a rate per time series',\n },\n ];\n\n return metricKind === MetricKind.CUMULATIVE\n ? [\n ...options,\n {\n label: 'Delta',\n value: PreprocessorType.Delta,\n description: 'Data points are aligned by their delta (difference) per time series',\n },\n ]\n : options;\n }, [metricKind, valueType]);\n};\n","import React, { useEffect, useMemo, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport CloudMonitoringDatasource from '../datasource';\n\nexport interface Props {\n refId: string;\n datasource: CloudMonitoringDatasource;\n onChange: (projectName: string) => void;\n templateVariableOptions: Array>;\n projectName: string;\n}\n\nexport function Project({ refId, projectName, datasource, onChange, templateVariableOptions }: Props) {\n const [projects, setProjects] = useState>>([]);\n useEffect(() => {\n datasource.getProjects().then((projects) => setProjects(projects));\n }, [datasource]);\n\n const projectsWithTemplateVariables = useMemo(\n () => [\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...projects,\n ],\n [projects, templateVariableOptions]\n );\n\n return (\n \n `Use project: ${v}`}\n onChange={({ value }) => onChange(value!)}\n options={projectsWithTemplateVariables}\n value={{ value: projectName, label: projectName }}\n placeholder=\"Select Project\"\n inputId={`${refId}-project`}\n />\n \n );\n}\n","import { css, cx } from '@emotion/css';\nimport React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorRow } from '@grafana/experimental';\nimport { TextArea, InlineFormLabel } from '@grafana/ui';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { PromQLQuery } from '../types/query';\n\nimport { Project } from './Project';\n\nexport interface Props {\n refId: string;\n variableOptionGroup: SelectableValue;\n onChange: (query: PromQLQuery) => void;\n onRunQuery: () => void;\n query: PromQLQuery;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const defaultQuery: (dataSource: CloudMonitoringDatasource) => PromQLQuery = (dataSource) => ({\n projectName: dataSource.getDefaultProject(),\n expr: '',\n step: '10s',\n});\n\nexport function PromQLQueryEditor({\n refId,\n query,\n datasource,\n onChange,\n variableOptionGroup,\n onRunQuery,\n}: React.PropsWithChildren) {\n function onReturnKeyDown(e: React.KeyboardEvent) {\n if (e.key === 'Enter' && e.shiftKey) {\n onRunQuery();\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n return (\n <>\n \n onChange({ ...query, projectName })}\n />\n onChange({ ...query, expr: e.currentTarget.value })}\n />\n \n \n Min step\n \n onChange({ ...query, step: e.currentTarget.value })}\n onKeyDown={onReturnKeyDown}\n value={query.step ?? ''}\n />\n \n \n \n );\n}\n","import React from 'react';\n\nimport { EditorHeader, FlexItem, InlineSelect } from '@grafana/experimental';\n\nimport { QUERY_TYPES } from '../constants';\nimport { CloudMonitoringQuery } from '../types/query';\n\nexport interface QueryEditorHeaderProps {\n query: CloudMonitoringQuery;\n onChange: (value: CloudMonitoringQuery) => void;\n onRunQuery: () => void;\n}\n\nexport const QueryHeader = (props: QueryEditorHeaderProps) => {\n const { query, onChange, onRunQuery } = props;\n const { queryType } = query;\n\n return (\n \n {\n onChange({ ...query, queryType: value! });\n onRunQuery();\n }}\n />\n \n \n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\n\nimport { QueryEditorProps, toOption } from '@grafana/data';\nimport { EditorRows } from '@grafana/experimental';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { CloudMonitoringQuery, PromQLQuery, QueryType, SLOQuery } from '../types/query';\nimport { CloudMonitoringOptions } from '../types/types';\n\nimport { PromQLQueryEditor } from './PromQLEditor';\nimport { QueryHeader } from './QueryHeader';\nimport { defaultQuery as defaultSLOQuery } from './SLOQueryEditor';\n\nimport { MetricQueryEditor, SLOQueryEditor } from './';\n\nexport type Props = QueryEditorProps;\n\nexport const QueryEditor = (props: Props) => {\n const { datasource, query: oldQ, onRunQuery, onChange } = props;\n // Migrate query if needed\n const [migrated, setMigrated] = useState(false);\n const query = useMemo(() => {\n if (!migrated) {\n setMigrated(true);\n const migratedQuery = datasource.migrateQuery(oldQ);\n // Update the query once the migrations have been completed.\n onChange({ ...migratedQuery });\n return migratedQuery;\n }\n return oldQ;\n }, [oldQ, datasource, onChange, migrated]);\n\n const sloQuery = { ...defaultSLOQuery(datasource), ...query.sloQuery };\n const onSLOQueryChange = (q: SLOQuery) => {\n onChange({ ...query, sloQuery: q });\n onRunQuery();\n };\n\n const promQLQuery = {\n ...{ projectName: datasource.getDefaultProject(), expr: '', step: '10s' },\n ...query.promQLQuery,\n };\n const onPromQLQueryChange = (q: PromQLQuery) => {\n onChange({ ...query, promQLQuery: q });\n };\n\n const meta = props.data?.series.length ? props.data?.series[0].meta : {};\n const customMetaData = meta?.custom ?? {};\n const variableOptionGroup = {\n label: 'Template Variables',\n expanded: false,\n options: datasource.getVariables().map(toOption),\n };\n\n // Use a known query type\n useEffect(() => {\n if (!query.queryType || !Object.values(QueryType).includes(query.queryType)) {\n onChange({ ...query, queryType: QueryType.TIME_SERIES_LIST });\n }\n });\n const queryType = query.queryType;\n\n return (\n \n \n\n {queryType === QueryType.PROMQL && (\n \n )}\n\n {queryType !== QueryType.SLO && (\n \n )}\n\n {queryType === QueryType.SLO && (\n onChange({ ...query, aliasBy })}\n />\n )}\n \n );\n};\n","import React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport { LOOKBACK_PERIODS } from '../constants';\n\nexport interface Props {\n refId: string;\n onChange: (lookbackPeriod: string) => void;\n templateVariableOptions: Array>;\n current?: string;\n}\n\nexport const LookbackPeriodSelect = ({ refId, current, templateVariableOptions, onChange }: Props) => {\n const options = LOOKBACK_PERIODS.map((lp) => ({\n ...lp,\n label: lp.text,\n }));\n if (current && !options.find((op) => op.value === current)) {\n options.push({ label: current, text: current, value: current, hidden: false });\n }\n const visibleOptions = options.filter((lp) => !lp.hidden);\n\n return (\n \n s.value === current)}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n {\n label: 'Predefined periods',\n expanded: true,\n options: visibleOptions,\n },\n ]}\n onChange={({ value }) => onChange(value!)}\n />\n \n );\n};\n","import React, { useEffect, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { SLOQuery } from '../types/query';\n\nexport interface Props {\n refId: string;\n onChange: (query: SLOQuery) => void;\n query: SLOQuery;\n templateVariableOptions: Array>;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const SLO = ({ refId, query, templateVariableOptions, onChange, datasource }: Props) => {\n const [slos, setSLOs] = useState>>([]);\n const { projectName, serviceId } = query;\n\n useEffect(() => {\n if (!projectName || !serviceId) {\n return;\n }\n\n datasource.getServiceLevelObjectives(projectName, serviceId).then((sloIds: Array>) => {\n setSLOs([\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...sloIds,\n ]);\n });\n }, [datasource, projectName, serviceId, templateVariableOptions]);\n\n return (\n \n {\n const slos = await datasource.getServiceLevelObjectives(projectName, serviceId);\n const slo = slos.find(({ value }) => value === datasource.templateSrv.replace(sloId));\n onChange({ ...query, sloId, sloName, goal: slo?.goal });\n }}\n />\n \n );\n};\n","import React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport { SELECTORS } from '../constants';\nimport CloudMonitoringDatasource from '../datasource';\nimport { SLOQuery } from '../types/query';\n\nexport interface Props {\n refId: string;\n onChange: (query: SLOQuery) => void;\n query: SLOQuery;\n templateVariableOptions: Array>;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const Selector = ({ refId, query, templateVariableOptions, onChange, datasource }: Props) => {\n return (\n \n s.value === query?.selectorName ?? '')}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...SELECTORS,\n ]}\n onChange={({ value: selectorName }) => onChange({ ...query, selectorName: selectorName ?? '' })}\n />\n \n );\n};\n","import React, { useEffect, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { SLOQuery } from '../types/query';\n\nexport interface Props {\n refId: string;\n onChange: (query: SLOQuery) => void;\n query: SLOQuery;\n templateVariableOptions: Array>;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const Service = ({ refId, query, templateVariableOptions, onChange, datasource }: Props) => {\n const [services, setServices] = useState>>([]);\n const { projectName } = query;\n\n useEffect(() => {\n if (!projectName) {\n return;\n }\n\n datasource.getSLOServices(projectName).then((services: Array>) => {\n setServices([\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...services,\n ]);\n });\n }, [datasource, projectName, templateVariableOptions]);\n\n return (\n \n \n onChange({ ...query, serviceId, serviceName, sloId: '' })\n }\n />\n \n );\n};\n","import React, { useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField, EditorFieldGroup, EditorRow } from '@grafana/experimental';\n\nimport { ALIGNMENT_PERIODS, SLO_BURN_RATE_SELECTOR_NAME } from '../constants';\nimport CloudMonitoringDatasource from '../datasource';\nimport { alignmentPeriodLabel } from '../functions';\nimport { AlignmentTypes, SLOQuery } from '../types/query';\nimport { CustomMetaData } from '../types/types';\n\nimport { AliasBy } from './AliasBy';\nimport { LookbackPeriodSelect } from './LookbackPeriodSelect';\nimport { PeriodSelect } from './PeriodSelect';\nimport { Project } from './Project';\nimport { SLO } from './SLO';\nimport { Selector } from './Selector';\nimport { Service } from './Service';\n\nexport interface Props {\n refId: string;\n customMetaData: CustomMetaData;\n variableOptionGroup: SelectableValue;\n onChange: (query: SLOQuery) => void;\n onRunQuery: () => void;\n query: SLOQuery;\n datasource: CloudMonitoringDatasource;\n aliasBy?: string;\n onChangeAliasBy: (aliasBy: string) => void;\n}\n\nexport const defaultQuery: (dataSource: CloudMonitoringDatasource) => SLOQuery = (dataSource) => ({\n projectName: dataSource.getDefaultProject(),\n alignmentPeriod: 'cloud-monitoring-auto',\n perSeriesAligner: AlignmentTypes.ALIGN_MEAN,\n aliasBy: '',\n selectorName: 'select_slo_health',\n serviceId: '',\n serviceName: '',\n sloId: '',\n sloName: '',\n lookbackPeriod: '',\n});\n\nexport function SLOQueryEditor({\n refId,\n query,\n datasource,\n onChange,\n variableOptionGroup,\n customMetaData,\n aliasBy,\n onChangeAliasBy,\n}: React.PropsWithChildren) {\n const alignmentLabel = useMemo(() => alignmentPeriodLabel(customMetaData, datasource), [customMetaData, datasource]);\n return (\n <>\n \n onChange({ ...query, projectName })}\n />\n \n \n \n {query.selectorName === SLO_BURN_RATE_SELECTOR_NAME && (\n onChange({ ...query, lookbackPeriod: lookbackPeriod })}\n current={query.lookbackPeriod}\n templateVariableOptions={variableOptionGroup.options}\n />\n )}\n\n \n \n onChange({ ...query, alignmentPeriod: period })}\n aligmentPeriods={ALIGNMENT_PERIODS}\n />\n \n \n\n \n \n \n );\n}\n","import { css } from '@emotion/css';\nimport debounce from 'debounce-promise';\nimport { startCase, uniqBy } from 'lodash';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { GrafanaTheme2, SelectableValue, TimeRange } from '@grafana/data';\nimport { EditorField, EditorFieldGroup, EditorRow } from '@grafana/experimental';\nimport { reportInteraction } from '@grafana/runtime';\nimport { getSelectStyles, Select, AsyncSelect, useStyles2, useTheme2 } from '@grafana/ui';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { getAlignmentPickerData, getMetricType, setMetricType } from '../functions';\nimport { PreprocessorType, TimeSeriesList, MetricKind, ValueTypes } from '../types/query';\nimport { CustomMetaData, MetricDescriptor } from '../types/types';\n\nimport { AliasBy } from './AliasBy';\nimport { Alignment } from './Alignment';\nimport { GroupBy } from './GroupBy';\nimport { LabelFilter } from './LabelFilter';\nimport { defaultTimeSeriesList } from './MetricQueryEditor';\nimport { Preprocessor } from './Preprocessor';\nimport { Project } from './Project';\n\nexport interface Props {\n refId: string;\n customMetaData: CustomMetaData;\n onChange: (query: TimeSeriesList) => void;\n datasource: CloudMonitoringDatasource;\n query: TimeSeriesList;\n variableOptionGroup: SelectableValue;\n aliasBy?: string;\n onChangeAliasBy: (aliasBy: string) => void;\n}\n\nexport function Editor({\n refId,\n onChange,\n datasource,\n query,\n variableOptionGroup,\n customMetaData,\n aliasBy,\n onChangeAliasBy,\n}: React.PropsWithChildren) {\n const [labels, setLabels] = useState<{ [k: string]: any }>({});\n const [metricDescriptors, setMetricDescriptors] = useState([]);\n const [metricDescriptor, setMetricDescriptor] = useState();\n const [metrics, setMetrics] = useState>>([]);\n const [services, setServices] = useState>>([]);\n const [service, setService] = useState('');\n const [timeRange, setTimeRange] = useState({ ...datasource.timeSrv.timeRange() });\n\n const useTime = (time: TimeRange) => {\n if (\n timeRange !== null &&\n (timeRange.raw.from.toString() !== time.raw.from.toString() ||\n timeRange.raw.to.toString() !== time.raw.to.toString())\n ) {\n setTimeRange({ ...time });\n }\n };\n\n useTime(datasource.timeSrv.timeRange());\n\n const theme = useTheme2();\n const selectStyles = getSelectStyles(theme);\n\n const customStyle = useStyles2(getStyles);\n\n const { projectName, groupBys, crossSeriesReducer } = query;\n const metricType = getMetricType(query);\n const { templateSrv } = datasource;\n\n const getSelectedMetricDescriptor = useCallback(\n (metricDescriptors: MetricDescriptor[], metricType: string) => {\n return metricDescriptors.find((md) => md.type === templateSrv.replace(metricType))!;\n },\n [templateSrv]\n );\n\n useEffect(() => {\n if (projectName && metricType) {\n datasource\n .getLabels(metricType, refId, projectName, { groupBys, crossSeriesReducer }, timeRange)\n .then((labels) => setLabels(labels));\n }\n }, [datasource, groupBys, metricType, projectName, refId, crossSeriesReducer, timeRange]);\n\n useEffect(() => {\n const loadMetricDescriptors = async () => {\n if (projectName) {\n const metricDescriptors = await datasource.getMetricTypes(projectName);\n reportInteraction('cloud-monitoring-metric-descriptors-loaded', {\n count: metricDescriptors.length,\n });\n const services = getServicesList(metricDescriptors);\n setMetricDescriptors(metricDescriptors);\n setServices(services);\n }\n };\n loadMetricDescriptors();\n }, [datasource, projectName, customStyle, selectStyles.optionDescription]);\n\n useEffect(() => {\n const getMetricsList = (metricDescriptors: MetricDescriptor[]) => {\n const selectedMetricDescriptor = getSelectedMetricDescriptor(metricDescriptors, metricType);\n if (!selectedMetricDescriptor) {\n return [];\n }\n\n const metricsByService = metricDescriptors\n .filter((m) => m.service === selectedMetricDescriptor.service)\n .map((m) => ({\n service: m.service,\n value: m.type,\n label: m.displayName,\n component: function optionComponent() {\n return (\n
\n
{m.type}
\n
{m.description}
\n
\n );\n },\n }));\n return metricsByService;\n };\n\n const metrics = getMetricsList(metricDescriptors);\n const service = metrics.length > 0 ? metrics[0].service : '';\n const metricDescriptor = getSelectedMetricDescriptor(metricDescriptors, metricType);\n setMetricDescriptor(metricDescriptor);\n setMetrics(metrics);\n setService(service);\n }, [metricDescriptors, getSelectedMetricDescriptor, metricType, customStyle, selectStyles.optionDescription]);\n\n const onServiceChange = ({ value: service }: SelectableValue) => {\n const metrics = metricDescriptors\n .filter((m: MetricDescriptor) => m.service === templateSrv.replace(service))\n .map((m: MetricDescriptor) => ({\n service: m.service,\n value: m.type,\n label: m.displayName,\n description: m.description,\n }));\n // On service change reset all query values except the project name\n query.filters = [];\n\n if (metrics.length > 0 && !metrics.some((m) => m.value === templateSrv.replace(metricType))) {\n onMetricTypeChange(metrics[0]);\n setService(service!);\n setMetrics(metrics);\n } else {\n setService(service!);\n setMetrics(metrics);\n }\n };\n\n const getServicesList = (metricDescriptors: MetricDescriptor[]) => {\n const services = metricDescriptors.map((m) => ({\n value: m.service,\n label: startCase(m.serviceShortName),\n }));\n\n return services.length > 0 ? uniqBy(services, (s) => s.value) : [];\n };\n\n const filterMetrics = async (filter: string) => {\n const metrics = await datasource.filterMetricsByType(projectName, service);\n const filtered = metrics\n .filter((m) => m.type.includes(filter.toLowerCase()))\n .map((m) => ({\n value: m.type,\n label: m.displayName,\n component: function optionComponent() {\n return (\n
\n
{m.type}
\n
{m.description}
\n
\n );\n },\n }));\n return [\n {\n label: 'Template Variables',\n options: variableOptionGroup.options,\n },\n ...filtered,\n ];\n };\n\n const debounceFilter = debounce(filterMetrics, 400);\n\n const onMetricTypeChange = ({ value }: SelectableValue) => {\n const metricDescriptor = getSelectedMetricDescriptor(metricDescriptors, value!);\n setMetricDescriptor(metricDescriptor);\n const { metricKind, valueType } = metricDescriptor;\n const preprocessor =\n metricKind === MetricKind.GAUGE || valueType === ValueTypes.DISTRIBUTION\n ? PreprocessorType.None\n : PreprocessorType.Rate;\n const { perSeriesAligner } = getAlignmentPickerData(valueType, metricKind, query.perSeriesAligner, preprocessor);\n\n // On metric name change reset query to defaults except project name and filters\n Object.assign(query, {\n ...defaultTimeSeriesList(datasource),\n projectName: query.projectName,\n filters: query.filters,\n });\n onChange({\n ...setMetricType(\n {\n ...query,\n perSeriesAligner,\n },\n value!\n ),\n preprocessor,\n });\n };\n\n return (\n <>\n \n \n {\n onChange({ ...query, projectName });\n }}\n />\n\n \n s.value === service)}\n options={[\n {\n label: 'Template Variables',\n options: variableOptionGroup.options,\n },\n ...services,\n ]}\n placeholder=\"Select Services\"\n inputId={`${refId}-service`}\n />\n \n \n \n s.value === metricType)}\n loadOptions={debounceFilter}\n defaultOptions={[\n {\n label: 'Template Variables',\n options: variableOptionGroup.options,\n },\n ...metrics.slice(0, 100),\n ]}\n placeholder=\"Select Metric\"\n inputId={`${refId}-select-metric`}\n disabled={service === ''}\n />\n \n \n \n \n\n <>\n onChange({ ...query, filters })}\n variableOptionGroup={variableOptionGroup}\n />\n \n \n \n \n \n \n \n \n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => css`\n label: grafana-select-option-description;\n font-weight: normal;\n font-style: italic;\n color: ${theme.colors.text.secondary};\n`;\n\nexport const VisualMetricQueryEditor = React.memo(Editor);\n","import React from 'react';\n\nexport const AnnotationsHelp = () => {\n return (\n
\n
\n
Annotation Query Format
\n

\n An annotation is an event that is overlaid on top of graphs. Annotation rendering is expensive so it is\n important to limit the number of rows returned.{' '}\n

\n

\n The Title and Text fields support templating and can use data returned from the query. For example, the Title\n field could have the following text:\n

\n \n {`${'{{metric.type}}'}`} has value: {`${'{{metric.value}}'}`}\n \n

\n Example Result: monitoring.googleapis.com/uptime_check/http_status has this value: 502\n

\n Patterns:\n

\n {`${'{{metric.value}}'}`} = value of the metric/point\n

\n

\n {`${'{{metric.type}}'}`} = metric type e.g. compute.googleapis.com/instance/cpu/usage_time\n

\n

\n {`${'{{metric.name}}'}`} = name part of metric e.g. instance/cpu/usage_time\n

\n

\n {`${'{{metric.service}}'}`} = service part of metric e.g. compute\n

\n

\n {`${'{{metric.label.label_name}}'}`} = Metric label metadata e.g. metric.label.instance_name\n

\n

\n {`${'{{resource.label.label_name}}'}`} = Resource label metadata e.g. resource.label.zone\n

\n
\n
\n );\n};\n","import React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { InlineField, Select } from '@grafana/ui';\n\ninterface VariableQueryFieldProps {\n onChange: (value: string) => void;\n options: SelectableValue[];\n value: string;\n label: string;\n allowCustomValue?: boolean;\n}\n\nexport const VariableQueryField = ({\n label,\n onChange,\n value,\n options,\n allowCustomValue = false,\n}: VariableQueryFieldProps) => {\n return (\n \n onChange(value!)}\n options={options}\n />\n \n );\n};\n","import { QueryType, MetricKind, ValueTypes } from './types/query';\n\n// not super excited about using uneven numbers, but this makes it align perfectly with rows that has two fields\nexport const INPUT_WIDTH = 71;\nexport const LABEL_WIDTH = 19;\nexport const INNER_LABEL_WIDTH = 14;\nexport const SELECT_WIDTH = 28;\n\nexport const ALIGNMENTS = [\n {\n text: 'none',\n value: 'ALIGN_NONE',\n valueTypes: [\n ValueTypes.INT64,\n ValueTypes.DOUBLE,\n ValueTypes.MONEY,\n ValueTypes.DISTRIBUTION,\n ValueTypes.STRING,\n ValueTypes.VALUE_TYPE_UNSPECIFIED,\n ValueTypes.BOOL,\n ],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'delta',\n value: 'ALIGN_DELTA',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.CUMULATIVE, MetricKind.DELTA],\n },\n {\n text: 'rate',\n value: 'ALIGN_RATE',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.CUMULATIVE, MetricKind.DELTA],\n },\n {\n text: 'interpolate',\n value: 'ALIGN_INTERPOLATE',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'next older',\n value: 'ALIGN_NEXT_OLDER',\n valueTypes: [\n ValueTypes.INT64,\n ValueTypes.DOUBLE,\n ValueTypes.MONEY,\n ValueTypes.DISTRIBUTION,\n ValueTypes.STRING,\n ValueTypes.VALUE_TYPE_UNSPECIFIED,\n ValueTypes.BOOL,\n ],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'min',\n value: 'ALIGN_MIN',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'max',\n value: 'ALIGN_MAX',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'mean',\n value: 'ALIGN_MEAN',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'count',\n value: 'ALIGN_COUNT',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'sum',\n value: 'ALIGN_SUM',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'stddev',\n value: 'ALIGN_STDDEV',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'count true',\n value: 'ALIGN_COUNT_TRUE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'count false',\n value: 'ALIGN_COUNT_FALSE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'fraction true',\n value: 'ALIGN_FRACTION_TRUE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'percentile 99',\n value: 'ALIGN_PERCENTILE_99',\n valueTypes: [ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'percentile 95',\n value: 'ALIGN_PERCENTILE_95',\n valueTypes: [ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'percentile 50',\n value: 'ALIGN_PERCENTILE_50',\n valueTypes: [ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'percentile 05',\n value: 'ALIGN_PERCENTILE_05',\n valueTypes: [ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'percent change',\n value: 'ALIGN_PERCENT_CHANGE',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n];\n\nexport const AGGREGATIONS = [\n {\n text: 'none',\n value: 'REDUCE_NONE',\n valueTypes: [\n ValueTypes.INT64,\n ValueTypes.DOUBLE,\n ValueTypes.MONEY,\n ValueTypes.DISTRIBUTION,\n ValueTypes.BOOL,\n ValueTypes.STRING,\n ],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'mean',\n value: 'REDUCE_MEAN',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: 'min',\n value: 'REDUCE_MIN',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'max',\n value: 'REDUCE_MAX',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'sum',\n value: 'REDUCE_SUM',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'std. dev.',\n value: 'REDUCE_STDDEV',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'count',\n value: 'REDUCE_COUNT',\n valueTypes: [\n ValueTypes.INT64,\n ValueTypes.DOUBLE,\n ValueTypes.MONEY,\n ValueTypes.DISTRIBUTION,\n ValueTypes.BOOL,\n ValueTypes.STRING,\n ],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: 'count true',\n value: 'REDUCE_COUNT_TRUE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'count false',\n value: 'REDUCE_COUNT_FALSE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: '99th percentile',\n value: 'REDUCE_PERCENTILE_99',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: '95th percentile',\n value: 'REDUCE_PERCENTILE_95',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: '50th percentile',\n value: 'REDUCE_PERCENTILE_50',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: '5th percentile',\n value: 'REDUCE_PERCENTILE_05',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n];\n\nexport type periodOption = {\n text: string;\n value: string;\n hidden?: boolean;\n};\n\nexport const ALIGNMENT_PERIODS: periodOption[] = [\n { text: 'grafana auto', value: 'grafana-auto' },\n { text: 'stackdriver auto', value: 'stackdriver-auto', hidden: true },\n { text: 'cloud monitoring auto', value: 'cloud-monitoring-auto' },\n { text: '1m', value: '+60s' },\n { text: '2m', value: '+120s' },\n { text: '5m', value: '+300s' },\n { text: '10m', value: '+600s' },\n { text: '30m', value: '+1800s' },\n { text: '1h', value: '+3600s' },\n { text: '3h', value: '+7200s' },\n { text: '6h', value: '+21600s' },\n { text: '1d', value: '+86400s' },\n { text: '3d', value: '+259200s' },\n { text: '1w', value: '+604800s' },\n];\n\nexport const GRAPH_PERIODS: periodOption[] = [\n { text: 'auto', value: 'auto' },\n { text: '1m', value: '1m' },\n { text: '2m', value: '2m' },\n { text: '5m', value: '5m' },\n { text: '10m', value: '10m' },\n { text: '30m', value: '30m' },\n { text: '1h', value: '1h' },\n { text: '3h', value: '3h' },\n { text: '6h', value: '6h' },\n { text: '1d', value: '1d' },\n { text: '3d', value: '3d' },\n { text: '1w', value: '1w' },\n];\n\n// Usable units: ns, us, ms, s, m, h\n// ref. https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/timeseries-selectors#tss-names-args\nexport const LOOKBACK_PERIODS: periodOption[] = [\n { text: '1m', value: '1m' },\n { text: '2m', value: '2m' },\n { text: '5m', value: '5m' },\n { text: '10m', value: '10m' },\n { text: '30m', value: '30m' },\n { text: '1h', value: '1h' },\n { text: '3h', value: '3h' },\n { text: '6h', value: '6h' },\n { text: '24h', value: '24h' },\n { text: '72h', value: '72h' },\n];\n\nexport const SYSTEM_LABELS = [\n 'metadata.system_labels.cloud_account',\n 'metadata.system_labels.name',\n 'metadata.system_labels.region',\n 'metadata.system_labels.state',\n 'metadata.system_labels.instance_group',\n 'metadata.system_labels.node_name',\n 'metadata.system_labels.service_name',\n 'metadata.system_labels.top_level_controller_type',\n 'metadata.system_labels.top_level_controller_name',\n 'metadata.system_labels.container_image',\n];\n\nexport const SLO_BURN_RATE_SELECTOR_NAME = 'select_slo_burn_rate';\n\nexport const SELECTORS = [\n { label: 'SLI Value', value: 'select_slo_health' },\n { label: 'SLO Compliance', value: 'select_slo_compliance' },\n { label: 'SLO Error Budget Remaining', value: 'select_slo_budget_fraction' },\n { label: 'SLO Burn Rate', value: SLO_BURN_RATE_SELECTOR_NAME },\n];\n\nexport const QUERY_TYPES = [\n { label: 'Builder', value: QueryType.TIME_SERIES_LIST },\n { label: 'MQL', value: QueryType.TIME_SERIES_QUERY },\n { label: 'Service Level Objectives (SLO)', value: QueryType.SLO },\n { label: 'PromQL', value: QueryType.PROMQL },\n];\n","import { chunk, initial, startCase, uniqBy } from 'lodash';\n\nimport { rangeUtil } from '@grafana/data';\nimport { getTemplateSrv, TemplateSrv } from '@grafana/runtime';\n\nimport { AGGREGATIONS, ALIGNMENTS, SYSTEM_LABELS } from './constants';\nimport CloudMonitoringDatasource from './datasource';\nimport { AlignmentTypes, PreprocessorType, TimeSeriesList, MetricKind, ValueTypes } from './types/query';\nimport { CustomMetaData, MetricDescriptor } from './types/types';\n\nexport const extractServicesFromMetricDescriptors = (metricDescriptors: MetricDescriptor[]) =>\n uniqBy(metricDescriptors, 'service');\n\nexport const getMetricTypesByService = (metricDescriptors: MetricDescriptor[], service: string) =>\n metricDescriptors.filter((m: MetricDescriptor) => m.service === service);\n\nexport const getMetricTypes = (\n metricDescriptors: MetricDescriptor[],\n metricType: string,\n interpolatedMetricType: string,\n selectedService: string\n) => {\n const metricTypes = getMetricTypesByService(metricDescriptors, selectedService).map((m) => ({\n value: m.type,\n name: m.displayName,\n }));\n const metricTypeExistInArray = metricTypes.some(\n (m: { value: string; name: string }) => m.value === interpolatedMetricType\n );\n const metricTypeByService = metricTypes.length ? metricTypes[0].value : '';\n const selectedMetricType = metricTypeExistInArray ? metricType : metricTypeByService;\n return {\n metricTypes,\n selectedMetricType,\n };\n};\n\nexport const getAlignmentOptionsByMetric = (\n metricValueType?: string,\n metricKind?: string,\n preprocessor?: PreprocessorType\n) => {\n if (preprocessor && preprocessor === PreprocessorType.Rate) {\n metricKind = MetricKind.GAUGE;\n }\n\n return !metricValueType\n ? []\n : ALIGNMENTS.filter((i) => {\n return (\n i.valueTypes.indexOf(metricValueType as ValueTypes) !== -1 &&\n i.metricKinds.indexOf(metricKind as MetricKind) !== -1\n );\n });\n};\n\nexport const getAggregationOptionsByMetric = (valueType: ValueTypes, metricKind: MetricKind) => {\n return !metricKind\n ? []\n : AGGREGATIONS.filter((i) => {\n return i.valueTypes.indexOf(valueType) !== -1 && i.metricKinds.indexOf(metricKind) !== -1;\n });\n};\n\nexport const getLabelKeys = async (\n datasource: CloudMonitoringDatasource,\n selectedMetricType: string,\n projectName: string\n) => {\n const refId = 'handleLabelKeysQuery';\n const labels = await datasource.getLabels(selectedMetricType, refId, projectName);\n return [...Object.keys(labels), ...SYSTEM_LABELS];\n};\n\nexport const getAlignmentPickerData = (\n valueType: string | undefined = ValueTypes.DOUBLE,\n metricKind: string | undefined = MetricKind.GAUGE,\n perSeriesAligner: string | undefined = AlignmentTypes.ALIGN_MEAN,\n preprocessor?: PreprocessorType\n) => {\n const templateSrv: TemplateSrv = getTemplateSrv();\n const alignOptions = getAlignmentOptionsByMetric(valueType, metricKind, preprocessor).map((option) => ({\n ...option,\n label: option.text,\n }));\n if (!alignOptions.some((o: { value: string }) => o.value === templateSrv.replace(perSeriesAligner))) {\n perSeriesAligner = alignOptions.length > 0 ? alignOptions[0].value : AlignmentTypes.ALIGN_MEAN;\n }\n return { alignOptions, perSeriesAligner };\n};\n\nexport const labelsToGroupedOptions = (groupBys: string[]) => {\n const groups = groupBys.reduce((acc: any, curr: string) => {\n const arr = curr.split('.').map(startCase);\n const group = (arr.length === 2 ? arr : initial(arr)).join(' ');\n const option = {\n value: curr,\n label: curr,\n };\n if (acc[group]) {\n acc[group] = [...acc[group], option];\n } else {\n acc[group] = [option];\n }\n return acc;\n }, {});\n return Object.entries(groups).map(([label, options]) => ({ label, options, expanded: true }), []);\n};\n\nexport const stringArrayToFilters = (filterArray: string[]) =>\n chunk(filterArray, 4).map(([key, operator, value, condition = 'AND']) => ({\n key,\n operator,\n value,\n condition,\n }));\n\nexport const alignmentPeriodLabel = (customMetaData: CustomMetaData, datasource: CloudMonitoringDatasource) => {\n const { perSeriesAligner, alignmentPeriod } = customMetaData;\n if (!alignmentPeriod || !perSeriesAligner) {\n return '';\n }\n\n const alignment = ALIGNMENTS.find((ap) => ap.value === datasource.templateSrv.replace(perSeriesAligner));\n const seconds = parseInt(alignmentPeriod, 10);\n const hms = rangeUtil.secondsToHms(seconds);\n return `${hms} interval (${alignment?.text ?? ''})`;\n};\n\nexport const getMetricType = (query?: TimeSeriesList) => {\n const metricTypeKey = query?.filters?.findIndex((f) => f === 'metric.type')!;\n // filters are in the format [key, operator, value] so we need to add 2 to get the value\n const metricType = query?.filters?.[metricTypeKey + 2];\n return metricType || '';\n};\n\nexport const setMetricType = (query: TimeSeriesList, metricType: string) => {\n if (!query.filters) {\n query.filters = ['metric.type', '=', metricType];\n return query;\n }\n const metricTypeKey = query?.filters?.findIndex((f) => f === 'metric.type')!;\n if (metricTypeKey === -1) {\n query.filters.push('metric.type', '=', metricType);\n } else {\n // filters are in the format [key, operator, value] so we need to add 2 to get the value\n query.filters![metricTypeKey + 2] = metricType;\n }\n return query;\n};\n","// Code generated - EDITING IS FUTILE. DO NOT EDIT.\n//\n// Generated by:\n// public/app/plugins/gen.go\n// Using jennies:\n// TSTypesJenny\n// PluginTSTypesJenny\n//\n// Run 'make gen-cue' from repository root to regenerate.\n\nimport * as common from '@grafana/schema';\n\nexport interface CloudMonitoringQuery extends common.DataQuery {\n /**\n * Aliases can be set to modify the legend labels. e.g. {{metric.label.xxx}}. See docs for more detail.\n */\n aliasBy?: string;\n /**\n * Time interval in milliseconds.\n */\n intervalMs?: number;\n /**\n * PromQL sub-query properties.\n */\n promQLQuery?: PromQLQuery;\n /**\n * SLO sub-query properties.\n */\n sloQuery?: SLOQuery;\n /**\n * GCM query type.\n * queryType: #QueryType\n * Time Series List sub-query properties.\n */\n timeSeriesList?: TimeSeriesList;\n /**\n * Time Series sub-query properties.\n */\n timeSeriesQuery?: TimeSeriesQuery;\n}\n\n/**\n * Defines the supported queryTypes.\n */\nexport enum QueryType {\n ANNOTATION = 'annotation',\n PROMQL = 'promQL',\n SLO = 'slo',\n TIME_SERIES_LIST = 'timeSeriesList',\n TIME_SERIES_QUERY = 'timeSeriesQuery',\n}\n\n/**\n * Time Series List sub-query properties.\n */\nexport interface TimeSeriesList {\n /**\n * Alignment period to use when regularizing data. Defaults to cloud-monitoring-auto.\n */\n alignmentPeriod?: string;\n /**\n * Reducer applied across a set of time-series values. Defaults to REDUCE_NONE.\n */\n crossSeriesReducer: string;\n /**\n * Array of filters to query data by. Labels that can be filtered on are defined by the metric.\n */\n filters?: Array;\n /**\n * Array of labels to group data by.\n */\n groupBys?: Array;\n /**\n * Alignment function to be used. Defaults to ALIGN_MEAN.\n */\n perSeriesAligner?: string;\n /**\n * Preprocessor is not part of the API, but is used to store the preprocessor and not affect the UI for the rest of parameters\n */\n preprocessor?: PreprocessorType;\n /**\n * GCP project to execute the query against.\n */\n projectName: string;\n /**\n * Only present if a preprocessor is selected. Alignment period to use when regularizing data. Defaults to cloud-monitoring-auto.\n */\n secondaryAlignmentPeriod?: string;\n /**\n * Only present if a preprocessor is selected. Reducer applied across a set of time-series values. Defaults to REDUCE_NONE.\n */\n secondaryCrossSeriesReducer?: string;\n /**\n * Only present if a preprocessor is selected. Array of labels to group data by.\n */\n secondaryGroupBys?: Array;\n /**\n * Only present if a preprocessor is selected. Alignment function to be used. Defaults to ALIGN_MEAN.\n */\n secondaryPerSeriesAligner?: string;\n /**\n * Annotation text.\n */\n text?: string;\n /**\n * Annotation title.\n */\n title?: string;\n /**\n * Data view, defaults to FULL.\n */\n view?: string;\n}\n\nexport const defaultTimeSeriesList: Partial = {\n filters: [],\n groupBys: [],\n secondaryGroupBys: [],\n};\n\n/**\n * Types of pre-processor available. Defined by the metric.\n */\nexport enum PreprocessorType {\n Delta = 'delta',\n None = 'none',\n Rate = 'rate',\n}\n\n/**\n * Time Series sub-query properties.\n */\nexport interface TimeSeriesQuery {\n /**\n * To disable the graphPeriod, it should explictly be set to 'disabled'.\n */\n graphPeriod?: ('disabled' | string);\n /**\n * GCP project to execute the query against.\n */\n projectName: string;\n /**\n * MQL query to be executed.\n */\n query: string;\n}\n\n/**\n * SLO sub-query properties.\n */\nexport interface SLOQuery {\n /**\n * Alignment period to use when regularizing data. Defaults to cloud-monitoring-auto.\n */\n alignmentPeriod?: string;\n /**\n * SLO goal value.\n */\n goal?: number;\n /**\n * Specific lookback period for the SLO.\n */\n lookbackPeriod?: string;\n /**\n * Alignment function to be used. Defaults to ALIGN_MEAN.\n */\n perSeriesAligner?: string;\n /**\n * GCP project to execute the query against.\n */\n projectName: string;\n /**\n * SLO selector.\n */\n selectorName: string;\n /**\n * ID for the service the SLO is in.\n */\n serviceId: string;\n /**\n * Name for the service the SLO is in.\n */\n serviceName: string;\n /**\n * ID for the SLO.\n */\n sloId: string;\n /**\n * Name of the SLO.\n */\n sloName: string;\n}\n\n/**\n * PromQL sub-query properties.\n */\nexport interface PromQLQuery {\n /**\n * PromQL expression/query to be executed.\n */\n expr: string;\n /**\n * GCP project to execute the query against.\n */\n projectName: string;\n /**\n * PromQL min step\n */\n step: string;\n}\n\n/**\n * @deprecated This type is for migration purposes only. Replaced by TimeSeriesList Metric sub-query properties.\n */\nexport interface MetricQuery {\n /**\n * Aliases can be set to modify the legend labels. e.g. {{metric.label.xxx}}. See docs for more detail.\n */\n aliasBy?: string;\n /**\n * Alignment period to use when regularizing data. Defaults to cloud-monitoring-auto.\n */\n alignmentPeriod?: string;\n /**\n * Reducer applied across a set of time-series values. Defaults to REDUCE_NONE.\n */\n crossSeriesReducer: string;\n editorMode: string;\n /**\n * Array of filters to query data by. Labels that can be filtered on are defined by the metric.\n */\n filters?: Array;\n /**\n * To disable the graphPeriod, it should explictly be set to 'disabled'.\n */\n graphPeriod?: ('disabled' | string);\n /**\n * Array of labels to group data by.\n */\n groupBys?: Array;\n metricKind?: MetricKind;\n metricType: string;\n /**\n * Alignment function to be used. Defaults to ALIGN_MEAN.\n */\n perSeriesAligner?: string;\n /**\n * Preprocessor is not part of the API, but is used to store the preprocessor and not affect the UI for the rest of parameters\n */\n preprocessor?: PreprocessorType;\n /**\n * GCP project to execute the query against.\n */\n projectName: string;\n /**\n * MQL query to be executed.\n */\n query: string;\n valueType?: string;\n view?: string;\n}\n\nexport const defaultMetricQuery: Partial = {\n filters: [],\n groupBys: [],\n};\n\nexport enum MetricKind {\n CUMULATIVE = 'CUMULATIVE',\n DELTA = 'DELTA',\n GAUGE = 'GAUGE',\n METRIC_KIND_UNSPECIFIED = 'METRIC_KIND_UNSPECIFIED',\n}\n\nexport enum ValueTypes {\n BOOL = 'BOOL',\n DISTRIBUTION = 'DISTRIBUTION',\n DOUBLE = 'DOUBLE',\n INT64 = 'INT64',\n MONEY = 'MONEY',\n STRING = 'STRING',\n VALUE_TYPE_UNSPECIFIED = 'VALUE_TYPE_UNSPECIFIED',\n}\n\nexport enum AlignmentTypes {\n ALIGN_COUNT = 'ALIGN_COUNT',\n ALIGN_COUNT_FALSE = 'ALIGN_COUNT_FALSE',\n ALIGN_COUNT_TRUE = 'ALIGN_COUNT_TRUE',\n ALIGN_DELTA = 'ALIGN_DELTA',\n ALIGN_FRACTION_TRUE = 'ALIGN_FRACTION_TRUE',\n ALIGN_INTERPOLATE = 'ALIGN_INTERPOLATE',\n ALIGN_MAX = 'ALIGN_MAX',\n ALIGN_MEAN = 'ALIGN_MEAN',\n ALIGN_MIN = 'ALIGN_MIN',\n ALIGN_NEXT_OLDER = 'ALIGN_NEXT_OLDER',\n ALIGN_NONE = 'ALIGN_NONE',\n ALIGN_PERCENTILE_05 = 'ALIGN_PERCENTILE_05',\n ALIGN_PERCENTILE_50 = 'ALIGN_PERCENTILE_50',\n ALIGN_PERCENTILE_95 = 'ALIGN_PERCENTILE_95',\n ALIGN_PERCENTILE_99 = 'ALIGN_PERCENTILE_99',\n ALIGN_PERCENT_CHANGE = 'ALIGN_PERCENT_CHANGE',\n ALIGN_RATE = 'ALIGN_RATE',\n ALIGN_STDDEV = 'ALIGN_STDDEV',\n ALIGN_SUM = 'ALIGN_SUM',\n}\n\n/**\n * @deprecated Use TimeSeriesList instead. Legacy annotation query properties for migration purposes.\n */\nexport interface LegacyCloudMonitoringAnnotationQuery {\n /**\n * Array of filters to query data by. Labels that can be filtered on are defined by the metric.\n */\n filters: Array;\n metricKind: MetricKind;\n metricType: string;\n /**\n * GCP project to execute the query against.\n */\n projectName: string;\n /**\n * Query refId.\n */\n refId: string;\n /**\n * Annotation text.\n */\n text: string;\n /**\n * Annotation title.\n */\n title: string;\n valueType: string;\n}\n\nexport const defaultLegacyCloudMonitoringAnnotationQuery: Partial = {\n filters: [],\n};\n\n/**\n * Query filter representation.\n */\nexport interface Filter {\n /**\n * Filter condition.\n */\n condition?: string;\n /**\n * Filter key.\n */\n key: string;\n /**\n * Filter operator.\n */\n operator: string;\n /**\n * Filter value.\n */\n value: string;\n}\n\nexport enum MetricFindQueryTypes {\n Aggregations = 'aggregations',\n Aligners = 'aligners',\n AlignmentPeriods = 'alignmentPeriods',\n DefaultProject = 'defaultProject',\n LabelKeys = 'labelKeys',\n LabelValues = 'labelValues',\n MetricTypes = 'metricTypes',\n Projects = 'projects',\n ResourceTypes = 'resourceTypes',\n SLO = 'slo',\n SLOServices = 'sloServices',\n Selectors = 'selectors',\n Services = 'services',\n}\n\nexport interface GoogleCloudMonitoring {}\n"],"names":["EditorHeader","children","styles","getStyles","theme","FlexItem","grow","shrink","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","__spreadProps","__objRest","source","exclude","target","InlineSelect","_a","_b","labelProp","props","getSelectStyles","id","components","SelectContainer","ValueContainer","className","Aggregation","aggOptions","useAggregationOptionsByMetric","selected","useSelectedFromOptions","metricDescriptor","valueType","metricKind","s","AliasBy","refId","onChange","alias","setAlias","propagateOnChange","e","Alignment","templateVariableOptions","query","customMetaData","datasource","preprocessor","alignmentLabel","q","period","AlignmentFunction","inputId","psa","perSeriesAligner","alignOptions","GroupBy","groupBys","variableOptionGroup","options","o","crossSeriesReducer","DEFAULT_OPERATOR","DEFAULT_CONDITION","filtersToStringArray","filters","operator","condition","operators","protectedFilterKeys","LabelFilter","labels","filterArray","_onChange","rawFilters","protectedFilters","getOptions","op","opp","valueOptions","items","renderItem","item","onChangeItem","onDeleteItem","v","MQLQueryEditor","onRunQuery","onKeyDown","event","GraphPeriod","graphPeriod","EditorRow","EditorField","Switch","defaultTimeSeriesList","dataSource","defaultTimeSeriesQuery","Editor","onQueryChange","onChangeTimeSeriesList","timeSeriesList","onChangeTimeSeriesQuery","timeSeriesQuery","EditorRows","VisualMetricQueryEditor","aliasBy","Stack","Project","projectName","MetricQueryEditor","PeriodSelect","current","disabled","aligmentPeriods","ap","visibleOptions","NONE_OPTION","Preprocessor","useOptions","projects","setProjects","projectsWithTemplateVariables","defaultQuery","PromQLQueryEditor","onReturnKeyDown","TextArea","QueryHeader","queryType","QueryEditor","oldQ","migrated","setMigrated","migratedQuery","sloQuery","onSLOQueryChange","promQLQuery","onPromQLQueryChange","LookbackPeriodSelect","lp","Select","SLO","slos","setSLOs","serviceId","sloIds","sloId","sloName","slo","Selector","selectorName","Service","services","setServices","serviceName","SLOQueryEditor","onChangeAliasBy","lookbackPeriod","EditorFieldGroup","setLabels","metricDescriptors","setMetricDescriptors","setMetricDescriptor","metrics","setMetrics","service","setService","timeRange","setTimeRange","time","selectStyles","customStyle","metricType","templateSrv","getSelectedMetricDescriptor","md","getServicesList","selectedMetricDescriptor","m","onServiceChange","onMetricTypeChange","filterMetrics","filter","filtered","debounceFilter","AnnotationsHelp","VariableQueryField","label","allowCustomValue","InlineField","INPUT_WIDTH","LABEL_WIDTH","INNER_LABEL_WIDTH","SELECT_WIDTH","ALIGNMENTS","AGGREGATIONS","ALIGNMENT_PERIODS","GRAPH_PERIODS","LOOKBACK_PERIODS","SYSTEM_LABELS","SLO_BURN_RATE_SELECTOR_NAME","SELECTORS","QUERY_TYPES","extractServicesFromMetricDescriptors","getMetricTypesByService","getMetricTypes","interpolatedMetricType","selectedService","metricTypes","metricTypeExistInArray","metricTypeByService","getAlignmentOptionsByMetric","metricValueType","i","getAggregationOptionsByMetric","getLabelKeys","selectedMetricType","getAlignmentPickerData","option","labelsToGroupedOptions","groups","acc","curr","arr","group","stringArrayToFilters","alignmentPeriodLabel","alignmentPeriod","alignment","seconds","getMetricType","metricTypeKey","f","setMetricType","QueryType","PreprocessorType","defaultMetricQuery","MetricKind","ValueTypes","AlignmentTypes","defaultLegacyCloudMonitoringAnnotationQuery","MetricFindQueryTypes"],"sourceRoot":""}