You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nextcloud/dist/core-unified-search.js.map

1 line
261 KiB
Plaintext

{"version":3,"file":"core-unified-search.js?v=013ab63aeddc02208837","mappings":";uBAAIA,2FCYJ,IAAIC,EAQJ,MAAMC,EAAkBC,GAAWF,EAAcE,EAK3CC,EAAsGC,SAE5G,SAASC,EAETC,GACI,OAAQA,GACS,iBAANA,GAC+B,oBAAtCC,OAAOC,UAAUC,SAASC,KAAKJ,IACX,mBAAbA,EAAEK,MACjB,CAMA,IAAIC,GACJ,SAAWA,GAQPA,EAAqB,OAAI,SAMzBA,EAA0B,YAAI,eAM9BA,EAA4B,cAAI,gBAEnC,CAtBD,CAsBGA,IAAiBA,EAAe,CAAC,IAEpC,MAAMC,EAA8B,oBAAXC,OAOnBC,EAA6F,oBAA1BC,uBAAyCA,uBAAiEH,EAY7KI,EAAwB,KAAyB,iBAAXH,QAAuBA,OAAOA,SAAWA,OAC/EA,OACgB,iBAATI,MAAqBA,KAAKA,OAASA,KACtCA,KACkB,iBAAXC,QAAuBA,OAAOA,SAAWA,OAC5CA,OACsB,iBAAfC,WACHA,WACA,CAAEC,YAAa,MARH,GAkB9B,SAASC,EAASC,EAAKC,EAAMC,GACzB,MAAMC,EAAM,IAAIC,eAChBD,EAAIE,KAAK,MAAOL,GAChBG,EAAIG,aAAe,OACnBH,EAAII,OAAS,WACTC,EAAOL,EAAIM,SAAUR,EAAMC,EAC/B,EACAC,EAAIO,QAAU,WACVC,EAAQC,MAAM,0BAClB,EACAT,EAAIU,MACR,CACA,SAASC,EAAYd,GACjB,MAAMG,EAAM,IAAIC,eAEhBD,EAAIE,KAAK,OAAQL,GAAK,GACtB,IACIG,EAAIU,MACR,CACA,MAAOE,GAAK,CACZ,OAAOZ,EAAIa,QAAU,KAAOb,EAAIa,QAAU,GAC9C,CAEA,SAASC,EAAMC,GACX,IACIA,EAAKC,cAAc,IAAIC,WAAW,SACtC,CACA,MAAOL,GACH,MAAMM,EAAMC,SAASC,YAAY,eACjCF,EAAIG,eAAe,SAAS,GAAM,EAAMjC,OAAQ,EAAG,EAAG,EAAG,GAAI,IAAI,GAAO,GAAO,GAAO,EAAO,EAAG,MAChG2B,EAAKC,cAAcE,EACvB,CACJ,CACA,MAAMI,EACgB,iBAAdC,UAAyBA,UAAY,CAAEC,UAAW,IAIpDC,EAA+B,KAAO,YAAYC,KAAKJ,EAAWE,YACpE,cAAcE,KAAKJ,EAAWE,aAC7B,SAASE,KAAKJ,EAAWE,WAFO,GAG/BnB,EAAUlB,EAGqB,oBAAtBwC,mBACH,aAAcA,kBAAkB7C,YAC/B2C,EAOb,SAAwBG,EAAM9B,EAAO,WAAYC,GAC7C,MAAM8B,EAAIV,SAASW,cAAc,KACjCD,EAAEjC,SAAWE,EACb+B,EAAEE,IAAM,WAGY,iBAATH,GAEPC,EAAEG,KAAOJ,EACLC,EAAEI,SAAWC,SAASD,OAClBtB,EAAYkB,EAAEG,MACdpC,EAASgC,EAAM9B,EAAMC,IAGrB8B,EAAEM,OAAS,SACXrB,EAAMe,IAIVf,EAAMe,KAKVA,EAAEG,KAAOI,IAAIC,gBAAgBT,GAC7BU,YAAW,WACPF,IAAIG,gBAAgBV,EAAEG,KAC1B,GAAG,KACHM,YAAW,WACPxB,EAAMe,EACV,GAAG,GAEX,EApCgB,qBAAsBP,EAqCtC,SAAkBM,EAAM9B,EAAO,WAAYC,GACvC,GAAoB,iBAAT6B,EACP,GAAIjB,EAAYiB,GACZhC,EAASgC,EAAM9B,EAAMC,OAEpB,CACD,MAAM8B,EAAIV,SAASW,cAAc,KACjCD,EAAEG,KAAOJ,EACTC,EAAEM,OAAS,SACXG,YAAW,WACPxB,EAAMe,EACV,GACJ,MAIAN,UAAUiB,iBA/GlB,SAAaZ,GAAM,QAAEa,GAAU,GAAU,CAAC,GAGtC,OAAIA,GACA,6EAA6Ef,KAAKE,EAAKc,MAChF,IAAIC,KAAK,CAACC,OAAOC,aAAa,OAASjB,GAAO,CAAEc,KAAMd,EAAKc,OAE/Dd,CACX,CAuGmCkB,CAAIlB,EAAM7B,GAAOD,EAEpD,EACA,SAAyB8B,EAAM9B,EAAMC,EAAMgD,GAOvC,IAJAA,EAAQA,GAAS7C,KAAK,GAAI,aAEtB6C,EAAM5B,SAAS6B,MAAQD,EAAM5B,SAAS8B,KAAKC,UAAY,kBAEvC,iBAATtB,EACP,OAAOhC,EAASgC,EAAM9B,EAAMC,GAChC,MAAMoD,EAAsB,6BAAdvB,EAAKc,KACbU,EAAW,eAAe1B,KAAKkB,OAAOrD,EAAQI,eAAiB,WAAYJ,EAC3E8D,EAAc,eAAe3B,KAAKH,UAAUC,WAClD,IAAK6B,GAAgBF,GAASC,GAAa3B,IACjB,oBAAf6B,WAA4B,CAEnC,MAAMC,EAAS,IAAID,WACnBC,EAAOC,UAAY,WACf,IAAI3D,EAAM0D,EAAOE,OACjB,GAAmB,iBAAR5D,EAEP,MADAkD,EAAQ,KACF,IAAIW,MAAM,4BAEpB7D,EAAMwD,EACAxD,EACAA,EAAI8D,QAAQ,eAAgB,yBAC9BZ,EACAA,EAAMb,SAASF,KAAOnC,EAGtBqC,SAAS0B,OAAO/D,GAEpBkD,EAAQ,IACZ,EACAQ,EAAOM,cAAcjC,EACzB,KACK,CACD,MAAM/B,EAAMuC,IAAIC,gBAAgBT,GAC5BmB,EACAA,EAAMb,SAAS0B,OAAO/D,GAEtBqC,SAASF,KAAOnC,EACpBkD,EAAQ,KACRT,YAAW,WACPF,IAAIG,gBAAgB1C,EACxB,GAAG,IACP,CACJ,EA7GM,OAqHN,SAASiE,EAAaC,EAASrB,GAC3B,MAAMsB,EAAe,MAAQD,EACS,mBAA3BE,uBAEPA,uBAAuBD,EAActB,GAEvB,UAATA,EACLlC,EAAQC,MAAMuD,GAEA,SAATtB,EACLlC,EAAQ0D,KAAKF,GAGbxD,EAAQ2D,IAAIH,EAEpB,CACA,SAASI,EAAQxF,GACb,MAAO,OAAQA,GAAK,YAAaA,CACrC,CAMA,SAASyF,IACL,KAAM,cAAe9C,WAEjB,OADAuC,EAAa,iDAAkD,UACxD,CAEf,CACA,SAASQ,EAAqB7D,GAC1B,SAAIA,aAAiBiD,OACjBjD,EAAMsD,QAAQQ,cAAcC,SAAS,8BACrCV,EAAa,kGAAmG,SACzG,EAGf,CAwCA,IAAIW,EAyCJ,SAASC,EAAgBlG,EAAOmG,GAC5B,IAAK,MAAMC,KAAOD,EAAO,CACrB,MAAME,EAAarG,EAAMmG,MAAMG,MAAMF,GAEjCC,EACAhG,OAAO+E,OAAOiB,EAAYF,EAAMC,IAIhCpG,EAAMmG,MAAMG,MAAMF,GAAOD,EAAMC,EAEvC,CACJ,CAEA,SAASG,EAAcC,GACnB,MAAO,CACHC,QAAS,CACLD,WAGZ,CACA,MAAME,EAAmB,kBACnBC,EAAgB,QACtB,SAASC,EAA4BC,GACjC,OAAOjB,EAAQiB,GACT,CACEC,GAAIH,EACJI,MAAOL,GAET,CACEI,GAAID,EAAMG,IACVD,MAAOF,EAAMG,IAEzB,CAmDA,SAASC,EAAgBC,GACrB,OAAKA,EAEDC,MAAMC,QAAQF,GAEPA,EAAOG,QAAO,CAACC,EAAMC,KACxBD,EAAKE,KAAKC,KAAKF,EAAMnB,KACrBkB,EAAKI,WAAWD,KAAKF,EAAMrD,MAC3BoD,EAAKK,SAASJ,EAAMnB,KAAOmB,EAAMI,SACjCL,EAAKM,SAASL,EAAMnB,KAAOmB,EAAMK,SAC1BN,IACR,CACCK,SAAU,CAAC,EACXH,KAAM,GACNE,WAAY,GACZE,SAAU,CAAC,IAIR,CACHC,UAAWtB,EAAcW,EAAOhD,MAChCkC,IAAKG,EAAcW,EAAOd,KAC1BuB,SAAUT,EAAOS,SACjBC,SAAUV,EAAOU,UArBd,CAAC,CAwBhB,CACA,SAASE,EAAmB5D,GACxB,OAAQA,GACJ,KAAKxD,EAAaqH,OACd,MAAO,WACX,KAAKrH,EAAasH,cAElB,KAAKtH,EAAauH,YACd,MAAO,SACX,QACI,MAAO,UAEnB,CAGA,IAAIC,GAAmB,EACvB,MAAMC,EAAsB,GACtBC,EAAqB,kBACrBC,EAAe,SACbjD,OAAQkD,GAAajI,OAOvBkI,EAAgBzB,GAAO,MAAQA,EAQrC,SAAS0B,EAAsBC,EAAKzI,IAChC,QAAoB,CAChB8G,GAAI,gBACJC,MAAO,WACP2B,KAAM,mCACNC,YAAa,QACbC,SAAU,0BACVT,sBACAM,QACAI,IACuB,mBAAZA,EAAIC,KACXxD,EAAa,2MAEjBuD,EAAIE,iBAAiB,CACjBjC,GAAIsB,EACJrB,MAAO,WACPiC,MAAO,WAEXH,EAAII,aAAa,CACbnC,GAAIuB,EACJtB,MAAO,WACPmC,KAAM,UACNC,sBAAuB,gBACvBC,QAAS,CACL,CACIF,KAAM,eACNG,OAAQ,MA1P5BC,eAAqCtJ,GACjC,IAAI6F,IAEJ,UACU9C,UAAUwG,UAAUC,UAAUC,KAAKC,UAAU1J,EAAMmG,MAAMG,QAC/DhB,EAAa,oCACjB,CACA,MAAOrD,GACH,GAAI6D,EAAqB7D,GACrB,OACJqD,EAAa,qEAAsE,SACnFtD,EAAQC,MAAMA,EAClB,CACJ,CA8OwB0H,CAAsB3J,EAAM,EAEhC4J,QAAS,gCAEb,CACIV,KAAM,gBACNG,OAAQC,gBAnP5BA,eAAsCtJ,GAClC,IAAI6F,IAEJ,IACIK,EAAgBlG,EAAOyJ,KAAKI,YAAY9G,UAAUwG,UAAUO,aAC5DxE,EAAa,sCACjB,CACA,MAAOrD,GACH,GAAI6D,EAAqB7D,GACrB,OACJqD,EAAa,sFAAuF,SACpGtD,EAAQC,MAAMA,EAClB,CACJ,CAuO8B8H,CAAuB/J,GAC7B6I,EAAImB,kBAAkB3B,GACtBQ,EAAIoB,mBAAmB5B,EAAa,EAExCuB,QAAS,wDAEb,CACIV,KAAM,OACNG,OAAQ,MA9O5BC,eAAqCtJ,GACjC,IACI6B,EAAO,IAAIsC,KAAK,CAACsF,KAAKC,UAAU1J,EAAMmG,MAAMG,QAAS,CACjDpC,KAAM,6BACN,mBACR,CACA,MAAOjC,GACHqD,EAAa,0EAA2E,SACxFtD,EAAQC,MAAMA,EAClB,CACJ,CAqOwBiI,CAAsBlK,EAAM,EAEhC4J,QAAS,iCAEb,CACIV,KAAM,cACNG,OAAQC,gBAhN5BA,eAAyCtJ,GACrC,IACI,MAAM0B,GA1BLuE,IACDA,EAAYtD,SAASW,cAAc,SACnC2C,EAAU/B,KAAO,OACjB+B,EAAUkE,OAAS,SAEvB,WACI,OAAO,IAAIC,SAAQ,CAACC,EAASC,KACzBrE,EAAUsE,SAAWjB,UACjB,MAAMkB,EAAQvE,EAAUuE,MACxB,IAAKA,EACD,OAAOH,EAAQ,MACnB,MAAMI,EAAOD,EAAME,KAAK,GACxB,OAEOL,EAFFI,EAEU,CAAEE,WAAYF,EAAKE,OAAQF,QADvB,KAC8B,EAGrDxE,EAAU2E,SAAW,IAAMP,EAAQ,MACnCpE,EAAUlE,QAAUuI,EACpBrE,EAAU3D,OAAO,GAEzB,GAMU2C,QAAevD,IACrB,IAAKuD,EACD,OACJ,MAAM,KAAE0F,EAAI,KAAEF,GAASxF,EACvBiB,EAAgBlG,EAAOyJ,KAAKI,MAAMc,IAClCrF,EAAa,+BAA+BmF,EAAKnJ,SACrD,CACA,MAAOW,GACHqD,EAAa,4EAA6E,SAC1FtD,EAAQC,MAAMA,EAClB,CACJ,CAmM8B4I,CAA0B7K,GAChC6I,EAAImB,kBAAkB3B,GACtBQ,EAAIoB,mBAAmB5B,EAAa,EAExCuB,QAAS,sCAGjBkB,YAAa,CACT,CACI5B,KAAM,UACNU,QAAS,kCACTP,OAAS0B,IACL,MAAMlE,EAAQ7G,EAAMgL,GAAGC,IAAIF,GACtBlE,EAG4B,mBAAjBA,EAAMqE,OAClB5F,EAAa,iBAAiByF,kEAAwE,SAGtGlE,EAAMqE,SACN5F,EAAa,UAAUyF,cAPvBzF,EAAa,iBAAiByF,oCAA0C,OAQ5E,MAKhBlC,EAAIsC,GAAGC,kBAAiB,CAACC,EAASC,KAC9B,MAAMC,EAASF,EAAQG,mBACnBH,EAAQG,kBAAkBD,MAC9B,GAAIA,GAASA,EAAME,SAAU,CACzB,MAAMC,EAAcL,EAAQG,kBAAkBD,MAAME,SACpDpL,OAAOsL,OAAOD,GAAaE,SAAS/E,IAChCwE,EAAQQ,aAAa1F,MAAMsB,KAAK,CAC5BvD,KAAMqE,EAAa1B,EAAMG,KACzBZ,IAAK,QACL0F,UAAU,EACVxF,MAAOO,EAAMkF,cACP,CACEtF,QAAS,CACLH,OAAO,QAAMO,EAAMmF,QACnB5C,QAAS,CACL,CACIF,KAAM,UACNU,QAAS,gCACTP,OAAQ,IAAMxC,EAAMqE,aAMhC7K,OAAOmH,KAAKX,EAAMmF,QAAQ3E,QAAO,CAAClB,EAAOC,KACrCD,EAAMC,GAAOS,EAAMmF,OAAO5F,GACnBD,IACR,CAAC,KAEZU,EAAMoF,UAAYpF,EAAMoF,SAASC,QACjCb,EAAQQ,aAAa1F,MAAMsB,KAAK,CAC5BvD,KAAMqE,EAAa1B,EAAMG,KACzBZ,IAAK,UACL0F,UAAU,EACVxF,MAAOO,EAAMoF,SAAS5E,QAAO,CAAC8E,EAAS/F,KACnC,IACI+F,EAAQ/F,GAAOS,EAAMT,EACzB,CACA,MAAOnE,GAEHkK,EAAQ/F,GAAOnE,CACnB,CACA,OAAOkK,CAAO,GACf,CAAC,IAEZ,GAER,KAEJtD,EAAIsC,GAAGiB,kBAAkBf,IACrB,GAAIA,EAAQ5C,MAAQA,GAAO4C,EAAQgB,cAAgBhE,EAAc,CAC7D,IAAIiE,EAAS,CAACtM,GACdsM,EAASA,EAAOC,OAAOpF,MAAMqF,KAAKxM,EAAMgL,GAAGW,WAC3CN,EAAQoB,WAAapB,EAAQqB,OACvBJ,EAAOI,QAAQ7F,GAAU,QAASA,EAC9BA,EAAMG,IACHjB,cACAC,SAASqF,EAAQqB,OAAO3G,eAC3BW,EAAiBX,cAAcC,SAASqF,EAAQqB,OAAO3G,iBAC3DuG,GAAQK,IAAI/F,EACtB,KAEJiC,EAAIsC,GAAGyB,mBAAmBvB,IACtB,GAAIA,EAAQ5C,MAAQA,GAAO4C,EAAQgB,cAAgBhE,EAAc,CAC7D,MAAMwE,EAAiBxB,EAAQN,SAAWpE,EACpC3G,EACAA,EAAMgL,GAAGC,IAAII,EAAQN,QAC3B,IAAK8B,EAGD,OAEAA,IACAxB,EAAQlF,MApQ5B,SAAsCU,GAClC,GAAIjB,EAAQiB,GAAQ,CAChB,MAAMiG,EAAa3F,MAAMqF,KAAK3F,EAAMmE,GAAGxD,QACjCuF,EAAWlG,EAAMmE,GACjB7E,EAAQ,CACVA,MAAO2G,EAAWH,KAAKK,IAAY,CAC/BlB,UAAU,EACV1F,IAAK4G,EACL1G,MAAOO,EAAMV,MAAMG,MAAM0G,OAE7Bb,QAASW,EACJJ,QAAQ5F,GAAOiG,EAAS9B,IAAInE,GAAImF,WAChCU,KAAK7F,IACN,MAAMD,EAAQkG,EAAS9B,IAAInE,GAC3B,MAAO,CACHgF,UAAU,EACV1F,IAAKU,EACLR,MAAOO,EAAMoF,SAAS5E,QAAO,CAAC8E,EAAS/F,KACnC+F,EAAQ/F,GAAOS,EAAMT,GACd+F,IACR,CAAC,GACP,KAGT,OAAOhG,CACX,CACA,MAAMA,EAAQ,CACVA,MAAO9F,OAAOmH,KAAKX,EAAMmF,QAAQW,KAAKvG,IAAQ,CAC1C0F,UAAU,EACV1F,MACAE,MAAOO,EAAMmF,OAAO5F,QAkB5B,OAdIS,EAAMoF,UAAYpF,EAAMoF,SAASC,SACjC/F,EAAMgG,QAAUtF,EAAMoF,SAASU,KAAKM,IAAe,CAC/CnB,UAAU,EACV1F,IAAK6G,EACL3G,MAAOO,EAAMoG,QAGjBpG,EAAMqG,kBAAkBC,OACxBhH,EAAMiH,iBAAmBjG,MAAMqF,KAAK3F,EAAMqG,mBAAmBP,KAAKvG,IAAQ,CACtE0F,UAAU,EACV1F,MACAE,MAAOO,EAAMT,QAGdD,CACX,CAmNoCkH,CAA6BR,GAErD,KAEJhE,EAAIsC,GAAGmC,oBAAmB,CAACjC,EAASC,KAChC,GAAID,EAAQ5C,MAAQA,GAAO4C,EAAQgB,cAAgBhE,EAAc,CAC7D,MAAMwE,EAAiBxB,EAAQN,SAAWpE,EACpC3G,EACAA,EAAMgL,GAAGC,IAAII,EAAQN,QAC3B,IAAK8B,EACD,OAAOvH,EAAa,UAAU+F,EAAQN,oBAAqB,SAE/D,MAAM,KAAEwC,GAASlC,EACZzF,EAAQiH,GAUTU,EAAKC,QAAQ,SARO,IAAhBD,EAAKrB,QACJW,EAAeK,kBAAkBO,IAAIF,EAAK,OAC3CA,EAAK,KAAMV,EAAeb,SAC1BuB,EAAKC,QAAQ,UAOrBtF,GAAmB,EACnBmD,EAAQqC,IAAIb,EAAgBU,EAAMlC,EAAQlF,MAAMG,OAChD4B,GAAmB,CACvB,KAEJW,EAAIsC,GAAGwC,oBAAoBtC,IACvB,GAAIA,EAAQnH,KAAK0J,WAAW,MAAO,CAC/B,MAAMZ,EAAU3B,EAAQnH,KAAKiB,QAAQ,SAAU,IACzC0B,EAAQ7G,EAAMgL,GAAGC,IAAI+B,GAC3B,IAAKnG,EACD,OAAOvB,EAAa,UAAU0H,eAAsB,SAExD,MAAM,KAAEO,GAASlC,EACjB,GAAgB,UAAZkC,EAAK,GACL,OAAOjI,EAAa,2BAA2B0H,QAAcO,kCAIjEA,EAAK,GAAK,SACVrF,GAAmB,EACnBmD,EAAQqC,IAAI7G,EAAO0G,EAAMlC,EAAQlF,MAAMG,OACvC4B,GAAmB,CACvB,IACF,GAEV,CAgLA,IACI2F,EADAC,EAAkB,EAUtB,SAASC,EAAuBlH,EAAOmH,EAAaC,GAEhD,MAAM7E,EAAU4E,EAAY3G,QAAO,CAAC6G,EAAcC,KAE9CD,EAAaC,IAAc,QAAMtH,GAAOsH,GACjCD,IACR,CAAC,GACJ,IAAK,MAAMC,KAAc/E,EACrBvC,EAAMsH,GAAc,WAEhB,MAAMC,EAAYN,EACZO,EAAeJ,EACf,IAAIK,MAAMzH,EAAO,CACfoE,IAAG,IAAIsD,KACHV,EAAeO,EACRI,QAAQvD,OAAOsD,IAE1Bb,IAAG,IAAIa,KACHV,EAAeO,EACRI,QAAQd,OAAOa,MAG5B1H,EAENgH,EAAeO,EACf,MAAMK,EAAWrF,EAAQ+E,GAAYO,MAAML,EAAcM,WAGzD,OADAd,OAAee,EACRH,CACX,CAER,CAIA,SAASI,GAAe,IAAEpG,EAAG,MAAE5B,EAAK,QAAEiI,IAElC,GAAIjI,EAAMG,IAAI4G,WAAW,UACrB,OAGJ/G,EAAMkF,gBAAkB+C,EAAQ3I,MAChC4H,EAAuBlH,EAAOxG,OAAOmH,KAAKsH,EAAQ1F,SAAUvC,EAAMkF,eAElE,MAAMgD,EAAoBlI,EAAMmI,YAChC,QAAMnI,GAAOmI,WAAa,SAAUC,GAChCF,EAAkBL,MAAMQ,KAAMP,WAC9BZ,EAAuBlH,EAAOxG,OAAOmH,KAAKyH,EAASE,YAAY/F,WAAYvC,EAAMkF,cACrF,EAzOJ,SAA4BtD,EAAK5B,GACxBsB,EAAoBnC,SAASuC,EAAa1B,EAAMG,OACjDmB,EAAoBV,KAAKc,EAAa1B,EAAMG,OAEhD,QAAoB,CAChBF,GAAI,gBACJC,MAAO,WACP2B,KAAM,mCACNC,YAAa,QACbC,SAAU,0BACVT,sBACAM,MACA2G,SAAU,CACNC,gBAAiB,CACbtI,MAAO,kCACP7C,KAAM,UACNoL,cAAc,MAQtBzG,IAEA,MAAMC,EAAyB,mBAAZD,EAAIC,IAAqBD,EAAIC,IAAIyG,KAAK1G,GAAO2G,KAAK1G,IACrEjC,EAAM4I,WAAU,EAAGC,QAAOC,UAASrO,OAAMiN,WACrC,MAAMqB,EAAU9B,IAChBjF,EAAIgH,iBAAiB,CACjBC,QAAS1H,EACTb,MAAO,CACHwI,KAAMjH,IACNtE,MAAO,MAAQlD,EACf0O,SAAU,QACV1I,KAAM,CACFT,MAAON,EAAcM,EAAMG,KAC3BqC,OAAQ9C,EAAcjF,GACtBiN,QAEJqB,aAGRF,GAAOzK,IACH4I,OAAee,EACf/F,EAAIgH,iBAAiB,CACjBC,QAAS1H,EACTb,MAAO,CACHwI,KAAMjH,IACNtE,MAAO,MAAQlD,EACf0O,SAAU,MACV1I,KAAM,CACFT,MAAON,EAAcM,EAAMG,KAC3BqC,OAAQ9C,EAAcjF,GACtBiN,OACAtJ,UAEJ2K,YAEN,IAEND,GAAS1N,IACL4L,OAAee,EACf/F,EAAIgH,iBAAiB,CACjBC,QAAS1H,EACTb,MAAO,CACHwI,KAAMjH,IACNmH,QAAS,QACTzL,MAAO,MAAQlD,EACf0O,SAAU,MACV1I,KAAM,CACFT,MAAON,EAAcM,EAAMG,KAC3BqC,OAAQ9C,EAAcjF,GACtBiN,OACAtM,SAEJ2N,YAEN,GACJ,IACH,GACH/I,EAAMqG,kBAAkBtB,SAAStK,KAC7B,SAAM,KAAM,QAAMuF,EAAMvF,MAAQ,CAACsG,EAAUD,KACvCkB,EAAIqH,wBACJrH,EAAIoB,mBAAmB5B,GACnBH,GACAW,EAAIgH,iBAAiB,CACjBC,QAAS1H,EACTb,MAAO,CACHwI,KAAMjH,IACNtE,MAAO,SACPwL,SAAU1O,EACVgG,KAAM,CACFM,WACAD,YAEJiI,QAAS/B,IAGrB,GACD,CAAEsC,MAAM,GAAO,IAEtBtJ,EAAMuJ,YAAW,EAAGlJ,SAAQhD,QAAQiC,KAGhC,GAFA0C,EAAIqH,wBACJrH,EAAIoB,mBAAmB5B,IAClBH,EACD,OAEJ,MAAMmI,EAAY,CACdN,KAAMjH,IACNtE,MAAOsD,EAAmB5D,GAC1BoD,KAAMgB,EAAS,CAAEzB,MAAON,EAAcM,EAAMG,MAAQC,EAAgBC,IACpE0I,QAAS/B,GAET3J,IAASxD,EAAasH,cACtBqI,EAAUL,SAAW,KAEhB9L,IAASxD,EAAauH,YAC3BoI,EAAUL,SAAW,KAEhB9I,IAAWC,MAAMC,QAAQF,KAC9BmJ,EAAUL,SAAW9I,EAAOhD,MAE5BgD,IACAmJ,EAAU/I,KAAK,eAAiB,CAC5Bb,QAAS,CACLD,QAAS,gBACTtC,KAAM,SACN0F,QAAS,sBACTtD,MAAOY,KAInB2B,EAAIgH,iBAAiB,CACjBC,QAAS1H,EACTb,MAAO8I,GACT,GACH,CAAEC,UAAU,EAAMC,MAAO,SAC5B,MAAMC,EAAY3J,EAAMmI,WACxBnI,EAAMmI,YAAa,SAASC,IACxBuB,EAAUvB,GACVpG,EAAIgH,iBAAiB,CACjBC,QAAS1H,EACTb,MAAO,CACHwI,KAAMjH,IACNtE,MAAO,MAAQqC,EAAMG,IACrBgJ,SAAU,aACV1I,KAAM,CACFT,MAAON,EAAcM,EAAMG,KAC3ByJ,KAAMlK,EAAc,kBAKhCsC,EAAIqH,wBACJrH,EAAImB,kBAAkB3B,GACtBQ,EAAIoB,mBAAmB5B,EAAa,IAExC,MAAM,SAAEqI,GAAa7J,EACrBA,EAAM6J,SAAW,KACbA,IACA7H,EAAIqH,wBACJrH,EAAImB,kBAAkB3B,GACtBQ,EAAIoB,mBAAmB5B,GACvBQ,EAAI8H,cAActB,iBACd/J,EAAa,aAAauB,EAAMG,gBAAgB,EAGxD6B,EAAIqH,wBACJrH,EAAImB,kBAAkB3B,GACtBQ,EAAIoB,mBAAmB5B,GACvBQ,EAAI8H,cAActB,iBACd/J,EAAa,IAAIuB,EAAMG,0BAA0B,GAE7D,CA4DI4J,CAAmBnI,EAEnB5B,EACJ,CAuJA,MAAMgK,EAAO,OACb,SAASC,EAAgBC,EAAeC,EAAUV,EAAUW,EAAYJ,GACpEE,EAActJ,KAAKuJ,GACnB,MAAME,EAAqB,KACvB,MAAMC,EAAMJ,EAAcK,QAAQJ,GAC9BG,GAAO,IACPJ,EAAcM,OAAOF,EAAK,GAC1BF,IACJ,EAKJ,OAHKX,IAAY,YACb,QAAeY,GAEZA,CACX,CACA,SAASI,EAAqBP,KAAkBxC,GAC5CwC,EAAcQ,QAAQ3F,SAASoF,IAC3BA,KAAYzC,EAAK,GAEzB,CAEA,MAAMiD,EAA0BC,GAAOA,IACvC,SAASC,EAAqB/N,EAAQgO,GAE9BhO,aAAkBiO,KAAOD,aAAwBC,KACjDD,EAAa/F,SAAQ,CAACtF,EAAOF,IAAQzC,EAAO+J,IAAItH,EAAKE,KAGrD3C,aAAkBkO,KAAOF,aAAwBE,KACjDF,EAAa/F,QAAQjI,EAAOmO,IAAKnO,GAGrC,IAAK,MAAMyC,KAAOuL,EAAc,CAC5B,IAAKA,EAAaI,eAAe3L,GAC7B,SACJ,MAAM4L,EAAWL,EAAavL,GACxB6L,EAActO,EAAOyC,GACvBjG,EAAc8R,IACd9R,EAAc6R,IACdrO,EAAOoO,eAAe3L,MACrB,QAAM4L,MACN,QAAWA,GAIZrO,EAAOyC,GAAOsL,EAAqBO,EAAaD,GAIhDrO,EAAOyC,GAAO4L,CAEtB,CACA,OAAOrO,CACX,CACA,MAAMuO,EAE2BhS,SAC3BiS,EAA+B,IAAIC,SAyBjChN,OAAM,IAAK/E,OA8CnB,SAASgS,GAAiBrL,EAAKsL,EAAOxD,EAAU,CAAC,EAAG9O,EAAOuS,EAAKC,GAC5D,IAAIC,EACJ,MAAMC,EAAmB,GAAO,CAAEtJ,QAAS,CAAC,GAAK0F,GAM3C6D,EAAoB,CACtBxC,MAAM,GAwBV,IAAIyC,EACAC,EAGAC,EAFA/B,EAAgB,GAChBgC,EAAsB,GAE1B,MAAMC,EAAehT,EAAMmG,MAAMG,MAAMU,GAGlCwL,GAAmBQ,IAEhB,MACA,QAAIhT,EAAMmG,MAAMG,MAAOU,EAAK,CAAC,GAG7BhH,EAAMmG,MAAMG,MAAMU,GAAO,CAAC,GAGlC,MAAMiM,GAAW,QAAI,CAAC,GAGtB,IAAIC,EACJ,SAASC,EAAOC,GACZ,IAAIC,EACJT,EAAcC,GAAkB,EAMK,mBAA1BO,GACPA,EAAsBpT,EAAMmG,MAAMG,MAAMU,IACxCqM,EAAuB,CACnBnP,KAAMxD,EAAasH,cACnBgF,QAAShG,EACTE,OAAQ4L,KAIZpB,EAAqB1R,EAAMmG,MAAMG,MAAMU,GAAMoM,GAC7CC,EAAuB,CACnBnP,KAAMxD,EAAauH,YACnBoD,QAAS+H,EACTpG,QAAShG,EACTE,OAAQ4L,IAGhB,MAAMQ,EAAgBJ,EAAiBhT,UACvC,UAAWqT,MAAK,KACRL,IAAmBI,IACnBV,GAAc,EAClB,IAEJC,GAAkB,EAElBvB,EAAqBP,EAAesC,EAAsBrT,EAAMmG,MAAMG,MAAMU,GAChF,CACA,MAAMkE,EAASsH,EACT,WACE,MAAM,MAAErM,GAAU2I,EACZ0E,EAAWrN,EAAQA,IAAU,CAAC,EAEpC+I,KAAKiE,QAAQnH,IACT,GAAOA,EAAQwH,EAAS,GAEhC,EAMU3C,EAcd,SAAS4C,EAAWnS,EAAM+H,GACtB,OAAO,WACHtJ,EAAeC,GACf,MAAMuO,EAAOpH,MAAMqF,KAAKmC,WAClB+E,EAAoB,GACpBC,EAAsB,GAe5B,IAAIC,EAPJtC,EAAqByB,EAAqB,CACtCxE,OACAjN,OACAuF,QACA6I,MAXJ,SAAesB,GACX0C,EAAkBjM,KAAKuJ,EAC3B,EAUIrB,QATJ,SAAiBqB,GACb2C,EAAoBlM,KAAKuJ,EAC7B,IAUA,IACI4C,EAAMvK,EAAOqF,MAAMQ,MAAQA,KAAKlI,MAAQA,EAAMkI,KAAOrI,EAAO0H,EAEhE,CACA,MAAOtM,GAEH,MADAqP,EAAqBqC,EAAqB1R,GACpCA,CACV,CACA,OAAI2R,aAAexJ,QACRwJ,EACFL,MAAMjN,IACPgL,EAAqBoC,EAAmBpN,GACjCA,KAENuN,OAAO5R,IACRqP,EAAqBqC,EAAqB1R,GACnCmI,QAAQE,OAAOrI,OAI9BqP,EAAqBoC,EAAmBE,GACjCA,EACX,CACJ,CACA,MAAMzE,GAA4B,QAAQ,CACtC/F,QAAS,CAAC,EACV+C,QAAS,CAAC,EACVhG,MAAO,GACP8M,aAEEa,EAAe,CACjBC,GAAI/T,EAEJgH,MACAyI,UAAWqB,EAAgBvB,KAAK,KAAMwD,GACtCI,SACAjI,SACA,UAAAkF,CAAWY,EAAUlC,EAAU,CAAC,GAC5B,MAAMoC,EAAqBJ,EAAgBC,EAAeC,EAAUlC,EAAQwB,UAAU,IAAM0D,MACtFA,EAAcvB,EAAMwB,KAAI,KAAM,SAAM,IAAMjU,EAAMmG,MAAMG,MAAMU,KAAOb,KAC/C,SAAlB2I,EAAQyB,MAAmBsC,EAAkBD,IAC7C5B,EAAS,CACLhE,QAAShG,EACT9C,KAAMxD,EAAaqH,OACnBb,OAAQ4L,GACT3M,EACP,GACD,GAAO,CAAC,EAAGwM,EAAmB7D,MACjC,OAAOoC,CACX,EACAR,SApFJ,WACI+B,EAAMyB,OACNnD,EAAgB,GAChBgC,EAAsB,GACtB/S,EAAMgL,GAAGmJ,OAAOnN,EACpB,GAkFI,OAEA8M,EAAaM,IAAK,GAEtB,MAAMvN,GAAQ,QAAoDhG,EAC5D,GAAO,CACLsO,cACAjC,mBAAmB,QAAQ,IAAI2E,MAChCiC,GAIDA,GAGN9T,EAAMgL,GAAG0C,IAAI1G,EAAKH,GAClB,MAEMwN,GAFkBrU,EAAMsU,IAAMtU,EAAMsU,GAAGC,gBAAmB/C,IAE9B,IAAMxR,EAAMwU,GAAGP,KAAI,KAAOxB,GAAQ,WAAewB,IAAI3B,OAEvF,IAAK,MAAMlM,KAAOiO,EAAY,CAC1B,MAAMI,EAAOJ,EAAWjO,GACxB,IAAK,QAAMqO,KAlQCrU,EAkQoBqU,IAjQ1B,QAAMrU,KAAMA,EAAEsU,UAiQsB,QAAWD,GAOvCjC,KAEFQ,IAjRG2B,EAiR2BF,EAhRvC,KAC2BtC,EAAe1E,IAAIkH,GAC9CxU,EAAcwU,IAASA,EAAI5C,eAAeG,OA+Q7B,QAAMuC,GACNA,EAAKnO,MAAQ0M,EAAa5M,GAK1BsL,EAAqB+C,EAAMzB,EAAa5M,KAK5C,MACA,QAAIpG,EAAMmG,MAAMG,MAAMU,GAAMZ,EAAKqO,GAGjCzU,EAAMmG,MAAMG,MAAMU,GAAKZ,GAAOqO,QASrC,GAAoB,mBAATA,EAAqB,CAEjC,MAAMG,EAAsEnB,EAAWrN,EAAKqO,GAIxF,MACA,QAAIJ,EAAYjO,EAAKwO,GAIrBP,EAAWjO,GAAOwO,EAQtBlC,EAAiBtJ,QAAQhD,GAAOqO,CACpC,CAgBJ,CA9UJ,IAAuBE,EAMHvU,EA4ahB,GAjGI,KACAC,OAAOmH,KAAK6M,GAAYzI,SAASxF,KAC7B,QAAIS,EAAOT,EAAKiO,EAAWjO,GAAK,KAIpC,GAAOS,EAAOwN,GAGd,IAAO,QAAMxN,GAAQwN,IAKzBhU,OAAOwU,eAAehO,EAAO,SAAU,CACnCoE,IAAK,IAAyEjL,EAAMmG,MAAMG,MAAMU,GAChG0G,IAAMvH,IAKFgN,GAAQnH,IACJ,GAAOA,EAAQ7F,EAAM,GACvB,IA0ENtF,EAAc,CACd,MAAMiU,EAAgB,CAClBC,UAAU,EACVC,cAAc,EAEdC,YAAY,GAEhB,CAAC,KAAM,cAAe,WAAY,qBAAqBrJ,SAASsJ,IAC5D7U,OAAOwU,eAAehO,EAAOqO,EAAG,GAAO,CAAE5O,MAAOO,EAAMqO,IAAMJ,GAAe,GAEnF,CA6CA,OA3CI,OAEAjO,EAAMuN,IAAK,GAGfpU,EAAM+T,GAAGnI,SAASuJ,IAEd,GAAItU,EAAc,CACd,MAAMuU,EAAa3C,EAAMwB,KAAI,IAAMkB,EAAS,CACxCtO,QACA4B,IAAKzI,EAAMsU,GACXtU,QACA8O,QAAS4D,MAEbrS,OAAOmH,KAAK4N,GAAc,CAAC,GAAGxJ,SAASxF,GAAQS,EAAMqG,kBAAkB4E,IAAI1L,KAC3E,GAAOS,EAAOuO,EAClB,MAEI,GAAOvO,EAAO4L,EAAMwB,KAAI,IAAMkB,EAAS,CACnCtO,QACA4B,IAAKzI,EAAMsU,GACXtU,QACA8O,QAAS4D,MAEjB,IAYAM,GACAR,GACA1D,EAAQuG,SACRvG,EAAQuG,QAAQxO,EAAMmF,OAAQgH,GAElCJ,GAAc,EACdC,GAAkB,EACXhM,CACX,+DC3nDA,MCpBgH,GDoBhH,CACEvF,KAAM,oBACNgU,MAAO,CAAC,SACRC,MAAO,CACL/Q,MAAO,CACLN,KAAME,QAERoR,UAAW,CACTtR,KAAME,OACNqR,QAAS,gBAEXtI,KAAM,CACJjJ,KAAMwR,OACND,QAAS,sBEff,UAXgB,QACd,ICRW,WAAkB,IAAIE,EAAIzG,KAAK0G,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAOD,EAAIG,GAAG,CAACC,YAAY,2CAA2CC,MAAM,CAAC,eAAcL,EAAInR,OAAQ,KAAY,aAAamR,EAAInR,MAAM,KAAO,OAAO2G,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAIO,MAAM,QAASD,EAAO,IAAI,OAAON,EAAIQ,QAAO,GAAO,CAACP,EAAG,MAAM,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAOL,EAAIH,UAAU,MAAQG,EAAIxI,KAAK,OAASwI,EAAIxI,KAAK,QAAU,cAAc,CAACyI,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,yKAAyK,CAAEL,EAAS,MAAEC,EAAG,QAAQ,CAACD,EAAIS,GAAGT,EAAI3K,GAAG2K,EAAInR,UAAUmR,EAAInB,UAC5rB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QElBhC,4BCwCA,MCxCgM,GDwChM,CACAlT,KAAA,uBACA+U,WAAA,CACAC,SAAA,KACAC,QAAA,KACAC,kBAAA,GACAC,iBAAAA,GAAAA,GAEAlB,MAAA,CACAmB,OAAA,CACAxS,KAAAyS,QACAC,UAAA,IAGAtP,KAAAA,KACA,CACAuP,WAAA,CAAAC,UAAA,KAAAC,MAAA,QAGAC,SAAA,CACAC,YAAA,CACAhM,GAAAA,GACA,YAAAyL,MACA,EACAhJ,GAAAA,CAAApH,GACA,KAAA4P,MAAA,iBAAA5P,EACA,IAGA4Q,QAAA,CACAC,UAAAA,GACA,KAAAF,aAAA,CACA,EACAG,gBAAAA,GACA,KAAAlB,MAAA,6BAAAW,YACA,KAAAM,YACA,8JEjEIrI,GAAU,CAAC,EAEfA,GAAQuI,kBAAoB,KAC5BvI,GAAQwI,cAAgB,KAElBxI,GAAQyI,OAAS,UAAc,KAAM,QAE3CzI,GAAQ0I,OAAS,KACjB1I,GAAQ2I,mBAAqB,KAEhB,KAAI,KAAS3I,IAKJ,MAAW,KAAQ4I,QAAS,KAAQA,OCP1D,UAXgB,QACd,IJTW,WAAkB,IAAI/B,EAAIzG,KAAK0G,EAAGD,EAAIE,MAAMD,GAAG,OAAQD,EAAIsB,YAAarB,EAAG,UAAU,CAACI,MAAM,CAAC,GAAK,iBAAiB,KAAOL,EAAIgC,EAAE,OAAQ,qBAAqB,KAAOhC,EAAIsB,YAAY,KAAO,QAAQ,mBAAmB,EAAE,MAAQtB,EAAIgC,EAAE,OAAQ,sBAAsBxM,GAAG,CAAC,cAAc,SAAS8K,GAAQN,EAAIsB,YAAYhB,CAAM,EAAE,MAAQN,EAAIwB,aAAa,CAACvB,EAAG,MAAM,CAACG,YAAY,oCAAoC,CAACH,EAAG,KAAK,CAACD,EAAIS,GAAGT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,yBAAyBhC,EAAIS,GAAG,KAAKR,EAAG,MAAM,CAACG,YAAY,6CAA6C,CAACH,EAAG,mBAAmB,CAACI,MAAM,CAAC,GAAK,wCAAwC,MAAQL,EAAIgC,EAAE,OAAQ,mBAAmB,KAAO,QAAQC,MAAM,CAACtR,MAAOqP,EAAIkB,WAAWC,UAAW9F,SAAS,SAAU6G,GAAMlC,EAAImC,KAAKnC,EAAIkB,WAAY,YAAagB,EAAI,EAAEE,WAAW,0BAA0BpC,EAAIS,GAAG,KAAKR,EAAG,mBAAmB,CAACI,MAAM,CAAC,GAAK,sCAAsC,MAAQL,EAAIgC,EAAE,OAAQ,iBAAiB,KAAO,QAAQC,MAAM,CAACtR,MAAOqP,EAAIkB,WAAWE,MAAO/F,SAAS,SAAU6G,GAAMlC,EAAImC,KAAKnC,EAAIkB,WAAY,QAASgB,EAAI,EAAEE,WAAW,uBAAuB,GAAGpC,EAAIS,GAAG,KAAKR,EAAG,MAAM,CAACG,YAAY,4CAA4C,CAACH,EAAG,WAAW,CAACzK,GAAG,CAAC,MAAQwK,EAAIyB,kBAAkBY,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEzK,OAAM,IAAO,MAAK,EAAM,aAAa,CAACoK,EAAIS,GAAG,aAAaT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,yBAAyB,iBAAiB,OAAOhC,EAAInB,IACj8C,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,QCnBiF,GCoBjH,CACElT,KAAM,qBACNgU,MAAO,CAAC,SACRC,MAAO,CACL/Q,MAAO,CACLN,KAAME,QAERoR,UAAW,CACTtR,KAAME,OACNqR,QAAS,gBAEXtI,KAAM,CACJjJ,KAAMwR,OACND,QAAS,MCff,IAXgB,QACd,ICRW,WAAkB,IAAIE,EAAIzG,KAAK0G,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAOD,EAAIG,GAAG,CAACC,YAAY,4CAA4CC,MAAM,CAAC,eAAcL,EAAInR,OAAQ,KAAY,aAAamR,EAAInR,MAAM,KAAO,OAAO2G,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAIO,MAAM,QAASD,EAAO,IAAI,OAAON,EAAIQ,QAAO,GAAO,CAACP,EAAG,MAAM,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAOL,EAAIH,UAAU,MAAQG,EAAIxI,KAAK,OAASwI,EAAIxI,KAAK,QAAU,cAAc,CAACyI,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,mNAAmN,CAAEL,EAAS,MAAEC,EAAG,QAAQ,CAACD,EAAIS,GAAGT,EAAI3K,GAAG2K,EAAInR,UAAUmR,EAAInB,UACvuB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QElByE,GCoBzG,CACElT,KAAM,aACNgU,MAAO,CAAC,SACRC,MAAO,CACL/Q,MAAO,CACLN,KAAME,QAERoR,UAAW,CACTtR,KAAME,OACNqR,QAAS,gBAEXtI,KAAM,CACJjJ,KAAMwR,OACND,QAAS,MCff,IAXgB,QACd,ICRW,WAAkB,IAAIE,EAAIzG,KAAK0G,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAOD,EAAIG,GAAG,CAACC,YAAY,mCAAmCC,MAAM,CAAC,eAAcL,EAAInR,OAAQ,KAAY,aAAamR,EAAInR,MAAM,KAAO,OAAO2G,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAIO,MAAM,QAASD,EAAO,IAAI,OAAON,EAAIQ,QAAO,GAAO,CAACP,EAAG,MAAM,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAOL,EAAIH,UAAU,MAAQG,EAAIxI,KAAK,OAASwI,EAAIxI,KAAK,QAAU,cAAc,CAACyI,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,wRAAwR,CAAEL,EAAS,MAAEC,EAAG,QAAQ,CAACD,EAAIS,GAAGT,EAAI3K,GAAG2K,EAAInR,UAAUmR,EAAInB,UACnyB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QElB4J,GCgB5L,CACAlT,KAAA,mBACA+U,WAAA,CACA6B,mBAAAA,GAEA3C,MAAA,CACA5K,KAAA,CACAzG,KAAAE,OACAwS,UAAA,GAEAuB,QAAA,CACAjU,KAAAE,OACAwS,UAAA,IAGAM,QAAA,CACAkB,UAAAA,GACA,KAAAlC,MAAA,cAAAxJ,OACA,oBCvBI,GAAU,CAAC,EAEf,GAAQ2K,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,QACd,ICTW,WAAkB,IAAI/B,EAAIzG,KAAK0G,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,OAAO,CAACG,YAAY,QAAQ,CAACJ,EAAI0C,GAAG,QAAQ1C,EAAIS,GAAG,KAAMT,EAAIwC,QAAQjM,OAAQ0J,EAAG,OAAO,CAACD,EAAIS,GAAG,IAAIT,EAAI3K,GAAG2K,EAAIwC,SAAS,SAASxC,EAAInB,MAAM,GAAGmB,EAAIS,GAAG,KAAKR,EAAG,OAAO,CAACG,YAAY,QAAQ,CAACJ,EAAIS,GAAGT,EAAI3K,GAAG2K,EAAIhL,SAASgL,EAAIS,GAAG,KAAKR,EAAG,OAAO,CAACG,YAAY,aAAa5K,GAAG,CAAC,MAAQwK,EAAIyC,aAAa,CAACxC,EAAG,YAAY,CAACI,MAAM,CAAC,KAAO,OAAO,IAC5a,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEnB0E,GCoB1G,CACE1U,KAAM,cACNgU,MAAO,CAAC,SACRC,MAAO,CACL/Q,MAAO,CACLN,KAAME,QAERoR,UAAW,CACTtR,KAAME,OACNqR,QAAS,gBAEXtI,KAAM,CACJjJ,KAAMwR,OACND,QAAS,MCff,IAXgB,QACd,ICRW,WAAkB,IAAIE,EAAIzG,KAAK0G,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAOD,EAAIG,GAAG,CAACC,YAAY,qCAAqCC,MAAM,CAAC,eAAcL,EAAInR,OAAQ,KAAY,aAAamR,EAAInR,MAAM,KAAO,OAAO2G,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAIO,MAAM,QAASD,EAAO,IAAI,OAAON,EAAIQ,QAAO,GAAO,CAACP,EAAG,MAAM,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAOL,EAAIH,UAAU,MAAQG,EAAIxI,KAAK,OAASwI,EAAIxI,KAAK,QAAU,cAAc,CAACyI,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,8LAA8L,CAAEL,EAAS,MAAEC,EAAG,QAAQ,CAACD,EAAIS,GAAGT,EAAI3K,GAAG2K,EAAInR,UAAUmR,EAAInB,UAC3sB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,ugCEuGd,KACK,KACJ,KACC,KACH,KACD,KACC,KACC,KACG,KACL,KACQ,KACX,KACG,KACO,KACH,GAAA8D,EACD,KACO,KACG,KACN,KACA,KACD,KACI,KACC,KACF,KACF,KACC,KACR,KACG,KACK,KACZ,KACI,KACC,KACL,KACa,KACR,KACJ,KACM,KACE,KACI,KACX,KACM,KACM,KACd,KACM,KACD,KACC,KACA,KACF,KACD,KACK,KACN,KACI,KACD,KACE,KACR,KACG,KACK,KACN,KACI,KACU,KACF,KACX,GAAAC,EACW,KACb,KACI,KACO,KACF,KACI,KACX,KACC,KACK,KACJ,KACI,KACjBrY,OAAOsY,YA8CD,KACE,KACA,MACRtY,OAAOsY,YC/NV,MCpBqH,GDoBrH,CACElX,KAAM,yBACNgU,MAAO,CAAC,SACRC,MAAO,CACL/Q,MAAO,CACLN,KAAME,QAERoR,UAAW,CACTtR,KAAME,OACNqR,QAAS,gBAEXtI,KAAM,CACJjJ,KAAMwR,OACND,QAAS,MEff,IAXgB,QACd,ICRW,WAAkB,IAAIE,EAAIzG,KAAK0G,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAOD,EAAIG,GAAG,CAACC,YAAY,iDAAiDC,MAAM,CAAC,eAAcL,EAAInR,OAAQ,KAAY,aAAamR,EAAInR,MAAM,KAAO,OAAO2G,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAIO,MAAM,QAASD,EAAO,IAAI,OAAON,EAAIQ,QAAO,GAAO,CAACP,EAAG,MAAM,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAOL,EAAIH,UAAU,MAAQG,EAAIxI,KAAK,OAASwI,EAAIxI,KAAK,QAAU,cAAc,CAACyI,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,wLAAwL,CAAEL,EAAS,MAAEC,EAAG,QAAQ,CAACD,EAAIS,GAAGT,EAAI3K,GAAG2K,EAAInR,UAAUmR,EAAInB,UACjtB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QElB0J,GCuE1L,CACAlT,KAAA,iBAEA+U,WAAA,CACAoC,UAAA,KACAC,YAAA,KACAC,QAAA,KACAC,mBAAA,GACAC,SAAA,KACAC,eAAA,KACAxC,SAAAA,GAAAA,GAGAf,MAAA,CACAwD,UAAA,CACA7U,KAAAE,OACAqR,QAAA,mBAGAuD,WAAA,CACA9U,KAAAiD,MACAyP,UAAA,GAGAqC,iBAAA,CACA/U,KAAAE,OACAwS,UAAA,IAIAtP,KAAAA,KACA,CACA4R,QAAA,EACAjX,OAAA,EACAkX,WAAA,KAIAnC,SAAA,CACAoC,YAAAA,GACA,YAAAJ,WAAAtM,QAAA2M,IACA,KAAAF,WAAApT,cAAAmG,QAGA,gBAAAoN,MAAA7E,GAAA4E,EAAA5E,GAAA1O,cAAAC,SAAA,KAAAmT,WAAApT,kBAEA,GAGAmR,QAAA,CACAqC,WAAAA,GACA,KAAAJ,WAAA,EACA,EACAK,YAAAA,CAAAH,GACA,KAAAnD,MAAA,gBAAAmD,GACA,KAAAE,cACA,KAAAL,QAAA,CACA,EACAO,iBAAAA,CAAAC,GACA,KAAAxD,MAAA,qBAAAwD,EACA,oBCxHI,GAAU,CAAC,EAEf,GAAQrC,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,QACd,ICTW,WAAkB,IAAI/B,EAAIzG,KAAK0G,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,YAAY,CAACI,MAAM,CAAC,MAAQL,EAAIuD,QAAQ/N,GAAG,CAAC,KAAO,SAAS8K,GAAQN,EAAIuD,QAAS,CAAI,EAAE,KAAO,SAASjD,GAAQN,EAAIuD,QAAS,CAAK,GAAGlB,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,UAAUqL,GAAG,WAAW,MAAO,CAACkE,EAAI0C,GAAG,WAAW,EAAE9M,OAAM,IAAO,MAAK,IAAO,CAACoK,EAAIS,GAAG,KAAKR,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,cAAc,CAACI,MAAM,CAAC,MAAQL,EAAIwD,WAAW,MAAQxD,EAAIoD,UAAU,uBAAuB,QAAQ,uBAA0C,KAAnBpD,EAAIwD,YAAmBhO,GAAG,CAAC,eAAe,CAAC,SAAS8K,GAAQN,EAAIwD,WAAWlD,CAAM,EAAEN,EAAI8D,mBAAmB,wBAAwB9D,EAAI4D,cAAc,CAAC3D,EAAG,UAAU,CAACI,MAAM,CAAC,KAAO,OAAO,GAAGL,EAAIS,GAAG,KAAMT,EAAIyD,aAAalN,OAAS,EAAG0J,EAAG,KAAK,CAACG,YAAY,yBAAyBJ,EAAIgE,GAAIhE,EAAIyD,cAAc,SAASC,GAAS,OAAOzD,EAAG,KAAK,CAACxP,IAAIiT,EAAQvS,GAAGkP,MAAM,CAAC,MAAQqD,EAAQO,YAAY,KAAO,WAAW,CAAChE,EAAG,WAAW,CAACI,MAAM,CAAC,UAAY,QAAQ,KAAO,WAAW,MAAO,GAAM7K,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAI6D,aAAaH,EAAQ,GAAGrB,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAG,WAAW,CAACI,MAAM,CAAC,KAAOqD,EAAQQ,KAAK,oBAAmB,EAAM,iBAAgB,KAAS,EAAEtO,OAAM,IAAO,MAAK,IAAO,CAACoK,EAAIS,GAAG,eAAeT,EAAI3K,GAAGqO,EAAQO,aAAa,iBAAiB,EAAE,IAAG,GAAGhE,EAAG,MAAM,CAACG,YAAY,kCAAkC,CAACH,EAAG,iBAAiB,CAACI,MAAM,CAAC,KAAOL,EAAIsD,kBAAkBjB,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAG,sBAAsB,EAAErK,OAAM,QAAW,IAAI,IAC19C,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEnBwJ,GCgCxL,CACAjK,KAAA,eACA+U,WAAA,CACAyD,WAAAA,GAAAA,GAEAvE,MAAA,CACAwE,aAAA,CACA7V,KAAAE,OACAqR,QAAA,MAEAjR,MAAA,CACAN,KAAAE,OACAwS,UAAA,GAEAoD,QAAA,CACA9V,KAAAE,OACAqR,QAAA,MAEAwE,YAAA,CACA/V,KAAAE,OACAqR,QAAA,MAEAvM,KAAA,CACAhF,KAAAE,OACAqR,QAAA,IAEAyE,QAAA,CACAhW,KAAAyS,QACAlB,SAAA,GAEA0E,MAAA,CACAjW,KAAAE,OACAqR,QAAA,IAQA2E,QAAA,CACAlW,KAAAyS,QACAlB,SAAA,IAGAnO,KAAAA,KACA,CACA+S,mBAAA,IAGAC,MAAA,CACAP,YAAAA,GACA,KAAAM,mBAAA,CACA,GAEAnD,QAAA,CACAqD,wBAAAlZ,GACA,eAAA6B,KAAA7B,IAAAA,EAAAuM,WAAA,KAEA4M,qBAAAA,GACA,KAAAH,mBAAA,CACA,oBClFI,GAAU,CAAC,EAEf,GAAQhD,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,QACd,ICTW,WAAkB,IAAI/B,EAAIzG,KAAK0G,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,aAAa,CAACG,YAAY,qBAAqBC,MAAM,CAAC,KAAOL,EAAInR,MAAM,MAAO,EAAM,KAAOmR,EAAIsE,YAAY,OAAS,SAASjC,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAG,MAAM,CAACG,YAAY,0BAA0B0E,MAAM,CAC3S,mCAAoC9E,EAAIuE,QACxC,uCAAwCvE,EAAI4E,wBAAwB5E,EAAIoE,cACxE,0CAA2CpE,EAAI4E,wBAAwB5E,EAAIoE,cAC3E,CAACpE,EAAIzM,OAAQyM,EAAI4E,wBAAwB5E,EAAIzM,OAC5CwR,MAAO,CACRC,gBAAiBhF,EAAI4E,wBAAwB5E,EAAIzM,MAAQ,OAAHqD,OAAUoJ,EAAIzM,KAAI,KAAM,IAC5E8M,MAAM,CAAC,cAAc,SAAS,CAAEL,EAAI4E,wBAAwB5E,EAAIoE,gBAAkBpE,EAAI0E,kBAAmBzE,EAAG,MAAM,CAACI,MAAM,CAAC,IAAML,EAAIoE,cAAc5O,GAAG,CAAC,MAAQwK,EAAI6E,yBAAyB7E,EAAInB,OAAO,EAAEjJ,OAAM,GAAM,CAACnF,IAAI,UAAUqL,GAAG,WAAW,MAAO,CAACkE,EAAIS,GAAG,SAAST,EAAI3K,GAAG2K,EAAIqE,SAAS,QAAQ,EAAEzO,OAAM,MACnT,GACsB,IDGpB,EACA,KACA,WACA,MAI8B,uEEqFzBjC,eAAesR,GAAWC,GAAiB,IAAhB,WAAE1B,GAAY0B,EAC/C,MAAQvT,MAAM,SAAEwT,UAAqBC,GAAAA,EAAMC,MAAKC,EAAAA,GAAAA,IAAY,0BAA2B,CACtFvO,OAAQyM,IAMT,IAAKA,EAAY,CAChB,IAAI+B,GAAoBC,EAAAA,EAAAA,MAOxB,OANAD,EAAoB,CACnBpU,GAAIoU,EAAkBE,IACtBC,SAAUH,EAAkBtB,YAC5B0B,eAAgB,IAEjBR,EAAStN,QAAQ0N,GACVJ,CACN,CAEF,OAAOA,CACR,CCrGO,MAAMS,G3CynDb,SAEAC,EAAalJ,EAAOmJ,GAChB,IAAI3U,EACAgI,EAcJ,SAAS4M,EAAS1b,EAAOuS,GACrB,MAAMoJ,GAAa,UAoDnB,OAnDA3b,EAGuFA,IAC9E2b,GAAa,QAAO1b,EAAa,MAAQ,QAE9CF,EAAeC,IAMnBA,EAAQF,GACGkL,GAAGyC,IAAI3G,IAngB1B,SAA4BA,EAAIgI,EAAS9O,EAAOuS,GAC5C,MAAM,MAAEpM,EAAK,QAAEiD,EAAO,QAAE+C,GAAY2C,EAC9BkE,EAAehT,EAAMmG,MAAMG,MAAMQ,GACvC,IAAID,EAoCJA,EAAQwL,GAAiBvL,GAnCzB,WACSkM,IAEG,MACA,QAAIhT,EAAMmG,MAAMG,MAAOQ,EAAIX,EAAQA,IAAU,CAAC,GAG9CnG,EAAMmG,MAAMG,MAAMQ,GAAMX,EAAQA,IAAU,CAAC,GAInD,MAAMyV,GAGA,QAAO5b,EAAMmG,MAAMG,MAAMQ,IAC/B,OAAO,GAAO8U,EAAYxS,EAAS/I,OAAOmH,KAAK2E,GAAW,CAAC,GAAG9E,QAAO,CAACwU,EAAiBva,KAInFua,EAAgBva,IAAQ,SAAQ,SAAS,KACrCvB,EAAeC,GAEf,MAAM6G,EAAQ7G,EAAMgL,GAAGC,IAAInE,GAG3B,IAAI,MAAWD,EAAMuN,GAKrB,OAAOjI,EAAQ7K,GAAMd,KAAKqG,EAAOA,EAAM,KAEpCgV,IACR,CAAC,GACR,GACoC/M,EAAS9O,EAAOuS,GAAK,EAE7D,CAgegBuJ,CAAmBhV,EAAIgI,EAAS9O,GAQ1BA,EAAMgL,GAAGC,IAAInE,EAyB/B,CAEA,MApE2B,iBAAhB0U,GACP1U,EAAK0U,EAEL1M,EAAwCwD,IAGxCxD,EAAU0M,EACV1U,EAAK0U,EAAY1U,IA4DrB4U,EAAS1U,IAAMF,EACR4U,CACX,C2CpsD8BK,CAAY,CACzCjV,GAAI,SAEJX,MAAOA,KAAA,CACN6V,gBAAiB,KAGlB5S,QAAS,CACR6S,sBAAAA,CAAsBC,GAAuC,IAAtC,GAAEpV,EAAE,MAAEqV,EAAK,MAAEpV,EAAK,SAAEiK,EAAQ,KAAE9H,GAAMgT,EAC1DhN,KAAK8M,gBAAgBvU,KAAK,CAAEX,KAAIqV,QAAO7a,KAAMyF,EAAOiK,WAAU9H,OAAMkT,gBAAgB,GACrF,qBC8HF,MC/JwL,GD+JxL,CACA9a,KAAA,qBACA+U,WAAA,CACAgG,WAAA,KACAC,aAAA,KACA9F,kBAAA,GACA+F,qBAAA,GACAC,mBAAA,GACAC,WAAA,GACAC,WAAA,GACAC,QAAA,GACAC,UAAA,KACAC,eAAA,KACAhE,SAAA,KACAvC,SAAA,KACAwC,eAAA,KACAvC,QAAA,KACAuG,aAAA,KACAC,YAAA,KACAC,eAAA,GACAC,aAAAA,IAEA1H,MAAA,CACA2H,UAAA,CACAhZ,KAAAyS,QACAC,UAAA,IAGAtE,MAAAA,KAMA,CACA6K,iBAHAC,EAAAA,GAAAA,OAIApB,gBAHAT,KAGAS,kBAGA1U,IAAAA,GACA,OACA+V,UAAA,GACAC,0BAAA,EACAC,sBAAA,EACAC,oBAAA,EACA3G,WAAA,CAAA/P,GAAA,OAAA5C,KAAA,OAAAyG,KAAA,GAAAmM,UAAA,KAAAC,MAAA,MACA0G,aAAA,CAAA3W,GAAA,SAAA5C,KAAA,SAAA5C,KAAA,IACAoc,qBAAA,EACAC,uBAAA,EACAC,kBAAA,GACAC,WAAA,EACAC,YAAA,GACAC,iBAAA,GACAC,eAAA,KACAC,QAAA,GACAC,QAAA,GACApD,SAAA,GACAqD,cAAAC,KAAA,KAAAC,KAAA,KACAC,wBAAAF,KAAA,KAAAG,eAAA,KACAC,oBAAA,EACAC,mBAAA,EAEA,EAEAzH,SAAA,CACA0H,YAAAA,GACA,YAAA5D,QACA,EACA6D,aAAAA,GACA,MAAAC,EAAA,SAAAd,YAAA5R,OACA2S,EAAA,KAAAf,YAAA5R,OAAA,YAAAgS,QAAAhS,OACA,OACA4S,KAAAF,GAAAC,EACAlU,KAAA,KAAAkT,WAAAgB,EAAAlH,EAAA,sBAAAiH,EAAAjH,EAAA,iCAAAA,EAAA,8BACAzO,KAAA6T,GAAAA,EAEA,EACAgC,gBAAAA,GAGA,MADA,+CACAzF,MAAA/L,IAAA,IAAAyR,EAAAC,EAAA,eAAAD,EAAA,KAAA7B,gBAAA+B,gBAAA,IAAAF,GAAA,QAAAC,EAAAD,EAAAhZ,gBAAA,IAAAiZ,OAAA,EAAAA,EAAAze,KAAAwe,EAAAzR,EAAA,GACA,GAEA+M,MAAA,CACA4C,SAAAA,CAAA5W,GACAA,IAMA6Y,EAAAA,GAAAA,IAAA,kCAAAhF,MAAA,KAEA,KAAAsE,kBAAAnY,CACA,EACAmY,iBAAAA,CAAAnY,GACA,KAAA4P,MAAA,mBAAA5P,GACA,KAAA8Y,WAAA,KACA9Y,GACA,KAAA+Y,YACA,GAEA,GAGAC,OAAAA,IACAC,EAAAA,GAAAA,IAAA,2CAAAC,oBFnOOlW,iBACN,IACC,MAAM,KAAEhC,SAAeyT,GAAAA,EAAM9P,KAAIwU,EAAAA,GAAAA,IAAe,oBAAqB,CACpEC,OAAQ,CAEPlT,KAAM5L,OAAO8C,SAASwb,SAAS/Z,QAAQ,aAAc,IAAMvE,OAAO8C,SAASic,UAG7E,GAAI,QAASrY,GAAQ,SAAUA,EAAKsY,KAAOzY,MAAMC,QAAQE,EAAKsY,IAAItY,OAASA,EAAKsY,IAAItY,KAAK4E,OAAS,EAEjG,OAAO5E,EAAKsY,IAAItY,IAElB,CAAE,MAAOrF,GACRD,GAAQC,MAAMA,EACf,CACA,MAAO,EACR,CEoNA4d,GAAAtM,MAAA8J,IACA,KAAAA,UAAAA,EACA,KAAArB,gBAAApQ,SAAAc,IACA,KAAA2Q,UAAA5V,KAAAiF,EAAA,IAEA,KAAA2Q,UAAA,KAAAyC,oBAAA,KAAAzC,WACArb,GAAA+d,MAAA,wBAAA1C,UAAA,IAEAzC,GAAA,CAAAzB,WAAA,KAAA5F,MAAAuH,IACA,KAAAA,SAAA,KAAAkF,YAAAlF,GACA9Y,GAAA+d,MAAA,gBAAAjF,SAAA,GAEA,EACA5D,QAAA,CACAmH,IAAAA,CAAAlE,GAEA,GADA,KAAA0D,WAAA,EACA,IAAA1D,EAAAjO,OAIA,OAHA,KAAAgS,QAAA,GACA,KAAAL,WAAA,OACAsB,EAAAA,GAAAA,IAAA,kCAAAhF,WAGAgF,EAAAA,GAAAA,IAAA,mCAAAhF,UACA,MAAA8F,EAAA,GACAC,EAAA,KAAAtC,kBAAA1R,OAAA,OAAA0R,kBAAA,KAAAP,UACA8C,EAAAA,CAAAC,EAAAnC,KACA,MAAAyB,EAAA,CACAxb,KAAAkc,EAAAtZ,GACAqT,QACAkG,OAAA,KACAC,aAAAF,EAAAG,aAGA,GAAAtC,EAAAP,oBAAA,CACA,IAAA0C,EAAAnC,QAAAuC,QAAAJ,EAAAnC,QAAAwC,MAKA,OAJAf,EAAAc,MAAA,KAAA3J,WAAAC,UACA4I,EAAAe,MAAA,KAAA5J,WAAAE,KAKA,CAEA,GAAAkH,EAAAN,sBAAA,CACA,IAAAyC,EAAAnC,QAAAyC,OAIA,OAHAhB,EAAAgB,OAAA,KAAAjD,aAAA5D,IAKA,CAEA,KAAA2D,oBAAA,IACAkC,EAAAiB,MAAA,KAAAnD,sBAKAoD,EF9PO,SAAe1E,GAA0E,IAAzE,KAAEhY,EAAI,MAAEiW,EAAK,OAAEkG,EAAM,MAAEG,EAAK,MAAEC,EAAK,MAAEE,EAAK,OAAED,EAAM,aAAEJ,EAAe,CAAC,GAAGpE,EAI7F,MAAM2E,EA3CyB9F,GAAAA,EAAM+F,YAAYC,SA4DjD,MAAO,CACNH,QAhBetX,SAAYyR,GAAAA,EAAM9P,KAAIwU,EAAAA,GAAAA,IAAe,iCAAkC,CAAEvb,SAAS,CACjG2c,YAAaA,EAAYG,MACzBtB,OAAQ,CACPhG,KAAMS,EACNkG,SACAG,QACAC,QACAE,QACAD,SAEAlU,KAAM5L,OAAO8C,SAASwb,SAAS/Z,QAAQ,aAAc,IAAMvE,OAAO8C,SAASic,UACxEW,KAMJW,OAAQJ,EAAYI,OAEtB,CEmOAC,CAAAxB,GAAAkB,WAEArN,MAAAzR,IACAme,EAAAxY,KAAA,CACAX,GAAAsZ,EAAAtZ,GACAsZ,SAAAA,EAAA9e,KACA6f,YAAAf,EAAAe,YACAjD,QAAApc,EAAAwF,KAAAsY,IAAAtY,KAAA8Z,UAGApf,GAAA+d,MAAA,cAAAE,GACAje,GAAA+d,MAAA,+BAAA7B,SAEA,KAAAmD,cAAApB,GACA,KAAApC,WAAA,IACA,EAEAqC,EAAAtU,SAAAwU,IACA,MAAA1C,EAAA,KAAAA,oBACAC,EAAA,KAAAA,sBACAwC,EAAAC,EAAA,CAAA1C,sBAAAC,yBAAA,GAGA,EACA0D,aAAAA,CAAApB,GACA,IAAAqB,EAAA,SAAApD,SAEA,KAAAD,QAAA/R,OAAA,IACAoV,EAAAA,EAAA5U,QAAAzH,GACA,KAAAgZ,QAAA3E,MAAA5M,GAAAA,EAAA5F,KAAA7B,EAAA6B,QAIAmZ,EAAArU,SAAA2V,IACA,MAAAC,EAAAF,EAAAG,WAAAxc,GAAAA,EAAA6B,KAAAya,EAAAza,MACA,IAAA0a,EACA,IAAAD,EAAArD,QAAAhS,OAEAoV,EAAAjQ,OAAAmQ,EAAA,GAGAF,EAAAjQ,OAAAmQ,EAAA,EAAAD,GAEAA,EAAArD,QAAAhS,OAAA,GAEAoV,EAAA7Z,KAAA8Z,EACA,IAEA,MAAAG,EAAAJ,EAAA/P,MAAA,GAEAmQ,EAAAC,MAAA,CAAAte,EAAAue,KACA,MAAAC,EAAA,KAAAxE,UAAAgB,MAAA+B,GAAAA,EAAAtZ,KAAAzD,EAAAyD,KACAgb,EAAA,KAAAzE,UAAAgB,MAAA+B,GAAAA,EAAAtZ,KAAA8a,EAAA9a,KAGA,OAFA+a,EAAAA,EAAAE,MAAA,IACAD,EAAAA,EAAAC,MAAA,EACA,IAEA,KAAA7D,QAAAwD,CACA,EACA1B,YAAAlF,GACAA,EAAAnO,KAAAqV,IACA,CAGApI,YAAAoI,EAAA3G,SACA4G,UAAA,EACAC,QAAAF,EAAA1G,eAAA,GAAA0G,EAAA1G,eAAA,MACApS,KAAA,GACA2Q,KAAAmI,EAAAlb,OAIAyX,cAAAA,CAAApE,GACAS,GAAA,CAAAzB,WAAAgB,IAAA5G,MAAAuH,IACA,KAAAA,SAAA,KAAAkF,YAAAlF,GACA9Y,GAAA+d,MAAA,wBAAAxT,OAAA4N,GAAA,KAAAW,SAAA,GAEA,EACAqH,iBAAAA,CAAAzB,GACA,KAAA/C,uBAAA,EACA,MAAAyE,EAAA,KAAAnE,QAAAwD,WAAA/U,GAAAA,EAAA5F,KAAA4Z,EAAA5Z,MACA,IAAAsb,GACA,KAAA3E,aAAA3W,GAAA4Z,EAAA5Z,GACA,KAAA2W,aAAA5D,KAAA6G,EAAA7G,KACA,KAAA4D,aAAAnc,KAAAof,EAAA9G,YACA,KAAAqE,QAAAxW,KAAA,KAAAgW,gBAEA,KAAAQ,QAAAmE,GAAAtb,GAAA4Z,EAAA5Z,GACA,KAAAmX,QAAAmE,GAAAvI,KAAA6G,EAAA7G,KACA,KAAAoE,QAAAmE,GAAA9gB,KAAAof,EAAA9G,aAGA,KAAAuE,cAAA,KAAAL,aACA9b,GAAA+d,MAAA,wBAAAW,EACA,EACA2B,0BAAAA,CAAAC,GACA,KAAA9E,qBAAA,EACA,KAAAS,QAAA,KAAAA,QAAAvR,QAAAA,GAAA,aAAAA,EAAAxI,OACA,MAAAkc,EAAA,KAAA/C,UAAAgB,MAAA+B,GAAAA,EAAAtZ,KAAAwb,IACA,KAAAC,kBAAAnC,GAAA,EACA,EACAmC,iBAAAA,CAAAC,GAAA,IAAAH,EAAA1T,UAAAzC,OAAA,QAAA0C,IAAAD,UAAA,IAAAA,UAAA,GACA,IAAA6T,EAAA1b,GAAA,OACA0b,EAAApG,gBACAoG,EAAAxR,WAEA,KAAAwM,oBAAA6E,EAAA,KAAA7E,oBAAA,EACA,KAAAF,0BAAA,EAIA,MAAAmF,EAAA,KAAA7E,kBAAA6D,WAAAiB,GAAAA,EAAA5b,KAAA0b,EAAA1b,KACA2b,GAAA,IACA,KAAA7E,kBAAAvM,OAAAoR,EAAA,GACA,KAAAxE,QAAA,KAAA0E,oBAAA,KAAA1E,QAAA,KAAAL,oBAEA,KAAAA,kBAAAnW,KAAA,CACAX,GAAA0b,EAAA1b,GACAxF,KAAAkhB,EAAAlhB,KACA4H,KAAAsZ,EAAAtZ,KACAhF,KAAAse,EAAAte,MAAA,WACA+Z,QAAAuE,EAAAvE,QACA7B,eAAAoG,EAAApG,iBAAA,IAEA,KAAA6B,QAAA,KAAA0E,oBAAA,KAAA1E,QAAA,KAAAL,mBACA5b,GAAA+d,MAAA,oCAAA9B,SACA,KAAAE,cAAA,KAAAL,YACA,EACA8E,YAAAA,CAAAlW,GACA,gBAAAA,EAAAxI,KAAA,CACA,QAAA2e,EAAA,EAAAA,EAAA,KAAAjF,kBAAA1R,OAAA2W,IACA,QAAAjF,kBAAAiF,GAAA/b,KAAA4F,EAAA5F,GAAA,CACA,KAAA8W,kBAAAvM,OAAAwR,EAAA,GACA,KACA,CAEA,KAAA5E,QAAA,KAAA0E,oBAAA,KAAA1E,QAAA,KAAAL,mBACA5b,GAAA+d,MAAA,yCAAA9B,QAEA,MACA,QAAA4E,EAAA,EAAAA,EAAA,KAAA5E,QAAA/R,OAAA2W,IAEA,iBAAA5E,QAAA4E,GAAA/b,IAAA,KAAAmX,QAAA4E,GAAA/b,KAAA4F,EAAA5F,GAAA,CACA,KAAA4W,qBAAA,EACA,KAAAO,QAAA5M,OAAAwR,EAAA,GACA,WAAAnW,EAAAxI,OACA,KAAAyZ,uBAAA,GAEA,KACA,CAGA,KAAAQ,cAAA,KAAAL,YACA,EACA6E,mBAAAA,CAAAG,EAAAC,GAEA,MAAAC,EAAAF,EAAAvR,QAoBA,OAlBAyR,EAAApX,SAAA,CAAAlB,EAAAuY,KACA,MAAAC,EAAAxY,EAAA5D,GACA,aAAA4D,EAAAxG,OACA6e,EAAAzJ,MAAA6J,GAAAA,EAAArc,KAAAoc,KACAF,EAAA3R,OAAA4R,EAAA,GAEA,IAGAF,EAAAnX,SAAAuX,IACA,MAAAD,EAAAC,EAAArc,GACA,aAAAqc,EAAAjf,OACA8e,EAAA1J,MAAA5O,GAAAA,EAAA5D,KAAAoc,KACAF,EAAAvb,KAAA0b,GAEA,IAGAH,CACA,EACAI,gBAAAA,GACA,MAAAC,EAAA,KAAApF,QAAAwD,WAAA/U,GAAA,SAAAA,EAAA5F,MACA,IAAAuc,EACA,KAAApF,QAAAoF,GAAA,KAAAxM,WAEA,KAAAoH,QAAAxW,KAAA,KAAAoP,YAEA,KAAA6G,qBAAA,EACA,KAAAS,cAAA,KAAAL,YACA,EACAwF,mBAAAA,CAAAC,GACA,KAAAhG,sBAAA,EACA,MAAAiG,EAAA,IAAAhU,KACA,IAAAiU,EACAC,EAEA,OAAAH,GACA,YAEAE,EAAA,IAAAjU,KAAAgU,EAAAG,cAAAH,EAAAI,WAAAJ,EAAAK,UAAA,SACAH,EAAA,IAAAlU,KAAAgU,EAAAG,cAAAH,EAAAI,WAAAJ,EAAAK,UAAA,cACA,KAAAhN,WAAAlM,KAAAgN,EAAA,gBACA,MACA,YAEA8L,EAAA,IAAAjU,KAAAgU,EAAAG,cAAAH,EAAAI,WAAAJ,EAAAK,UAAA,WACA,KAAAhN,WAAAlM,KAAAgN,EAAA,sBACA,MACA,aAEA8L,EAAA,IAAAjU,KAAAgU,EAAAG,cAAAH,EAAAI,WAAAJ,EAAAK,UAAA,YACA,KAAAhN,WAAAlM,KAAAgN,EAAA,uBACA,MACA,eAEA8L,EAAA,IAAAjU,KAAAgU,EAAAG,cAAA,aACAD,EAAA,IAAAlU,KAAAgU,EAAAG,cAAA,oBACA,KAAA9M,WAAAlM,KAAAgN,EAAA,oBACA,MACA,eAEA8L,EAAA,IAAAjU,KAAAgU,EAAAG,cAAA,eACAD,EAAA,IAAAlU,KAAAgU,EAAAG,cAAA,sBACA,KAAA9M,WAAAlM,KAAAgN,EAAA,oBACA,MACA,aAEA,YADA,KAAA6G,oBAAA,GAEA,QACA,OAEA,KAAA3H,WAAAC,UAAA2M,EACA,KAAA5M,WAAAE,MAAA2M,EACA,KAAAN,kBAEA,EACAU,kBAAAA,CAAAvc,GACAvF,GAAA+d,MAAA,oBAAAxY,GACA,KAAAsP,WAAAC,UAAAvP,EAAAuP,UACA,KAAAD,WAAAE,MAAAxP,EAAAwP,MACA,KAAAF,WAAAlM,KAAAgN,EAAA,kBAAApL,OAAA,KAAAsK,WAAAC,UAAAiN,qBAAA,SAAAxX,OAAA,KAAAsK,WAAAE,MAAAgN,uBACA,KAAAX,kBACA,EACA5D,kBAAAA,CAAAwE,GACA,QAAAnB,EAAA,EAAAA,EAAA,KAAAjF,kBAAA1R,OAAA2W,IAAA,CACA,MAAAzC,EAAA,KAAAxC,kBAAAiF,GACA,GAAAzC,EAAAtZ,KAAAkd,EAAAld,GAAA,CACAsZ,EAAA9e,KAAA0iB,EAAAC,iBAGA,MAAAC,EAAA,KAAA7G,UAAAoE,WAAArB,GAAAA,EAAAtZ,KAAAkd,EAAAld,KACAod,GAAA,IACA9D,EAAAG,YAAAyD,EAAAG,aACA,KAAAvG,kBAAAiF,GAAAzC,GAEA,KACA,CACA,CACA,KAAAjC,cAAA,KAAAL,YACA,EACAgC,mBAAAA,CAAA7B,GACA,MAAAmG,EAAA,GAEAnG,EAAArS,SAAAc,IACA,MAAA0T,EAAA1T,EAAAyP,MAAAzP,EAAAyP,MAAA,UACAiI,EAAAhE,KACAgE,EAAAhE,GAAA,IAEAgE,EAAAhE,GAAA3Y,KAAAiF,EAAA,IAGA,MAAA2X,EAAA,GAKA,OAJAhkB,OAAAsL,OAAAyY,GAAAxY,SAAA0Y,IACAD,EAAA5c,QAAA6c,EAAA,IAGAD,CACA,EACAhF,UAAAA,GACA,KAAAkF,MAAAC,YAAAC,IAAAC,SAAA,GAAAA,SAAA,GAAAC,OACA,EACAxN,UAAAA,GACA,KAAAsH,mBAAA,EACA,KAAAX,YAAA,EACA,oBEjlBI,GAAU,CAAC,EAEf,GAAQzG,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,QACd,ICTW,WAAkB,IAAI/B,EAAIzG,KAAK0G,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACgP,IAAI,qBAAqB5O,MAAM,CAAC,GAAK,iBAAiB,KAAOL,EAAI8I,kBAAkB,mBAAmB,GAAGtT,GAAG,CAAC,cAAc,SAAS8K,GAAQN,EAAI8I,kBAAkBxI,CAAM,EAAE,MAAQN,EAAIwB,aAAa,CAACvB,EAAG,uBAAuB,CAACG,YAAY,6BAA6BC,MAAM,CAAC,UAAUL,EAAI6I,oBAAoBrT,GAAG,CAAC,wBAAwBwK,EAAImO,mBAAmB,iBAAiB,SAAS7N,GAAQN,EAAI6I,mBAAqBvI,CAAM,KAAKN,EAAIS,GAAG,KAAKR,EAAG,MAAM,CAACgP,IAAI,gBAAgB7O,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,gCAAgC,CAACH,EAAG,KAAK,CAACD,EAAIS,GAAGT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,sBAAsBhC,EAAIS,GAAG,KAAKR,EAAG,eAAe,CAACgP,IAAI,cAAc5O,MAAM,CAAC,MAAQL,EAAImI,YAAY,KAAO,OAAO,MAAQnI,EAAIgC,EAAE,OAAQ,sCAAwC,OAAOxM,GAAG,CAAC,eAAe,CAAC,SAAS8K,GAAQN,EAAImI,YAAY7H,CAAM,EAAEN,EAAIwI,kBAAkBxI,EAAIS,GAAG,KAAKR,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,YAAY,CAACI,MAAM,CAAC,YAAYL,EAAIgC,EAAE,OAAQ,UAAU,KAAOhC,EAAI2H,0BAA0BnS,GAAG,CAAC,cAAc,SAAS8K,GAAQN,EAAI2H,yBAAyBrH,CAAM,GAAG+B,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAG,UAAU,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEzK,OAAM,MAAS,CAACoK,EAAIS,GAAG,KAAKT,EAAIgE,GAAIhE,EAAI0H,WAAW,SAAS+C,GAAU,OAAOxK,EAAG,iBAAiB,CAACxP,IAAG,GAAAmG,OAAI6T,EAAStZ,GAAE,KAAAyF,OAAI6T,EAAS9e,KAAK6D,QAAQ,MAAO,KAAMgG,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAI4M,kBAAkBnC,EAAS,GAAGpI,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAG,MAAM,CAACG,YAAY,sBAAsBC,MAAM,CAAC,IAAMoK,EAASlX,KAAK,IAAM,MAAM,EAAEqC,OAAM,IAAO,MAAK,IAAO,CAACoK,EAAIS,GAAG,iBAAiBT,EAAI3K,GAAGoV,EAAS9e,MAAM,iBAAiB,KAAI,GAAGqU,EAAIS,GAAG,KAAKR,EAAG,YAAY,CAACI,MAAM,CAAC,YAAYL,EAAIgC,EAAE,OAAQ,QAAQ,KAAOhC,EAAI4H,sBAAsBpS,GAAG,CAAC,cAAc,SAAS8K,GAAQN,EAAI4H,qBAAqBtH,CAAM,GAAG+B,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEzK,OAAM,MAAS,CAACoK,EAAIS,GAAG,KAAKR,EAAG,iBAAiB,CAACI,MAAM,CAAC,qBAAoB,GAAM7K,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAI2N,oBAAoB,QAAQ,IAAI,CAAC3N,EAAIS,GAAG,iBAAiBT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,UAAU,kBAAkBhC,EAAIS,GAAG,KAAKR,EAAG,iBAAiB,CAACI,MAAM,CAAC,qBAAoB,GAAM7K,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAI2N,oBAAoB,QAAQ,IAAI,CAAC3N,EAAIS,GAAG,iBAAiBT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,gBAAgB,kBAAkBhC,EAAIS,GAAG,KAAKR,EAAG,iBAAiB,CAACI,MAAM,CAAC,qBAAoB,GAAM7K,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAI2N,oBAAoB,SAAS,IAAI,CAAC3N,EAAIS,GAAG,iBAAiBT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,iBAAiB,kBAAkBhC,EAAIS,GAAG,KAAKR,EAAG,iBAAiB,CAACI,MAAM,CAAC,qBAAoB,GAAM7K,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAI2N,oBAAoB,WAAW,IAAI,CAAC3N,EAAIS,GAAG,iBAAiBT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,cAAc,kBAAkBhC,EAAIS,GAAG,KAAKR,EAAG,iBAAiB,CAACI,MAAM,CAAC,qBAAoB,GAAM7K,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAI2N,oBAAoB,WAAW,IAAI,CAAC3N,EAAIS,GAAG,iBAAiBT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,cAAc,kBAAkBhC,EAAIS,GAAG,KAAKR,EAAG,iBAAiB,CAACI,MAAM,CAAC,qBAAoB,GAAM7K,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAI2N,oBAAoB,SAAS,IAAI,CAAC3N,EAAIS,GAAG,iBAAiBT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,sBAAsB,mBAAmB,GAAGhC,EAAIS,GAAG,KAAKR,EAAG,iBAAiB,CAACI,MAAM,CAAC,aAAaL,EAAIgC,EAAE,OAAQ,iBAAiB,cAAchC,EAAI+I,aAAa,qBAAqB/I,EAAIgC,EAAE,OAAQ,cAAcxM,GAAG,CAAC,qBAAqBwK,EAAI2I,wBAAwB,gBAAgB3I,EAAIwM,mBAAmBnK,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,UAAUqL,GAAG,WAAW,MAAO,CAACmE,EAAG,WAAW,CAACoC,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAG,eAAe,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEzK,OAAM,MAAS,CAACoK,EAAIS,GAAG,mBAAmBT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,WAAW,oBAAoB,EAAEpM,OAAM,OAAUoK,EAAIS,GAAG,KAAMT,EAAIoJ,iBAAkBnJ,EAAG,WAAW,CAACzK,GAAG,CAAC,MAAQwK,EAAIwB,YAAYa,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAG,aAAa,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEzK,OAAM,IAAO,MAAK,EAAM,aAAa,CAACoK,EAAIS,GAAG,eAAeT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,2BAA2B,kBAAkBhC,EAAInB,MAAM,GAAGmB,EAAIS,GAAG,KAAKR,EAAG,MAAM,CAACG,YAAY,yCAAyCJ,EAAIgE,GAAIhE,EAAIsI,SAAS,SAASvR,GAAO,IAAAmY,EAAC,OAAOjP,EAAG,aAAa,CAACxP,IAAIsG,EAAO5F,GAAGkP,MAAM,CAAC,KAAkB,QAAZ6O,EAACnY,EAAOpL,YAAI,IAAAujB,EAAAA,EAAInY,EAAO/B,KAAK,QAAU,IAAIQ,GAAG,CAAC,OAAS,SAAS8K,GAAQ,OAAON,EAAIiN,aAAalW,EAAO,GAAGsL,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAAkB,WAAhB/E,EAAOxI,KAAmB0R,EAAG,WAAW,CAACI,MAAM,CAAC,KAAOtJ,EAAOmN,KAAK,KAAO,GAAG,gBAAe,EAAK,oBAAmB,EAAM,iBAAgB,KAA0B,SAAhBnN,EAAOxI,KAAiB0R,EAAG,qBAAqBA,EAAG,MAAM,CAACI,MAAM,CAAC,IAAMtJ,EAAOxD,KAAK,IAAM,MAAM,EAAEqC,OAAM,IAAO,MAAK,IAAO,IAAG,IAAI,GAAGoK,EAAIS,GAAG,KAAMT,EAAIgJ,cAAcG,KAAMlJ,EAAG,MAAM,CAACG,YAAY,oCAAoC,CAACH,EAAG,iBAAiB,CAACI,MAAM,CAAC,KAAOL,EAAIgJ,cAAchU,MAAMqN,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAGD,EAAIgJ,cAAczV,KAAK,CAAC4b,IAAI,cAAc,EAAEvZ,OAAM,IAAO,MAAK,EAAM,cAAc,GAAGqK,EAAG,MAAM,CAACG,YAAY,iCAAiCJ,EAAIgE,GAAIhE,EAAIuI,SAAS,SAAS6G,GAAgB,OAAOnP,EAAG,MAAM,CAACxP,IAAI2e,EAAeje,GAAGiP,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,OAAO,CAACD,EAAIS,GAAGT,EAAI3K,GAAG+Z,EAAe3E,eAAezK,EAAIS,GAAG,KAAKR,EAAG,KAAK,CAACG,YAAY,gBAAgBJ,EAAIgE,GAAIoL,EAAe7G,SAAS,SAASjZ,EAAOge,GAAO,OAAOrN,EAAG,eAAeD,EAAIG,GAAG,CAAC1P,IAAI6c,GAAO,eAAehe,GAAO,GAAO,IAAG,GAAG0Q,EAAIS,GAAG,KAAKR,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,0BAA0B7K,GAAG,CAAC,MAAQ,SAAS8K,GAAQ,OAAON,EAAI0M,2BAA2B0C,EAAeje,GAAG,GAAGkR,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAG,qBAAqB,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEzK,OAAM,IAAO,MAAK,IAAO,CAACoK,EAAIS,GAAG,iBAAiBT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,sBAAsB,oBAAoBhC,EAAIS,GAAG,KAAM2O,EAAe5D,YAAavL,EAAG,WAAW,CAACI,MAAM,CAAC,UAAY,cAAc,KAAO,0BAA0BgC,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAG,aAAa,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEzK,OAAM,IAAO,MAAK,IAAO,CAACoK,EAAIS,GAAG,iBAAiBT,EAAI3K,GAAG2K,EAAIgC,EAAE,OAAQ,cAAc,IAAIhC,EAAI3K,GAAG+Z,EAAe3E,UAAU,oBAAoBzK,EAAInB,MAAM,IAAI,IAAG,MAAM,EACxqM,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,wBEqBhC,MCxCmL,GDwCnL,CACAlT,KAAA,gBACA+U,WAAA,CACAC,SAAA,KACAqC,QAAA,KACAqM,mBAAAA,IAEA1d,KAAAA,KACA,CACA2d,mBAAA,IAGA3F,OAAAA,GACAtd,GAAA+d,MAAA,8BACA,EACA7I,QAAA,CACAgO,mBAAAA,GACA,KAAAD,mBAAA,KAAAA,iBACA,EACAE,2BAAAA,CAAAC,GACA,KAAAH,kBAAAG,CACA,oBElDI,GAAU,CAAC,EAEf,GAAQ/N,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,QACd,ICTW,WAAkB,IAAI/B,EAAIzG,KAAK0G,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,mCAAmC,CAACH,EAAG,WAAW,CAACG,YAAY,uBAAuBC,MAAM,CAAC,aAAaL,EAAIgC,EAAE,OAAQ,kBAAkB,KAAO,0BAA0BxM,GAAG,CAAC,MAAQwK,EAAIuP,qBAAqBlN,YAAYrC,EAAIsC,GAAG,CAAC,CAAC7R,IAAI,OAAOqL,GAAG,WAAW,MAAO,CAACmE,EAAG,UAAU,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAO,MAAM,EAAEzK,OAAM,OAAUoK,EAAIS,GAAG,KAAKR,EAAG,qBAAqB,CAACI,MAAM,CAAC,aAAaL,EAAIsP,mBAAmB9Z,GAAG,CAAC,mBAAmBwK,EAAIwP,gCAAgC,EACtkB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEUhCE,EAAAA,GAAoBC,MAAKC,EAAAA,EAAAA,OACzB,MAAMC,IAASC,EAAAA,EAAAA,MACVC,OAAO,kBACPC,aACAC,QACLC,GAAAA,GAAIC,MAAM,CACNxe,KAAIA,KACO,CACHke,YAGRtO,QAAS,CACLS,EAAC,KACDoO,EAACA,EAAAA,MAITnlB,OAAOolB,IAAMplB,OAAOolB,KAAO,CAAC,EAC5BplB,OAAOolB,IAAIC,cAAgB,CACvBC,qBAAsBhK,IAA0C,IAAzC,GAAEpV,EAAE,MAAEqV,EAAK,MAAEpV,EAAK,SAAEiK,EAAQ,KAAE9H,GAAMgT,EACnCX,KACRU,uBAAuB,CAAEnV,KAAIqV,QAAOpV,QAAOiK,WAAU9H,QAAO,GAGhF2c,GAAAA,GAAIM,KtDm3DmB,SAAUC,GAG7BA,EAAKN,MAAM,CACP,YAAAO,GACI,MAAMvX,EAAUI,KAAKoX,SACrB,GAAIxX,EAAQ9O,MAAO,CACf,MAAMA,EAAQ8O,EAAQ9O,MAGtB,IAAKkP,KAAKqX,UAAW,CACjB,MAAMC,EAAe,CAAC,EACtBnmB,OAAOwU,eAAe3F,KAAM,YAAa,CACrCjE,IAAK,IAAMub,EACX9Y,IAAM+Y,GAAMpmB,OAAO+E,OAAOohB,EAAcC,IAEhD,CACAvX,KAAKqX,UAAUtmB,GAAeD,EAIzBkP,KAAKwX,SACNxX,KAAKwX,OAAS1mB,GAElBA,EAAMsU,GAAKpF,KACPvO,GAGAZ,EAAeC,GAEfa,GACA2H,EAAsBxI,EAAMsU,GAAItU,EAExC,MACUkP,KAAKwX,QAAU5X,EAAQ6X,QAAU7X,EAAQ6X,OAAOD,SACtDxX,KAAKwX,OAAS5X,EAAQ6X,OAAOD,OAErC,EACA,SAAAE,UACW1X,KAAKzD,QAChB,GAER,IsD55DA,MAAMzL,GtDg5BN,WACI,MAAMyS,GAAQ,SAAY,GAGpBtM,EAAQsM,EAAMwB,KAAI,KAAM,QAAI,CAAC,KACnC,IAAIF,EAAK,GAEL8S,EAAgB,GACpB,MAAM7mB,GAAQ,QAAQ,CAClB,OAAA8mB,CAAQre,GAGJ1I,EAAeC,GACV,OACDA,EAAMsU,GAAK7L,EACXA,EAAIse,QAAQ9mB,EAAaD,GACzByI,EAAIue,OAAOC,iBAAiBP,OAAS1mB,EAEjCa,GACA2H,EAAsBC,EAAKzI,GAE/B6mB,EAAcjb,SAASsb,GAAWnT,EAAGtM,KAAKyf,KAC1CL,EAAgB,GAExB,EACA,GAAAV,CAAIe,GAOA,OANKhY,KAAKoF,IAAO,KAIbP,EAAGtM,KAAKyf,GAHRL,EAAcpf,KAAKyf,GAKhBhY,IACX,EACA6E,KAGAO,GAAI,KACJE,GAAI/B,EACJzH,GAAI,IAAI4G,IACRzL,UAOJ,OAHItF,GAAiC,oBAAVyN,OACvBtO,EAAMmmB,IAAItX,GAEP7O,CACX,CsDh8BcmnB,GACd,IAAmBtB,GAAAA,GAAI,CACnBuB,GAAI,kBACJpnB,SAEAsB,KAAM,oBACN+lB,OAAQC,GAAKA,EAAErB,2ECzDfsB,QAA0B,GAA4B,KAE1DA,EAAwB9f,KAAK,CAAC+f,EAAO1gB,GAAI,qXAAsX,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0EAA0E,MAAQ,GAAG,SAAW,8GAA8G,eAAiB,CAAC,oTAAoT,WAAa,MAE39B,+ECJIygB,QAA0B,GAA4B,KAE1DA,EAAwB9f,KAAK,CAAC+f,EAAO1gB,GAAI,6iBAA8iB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,sEAAsE,MAAQ,GAAG,SAAW,yNAAyN,eAAiB,CAAC,orBAAorB,WAAa,MAE1nD,+ECJIygB,QAA0B,GAA4B,KAE1DA,EAAwB9f,KAAK,CAAC+f,EAAO1gB,GAAI,ysCAA0sC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,MAAQ,GAAG,SAAW,kUAAkU,eAAiB,CAAC,0uDAA4uD,WAAa,MAEn7G,+ECJIygB,QAA0B,GAA4B,KAE1DA,EAAwB9f,KAAK,CAAC+f,EAAO1gB,GAAI,olBAAqlB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oEAAoE,MAAQ,GAAG,SAAW,2KAA2K,eAAiB,CAAC,kmBAAkmB,WAAa,MAE/hD,+ECJIygB,QAA0B,GAA4B,KAE1DA,EAAwB9f,KAAK,CAAC+f,EAAO1gB,GAAI,6fAA8f,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,gDAAgD,MAAQ,GAAG,SAAW,iIAAiI,eAAiB,CAAC,iqBAAiqB,WAAa,MAEz8C,+ECJIygB,QAA0B,GAA4B,KAE1DA,EAAwB9f,KAAK,CAAC+f,EAAO1gB,GAAI,wxCAAyxC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,qDAAqD,MAAQ,GAAG,SAAW,udAAud,eAAiB,CAAC,mgDAAmgD,WAAa,MAEj6G,kjCCNI2gB,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB/Y,IAAjBgZ,EACH,OAAOA,EAAaC,QAGrB,IAAIL,EAASC,EAAyBE,GAAY,CACjD7gB,GAAI6gB,EACJG,QAAQ,EACRD,QAAS,CAAC,GAUX,OANAE,EAAoBJ,GAAUnnB,KAAKgnB,EAAOK,QAASL,EAAQA,EAAOK,QAASH,GAG3EF,EAAOM,QAAS,EAGTN,EAAOK,OACf,CAGAH,EAAoBM,EAAID,E9D5BpBloB,EAAW,GACf6nB,EAAoBO,EAAI,CAAChjB,EAAQijB,EAAUzW,EAAI0W,KAC9C,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAASxF,EAAI,EAAGA,EAAIhjB,EAASqM,OAAQ2W,IAAK,CACrCqF,EAAWroB,EAASgjB,GAAG,GACvBpR,EAAK5R,EAASgjB,GAAG,GACjBsF,EAAWtoB,EAASgjB,GAAG,GAE3B,IAJA,IAGIyF,GAAY,EACPC,EAAI,EAAGA,EAAIL,EAAShc,OAAQqc,MACpB,EAAXJ,GAAsBC,GAAgBD,IAAa9nB,OAAOmH,KAAKkgB,EAAoBO,GAAGO,OAAOpiB,GAASshB,EAAoBO,EAAE7hB,GAAK8hB,EAASK,MAC9IL,EAAS7W,OAAOkX,IAAK,IAErBD,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACbzoB,EAASwR,OAAOwR,IAAK,GACrB,IAAI4F,EAAIhX,SACE7C,IAAN6Z,IAAiBxjB,EAASwjB,EAC/B,CACD,CACA,OAAOxjB,CArBP,CAJCkjB,EAAWA,GAAY,EACvB,IAAI,IAAItF,EAAIhjB,EAASqM,OAAQ2W,EAAI,GAAKhjB,EAASgjB,EAAI,GAAG,GAAKsF,EAAUtF,IAAKhjB,EAASgjB,GAAKhjB,EAASgjB,EAAI,GACrGhjB,EAASgjB,GAAK,CAACqF,EAAUzW,EAAI0W,EAuBjB,E+D3BdT,EAAoB3B,EAAKyB,IACxB,IAAIkB,EAASlB,GAAUA,EAAOmB,WAC7B,IAAOnB,EAAiB,QACxB,IAAM,EAEP,OADAE,EAAoBkB,EAAEF,EAAQ,CAAErlB,EAAGqlB,IAC5BA,CAAM,ECLdhB,EAAoBkB,EAAI,CAACf,EAASgB,KACjC,IAAI,IAAIziB,KAAOyiB,EACXnB,EAAoBtnB,EAAEyoB,EAAYziB,KAASshB,EAAoBtnB,EAAEynB,EAASzhB,IAC5E/F,OAAOwU,eAAegT,EAASzhB,EAAK,CAAE6O,YAAY,EAAMhK,IAAK4d,EAAWziB,IAE1E,ECHDshB,EAAoBtlB,EAAI,IAAOgI,QAAQC,UCHvCqd,EAAoBoB,EAAI,WACvB,GAA0B,iBAAf5nB,WAAyB,OAAOA,WAC3C,IACC,OAAOgO,MAAQ,IAAI6Z,SAAS,cAAb,EAChB,CAAE,MAAO3mB,GACR,GAAsB,iBAAXxB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB8mB,EAAoBtnB,EAAI,CAACuU,EAAKF,IAAUpU,OAAOC,UAAUyR,eAAevR,KAAKmU,EAAKF,GCClFiT,EAAoBe,EAAKZ,IACH,oBAAX3nB,QAA0BA,OAAOsY,aAC1CnY,OAAOwU,eAAegT,EAAS3nB,OAAOsY,YAAa,CAAElS,MAAO,WAE7DjG,OAAOwU,eAAegT,EAAS,aAAc,CAAEvhB,OAAO,GAAO,ECL9DohB,EAAoBsB,IAAOxB,IAC1BA,EAAOyB,MAAQ,GACVzB,EAAO9C,WAAU8C,EAAO9C,SAAW,IACjC8C,GCHRE,EAAoBa,EAAI,WCAxBb,EAAoB9F,EAAIjf,SAASumB,SAAWloB,KAAK0C,SAASF,KAK1D,IAAI2lB,EAAkB,CACrB,KAAM,GAaPzB,EAAoBO,EAAEM,EAAKa,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4BhiB,KACvD,IAKIqgB,EAAUyB,EALVlB,EAAW5gB,EAAK,GAChBiiB,EAAcjiB,EAAK,GACnBkiB,EAAUliB,EAAK,GAGIub,EAAI,EAC3B,GAAGqF,EAAS5O,MAAMxS,GAAgC,IAAxBqiB,EAAgBriB,KAAa,CACtD,IAAI6gB,KAAY4B,EACZ7B,EAAoBtnB,EAAEmpB,EAAa5B,KACrCD,EAAoBM,EAAEL,GAAY4B,EAAY5B,IAGhD,GAAG6B,EAAS,IAAIvkB,EAASukB,EAAQ9B,EAClC,CAEA,IADG4B,GAA4BA,EAA2BhiB,GACrDub,EAAIqF,EAAShc,OAAQ2W,IACzBuG,EAAUlB,EAASrF,GAChB6E,EAAoBtnB,EAAE+oB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAO1B,EAAoBO,EAAEhjB,EAAO,EAGjCwkB,EAAqBzoB,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FyoB,EAAmB7d,QAAQyd,EAAqB9Z,KAAK,KAAM,IAC3Dka,EAAmBhiB,KAAO4hB,EAAqB9Z,KAAK,KAAMka,EAAmBhiB,KAAK8H,KAAKka,QClDvF/B,EAAoBgC,QAAK9a,ECGzB,IAAI+a,EAAsBjC,EAAoBO,OAAErZ,EAAW,CAAC,OAAO,IAAO8Y,EAAoB,SAC9FiC,EAAsBjC,EAAoBO,EAAE0B","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/pinia/dist/pinia.mjs","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRange.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRange.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/CalendarRange.vue?f09e","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRange.vue?vue&type=template&id=29f118e2","webpack://nextcloud/./core/src/components/UnifiedSearch/CustomDateRangeModal.vue?b7cc","webpack:///nextcloud/core/src/components/UnifiedSearch/CustomDateRangeModal.vue","webpack:///nextcloud/core/src/components/UnifiedSearch/CustomDateRangeModal.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/UnifiedSearch/CustomDateRangeModal.vue?7b1c","webpack://nextcloud/./core/src/components/UnifiedSearch/CustomDateRangeModal.vue?92fe","webpack:///nextcloud/node_modules/vue-material-design-icons/DotsHorizontal.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/DotsHorizontal.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/DotsHorizontal.vue?c5a1","webpack:///nextcloud/node_modules/vue-material-design-icons/DotsHorizontal.vue?vue&type=template&id=a4d4ab3e","webpack:///nextcloud/node_modules/vue-material-design-icons/Filter.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Filter.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Filter.vue?3711","webpack:///nextcloud/node_modules/vue-material-design-icons/Filter.vue?vue&type=template&id=7511a4c6","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchFilterChip.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchFilterChip.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchFilterChip.vue?3702","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchFilterChip.vue?fc0d","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchFilterChip.vue?2352","webpack:///nextcloud/node_modules/vue-material-design-icons/ListBox.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/ListBox.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ListBox.vue?d9c9","webpack:///nextcloud/node_modules/vue-material-design-icons/ListBox.vue?vue&type=template&id=8c20def8","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/node_modules/vue-material-design-icons/AlertCircleOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/AlertCircleOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/AlertCircleOutline.vue?730b","webpack:///nextcloud/node_modules/vue-material-design-icons/AlertCircleOutline.vue?vue&type=template&id=4aed4486","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchableList.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchableList.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchableList.vue?58c9","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchableList.vue?4344","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchableList.vue?a21f","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?5240","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?32d3","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?e4b5","webpack:///nextcloud/core/src/services/UnifiedSearchService.js","webpack:///nextcloud/core/src/store/unified-search-external-filters.js","webpack:///nextcloud/core/src/views/UnifiedSearchModal.vue","webpack:///nextcloud/core/src/views/UnifiedSearchModal.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/views/UnifiedSearchModal.vue?4c6c","webpack://nextcloud/./core/src/views/UnifiedSearchModal.vue?7f41","webpack://nextcloud/./core/src/views/UnifiedSearchModal.vue?60fa","webpack:///nextcloud/core/src/views/UnifiedSearch.vue","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?77ea","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?1990","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?adc0","webpack:///nextcloud/core/src/unified-search.ts","webpack:///nextcloud/core/src/components/UnifiedSearch/CustomDateRangeModal.vue?vue&type=style&index=0&id=99abc4fc&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchFilterChip.vue?vue&type=style&index=0&id=5dc4d462&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=style&index=0&id=67d9a3cf&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchableList.vue?vue&type=style&index=0&id=7cf71a2c&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=style&index=0&id=4621f4fc&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/views/UnifiedSearchModal.vue?vue&type=style&index=0&id=45d54e50&prod&lang=scss&scoped=true","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/*!\n * pinia v2.1.7\n * (c) 2023 Eduardo San Martin Morote\n * @license MIT\n */\nimport { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isVue2, isRef, isReactive, set, getCurrentScope, onScopeDispose, getCurrentInstance, reactive, toRef, del, nextTick, computed, toRefs } from 'vue-demi';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * setActivePinia must be called to handle SSR at the top of functions like\n * `fetch`, `setup`, `serverPrefetch` and others\n */\nlet activePinia;\n/**\n * Sets or unsets the active pinia. Used in SSR and internally when calling\n * actions and getters\n *\n * @param pinia - Pinia instance\n */\n// @ts-expect-error: cannot constrain the type of the return\nconst setActivePinia = (pinia) => (activePinia = pinia);\n/**\n * Get the currently active pinia if there is any.\n */\nconst getActivePinia = () => (hasInjectionContext() && inject(piniaSymbol)) || activePinia;\nconst piniaSymbol = ((process.env.NODE_ENV !== 'production') ? Symbol('pinia') : /* istanbul ignore next */ Symbol());\n\nfunction isPlainObject(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\no) {\n return (o &&\n typeof o === 'object' &&\n Object.prototype.toString.call(o) === '[object Object]' &&\n typeof o.toJSON !== 'function');\n}\n// type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> }\n// TODO: can we change these to numbers?\n/**\n * Possible types for SubscriptionCallback\n */\nvar MutationType;\n(function (MutationType) {\n /**\n * Direct mutation of the state:\n *\n * - `store.name = 'new name'`\n * - `store.$state.name = 'new name'`\n * - `store.list.push('new item')`\n */\n MutationType[\"direct\"] = \"direct\";\n /**\n * Mutated the state with `$patch` and an object\n *\n * - `store.$patch({ name: 'newName' })`\n */\n MutationType[\"patchObject\"] = \"patch object\";\n /**\n * Mutated the state with `$patch` and a function\n *\n * - `store.$patch(state => state.name = 'newName')`\n */\n MutationType[\"patchFunction\"] = \"patch function\";\n // maybe reset? for $state = {} and $reset\n})(MutationType || (MutationType = {}));\n\nconst IS_CLIENT = typeof window !== 'undefined';\n/**\n * Should we add the devtools plugins.\n * - only if dev mode or forced through the prod devtools flag\n * - not in test\n * - only if window exists (could change in the future)\n */\nconst USE_DEVTOOLS = ((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test') && IS_CLIENT;\n\n/*\n * FileSaver.js A saveAs() FileSaver implementation.\n *\n * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin\n * Morote.\n *\n * License : MIT\n */\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nconst _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window\n ? window\n : typeof self === 'object' && self.self === self\n ? self\n : typeof global === 'object' && global.global === global\n ? global\n : typeof globalThis === 'object'\n ? globalThis\n : { HTMLElement: null })();\nfunction bom(blob, { autoBom = false } = {}) {\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (autoBom &&\n /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n }\n return blob;\n}\nfunction download(url, name, opts) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n xhr.onload = function () {\n saveAs(xhr.response, name, opts);\n };\n xhr.onerror = function () {\n console.error('could not download file');\n };\n xhr.send();\n}\nfunction corsEnabled(url) {\n const xhr = new XMLHttpRequest();\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false);\n try {\n xhr.send();\n }\n catch (e) { }\n return xhr.status >= 200 && xhr.status <= 299;\n}\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent('click'));\n }\n catch (e) {\n const evt = document.createEvent('MouseEvents');\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\n node.dispatchEvent(evt);\n }\n}\nconst _navigator = \n typeof navigator === 'object' ? navigator : { userAgent: '' };\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nconst isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&\n /AppleWebKit/.test(_navigator.userAgent) &&\n !/Safari/.test(_navigator.userAgent))();\nconst saveAs = !IS_CLIENT\n ? () => { } // noop\n : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program\n typeof HTMLAnchorElement !== 'undefined' &&\n 'download' in HTMLAnchorElement.prototype &&\n !isMacOSWebView\n ? downloadSaveAs\n : // Use msSaveOrOpenBlob as a second approach\n 'msSaveOrOpenBlob' in _navigator\n ? msSaveAs\n : // Fallback to using FileReader and a popup\n fileSaverSaveAs;\nfunction downloadSaveAs(blob, name = 'download', opts) {\n const a = document.createElement('a');\n a.download = name;\n a.rel = 'noopener'; // tabnabbing\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob;\n if (a.origin !== location.origin) {\n if (corsEnabled(a.href)) {\n download(blob, name, opts);\n }\n else {\n a.target = '_blank';\n click(a);\n }\n }\n else {\n click(a);\n }\n }\n else {\n // Support blobs\n a.href = URL.createObjectURL(blob);\n setTimeout(function () {\n URL.revokeObjectURL(a.href);\n }, 4e4); // 40s\n setTimeout(function () {\n click(a);\n }, 0);\n }\n}\nfunction msSaveAs(blob, name = 'download', opts) {\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts);\n }\n else {\n const a = document.createElement('a');\n a.href = blob;\n a.target = '_blank';\n setTimeout(function () {\n click(a);\n });\n }\n }\n else {\n // @ts-ignore: works on windows\n navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n }\n}\nfunction fileSaverSaveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank');\n if (popup) {\n popup.document.title = popup.document.body.innerText = 'downloading...';\n }\n if (typeof blob === 'string')\n return download(blob, name, opts);\n const force = blob.type === 'application/octet-stream';\n const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global;\n const isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) &&\n typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n const reader = new FileReader();\n reader.onloadend = function () {\n let url = reader.result;\n if (typeof url !== 'string') {\n popup = null;\n throw new Error('Wrong reader.result type');\n }\n url = isChromeIOS\n ? url\n : url.replace(/^data:[^;]*;/, 'data:attachment/file;');\n if (popup) {\n popup.location.href = url;\n }\n else {\n location.assign(url);\n }\n popup = null; // reverse-tabnabbing #460\n };\n reader.readAsDataURL(blob);\n }\n else {\n const url = URL.createObjectURL(blob);\n if (popup)\n popup.location.assign(url);\n else\n location.href = url;\n popup = null; // reverse-tabnabbing #460\n setTimeout(function () {\n URL.revokeObjectURL(url);\n }, 4e4); // 40s\n }\n}\n\n/**\n * Shows a toast or console.log\n *\n * @param message - message to log\n * @param type - different color of the tooltip\n */\nfunction toastMessage(message, type) {\n const piniaMessage = '🍍 ' + message;\n if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') {\n // No longer available :(\n __VUE_DEVTOOLS_TOAST__(piniaMessage, type);\n }\n else if (type === 'error') {\n console.error(piniaMessage);\n }\n else if (type === 'warn') {\n console.warn(piniaMessage);\n }\n else {\n console.log(piniaMessage);\n }\n}\nfunction isPinia(o) {\n return '_a' in o && 'install' in o;\n}\n\n/**\n * This file contain devtools actions, they are not Pinia actions.\n */\n// ---\nfunction checkClipboardAccess() {\n if (!('clipboard' in navigator)) {\n toastMessage(`Your browser doesn't support the Clipboard API`, 'error');\n return true;\n }\n}\nfunction checkNotFocusedError(error) {\n if (error instanceof Error &&\n error.message.toLowerCase().includes('document is not focused')) {\n toastMessage('You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.', 'warn');\n return true;\n }\n return false;\n}\nasync function actionGlobalCopyState(pinia) {\n if (checkClipboardAccess())\n return;\n try {\n await navigator.clipboard.writeText(JSON.stringify(pinia.state.value));\n toastMessage('Global state copied to clipboard.');\n }\n catch (error) {\n if (checkNotFocusedError(error))\n return;\n toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nasync function actionGlobalPasteState(pinia) {\n if (checkClipboardAccess())\n return;\n try {\n loadStoresState(pinia, JSON.parse(await navigator.clipboard.readText()));\n toastMessage('Global state pasted from clipboard.');\n }\n catch (error) {\n if (checkNotFocusedError(error))\n return;\n toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nasync function actionGlobalSaveState(pinia) {\n try {\n saveAs(new Blob([JSON.stringify(pinia.state.value)], {\n type: 'text/plain;charset=utf-8',\n }), 'pinia-state.json');\n }\n catch (error) {\n toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nlet fileInput;\nfunction getFileOpener() {\n if (!fileInput) {\n fileInput = document.createElement('input');\n fileInput.type = 'file';\n fileInput.accept = '.json';\n }\n function openFile() {\n return new Promise((resolve, reject) => {\n fileInput.onchange = async () => {\n const files = fileInput.files;\n if (!files)\n return resolve(null);\n const file = files.item(0);\n if (!file)\n return resolve(null);\n return resolve({ text: await file.text(), file });\n };\n // @ts-ignore: TODO: changed from 4.3 to 4.4\n fileInput.oncancel = () => resolve(null);\n fileInput.onerror = reject;\n fileInput.click();\n });\n }\n return openFile;\n}\nasync function actionGlobalOpenStateFile(pinia) {\n try {\n const open = getFileOpener();\n const result = await open();\n if (!result)\n return;\n const { text, file } = result;\n loadStoresState(pinia, JSON.parse(text));\n toastMessage(`Global state imported from \"${file.name}\".`);\n }\n catch (error) {\n toastMessage(`Failed to import the state from JSON. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nfunction loadStoresState(pinia, state) {\n for (const key in state) {\n const storeState = pinia.state.value[key];\n // store is already instantiated, patch it\n if (storeState) {\n Object.assign(storeState, state[key]);\n }\n else {\n // store is not instantiated, set the initial state\n pinia.state.value[key] = state[key];\n }\n }\n}\n\nfunction formatDisplay(display) {\n return {\n _custom: {\n display,\n },\n };\n}\nconst PINIA_ROOT_LABEL = '🍍 Pinia (root)';\nconst PINIA_ROOT_ID = '_root';\nfunction formatStoreForInspectorTree(store) {\n return isPinia(store)\n ? {\n id: PINIA_ROOT_ID,\n label: PINIA_ROOT_LABEL,\n }\n : {\n id: store.$id,\n label: store.$id,\n };\n}\nfunction formatStoreForInspectorState(store) {\n if (isPinia(store)) {\n const storeNames = Array.from(store._s.keys());\n const storeMap = store._s;\n const state = {\n state: storeNames.map((storeId) => ({\n editable: true,\n key: storeId,\n value: store.state.value[storeId],\n })),\n getters: storeNames\n .filter((id) => storeMap.get(id)._getters)\n .map((id) => {\n const store = storeMap.get(id);\n return {\n editable: false,\n key: id,\n value: store._getters.reduce((getters, key) => {\n getters[key] = store[key];\n return getters;\n }, {}),\n };\n }),\n };\n return state;\n }\n const state = {\n state: Object.keys(store.$state).map((key) => ({\n editable: true,\n key,\n value: store.$state[key],\n })),\n };\n // avoid adding empty getters\n if (store._getters && store._getters.length) {\n state.getters = store._getters.map((getterName) => ({\n editable: false,\n key: getterName,\n value: store[getterName],\n }));\n }\n if (store._customProperties.size) {\n state.customProperties = Array.from(store._customProperties).map((key) => ({\n editable: true,\n key,\n value: store[key],\n }));\n }\n return state;\n}\nfunction formatEventData(events) {\n if (!events)\n return {};\n if (Array.isArray(events)) {\n // TODO: handle add and delete for arrays and objects\n return events.reduce((data, event) => {\n data.keys.push(event.key);\n data.operations.push(event.type);\n data.oldValue[event.key] = event.oldValue;\n data.newValue[event.key] = event.newValue;\n return data;\n }, {\n oldValue: {},\n keys: [],\n operations: [],\n newValue: {},\n });\n }\n else {\n return {\n operation: formatDisplay(events.type),\n key: formatDisplay(events.key),\n oldValue: events.oldValue,\n newValue: events.newValue,\n };\n }\n}\nfunction formatMutationType(type) {\n switch (type) {\n case MutationType.direct:\n return 'mutation';\n case MutationType.patchFunction:\n return '$patch';\n case MutationType.patchObject:\n return '$patch';\n default:\n return 'unknown';\n }\n}\n\n// timeline can be paused when directly changing the state\nlet isTimelineActive = true;\nconst componentStateTypes = [];\nconst MUTATIONS_LAYER_ID = 'pinia:mutations';\nconst INSPECTOR_ID = 'pinia';\nconst { assign: assign$1 } = Object;\n/**\n * Gets the displayed name of a store in devtools\n *\n * @param id - id of the store\n * @returns a formatted string\n */\nconst getStoreType = (id) => '🍍 ' + id;\n/**\n * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab\n * as soon as it is added to the application.\n *\n * @param app - Vue application\n * @param pinia - pinia instance\n */\nfunction registerPiniaDevtools(app, pinia) {\n setupDevtoolsPlugin({\n id: 'dev.esm.pinia',\n label: 'Pinia 🍍',\n logo: 'https://pinia.vuejs.org/logo.svg',\n packageName: 'pinia',\n homepage: 'https://pinia.vuejs.org',\n componentStateTypes,\n app,\n }, (api) => {\n if (typeof api.now !== 'function') {\n toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n }\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: `Pinia 🍍`,\n color: 0xe5df88,\n });\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Pinia 🍍',\n icon: 'storage',\n treeFilterPlaceholder: 'Search stores',\n actions: [\n {\n icon: 'content_copy',\n action: () => {\n actionGlobalCopyState(pinia);\n },\n tooltip: 'Serialize and copy the state',\n },\n {\n icon: 'content_paste',\n action: async () => {\n await actionGlobalPasteState(pinia);\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n },\n tooltip: 'Replace the state with the content of your clipboard',\n },\n {\n icon: 'save',\n action: () => {\n actionGlobalSaveState(pinia);\n },\n tooltip: 'Save the state as a JSON file',\n },\n {\n icon: 'folder_open',\n action: async () => {\n await actionGlobalOpenStateFile(pinia);\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n },\n tooltip: 'Import the state from a JSON file',\n },\n ],\n nodeActions: [\n {\n icon: 'restore',\n tooltip: 'Reset the state (with \"$reset\")',\n action: (nodeId) => {\n const store = pinia._s.get(nodeId);\n if (!store) {\n toastMessage(`Cannot reset \"${nodeId}\" store because it wasn't found.`, 'warn');\n }\n else if (typeof store.$reset !== 'function') {\n toastMessage(`Cannot reset \"${nodeId}\" store because it doesn't have a \"$reset\" method implemented.`, 'warn');\n }\n else {\n store.$reset();\n toastMessage(`Store \"${nodeId}\" reset.`);\n }\n },\n },\n ],\n });\n api.on.inspectComponent((payload, ctx) => {\n const proxy = (payload.componentInstance &&\n payload.componentInstance.proxy);\n if (proxy && proxy._pStores) {\n const piniaStores = payload.componentInstance.proxy._pStores;\n Object.values(piniaStores).forEach((store) => {\n payload.instanceData.state.push({\n type: getStoreType(store.$id),\n key: 'state',\n editable: true,\n value: store._isOptionsAPI\n ? {\n _custom: {\n value: toRaw(store.$state),\n actions: [\n {\n icon: 'restore',\n tooltip: 'Reset the state of this store',\n action: () => store.$reset(),\n },\n ],\n },\n }\n : // NOTE: workaround to unwrap transferred refs\n Object.keys(store.$state).reduce((state, key) => {\n state[key] = store.$state[key];\n return state;\n }, {}),\n });\n if (store._getters && store._getters.length) {\n payload.instanceData.state.push({\n type: getStoreType(store.$id),\n key: 'getters',\n editable: false,\n value: store._getters.reduce((getters, key) => {\n try {\n getters[key] = store[key];\n }\n catch (error) {\n // @ts-expect-error: we just want to show it in devtools\n getters[key] = error;\n }\n return getters;\n }, {}),\n });\n }\n });\n }\n });\n api.on.getInspectorTree((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n let stores = [pinia];\n stores = stores.concat(Array.from(pinia._s.values()));\n payload.rootNodes = (payload.filter\n ? stores.filter((store) => '$id' in store\n ? store.$id\n .toLowerCase()\n .includes(payload.filter.toLowerCase())\n : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase()))\n : stores).map(formatStoreForInspectorTree);\n }\n });\n api.on.getInspectorState((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n ? pinia\n : pinia._s.get(payload.nodeId);\n if (!inspectedStore) {\n // this could be the selected store restored for a different project\n // so it's better not to say anything here\n return;\n }\n if (inspectedStore) {\n payload.state = formatStoreForInspectorState(inspectedStore);\n }\n }\n });\n api.on.editInspectorState((payload, ctx) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n ? pinia\n : pinia._s.get(payload.nodeId);\n if (!inspectedStore) {\n return toastMessage(`store \"${payload.nodeId}\" not found`, 'error');\n }\n const { path } = payload;\n if (!isPinia(inspectedStore)) {\n // access only the state\n if (path.length !== 1 ||\n !inspectedStore._customProperties.has(path[0]) ||\n path[0] in inspectedStore.$state) {\n path.unshift('$state');\n }\n }\n else {\n // Root access, we can omit the `.value` because the devtools API does it for us\n path.unshift('state');\n }\n isTimelineActive = false;\n payload.set(inspectedStore, path, payload.state.value);\n isTimelineActive = true;\n }\n });\n api.on.editComponentState((payload) => {\n if (payload.type.startsWith('🍍')) {\n const storeId = payload.type.replace(/^🍍\\s*/, '');\n const store = pinia._s.get(storeId);\n if (!store) {\n return toastMessage(`store \"${storeId}\" not found`, 'error');\n }\n const { path } = payload;\n if (path[0] !== 'state') {\n return toastMessage(`Invalid path for store \"${storeId}\":\\n${path}\\nOnly state can be modified.`);\n }\n // rewrite the first entry to be able to directly set the state as\n // well as any other path\n path[0] = '$state';\n isTimelineActive = false;\n payload.set(store, path, payload.state.value);\n isTimelineActive = true;\n }\n });\n });\n}\nfunction addStoreToDevtools(app, store) {\n if (!componentStateTypes.includes(getStoreType(store.$id))) {\n componentStateTypes.push(getStoreType(store.$id));\n }\n setupDevtoolsPlugin({\n id: 'dev.esm.pinia',\n label: 'Pinia 🍍',\n logo: 'https://pinia.vuejs.org/logo.svg',\n packageName: 'pinia',\n homepage: 'https://pinia.vuejs.org',\n componentStateTypes,\n app,\n settings: {\n logStoreChanges: {\n label: 'Notify about new/deleted stores',\n type: 'boolean',\n defaultValue: true,\n },\n // useEmojis: {\n // label: 'Use emojis in messages ⚡️',\n // type: 'boolean',\n // defaultValue: true,\n // },\n },\n }, (api) => {\n // gracefully handle errors\n const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now;\n store.$onAction(({ after, onError, name, args }) => {\n const groupId = runningActionId++;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🛫 ' + name,\n subtitle: 'start',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n },\n groupId,\n },\n });\n after((result) => {\n activeAction = undefined;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🛬 ' + name,\n subtitle: 'end',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n result,\n },\n groupId,\n },\n });\n });\n onError((error) => {\n activeAction = undefined;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n logType: 'error',\n title: '💥 ' + name,\n subtitle: 'end',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n error,\n },\n groupId,\n },\n });\n });\n }, true);\n store._customProperties.forEach((name) => {\n watch(() => unref(store[name]), (newValue, oldValue) => {\n api.notifyComponentUpdate();\n api.sendInspectorState(INSPECTOR_ID);\n if (isTimelineActive) {\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: 'Change',\n subtitle: name,\n data: {\n newValue,\n oldValue,\n },\n groupId: activeAction,\n },\n });\n }\n }, { deep: true });\n });\n store.$subscribe(({ events, type }, state) => {\n api.notifyComponentUpdate();\n api.sendInspectorState(INSPECTOR_ID);\n if (!isTimelineActive)\n return;\n // rootStore.state[store.id] = state\n const eventData = {\n time: now(),\n title: formatMutationType(type),\n data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)),\n groupId: activeAction,\n };\n if (type === MutationType.patchFunction) {\n eventData.subtitle = '⤵️';\n }\n else if (type === MutationType.patchObject) {\n eventData.subtitle = '🧩';\n }\n else if (events && !Array.isArray(events)) {\n eventData.subtitle = events.type;\n }\n if (events) {\n eventData.data['rawEvent(s)'] = {\n _custom: {\n display: 'DebuggerEvent',\n type: 'object',\n tooltip: 'raw DebuggerEvent[]',\n value: events,\n },\n };\n }\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: eventData,\n });\n }, { detached: true, flush: 'sync' });\n const hotUpdate = store._hotUpdate;\n store._hotUpdate = markRaw((newStore) => {\n hotUpdate(newStore);\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🔥 ' + store.$id,\n subtitle: 'HMR update',\n data: {\n store: formatDisplay(store.$id),\n info: formatDisplay(`HMR update`),\n },\n },\n });\n // update the devtools too\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n });\n const { $dispose } = store;\n store.$dispose = () => {\n $dispose();\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n api.getSettings().logStoreChanges &&\n toastMessage(`Disposed \"${store.$id}\" store 🗑`);\n };\n // trigger an update so it can display new registered stores\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n api.getSettings().logStoreChanges &&\n toastMessage(`\"${store.$id}\" store installed 🆕`);\n });\n}\nlet runningActionId = 0;\nlet activeAction;\n/**\n * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the\n * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state\n * mutation to the action.\n *\n * @param store - store to patch\n * @param actionNames - list of actionst to patch\n */\nfunction patchActionForGrouping(store, actionNames, wrapWithProxy) {\n // original actions of the store as they are given by pinia. We are going to override them\n const actions = actionNames.reduce((storeActions, actionName) => {\n // use toRaw to avoid tracking #541\n storeActions[actionName] = toRaw(store)[actionName];\n return storeActions;\n }, {});\n for (const actionName in actions) {\n store[actionName] = function () {\n // the running action id is incremented in a before action hook\n const _actionId = runningActionId;\n const trackedStore = wrapWithProxy\n ? new Proxy(store, {\n get(...args) {\n activeAction = _actionId;\n return Reflect.get(...args);\n },\n set(...args) {\n activeAction = _actionId;\n return Reflect.set(...args);\n },\n })\n : store;\n // For Setup Stores we need https://github.com/tc39/proposal-async-context\n activeAction = _actionId;\n const retValue = actions[actionName].apply(trackedStore, arguments);\n // this is safer as async actions in Setup Stores would associate mutations done outside of the action\n activeAction = undefined;\n return retValue;\n };\n }\n}\n/**\n * pinia.use(devtoolsPlugin)\n */\nfunction devtoolsPlugin({ app, store, options }) {\n // HMR module\n if (store.$id.startsWith('__hot:')) {\n return;\n }\n // detect option api vs setup api\n store._isOptionsAPI = !!options.state;\n patchActionForGrouping(store, Object.keys(options.actions), store._isOptionsAPI);\n // Upgrade the HMR to also update the new actions\n const originalHotUpdate = store._hotUpdate;\n toRaw(store)._hotUpdate = function (newStore) {\n originalHotUpdate.apply(this, arguments);\n patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions), !!store._isOptionsAPI);\n };\n addStoreToDevtools(app, \n // FIXME: is there a way to allow the assignment from Store<Id, S, G, A> to StoreGeneric?\n store);\n}\n\n/**\n * Creates a Pinia instance to be used by the application\n */\nfunction createPinia() {\n const scope = effectScope(true);\n // NOTE: here we could check the window object for a state and directly set it\n // if there is anything like it with Vue 3 SSR\n const state = scope.run(() => ref({}));\n let _p = [];\n // plugins added before calling app.use(pinia)\n let toBeInstalled = [];\n const pinia = markRaw({\n install(app) {\n // this allows calling useStore() outside of a component setup after\n // installing pinia's plugin\n setActivePinia(pinia);\n if (!isVue2) {\n pinia._a = app;\n app.provide(piniaSymbol, pinia);\n app.config.globalProperties.$pinia = pinia;\n /* istanbul ignore else */\n if (USE_DEVTOOLS) {\n registerPiniaDevtools(app, pinia);\n }\n toBeInstalled.forEach((plugin) => _p.push(plugin));\n toBeInstalled = [];\n }\n },\n use(plugin) {\n if (!this._a && !isVue2) {\n toBeInstalled.push(plugin);\n }\n else {\n _p.push(plugin);\n }\n return this;\n },\n _p,\n // it's actually undefined here\n // @ts-expect-error\n _a: null,\n _e: scope,\n _s: new Map(),\n state,\n });\n // pinia devtools rely on dev only features so they cannot be forced unless\n // the dev build of Vue is used. Avoid old browsers like IE11.\n if (USE_DEVTOOLS && typeof Proxy !== 'undefined') {\n pinia.use(devtoolsPlugin);\n }\n return pinia;\n}\n\n/**\n * Checks if a function is a `StoreDefinition`.\n *\n * @param fn - object to test\n * @returns true if `fn` is a StoreDefinition\n */\nconst isUseStore = (fn) => {\n return typeof fn === 'function' && typeof fn.$id === 'string';\n};\n/**\n * Mutates in place `newState` with `oldState` to _hot update_ it. It will\n * remove any key not existing in `newState` and recursively merge plain\n * objects.\n *\n * @param newState - new state object to be patched\n * @param oldState - old state that should be used to patch newState\n * @returns - newState\n */\nfunction patchObject(newState, oldState) {\n // no need to go through symbols because they cannot be serialized anyway\n for (const key in oldState) {\n const subPatch = oldState[key];\n // skip the whole sub tree\n if (!(key in newState)) {\n continue;\n }\n const targetValue = newState[key];\n if (isPlainObject(targetValue) &&\n isPlainObject(subPatch) &&\n !isRef(subPatch) &&\n !isReactive(subPatch)) {\n newState[key] = patchObject(targetValue, subPatch);\n }\n else {\n // objects are either a bit more complex (e.g. refs) or primitives, so we\n // just set the whole thing\n if (isVue2) {\n set(newState, key, subPatch);\n }\n else {\n newState[key] = subPatch;\n }\n }\n }\n return newState;\n}\n/**\n * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.\n *\n * @example\n * ```js\n * const useUser = defineStore(...)\n * if (import.meta.hot) {\n * import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))\n * }\n * ```\n *\n * @param initialUseStore - return of the defineStore to hot update\n * @param hot - `import.meta.hot`\n */\nfunction acceptHMRUpdate(initialUseStore, hot) {\n // strip as much as possible from iife.prod\n if (!(process.env.NODE_ENV !== 'production')) {\n return () => { };\n }\n return (newModule) => {\n const pinia = hot.data.pinia || initialUseStore._pinia;\n if (!pinia) {\n // this store is still not used\n return;\n }\n // preserve the pinia instance across loads\n hot.data.pinia = pinia;\n // console.log('got data', newStore)\n for (const exportName in newModule) {\n const useStore = newModule[exportName];\n // console.log('checking for', exportName)\n if (isUseStore(useStore) && pinia._s.has(useStore.$id)) {\n // console.log('Accepting update for', useStore.$id)\n const id = useStore.$id;\n if (id !== initialUseStore.$id) {\n console.warn(`The id of the store changed from \"${initialUseStore.$id}\" to \"${id}\". Reloading.`);\n // return import.meta.hot.invalidate()\n return hot.invalidate();\n }\n const existingStore = pinia._s.get(id);\n if (!existingStore) {\n console.log(`[Pinia]: skipping hmr because store doesn't exist yet`);\n return;\n }\n useStore(pinia, existingStore);\n }\n }\n };\n}\n\nconst noop = () => { };\nfunction addSubscription(subscriptions, callback, detached, onCleanup = noop) {\n subscriptions.push(callback);\n const removeSubscription = () => {\n const idx = subscriptions.indexOf(callback);\n if (idx > -1) {\n subscriptions.splice(idx, 1);\n onCleanup();\n }\n };\n if (!detached && getCurrentScope()) {\n onScopeDispose(removeSubscription);\n }\n return removeSubscription;\n}\nfunction triggerSubscriptions(subscriptions, ...args) {\n subscriptions.slice().forEach((callback) => {\n callback(...args);\n });\n}\n\nconst fallbackRunWithContext = (fn) => fn();\nfunction mergeReactiveObjects(target, patchToApply) {\n // Handle Map instances\n if (target instanceof Map && patchToApply instanceof Map) {\n patchToApply.forEach((value, key) => target.set(key, value));\n }\n // Handle Set instances\n if (target instanceof Set && patchToApply instanceof Set) {\n patchToApply.forEach(target.add, target);\n }\n // no need to go through symbols because they cannot be serialized anyway\n for (const key in patchToApply) {\n if (!patchToApply.hasOwnProperty(key))\n continue;\n const subPatch = patchToApply[key];\n const targetValue = target[key];\n if (isPlainObject(targetValue) &&\n isPlainObject(subPatch) &&\n target.hasOwnProperty(key) &&\n !isRef(subPatch) &&\n !isReactive(subPatch)) {\n // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might\n // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that\n // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.\n target[key] = mergeReactiveObjects(targetValue, subPatch);\n }\n else {\n // @ts-expect-error: subPatch is a valid value\n target[key] = subPatch;\n }\n }\n return target;\n}\nconst skipHydrateSymbol = (process.env.NODE_ENV !== 'production')\n ? Symbol('pinia:skipHydration')\n : /* istanbul ignore next */ Symbol();\nconst skipHydrateMap = /*#__PURE__*/ new WeakMap();\n/**\n * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a\n * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.\n *\n * @param obj - target object\n * @returns obj\n */\nfunction skipHydrate(obj) {\n return isVue2\n ? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work...\n /* istanbul ignore next */ skipHydrateMap.set(obj, 1) && obj\n : Object.defineProperty(obj, skipHydrateSymbol, {});\n}\n/**\n * Returns whether a value should be hydrated\n *\n * @param obj - target variable\n * @returns true if `obj` should be hydrated\n */\nfunction shouldHydrate(obj) {\n return isVue2\n ? /* istanbul ignore next */ !skipHydrateMap.has(obj)\n : !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);\n}\nconst { assign } = Object;\nfunction isComputed(o) {\n return !!(isRef(o) && o.effect);\n}\nfunction createOptionsStore(id, options, pinia, hot) {\n const { state, actions, getters } = options;\n const initialState = pinia.state.value[id];\n let store;\n function setup() {\n if (!initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n /* istanbul ignore if */\n if (isVue2) {\n set(pinia.state.value, id, state ? state() : {});\n }\n else {\n pinia.state.value[id] = state ? state() : {};\n }\n }\n // avoid creating a state in pinia.state.value\n const localState = (process.env.NODE_ENV !== 'production') && hot\n ? // use ref() to unwrap refs inside state TODO: check if this is still necessary\n toRefs(ref(state ? state() : {}).value)\n : toRefs(pinia.state.value[id]);\n return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {\n if ((process.env.NODE_ENV !== 'production') && name in localState) {\n console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${name}\" in store \"${id}\".`);\n }\n computedGetters[name] = markRaw(computed(() => {\n setActivePinia(pinia);\n // it was created just before\n const store = pinia._s.get(id);\n // allow cross using stores\n /* istanbul ignore next */\n if (isVue2 && !store._r)\n return;\n // @ts-expect-error\n // return getters![name].call(context, context)\n // TODO: avoid reading the getter while assigning with a global variable\n return getters[name].call(store, store);\n }));\n return computedGetters;\n }, {}));\n }\n store = createSetupStore(id, setup, options, pinia, hot, true);\n return store;\n}\nfunction createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {\n let scope;\n const optionsForPlugin = assign({ actions: {} }, options);\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !pinia._e.active) {\n throw new Error('Pinia destroyed');\n }\n // watcher options for $subscribe\n const $subscribeOptions = {\n deep: true,\n // flush: 'post',\n };\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production') && !isVue2) {\n $subscribeOptions.onTrigger = (event) => {\n /* istanbul ignore else */\n if (isListening) {\n debuggerEvents = event;\n // avoid triggering this while the store is being built and the state is being set in pinia\n }\n else if (isListening == false && !store._hotUpdating) {\n // let patch send all the events together later\n /* istanbul ignore else */\n if (Array.isArray(debuggerEvents)) {\n debuggerEvents.push(event);\n }\n else {\n console.error('🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.');\n }\n }\n };\n }\n // internal state\n let isListening; // set to true at the end\n let isSyncListening; // set to true at the end\n let subscriptions = [];\n let actionSubscriptions = [];\n let debuggerEvents;\n const initialState = pinia.state.value[$id];\n // avoid setting the state for option stores if it is set\n // by the setup\n if (!isOptionsStore && !initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n /* istanbul ignore if */\n if (isVue2) {\n set(pinia.state.value, $id, {});\n }\n else {\n pinia.state.value[$id] = {};\n }\n }\n const hotState = ref({});\n // avoid triggering too many listeners\n // https://github.com/vuejs/pinia/issues/1129\n let activeListener;\n function $patch(partialStateOrMutator) {\n let subscriptionMutation;\n isListening = isSyncListening = false;\n // reset the debugger events since patches are sync\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n debuggerEvents = [];\n }\n if (typeof partialStateOrMutator === 'function') {\n partialStateOrMutator(pinia.state.value[$id]);\n subscriptionMutation = {\n type: MutationType.patchFunction,\n storeId: $id,\n events: debuggerEvents,\n };\n }\n else {\n mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);\n subscriptionMutation = {\n type: MutationType.patchObject,\n payload: partialStateOrMutator,\n storeId: $id,\n events: debuggerEvents,\n };\n }\n const myListenerId = (activeListener = Symbol());\n nextTick().then(() => {\n if (activeListener === myListenerId) {\n isListening = true;\n }\n });\n isSyncListening = true;\n // because we paused the watcher, we need to manually call the subscriptions\n triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);\n }\n const $reset = isOptionsStore\n ? function $reset() {\n const { state } = options;\n const newState = state ? state() : {};\n // we use a patch to group all changes into one single subscription\n this.$patch(($state) => {\n assign($state, newState);\n });\n }\n : /* istanbul ignore next */\n (process.env.NODE_ENV !== 'production')\n ? () => {\n throw new Error(`🍍: Store \"${$id}\" is built using the setup syntax and does not implement $reset().`);\n }\n : noop;\n function $dispose() {\n scope.stop();\n subscriptions = [];\n actionSubscriptions = [];\n pinia._s.delete($id);\n }\n /**\n * Wraps an action to handle subscriptions.\n *\n * @param name - name of the action\n * @param action - action to wrap\n * @returns a wrapped action to handle subscriptions\n */\n function wrapAction(name, action) {\n return function () {\n setActivePinia(pinia);\n const args = Array.from(arguments);\n const afterCallbackList = [];\n const onErrorCallbackList = [];\n function after(callback) {\n afterCallbackList.push(callback);\n }\n function onError(callback) {\n onErrorCallbackList.push(callback);\n }\n // @ts-expect-error\n triggerSubscriptions(actionSubscriptions, {\n args,\n name,\n store,\n after,\n onError,\n });\n let ret;\n try {\n ret = action.apply(this && this.$id === $id ? this : store, args);\n // handle sync errors\n }\n catch (error) {\n triggerSubscriptions(onErrorCallbackList, error);\n throw error;\n }\n if (ret instanceof Promise) {\n return ret\n .then((value) => {\n triggerSubscriptions(afterCallbackList, value);\n return value;\n })\n .catch((error) => {\n triggerSubscriptions(onErrorCallbackList, error);\n return Promise.reject(error);\n });\n }\n // trigger after callbacks\n triggerSubscriptions(afterCallbackList, ret);\n return ret;\n };\n }\n const _hmrPayload = /*#__PURE__*/ markRaw({\n actions: {},\n getters: {},\n state: [],\n hotState,\n });\n const partialStore = {\n _p: pinia,\n // _s: scope,\n $id,\n $onAction: addSubscription.bind(null, actionSubscriptions),\n $patch,\n $reset,\n $subscribe(callback, options = {}) {\n const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());\n const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {\n if (options.flush === 'sync' ? isSyncListening : isListening) {\n callback({\n storeId: $id,\n type: MutationType.direct,\n events: debuggerEvents,\n }, state);\n }\n }, assign({}, $subscribeOptions, options)));\n return removeSubscription;\n },\n $dispose,\n };\n /* istanbul ignore if */\n if (isVue2) {\n // start as non ready\n partialStore._r = false;\n }\n const store = reactive((process.env.NODE_ENV !== 'production') || USE_DEVTOOLS\n ? assign({\n _hmrPayload,\n _customProperties: markRaw(new Set()), // devtools custom properties\n }, partialStore\n // must be added later\n // setupStore\n )\n : partialStore);\n // store the partial store now so the setup of stores can instantiate each other before they are finished without\n // creating infinite loops.\n pinia._s.set($id, store);\n const runWithContext = (pinia._a && pinia._a.runWithContext) || fallbackRunWithContext;\n // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped\n const setupStore = runWithContext(() => pinia._e.run(() => (scope = effectScope()).run(setup)));\n // overwrite existing actions to support $onAction\n for (const key in setupStore) {\n const prop = setupStore[key];\n if ((isRef(prop) && !isComputed(prop)) || isReactive(prop)) {\n // mark it as a piece of state to be serialized\n if ((process.env.NODE_ENV !== 'production') && hot) {\n set(hotState.value, key, toRef(setupStore, key));\n // createOptionStore directly sets the state in pinia.state.value so we\n // can just skip that\n }\n else if (!isOptionsStore) {\n // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created\n if (initialState && shouldHydrate(prop)) {\n if (isRef(prop)) {\n prop.value = initialState[key];\n }\n else {\n // probably a reactive object, lets recursively assign\n // @ts-expect-error: prop is unknown\n mergeReactiveObjects(prop, initialState[key]);\n }\n }\n // transfer the ref to the pinia state to keep everything in sync\n /* istanbul ignore if */\n if (isVue2) {\n set(pinia.state.value[$id], key, prop);\n }\n else {\n pinia.state.value[$id][key] = prop;\n }\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n _hmrPayload.state.push(key);\n }\n // action\n }\n else if (typeof prop === 'function') {\n // @ts-expect-error: we are overriding the function we avoid wrapping if\n const actionValue = (process.env.NODE_ENV !== 'production') && hot ? prop : wrapAction(key, prop);\n // this a hot module replacement store because the hotUpdate method needs\n // to do it with the right context\n /* istanbul ignore if */\n if (isVue2) {\n set(setupStore, key, actionValue);\n }\n else {\n // @ts-expect-error\n setupStore[key] = actionValue;\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n _hmrPayload.actions[key] = prop;\n }\n // list actions so they can be used in plugins\n // @ts-expect-error\n optionsForPlugin.actions[key] = prop;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n // add getters for devtools\n if (isComputed(prop)) {\n _hmrPayload.getters[key] = isOptionsStore\n ? // @ts-expect-error\n options.getters[key]\n : prop;\n if (IS_CLIENT) {\n const getters = setupStore._getters ||\n // @ts-expect-error: same\n (setupStore._getters = markRaw([]));\n getters.push(key);\n }\n }\n }\n }\n // add the state, getters, and action properties\n /* istanbul ignore if */\n if (isVue2) {\n Object.keys(setupStore).forEach((key) => {\n set(store, key, setupStore[key]);\n });\n }\n else {\n assign(store, setupStore);\n // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.\n // Make `storeToRefs()` work with `reactive()` #799\n assign(toRaw(store), setupStore);\n }\n // use this instead of a computed with setter to be able to create it anywhere\n // without linking the computed lifespan to wherever the store is first\n // created.\n Object.defineProperty(store, '$state', {\n get: () => ((process.env.NODE_ENV !== 'production') && hot ? hotState.value : pinia.state.value[$id]),\n set: (state) => {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && hot) {\n throw new Error('cannot set hotState');\n }\n $patch(($state) => {\n assign($state, state);\n });\n },\n });\n // add the hotUpdate before plugins to allow them to override it\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n store._hotUpdate = markRaw((newStore) => {\n store._hotUpdating = true;\n newStore._hmrPayload.state.forEach((stateKey) => {\n if (stateKey in store.$state) {\n const newStateTarget = newStore.$state[stateKey];\n const oldStateSource = store.$state[stateKey];\n if (typeof newStateTarget === 'object' &&\n isPlainObject(newStateTarget) &&\n isPlainObject(oldStateSource)) {\n patchObject(newStateTarget, oldStateSource);\n }\n else {\n // transfer the ref\n newStore.$state[stateKey] = oldStateSource;\n }\n }\n // patch direct access properties to allow store.stateProperty to work as\n // store.$state.stateProperty\n set(store, stateKey, toRef(newStore.$state, stateKey));\n });\n // remove deleted state properties\n Object.keys(store.$state).forEach((stateKey) => {\n if (!(stateKey in newStore.$state)) {\n del(store, stateKey);\n }\n });\n // avoid devtools logging this as a mutation\n isListening = false;\n isSyncListening = false;\n pinia.state.value[$id] = toRef(newStore._hmrPayload, 'hotState');\n isSyncListening = true;\n nextTick().then(() => {\n isListening = true;\n });\n for (const actionName in newStore._hmrPayload.actions) {\n const action = newStore[actionName];\n set(store, actionName, wrapAction(actionName, action));\n }\n // TODO: does this work in both setup and option store?\n for (const getterName in newStore._hmrPayload.getters) {\n const getter = newStore._hmrPayload.getters[getterName];\n const getterValue = isOptionsStore\n ? // special handling of options api\n computed(() => {\n setActivePinia(pinia);\n return getter.call(store, store);\n })\n : getter;\n set(store, getterName, getterValue);\n }\n // remove deleted getters\n Object.keys(store._hmrPayload.getters).forEach((key) => {\n if (!(key in newStore._hmrPayload.getters)) {\n del(store, key);\n }\n });\n // remove old actions\n Object.keys(store._hmrPayload.actions).forEach((key) => {\n if (!(key in newStore._hmrPayload.actions)) {\n del(store, key);\n }\n });\n // update the values used in devtools and to allow deleting new properties later on\n store._hmrPayload = newStore._hmrPayload;\n store._getters = newStore._getters;\n store._hotUpdating = false;\n });\n }\n if (USE_DEVTOOLS) {\n const nonEnumerable = {\n writable: true,\n configurable: true,\n // avoid warning on devtools trying to display this property\n enumerable: false,\n };\n ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => {\n Object.defineProperty(store, p, assign({ value: store[p] }, nonEnumerable));\n });\n }\n /* istanbul ignore if */\n if (isVue2) {\n // mark the store as ready before plugins\n store._r = true;\n }\n // apply all plugins\n pinia._p.forEach((extender) => {\n /* istanbul ignore else */\n if (USE_DEVTOOLS) {\n const extensions = scope.run(() => extender({\n store,\n app: pinia._a,\n pinia,\n options: optionsForPlugin,\n }));\n Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key));\n assign(store, extensions);\n }\n else {\n assign(store, scope.run(() => extender({\n store,\n app: pinia._a,\n pinia,\n options: optionsForPlugin,\n })));\n }\n });\n if ((process.env.NODE_ENV !== 'production') &&\n store.$state &&\n typeof store.$state === 'object' &&\n typeof store.$state.constructor === 'function' &&\n !store.$state.constructor.toString().includes('[native code]')) {\n console.warn(`[🍍]: The \"state\" must be a plain object. It cannot be\\n` +\n `\\tstate: () => new MyClass()\\n` +\n `Found in store \"${store.$id}\".`);\n }\n // only apply hydrate to option stores with an initial state in pinia\n if (initialState &&\n isOptionsStore &&\n options.hydrate) {\n options.hydrate(store.$state, initialState);\n }\n isListening = true;\n isSyncListening = true;\n return store;\n}\nfunction defineStore(\n// TODO: add proper types from above\nidOrOptions, setup, setupOptions) {\n let id;\n let options;\n const isSetupStore = typeof setup === 'function';\n if (typeof idOrOptions === 'string') {\n id = idOrOptions;\n // the option store setup will contain the actual options in this case\n options = isSetupStore ? setupOptions : setup;\n }\n else {\n options = idOrOptions;\n id = idOrOptions.id;\n if ((process.env.NODE_ENV !== 'production') && typeof id !== 'string') {\n throw new Error(`[🍍]: \"defineStore()\" must be passed a store id as its first argument.`);\n }\n }\n function useStore(pinia, hot) {\n const hasContext = hasInjectionContext();\n pinia =\n // in test mode, ignore the argument provided as we can always retrieve a\n // pinia instance with getActivePinia()\n ((process.env.NODE_ENV === 'test') && activePinia && activePinia._testing ? null : pinia) ||\n (hasContext ? inject(piniaSymbol, null) : null);\n if (pinia)\n setActivePinia(pinia);\n if ((process.env.NODE_ENV !== 'production') && !activePinia) {\n throw new Error(`[🍍]: \"getActivePinia()\" was called but there was no active Pinia. Are you trying to use a store before calling \"app.use(pinia)\"?\\n` +\n `See https://pinia.vuejs.org/core-concepts/outside-component-usage.html for help.\\n` +\n `This will fail in production.`);\n }\n pinia = activePinia;\n if (!pinia._s.has(id)) {\n // creating the store registers it in `pinia._s`\n if (isSetupStore) {\n createSetupStore(id, setup, options, pinia);\n }\n else {\n createOptionsStore(id, options, pinia);\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n // @ts-expect-error: not the right inferred type\n useStore._pinia = pinia;\n }\n }\n const store = pinia._s.get(id);\n if ((process.env.NODE_ENV !== 'production') && hot) {\n const hotId = '__hot:' + id;\n const newStore = isSetupStore\n ? createSetupStore(hotId, setup, options, pinia, true)\n : createOptionsStore(hotId, assign({}, options), pinia, true);\n hot._hotUpdate(newStore);\n // cleanup the state properties and the store from the cache\n delete pinia.state.value[hotId];\n pinia._s.delete(hotId);\n }\n if ((process.env.NODE_ENV !== 'production') && IS_CLIENT) {\n const currentInstance = getCurrentInstance();\n // save stores in instances to access them devtools\n if (currentInstance &&\n currentInstance.proxy &&\n // avoid adding stores that are just built for hot module replacement\n !hot) {\n const vm = currentInstance.proxy;\n const cache = '_pStores' in vm ? vm._pStores : (vm._pStores = {});\n cache[id] = store;\n }\n }\n // StoreGeneric cannot be casted towards Store\n return store;\n }\n useStore.$id = id;\n return useStore;\n}\n\nlet mapStoreSuffix = 'Store';\n/**\n * Changes the suffix added by `mapStores()`. Can be set to an empty string.\n * Defaults to `\"Store\"`. Make sure to extend the MapStoresCustomization\n * interface if you are using TypeScript.\n *\n * @param suffix - new suffix\n */\nfunction setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS\n) {\n mapStoreSuffix = suffix;\n}\n/**\n * Allows using stores without the composition API (`setup()`) by generating an\n * object to be spread in the `computed` field of a component. It accepts a list\n * of store definitions.\n *\n * @example\n * ```js\n * export default {\n * computed: {\n * // other computed properties\n * ...mapStores(useUserStore, useCartStore)\n * },\n *\n * created() {\n * this.userStore // store with id \"user\"\n * this.cartStore // store with id \"cart\"\n * }\n * }\n * ```\n *\n * @param stores - list of stores to map to an object\n */\nfunction mapStores(...stores) {\n if ((process.env.NODE_ENV !== 'production') && Array.isArray(stores[0])) {\n console.warn(`[🍍]: Directly pass all stores to \"mapStores()\" without putting them in an array:\\n` +\n `Replace\\n` +\n `\\tmapStores([useAuthStore, useCartStore])\\n` +\n `with\\n` +\n `\\tmapStores(useAuthStore, useCartStore)\\n` +\n `This will fail in production if not fixed.`);\n stores = stores[0];\n }\n return stores.reduce((reduced, useStore) => {\n // @ts-expect-error: $id is added by defineStore\n reduced[useStore.$id + mapStoreSuffix] = function () {\n return useStore(this.$pinia);\n };\n return reduced;\n }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapState(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n reduced[key] = function () {\n return useStore(this.$pinia)[key];\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function () {\n const store = useStore(this.$pinia);\n const storeKey = keysOrMapper[key];\n // for some reason TS is unable to infer the type of storeKey to be a\n // function\n return typeof storeKey === 'function'\n ? storeKey.call(this, store)\n : store[storeKey];\n };\n return reduced;\n }, {});\n}\n/**\n * Alias for `mapState()`. You should use `mapState()` instead.\n * @deprecated use `mapState()` instead.\n */\nconst mapGetters = mapState;\n/**\n * Allows directly using actions from your store without using the composition\n * API (`setup()`) by generating an object to be spread in the `methods` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapActions(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function (...args) {\n return useStore(this.$pinia)[key](...args);\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function (...args) {\n return useStore(this.$pinia)[keysOrMapper[key]](...args);\n };\n return reduced;\n }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapWritableState(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n // @ts-ignore\n reduced[key] = {\n get() {\n return useStore(this.$pinia)[key];\n },\n set(value) {\n // it's easier to type it here as any\n return (useStore(this.$pinia)[key] = value);\n },\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-ignore\n reduced[key] = {\n get() {\n return useStore(this.$pinia)[keysOrMapper[key]];\n },\n set(value) {\n // it's easier to type it here as any\n return (useStore(this.$pinia)[keysOrMapper[key]] = value);\n },\n };\n return reduced;\n }, {});\n}\n\n/**\n * Creates an object of references with all the state, getters, and plugin-added\n * state properties of the store. Similar to `toRefs()` but specifically\n * designed for Pinia stores so methods and non reactive properties are\n * completely ignored.\n *\n * @param store - store to extract the refs from\n */\nfunction storeToRefs(store) {\n // See https://github.com/vuejs/pinia/issues/852\n // It's easier to just use toRefs() even if it includes more stuff\n if (isVue2) {\n // @ts-expect-error: toRefs include methods and others\n return toRefs(store);\n }\n else {\n store = toRaw(store);\n const refs = {};\n for (const key in store) {\n const value = store[key];\n if (isRef(value) || isReactive(value)) {\n // @ts-expect-error: the key is state or getter\n refs[key] =\n // ---\n toRef(store, key);\n }\n }\n return refs;\n }\n}\n\n/**\n * Vue 2 Plugin that must be installed for pinia to work. Note **you don't need\n * this plugin if you are using Nuxt.js**. Use the `buildModule` instead:\n * https://pinia.vuejs.org/ssr/nuxt.html.\n *\n * @example\n * ```js\n * import Vue from 'vue'\n * import { PiniaVuePlugin, createPinia } from 'pinia'\n *\n * Vue.use(PiniaVuePlugin)\n * const pinia = createPinia()\n *\n * new Vue({\n * el: '#app',\n * // ...\n * pinia,\n * })\n * ```\n *\n * @param _Vue - `Vue` imported from 'vue'.\n */\nconst PiniaVuePlugin = function (_Vue) {\n // Equivalent of\n // app.config.globalProperties.$pinia = pinia\n _Vue.mixin({\n beforeCreate() {\n const options = this.$options;\n if (options.pinia) {\n const pinia = options.pinia;\n // HACK: taken from provide(): https://github.com/vuejs/composition-api/blob/main/src/apis/inject.ts#L31\n /* istanbul ignore else */\n if (!this._provided) {\n const provideCache = {};\n Object.defineProperty(this, '_provided', {\n get: () => provideCache,\n set: (v) => Object.assign(provideCache, v),\n });\n }\n this._provided[piniaSymbol] = pinia;\n // propagate the pinia instance in an SSR friendly way\n // avoid adding it to nuxt twice\n /* istanbul ignore else */\n if (!this.$pinia) {\n this.$pinia = pinia;\n }\n pinia._a = this;\n if (IS_CLIENT) {\n // this allows calling useStore() outside of a component setup after\n // installing pinia's plugin\n setActivePinia(pinia);\n }\n if (USE_DEVTOOLS) {\n registerPiniaDevtools(pinia._a, pinia);\n }\n }\n else if (!this.$pinia && options.parent && options.parent.$pinia) {\n this.$pinia = options.parent.$pinia;\n }\n },\n destroyed() {\n delete this._pStores;\n },\n });\n};\n\nexport { MutationType, PiniaVuePlugin, acceptHMRUpdate, createPinia, defineStore, getActivePinia, mapActions, mapGetters, mapState, mapStores, mapWritableState, setActivePinia, setMapStoreSuffix, skipHydrate, storeToRefs };\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon calendar-range-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M9,10H7V12H9V10M13,10H11V12H13V10M17,10H15V12H17V10M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V8H19V19Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CalendarRangeIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarRange.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarRange.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CalendarRange.vue?vue&type=template&id=29f118e2\"\nimport script from \"./CalendarRange.vue?vue&type=script&lang=js\"\nexport * from \"./CalendarRange.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon calendar-range-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9,10H7V12H9V10M13,10H11V12H13V10M17,10H15V12H17V10M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V8H19V19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isModalOpen)?_c('NcModal',{attrs:{\"id\":\"unified-search\",\"name\":_vm.t('core', 'Custom date range'),\"show\":_vm.isModalOpen,\"size\":'small',\"clear-view-delay\":0,\"title\":_vm.t('core', 'Custom date range')},on:{\"update:show\":function($event){_vm.isModalOpen=$event},\"close\":_vm.closeModal}},[_c('div',{staticClass:\"unified-search-custom-date-modal\"},[_c('h1',[_vm._v(_vm._s(_vm.t('core', 'Custom date range')))]),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-custom-date-modal__pickers\"},[_c('NcDateTimePicker',{attrs:{\"id\":'unifiedsearch-custom-date-range-start',\"label\":_vm.t('core', 'Pick start date'),\"type\":\"date\"},model:{value:(_vm.dateFilter.startFrom),callback:function ($$v) {_vm.$set(_vm.dateFilter, \"startFrom\", $$v)},expression:\"dateFilter.startFrom\"}}),_vm._v(\" \"),_c('NcDateTimePicker',{attrs:{\"id\":'unifiedsearch-custom-date-range-end',\"label\":_vm.t('core', 'Pick end date'),\"type\":\"date\"},model:{value:(_vm.dateFilter.endAt),callback:function ($$v) {_vm.$set(_vm.dateFilter, \"endAt\", $$v)},expression:\"dateFilter.endAt\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-custom-date-modal__footer\"},[_c('NcButton',{on:{\"click\":_vm.applyCustomRange},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CalendarRangeIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,3084610734)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search in date range'))+\"\\n\\t\\t\\t\\t\")])],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<NcModal v-if=\"isModalOpen\"\n\t\tid=\"unified-search\"\n\t\t:name=\"t('core', 'Custom date range')\"\n\t\t:show.sync=\"isModalOpen\"\n\t\t:size=\"'small'\"\n\t\t:clear-view-delay=\"0\"\n\t\t:title=\"t('core', 'Custom date range')\"\n\t\t@close=\"closeModal\">\n\t\t<!-- Custom date range -->\n\t\t<div class=\"unified-search-custom-date-modal\">\n\t\t\t<h1>{{ t('core', 'Custom date range') }}</h1>\n\t\t\t<div class=\"unified-search-custom-date-modal__pickers\">\n\t\t\t\t<NcDateTimePicker :id=\"'unifiedsearch-custom-date-range-start'\"\n\t\t\t\t\tv-model=\"dateFilter.startFrom\"\n\t\t\t\t\t:label=\"t('core', 'Pick start date')\"\n\t\t\t\t\ttype=\"date\" />\n\t\t\t\t<NcDateTimePicker :id=\"'unifiedsearch-custom-date-range-end'\"\n\t\t\t\t\tv-model=\"dateFilter.endAt\"\n\t\t\t\t\t:label=\"t('core', 'Pick end date')\"\n\t\t\t\t\ttype=\"date\" />\n\t\t\t</div>\n\t\t\t<div class=\"unified-search-custom-date-modal__footer\">\n\t\t\t\t<NcButton @click=\"applyCustomRange\">\n\t\t\t\t\t{{ t('core', 'Search in date range') }}\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<CalendarRangeIcon :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t</div>\n\t</NcModal>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcDateTimePicker from '@nextcloud/vue/dist/Components/NcDateTimePickerNative.js'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport CalendarRangeIcon from 'vue-material-design-icons/CalendarRange.vue'\n\nexport default {\n\tname: 'CustomDateRangeModal',\n\tcomponents: {\n\t\tNcButton,\n\t\tNcModal,\n\t\tCalendarRangeIcon,\n\t\tNcDateTimePicker,\n\t},\n\tprops: {\n\t\tisOpen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdateFilter: { startFrom: null, endAt: null },\n\t\t}\n\t},\n\tcomputed: {\n\t\tisModalOpen: {\n\t\t\tget() {\n\t\t\t\treturn this.isOpen\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tthis.$emit('update:is-open', value)\n\t\t\t},\n\t\t},\n\t},\n\tmethods: {\n\t\tcloseModal() {\n\t\t\tthis.isModalOpen = false\n\t\t},\n\t\tapplyCustomRange() {\n\t\t\tthis.$emit('set:custom-date-range', this.dateFilter)\n\t\t\tthis.closeModal()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.unified-search-custom-date-modal {\n\tpadding: 10px 20px 10px 20px;\n\n\th1 {\n\t\tfont-size: 16px;\n\t\tfont-weight: bolder;\n\t\tline-height: 2em;\n\t}\n\n\t&__pickers {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t&__footer {\n\t\tdisplay: flex;\n\t\tjustify-content: end;\n\t}\n\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDateRangeModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDateRangeModal.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDateRangeModal.vue?vue&type=style&index=0&id=99abc4fc&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDateRangeModal.vue?vue&type=style&index=0&id=99abc4fc&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CustomDateRangeModal.vue?vue&type=template&id=99abc4fc&scoped=true\"\nimport script from \"./CustomDateRangeModal.vue?vue&type=script&lang=js\"\nexport * from \"./CustomDateRangeModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./CustomDateRangeModal.vue?vue&type=style&index=0&id=99abc4fc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"99abc4fc\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./DotsHorizontal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./DotsHorizontal.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon dots-horizontal-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"DotsHorizontalIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./DotsHorizontal.vue?vue&type=template&id=a4d4ab3e\"\nimport script from \"./DotsHorizontal.vue?vue&type=script&lang=js\"\nexport * from \"./DotsHorizontal.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon dots-horizontal-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon filter-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M14,12V19.88C14.04,20.18 13.94,20.5 13.71,20.71C13.32,21.1 12.69,21.1 12.3,20.71L10.29,18.7C10.06,18.47 9.96,18.16 10,17.87V12H9.97L4.21,4.62C3.87,4.19 3.95,3.56 4.38,3.22C4.57,3.08 4.78,3 5,3V3H19V3C19.22,3 19.43,3.08 19.62,3.22C20.05,3.56 20.13,4.19 19.79,4.62L14.03,12H14Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FilterIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Filter.vue?vue&type=template&id=7511a4c6\"\nimport script from \"./Filter.vue?vue&type=script&lang=js\"\nexport * from \"./Filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon filter-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M14,12V19.88C14.04,20.18 13.94,20.5 13.71,20.71C13.32,21.1 12.69,21.1 12.3,20.71L10.29,18.7C10.06,18.47 9.96,18.16 10,17.87V12H9.97L4.21,4.62C3.87,4.19 3.95,3.56 4.38,3.22C4.57,3.08 4.78,3 5,3V3H19V3C19.22,3 19.43,3.08 19.62,3.22C20.05,3.56 20.13,4.19 19.79,4.62L14.03,12H14Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilterChip.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilterChip.vue?vue&type=script&lang=js\"","<template>\n\t<div class=\"chip\">\n\t\t<span class=\"icon\">\n\t\t\t<slot name=\"icon\" />\n\t\t\t<span v-if=\"pretext.length\"> {{ pretext }} : </span>\n\t\t</span>\n\t\t<span class=\"text\">{{ text }}</span>\n\t\t<span class=\"close-icon\" @click=\"deleteChip\">\n\t\t\t<CloseIcon :size=\"18\" />\n\t\t</span>\n\t</div>\n</template>\n\n<script>\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\n\nexport default {\n\tname: 'SearchFilterChip',\n\tcomponents: {\n\t\tCloseIcon,\n\t},\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tpretext: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tmethods: {\n\t\tdeleteChip() {\n\t\t\tthis.$emit('delete', this.filter)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.chip {\n display: flex;\n align-items: center;\n padding: 2px 4px;\n border: 1px solid var(--color-primary-element-light);\n border-radius: 20px;\n background-color: var(--color-primary-element-light);\n margin: 2px;\n\n .icon {\n display: flex;\n align-items: center;\n padding-right: 5px;\n\n img {\n width: 20px;\n padding: 2px;\n border-radius: 20px;\n filter: var(--background-invert-if-bright);\n }\n }\n\n .text {\n margin: 0 2px;\n }\n\n .close-icon {\n cursor: pointer ;\n\n :hover {\n filter: invert(20%);\n }\n }\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilterChip.vue?vue&type=style&index=0&id=5dc4d462&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilterChip.vue?vue&type=style&index=0&id=5dc4d462&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchFilterChip.vue?vue&type=template&id=5dc4d462&scoped=true\"\nimport script from \"./SearchFilterChip.vue?vue&type=script&lang=js\"\nexport * from \"./SearchFilterChip.vue?vue&type=script&lang=js\"\nimport style0 from \"./SearchFilterChip.vue?vue&type=style&index=0&id=5dc4d462&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5dc4d462\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"chip\"},[_c('span',{staticClass:\"icon\"},[_vm._t(\"icon\"),_vm._v(\" \"),(_vm.pretext.length)?_c('span',[_vm._v(\" \"+_vm._s(_vm.pretext)+\" : \")]):_vm._e()],2),_vm._v(\" \"),_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.text))]),_vm._v(\" \"),_c('span',{staticClass:\"close-icon\",on:{\"click\":_vm.deleteChip}},[_c('CloseIcon',{attrs:{\"size\":18}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ListBox.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ListBox.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon list-box-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7 7H9V9H7V7M7 11H9V13H7V11M7 15H9V17H7V15M17 17H11V15H17V17M17 13H11V11H17V13M17 9H11V7H17V9Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ListBoxIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./ListBox.vue?vue&type=template&id=8c20def8\"\nimport script from \"./ListBox.vue?vue&type=script&lang=js\"\nexport * from \"./ListBox.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon list-box-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7 7H9V9H7V7M7 11H9V13H7V11M7 15H9V17H7V15M17 17H11V15H17V17M17 13H11V11H17V13M17 9H11V7H17V9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import './assets/NcRichText-BMe-xENJ.css';\nimport i from \"./Components/NcActionButton.mjs\";\nimport { N as e } from \"./chunks/NcActionButtonGroup-SS3PkUD2.mjs\";\nimport m from \"./Components/NcActionCaption.mjs\";\nimport a from \"./Components/NcActionCheckbox.mjs\";\nimport { N as p } from \"./chunks/NcActionInput-BHq3Le0q.mjs\";\nimport c from \"./Components/NcActionLink.mjs\";\nimport s from \"./Components/NcActionRadio.mjs\";\nimport N from \"./Components/NcActionRouter.mjs\";\nimport { N as n } from \"./chunks/NcActions-CpU9WXzM.mjs\";\nimport f from \"./Components/NcActionSeparator.mjs\";\nimport l from \"./Components/NcActionText.mjs\";\nimport u from \"./Components/NcActionTextEditable.mjs\";\nimport { N as d } from \"./chunks/NcAppContent-BDwOdxJE.mjs\";\nimport g from \"./Components/NcAppContentDetails.mjs\";\nimport A from \"./Components/NcAppContentList.mjs\";\nimport { N as S } from \"./chunks/NcAppNavigation-C1Qe3lsk.mjs\";\nimport { N as b } from \"./chunks/NcAppNavigationCaption-DsT6O4Hx.mjs\";\nimport v from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as T } from \"./chunks/NcAppNavigationItem-bjPcEx5D.mjs\";\nimport k from \"./Components/NcAppNavigationList.mjs\";\nimport P from \"./Components/NcAppNavigationNew.mjs\";\nimport { N as x } from \"./chunks/NcAppNavigationNewItem-BHCgaCoK.mjs\";\nimport { N as C } from \"./chunks/NcAppNavigationSettings-BQD7JA4m.mjs\";\nimport I from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as h } from \"./chunks/NcAppSettingsDialog-DeFBTD2J.mjs\";\nimport E from \"./Components/NcAppSettingsSection.mjs\";\nimport { N as B } from \"./chunks/NcAppSidebar-CdSvRI6l.mjs\";\nimport R from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as L } from \"./chunks/NcAvatar-e0M-nnF6.mjs\";\nimport { u as ct } from \"./chunks/NcAvatar-e0M-nnF6.mjs\";\nimport { N as y } from \"./chunks/NcBreadcrumb-CVMyBckA.mjs\";\nimport { N as M } from \"./chunks/NcBreadcrumbs-DqRU0BfB.mjs\";\nimport O from \"./Components/NcButton.mjs\";\nimport { N as D } from \"./chunks/NcCheckboxRadioSwitch-7Yib86y3.mjs\";\nimport { N as _ } from \"./chunks/NcColorPicker-Dkxeigs5.mjs\";\nimport { N as j } from \"./chunks/NcContent-COIw1X7V.mjs\";\nimport F from \"./Components/NcCounterBubble.mjs\";\nimport { N as W } from \"./chunks/NcDashboardWidget-Cxz_n1AN.mjs\";\nimport { N as w } from \"./chunks/NcDashboardWidgetItem-BV2tuXoj.mjs\";\nimport { N as z } from \"./chunks/NcDateTime-B0oaElJX.mjs\";\nimport { u as Nt } from \"./chunks/NcDateTime-B0oaElJX.mjs\";\nimport G from \"./Components/NcDateTimePicker.mjs\";\nimport V from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as H } from \"./chunks/NcDialog-D6YSjidf.mjs\";\nimport { N as K } from \"./chunks/NcDialogButton-DQFoaN7q.mjs\";\nimport { N as U } from \"./chunks/NcEmojiPicker-fRx7dTTf.mjs\";\nimport $ from \"./Components/NcEmptyContent.mjs\";\nimport q from \"./Components/NcGuestContent.mjs\";\nimport { N as J } from \"./chunks/NcHeaderMenu-CXBimxcN.mjs\";\nimport { N as Q } from \"./chunks/index-CnpswYi6.mjs\";\nimport { N as X } from \"./chunks/NcIconSvgWrapper-BTdzvQGV.mjs\";\nimport { N as Y } from \"./chunks/NcListItem-C5oWvAZQ.mjs\";\nimport { N as Z } from \"./chunks/NcListItemIcon-WH9TUCxb.mjs\";\nimport oo from \"./Components/NcLoadingIcon.mjs\";\nimport ro from \"./Components/NcModal.mjs\";\nimport to from \"./Components/NcNoteCard.mjs\";\nimport { N as io } from \"./chunks/NcPasswordField-BPAivxc_.mjs\";\nimport { N as eo } from \"./chunks/NcPopover--V3R3EKV.mjs\";\nimport { N as mo } from \"./chunks/NcProgressBar-DDAeXyp8.mjs\";\nimport { N as ao } from \"./chunks/NcRelatedResourcesPanel-LTNqJecS.mjs\";\nimport { N as po } from \"./chunks/index-DYXjj9ET.mjs\";\nimport { r as ft } from \"./chunks/index-DYXjj9ET.mjs\";\nimport { N as co, a as so } from \"./chunks/NcRichContenteditable-CHggLQuR.mjs\";\nimport { N as No } from \"./chunks/NcRichText-BBXbh0Hh.mjs\";\nimport { N as ut, h as dt, d as gt, i as At, b as St, r as bt, c as vt, a as Tt } from \"./chunks/index-CU14QsCg.mjs\";\nimport \"unist-util-visit\";\nimport \"unist-builder\";\nimport \"@nextcloud/router\";\nimport \"@vueuse/core\";\nimport { a as Pt, g as xt, b as Ct, c as It, d as ht, s as Et } from \"./chunks/referencePickerModal-DUhJWt2e.mjs\";\nimport \"@nextcloud/axios\";\n/* empty css */\nimport { N as no } from \"./chunks/NcSelect-BVmjiQFa.mjs\";\nimport { N as fo } from \"./chunks/NcTextField-CU-YIhL3.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as lo } from \"./chunks/NcSavingIndicatorIcon-Bf0SEmgS.mjs\";\nimport { N as uo } from \"./chunks/NcSelectTags-Ccv-eQzZ.mjs\";\nimport { N as go } from \"./chunks/NcSettingsInputText-DXxmqvcd.mjs\";\nimport { N as Ao } from \"./chunks/NcSettingsSection-DBe4fKFA.mjs\";\nimport { N as So } from \"./chunks/NcSettingsSelectGroup-d2TLOW1O.mjs\";\nimport { N as bo } from \"./chunks/NcTimezonePicker-gvp9MAcg.mjs\";\nimport { N as vo } from \"./chunks/NcUserBubble-CbufscPi.mjs\";\nimport { N as To } from \"./chunks/NcUserStatusIcon-0SGYQL9L.mjs\";\nimport ko from \"./Components/NcTextArea.mjs\";\nimport { isFullscreenState as Rt, useIsFullscreen as Lt } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT as Mt, MOBILE_SMALL_BREAKPOINT as Ot, isMobileState as Dt, useIsMobile as _t, useIsSmallMobile as jt } from \"./Composables/useIsMobile.mjs\";\nimport { E as Wt, a as wt, e as zt, g as Gt, s as Vt } from \"./chunks/emoji-k4gWHxrE.mjs\";\nimport { u as Kt } from \"./chunks/usernameToColor-iYF-oKTP.mjs\";\nimport { directive as Po } from \"./Directives/Focus.mjs\";\nimport { directive as xo } from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as $t } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as Jt } from \"./Mixins/isFullscreen.mjs\";\nimport { default as Xt } from \"./Mixins/isMobile.mjs\";\nimport \"vue\";\nimport { VTooltip as Co } from \"floating-vue\";\nimport { VTooltip as Zt } from \"floating-vue\";\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Io = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton: i,\n NcActionButtonGroup: e,\n NcActionCaption: m,\n NcActionCheckbox: a,\n NcActionInput: p,\n NcActionLink: c,\n NcActionRadio: s,\n NcActionRouter: N,\n NcActionSeparator: f,\n NcActionText: l,\n NcActionTextEditable: u,\n NcActions: n,\n NcAppContent: d,\n NcAppContentDetails: g,\n NcAppContentList: A,\n NcAppNavigation: S,\n NcAppNavigationCaption: b,\n NcAppNavigationIconBullet: v,\n NcAppNavigationItem: T,\n NcAppNavigationList: k,\n NcAppNavigationNew: P,\n NcAppNavigationNewItem: x,\n NcAppNavigationSettings: C,\n NcAppNavigationSpacer: I,\n NcAppSettingsDialog: h,\n NcAppSettingsSection: E,\n NcAppSidebar: B,\n NcAppSidebarTab: R,\n NcAutoCompleteResult: co,\n NcAvatar: L,\n NcBreadcrumb: y,\n NcBreadcrumbs: M,\n NcButton: O,\n NcCheckboxRadioSwitch: D,\n NcColorPicker: _,\n NcContent: j,\n NcCounterBubble: F,\n NcDashboardWidget: W,\n NcDashboardWidgetItem: w,\n NcDateTime: z,\n NcDateTimePicker: G,\n NcDateTimePickerNative: V,\n NcDialog: H,\n NcDialogButton: K,\n NcEmojiPicker: U,\n NcEmptyContent: $,\n NcGuestContent: q,\n NcHeaderMenu: J,\n NcHighlight: Q,\n NcIconSvgWrapper: X,\n NcListItem: Y,\n NcListItemIcon: Z,\n NcLoadingIcon: oo,\n NcMentionBubble: po,\n NcModal: ro,\n NcNoteCard: to,\n NcPasswordField: io,\n NcPopover: eo,\n NcProgressBar: mo,\n NcRelatedResourcesPanel: ao,\n NcRichContenteditable: so,\n NcRichText: No,\n NcSavingIndicatorIcon: lo,\n NcSelect: no,\n NcSelectTags: uo,\n NcSettingsInputText: go,\n NcSettingsSection: Ao,\n NcSettingsSelectGroup: So,\n NcTextArea: ko,\n NcTextField: fo,\n NcTimezonePicker: bo,\n NcUserBubble: vo,\n NcUserStatusIcon: To\n}, Symbol.toStringTag, { value: \"Module\" }));\n/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst et = (o) => o.type === \"click\" || o.type === \"keydown\" && o.key === \"Enter\";\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst ho = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: Po,\n Linkify: xo,\n Tooltip: Co\n}, Symbol.toStringTag, { value: \"Module\" })), mt = {\n install(o) {\n Object.entries(Io).forEach(([t, r]) => {\n o.component(r.name || t, r);\n }), Object.entries(ho).forEach(([t, r]) => {\n o.directive(t, r);\n });\n }\n};\nexport {\n Wt as EmojiSkinTone,\n Po as Focus,\n xo as Linkify,\n Mt as MOBILE_BREAKPOINT,\n Ot as MOBILE_SMALL_BREAKPOINT,\n i as NcActionButton,\n e as NcActionButtonGroup,\n m as NcActionCaption,\n a as NcActionCheckbox,\n p as NcActionInput,\n c as NcActionLink,\n s as NcActionRadio,\n N as NcActionRouter,\n f as NcActionSeparator,\n l as NcActionText,\n u as NcActionTextEditable,\n n as NcActions,\n d as NcAppContent,\n g as NcAppContentDetails,\n A as NcAppContentList,\n S as NcAppNavigation,\n b as NcAppNavigationCaption,\n v as NcAppNavigationIconBullet,\n T as NcAppNavigationItem,\n k as NcAppNavigationList,\n P as NcAppNavigationNew,\n x as NcAppNavigationNewItem,\n C as NcAppNavigationSettings,\n I as NcAppNavigationSpacer,\n h as NcAppSettingsDialog,\n E as NcAppSettingsSection,\n B as NcAppSidebar,\n R as NcAppSidebarTab,\n co as NcAutoCompleteResult,\n L as NcAvatar,\n y as NcBreadcrumb,\n M as NcBreadcrumbs,\n O as NcButton,\n D as NcCheckboxRadioSwitch,\n _ as NcColorPicker,\n j as NcContent,\n F as NcCounterBubble,\n ut as NcCustomPickerRenderResult,\n W as NcDashboardWidget,\n w as NcDashboardWidgetItem,\n z as NcDateTime,\n G as NcDateTimePicker,\n V as NcDateTimePickerNative,\n H as NcDialog,\n K as NcDialogButton,\n U as NcEmojiPicker,\n $ as NcEmptyContent,\n q as NcGuestContent,\n J as NcHeaderMenu,\n Q as NcHighlight,\n X as NcIconSvgWrapper,\n Y as NcListItem,\n Z as NcListItemIcon,\n oo as NcLoadingIcon,\n po as NcMentionBubble,\n ro as NcModal,\n to as NcNoteCard,\n io as NcPasswordField,\n eo as NcPopover,\n mo as NcProgressBar,\n ao as NcRelatedResourcesPanel,\n so as NcRichContenteditable,\n No as NcRichText,\n lo as NcSavingIndicatorIcon,\n no as NcSelect,\n uo as NcSelectTags,\n go as NcSettingsInputText,\n Ao as NcSettingsSection,\n So as NcSettingsSelectGroup,\n ko as NcTextArea,\n fo as NcTextField,\n bo as NcTimezonePicker,\n vo as NcUserBubble,\n To as NcUserStatusIcon,\n mt as NextcloudVuePlugin,\n Zt as Tooltip,\n Pt as anyLinkProviderId,\n $t as clickOutsideOptions,\n wt as emojiAddRecent,\n zt as emojiSearch,\n Gt as getCurrentSkinTone,\n xt as getLinkWithPicker,\n Ct as getProvider,\n It as getProviders,\n dt as hasInteractiveView,\n et as isA11yActivation,\n gt as isCustomPickerElementRegistered,\n Jt as isFullscreen,\n Rt as isFullscreenState,\n Xt as isMobile,\n Dt as isMobileState,\n At as isWidgetRegistered,\n St as registerCustomPickerElement,\n bt as registerWidget,\n vt as renderCustomPickerElement,\n Tt as renderWidget,\n ft as richEditor,\n ht as searchProvider,\n Vt as setCurrentSkinTone,\n Et as sortProviders,\n Nt as useFormatDateTime,\n Lt as useIsFullscreen,\n _t as useIsMobile,\n jt as useIsSmallMobile,\n ct as userStatus,\n Kt as usernameToColor\n};\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon alert-circle-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AlertCircleOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircleOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircleOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AlertCircleOutline.vue?vue&type=template&id=4aed4486\"\nimport script from \"./AlertCircleOutline.vue?vue&type=script&lang=js\"\nexport * from \"./AlertCircleOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-circle-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchableList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchableList.vue?vue&type=script&lang=js\"","<!--\n - @copyright 2023 Marco Ambrosini <marcoambrosini@proton.me>\n -\n - @author Marco Ambrosini <marcoambrosini@proton.me>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<NcPopover :shown=\"opened\"\n\t\t@show=\"opened = true\"\n\t\t@hide=\"opened = false\">\n\t\t<template #trigger>\n\t\t\t<slot ref=\"popoverTrigger\" name=\"trigger\" />\n\t\t</template>\n\t\t<div class=\"searchable-list__wrapper\">\n\t\t\t<NcTextField :value.sync=\"searchTerm\"\n\t\t\t\t:label=\"labelText\"\n\t\t\t\ttrailing-button-icon=\"close\"\n\t\t\t\t:show-trailing-button=\"searchTerm !== ''\"\n\t\t\t\t@update:value=\"searchTermChanged\"\n\t\t\t\t@trailing-button-click=\"clearSearch\">\n\t\t\t\t<Magnify :size=\"20\" />\n\t\t\t</NcTextField>\n\t\t\t<ul v-if=\"filteredList.length > 0\" class=\"searchable-list__list\">\n\t\t\t\t<li v-for=\"element in filteredList\"\n\t\t\t\t\t:key=\"element.id\"\n\t\t\t\t\t:title=\"element.displayName\"\n\t\t\t\t\trole=\"button\">\n\t\t\t\t\t<NcButton alignment=\"start\"\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\t:wide=\"true\"\n\t\t\t\t\t\t@click=\"itemSelected(element)\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<NcAvatar :user=\"element.user\" :show-user-status=\"false\" :hide-favorite=\"false\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ element.displayName }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t\t<div v-else class=\"searchable-list__empty-content\">\n\t\t\t\t<NcEmptyContent :name=\"emptyContentText\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<AlertCircleOutline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcEmptyContent>\n\t\t\t</div>\n\t\t</div>\n\t</NcPopover>\n</template>\n\n<script>\nimport { NcPopover, NcTextField, NcAvatar, NcEmptyContent, NcButton } from '@nextcloud/vue'\n\nimport AlertCircleOutline from 'vue-material-design-icons/AlertCircleOutline.vue'\nimport Magnify from 'vue-material-design-icons/Magnify.vue'\n\nexport default {\n\tname: 'SearchableList',\n\n\tcomponents: {\n\t\tNcPopover,\n\t\tNcTextField,\n\t\tMagnify,\n\t\tAlertCircleOutline,\n\t\tNcAvatar,\n\t\tNcEmptyContent,\n\t\tNcButton,\n\t},\n\n\tprops: {\n\t\tlabelText: {\n\t\t\ttype: String,\n\t\t\tdefault: 'this is a label',\n\t\t},\n\n\t\tsearchList: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\n\t\temptyContentText: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\topened: false,\n\t\t\terror: false,\n\t\t\tsearchTerm: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tfilteredList() {\n\t\t\treturn this.searchList.filter((element) => {\n\t\t\t\tif (!this.searchTerm.toLowerCase().length) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn ['displayName'].some(prop => element[prop].toLowerCase().includes(this.searchTerm.toLowerCase()))\n\t\t\t})\n\t\t},\n\t},\n\n\tmethods: {\n\t\tclearSearch() {\n\t\t\tthis.searchTerm = ''\n\t\t},\n\t\titemSelected(element) {\n\t\t\tthis.$emit('item-selected', element)\n\t\t\tthis.clearSearch()\n\t\t\tthis.opened = false\n\t\t},\n\t\tsearchTermChanged(term) {\n\t\t\tthis.$emit('search-term-change', term)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.searchable-list {\n\t&__wrapper {\n\t\tpadding: calc(var(--default-grid-baseline) * 3);\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\twidth: 250px;\n\t}\n\n\t&__list {\n\t\twidth: 100%;\n\t\tmax-height: 284px;\n\t\toverflow-y: auto;\n\t\tmargin-top: var(--default-grid-baseline);\n\t\tpadding: var(--default-grid-baseline);\n\n\t\t:deep(.button-vue) {\n\t\t\tborder-radius: var(--border-radius-large) !important;\n\t\t\tspan {\n\t\t\t\tfont-weight: initial;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__empty-content {\n\t\tmargin-top: calc(var(--default-grid-baseline) * 3);\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchableList.vue?vue&type=style&index=0&id=7cf71a2c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchableList.vue?vue&type=style&index=0&id=7cf71a2c&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchableList.vue?vue&type=template&id=7cf71a2c&scoped=true\"\nimport script from \"./SearchableList.vue?vue&type=script&lang=js\"\nexport * from \"./SearchableList.vue?vue&type=script&lang=js\"\nimport style0 from \"./SearchableList.vue?vue&type=style&index=0&id=7cf71a2c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7cf71a2c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcPopover',{attrs:{\"shown\":_vm.opened},on:{\"show\":function($event){_vm.opened = true},\"hide\":function($event){_vm.opened = false}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_vm._t(\"trigger\")]},proxy:true}],null,true)},[_vm._v(\" \"),_c('div',{staticClass:\"searchable-list__wrapper\"},[_c('NcTextField',{attrs:{\"value\":_vm.searchTerm,\"label\":_vm.labelText,\"trailing-button-icon\":\"close\",\"show-trailing-button\":_vm.searchTerm !== ''},on:{\"update:value\":[function($event){_vm.searchTerm=$event},_vm.searchTermChanged],\"trailing-button-click\":_vm.clearSearch}},[_c('Magnify',{attrs:{\"size\":20}})],1),_vm._v(\" \"),(_vm.filteredList.length > 0)?_c('ul',{staticClass:\"searchable-list__list\"},_vm._l((_vm.filteredList),function(element){return _c('li',{key:element.id,attrs:{\"title\":element.displayName,\"role\":\"button\"}},[_c('NcButton',{attrs:{\"alignment\":\"start\",\"type\":\"tertiary\",\"wide\":true},on:{\"click\":function($event){return _vm.itemSelected(element)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcAvatar',{attrs:{\"user\":element.user,\"show-user-status\":false,\"hide-favorite\":false}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(element.displayName)+\"\\n\\t\\t\\t\\t\")])],1)}),0):_c('div',{staticClass:\"searchable-list__empty-content\"},[_c('NcEmptyContent',{attrs:{\"name\":_vm.emptyContentText},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlertCircleOutline')]},proxy:true}])})],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResult.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResult.vue?vue&type=script&lang=js\"","<template>\n\t<NcListItem class=\"result-items__item\"\n\t\t:name=\"title\"\n\t\t:bold=\"false\"\n\t\t:href=\"resourceUrl\"\n\t\ttarget=\"_self\">\n\t\t<template #icon>\n\t\t\t<div aria-hidden=\"true\"\n\t\t\t\tclass=\"result-items__item-icon\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'result-items__item-icon--rounded': rounded,\n\t\t\t\t\t'result-items__item-icon--no-preview': !isValidIconOrPreviewUrl(thumbnailUrl),\n\t\t\t\t\t'result-items__item-icon--with-thumbnail': isValidIconOrPreviewUrl(thumbnailUrl),\n\t\t\t\t\t[icon]: !isValidIconOrPreviewUrl(icon),\n\t\t\t\t}\"\n\t\t\t\t:style=\"{\n\t\t\t\t\tbackgroundImage: isValidIconOrPreviewUrl(icon) ? `url(${icon})` : '',\n\t\t\t\t}\">\n\t\t\t\t<img v-if=\"isValidIconOrPreviewUrl(thumbnailUrl) && !thumbnailHasError\"\n\t\t\t\t\t:src=\"thumbnailUrl\"\n\t\t\t\t\t@error=\"thumbnailErrorHandler\">\n\t\t\t</div>\n\t\t</template>\n\t\t<template #subname>\n\t\t\t{{ subline }}\n\t\t</template>\n\t</NcListItem>\n</template>\n\n<script>\nimport NcListItem from '@nextcloud/vue/dist/Components/NcListItem.js'\n\nexport default {\n\tname: 'SearchResult',\n\tcomponents: {\n\t\tNcListItem,\n\t},\n\tprops: {\n\t\tthumbnailUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tresourceUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\trounded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Only used for the first result as a visual feedback\n\t\t * so we can keep the search input focused but pressing\n\t\t * enter still opens the first result\n\t\t */\n\t\tfocused: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tthumbnailHasError: false,\n\t\t}\n\t},\n\twatch: {\n\t\tthumbnailUrl() {\n\t\t\tthis.thumbnailHasError = false\n\t\t},\n\t},\n\tmethods: {\n\t\tisValidIconOrPreviewUrl(url) {\n\t\t\treturn /^https?:\\/\\//.test(url) || url.startsWith('/')\n\t\t},\n\t\tthumbnailErrorHandler() {\n\t\t\tthis.thumbnailHasError = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n$clickable-area: 44px;\n$margin: 10px;\n\n.result-items {\n &__item {\n\n ::v-deep a {\n border-radius: 12px;\n border: 2px solid transparent;\n border-radius: var(--border-radius-large) !important;\n\n &--focused {\n background-color: var(--color-background-hover);\n }\n\n &:active,\n &:hover,\n &:focus {\n background-color: var(--color-background-hover);\n border: 2px solid var(--color-border-maxcontrast);\n }\n\n * {\n cursor: pointer;\n }\n\n }\n\n &-icon {\n overflow: hidden;\n width: $clickable-area;\n height: $clickable-area;\n border-radius: var(--border-radius);\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 32px;\n\n &--rounded {\n border-radius: math.div($clickable-area, 2);\n }\n\n &--no-preview {\n background-size: 32px;\n }\n\n &--with-thumbnail {\n background-size: cover;\n }\n\n &--with-thumbnail:not(&--rounded) {\n // compensate for border\n max-width: $clickable-area - 2px;\n max-height: $clickable-area - 2px;\n border: 1px solid var(--color-border);\n }\n\n img {\n // Make sure to keep ratio\n width: 100%;\n height: 100%;\n\n object-fit: cover;\n object-position: center;\n }\n }\n\n }\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResult.vue?vue&type=style&index=0&id=67d9a3cf&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResult.vue?vue&type=style&index=0&id=67d9a3cf&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResult.vue?vue&type=template&id=67d9a3cf&scoped=true\"\nimport script from \"./SearchResult.vue?vue&type=script&lang=js\"\nexport * from \"./SearchResult.vue?vue&type=script&lang=js\"\nimport style0 from \"./SearchResult.vue?vue&type=style&index=0&id=67d9a3cf&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"67d9a3cf\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcListItem',{staticClass:\"result-items__item\",attrs:{\"name\":_vm.title,\"bold\":false,\"href\":_vm.resourceUrl,\"target\":\"_self\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"result-items__item-icon\",class:{\n\t\t\t\t'result-items__item-icon--rounded': _vm.rounded,\n\t\t\t\t'result-items__item-icon--no-preview': !_vm.isValidIconOrPreviewUrl(_vm.thumbnailUrl),\n\t\t\t\t'result-items__item-icon--with-thumbnail': _vm.isValidIconOrPreviewUrl(_vm.thumbnailUrl),\n\t\t\t\t[_vm.icon]: !_vm.isValidIconOrPreviewUrl(_vm.icon),\n\t\t\t},style:({\n\t\t\t\tbackgroundImage: _vm.isValidIconOrPreviewUrl(_vm.icon) ? `url(${_vm.icon})` : '',\n\t\t\t}),attrs:{\"aria-hidden\":\"true\"}},[(_vm.isValidIconOrPreviewUrl(_vm.thumbnailUrl) && !_vm.thumbnailHasError)?_c('img',{attrs:{\"src\":_vm.thumbnailUrl},on:{\"error\":_vm.thumbnailErrorHandler}}):_vm._e()])]},proxy:true},{key:\"subname\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.subline)+\"\\n\\t\")]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2023, Fon E. Noel NFEBE <fenn25.fn@gmail.com>\n *\n * @author Fon E. Noel NFEBE <fenn25.fn@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\n\n/**\n * Create a cancel token\n *\n * @return {import('axios').CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Get the list of available search providers\n *\n * @return {Promise<Array>}\n */\nexport async function getProviders() {\n\ttry {\n\t\tconst { data } = await axios.get(generateOcsUrl('search/providers'), {\n\t\t\tparams: {\n\t\t\t\t// Sending which location we're currently at\n\t\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t\t},\n\t\t})\n\t\tif ('ocs' in data && 'data' in data.ocs && Array.isArray(data.ocs.data) && data.ocs.data.length > 0) {\n\t\t\t// Providers are sorted by the api based on their order key\n\t\t\treturn data.ocs.data\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n\treturn []\n}\n\n/**\n * Get the list of available search providers\n *\n * @param {object} options destructuring object\n * @param {string} options.type the type to search\n * @param {string} options.query the search\n * @param {number|string|undefined} options.cursor the offset for paginated searches\n * @param {string} options.since the search\n * @param {string} options.until the search\n * @param {string} options.limit the search\n * @param {string} options.person the search\n * @param {object} options.extraQueries additional queries to filter search results\n * @return {object} {request: Promise, cancel: Promise}\n */\nexport function search({ type, query, cursor, since, until, limit, person, extraQueries = {} }) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\tconst request = async () => axios.get(generateOcsUrl('search/providers/{type}/search', { type }), {\n\t\tcancelToken: cancelToken.token,\n\t\tparams: {\n\t\t\tterm: query,\n\t\t\tcursor,\n\t\t\tsince,\n\t\t\tuntil,\n\t\t\tlimit,\n\t\t\tperson,\n\t\t\t// Sending which location we're currently at\n\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t\t...extraQueries,\n\t\t},\n\t})\n\n\treturn {\n\t\trequest,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n\n/**\n * Get the list of active contacts\n *\n * @param {object} filter filter contacts by string\n * @param filter.searchTerm\n * @return {object} {request: Promise}\n */\nexport async function getContacts({ searchTerm }) {\n\tconst { data: { contacts } } = await axios.post(generateUrl('/contactsmenu/contacts'), {\n\t\tfilter: searchTerm,\n\t})\n\t/*\n\t * Add authenticated user to list of contacts for search filter\n\t * If authtenicated user is searching/filtering, do not add them to the list\n\t */\n\tif (!searchTerm) {\n\t\tlet authenticatedUser = getCurrentUser()\n\t\tauthenticatedUser = {\n\t\t\tid: authenticatedUser.uid,\n\t\t\tfullName: authenticatedUser.displayName,\n\t\t\temailAddresses: [],\n\t\t }\n\t\tcontacts.unshift(authenticatedUser)\n\t\treturn contacts\n\t }\n\n\treturn contacts\n}\n","/*\n * @copyright Copyright (c) 2024 Fon E. Noel NFEBE <opensource@nfebe.com>\n *\n * @author Fon E. Noel NFEBE <opensource@nfebe.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { defineStore } from 'pinia'\n\nexport const useSearchStore = defineStore({\n\tid: 'search',\n\n\tstate: () => ({\n\t\texternalFilters: [],\n\t}),\n\n\tactions: {\n\t\tregisterExternalFilter({ id, appId, label, callback, icon }) {\n\t\t\tthis.externalFilters.push({ id, appId, name: label, callback, icon, isPluginFilter: true })\n\t\t},\n\t},\n})\n","<template>\n\t<NcModal id=\"unified-search\"\n\t\tref=\"unifiedSearchModal\"\n\t\t:show.sync=\"internalIsVisible\"\n\t\t:clear-view-delay=\"0\"\n\t\t@close=\"closeModal\">\n\t\t<CustomDateRangeModal :is-open=\"showDateRangeModal\"\n\t\t\tclass=\"unified-search__date-range\"\n\t\t\t@set:custom-date-range=\"setCustomDateRange\"\n\t\t\t@update:is-open=\"showDateRangeModal = $event\" />\n\t\t<!-- Unified search form -->\n\t\t<div ref=\"unifiedSearch\" class=\"unified-search-modal\">\n\t\t\t<div class=\"unified-search-modal__header\">\n\t\t\t\t<h2>{{ t('core', 'Unified search') }}</h2>\n\t\t\t\t<NcInputField ref=\"searchInput\"\n\t\t\t\t\t:value.sync=\"searchQuery\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t:label=\"t('core', 'Search apps, files, tags, messages') + '...'\"\n\t\t\t\t\t@update:value=\"debouncedFind\" />\n\t\t\t\t<div class=\"unified-search-modal__filters\">\n\t\t\t\t\t<NcActions :menu-name=\"t('core', 'Places')\" :open.sync=\"providerActionMenuIsOpen\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ListBox :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<!-- Provider id's may be duplicated since, plugin filters could depend on a provider that is already in the defaults.\n\t\t\t\t\t\tprovider.id concatenated to provider.name is used to create the item id, if same then, there should be an issue. -->\n\t\t\t\t\t\t<NcActionButton v-for=\"provider in providers\"\n\t\t\t\t\t\t\t:key=\"`${provider.id}-${provider.name.replace(/\\s/g, '')}`\"\n\t\t\t\t\t\t\t@click=\"addProviderFilter(provider)\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<img :src=\"provider.icon\" class=\"filter-button__icon\" alt=\"\">\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t{{ provider.name }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t</NcActions>\n\t\t\t\t\t<NcActions :menu-name=\"t('core', 'Date')\" :open.sync=\"dateActionMenuIsOpen\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<CalendarRangeIcon :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<NcActionButton :close-after-click=\"true\" @click=\"applyQuickDateRange('today')\">\n\t\t\t\t\t\t\t{{ t('core', 'Today') }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t<NcActionButton :close-after-click=\"true\" @click=\"applyQuickDateRange('7days')\">\n\t\t\t\t\t\t\t{{ t('core', 'Last 7 days') }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t<NcActionButton :close-after-click=\"true\" @click=\"applyQuickDateRange('30days')\">\n\t\t\t\t\t\t\t{{ t('core', 'Last 30 days') }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t<NcActionButton :close-after-click=\"true\" @click=\"applyQuickDateRange('thisyear')\">\n\t\t\t\t\t\t\t{{ t('core', 'This year') }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t<NcActionButton :close-after-click=\"true\" @click=\"applyQuickDateRange('lastyear')\">\n\t\t\t\t\t\t\t{{ t('core', 'Last year') }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t<NcActionButton :close-after-click=\"true\" @click=\"applyQuickDateRange('custom')\">\n\t\t\t\t\t\t\t{{ t('core', 'Custom date range') }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t</NcActions>\n\t\t\t\t\t<SearchableList :label-text=\"t('core', 'Search people')\"\n\t\t\t\t\t\t:search-list=\"userContacts\"\n\t\t\t\t\t\t:empty-content-text=\"t('core', 'Not found')\"\n\t\t\t\t\t\t@search-term-change=\"debouncedFilterContacts\"\n\t\t\t\t\t\t@item-selected=\"applyPersonFilter\">\n\t\t\t\t\t\t<template #trigger>\n\t\t\t\t\t\t\t<NcButton>\n\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t<AccountGroup :size=\"20\" />\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t{{ t('core', 'People') }}\n\t\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</SearchableList>\n\t\t\t\t\t<NcButton v-if=\"supportFiltering\" @click=\"closeModal\">\n\t\t\t\t\t\t{{ t('core', 'Filter in current view') }}\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<FilterIcon :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"unified-search-modal__filters-applied\">\n\t\t\t\t\t<FilterChip v-for=\"filter in filters\"\n\t\t\t\t\t\t:key=\"filter.id\"\n\t\t\t\t\t\t:text=\"filter.name ?? filter.text\"\n\t\t\t\t\t\t:pretext=\"''\"\n\t\t\t\t\t\t@delete=\"removeFilter(filter)\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<NcAvatar v-if=\"filter.type === 'person'\"\n\t\t\t\t\t\t\t\t:user=\"filter.user\"\n\t\t\t\t\t\t\t\t:size=\"24\"\n\t\t\t\t\t\t\t\t:disable-menu=\"true\"\n\t\t\t\t\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t\t\t\t\t:hide-favorite=\"false\" />\n\t\t\t\t\t\t\t<CalendarRangeIcon v-else-if=\"filter.type === 'date'\" />\n\t\t\t\t\t\t\t<img v-else :src=\"filter.icon\" alt=\"\">\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</FilterChip>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"noContentInfo.show\" class=\"unified-search-modal__no-content\">\n\t\t\t\t<NcEmptyContent :name=\"noContentInfo.text\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<component :is=\"noContentInfo.icon\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcEmptyContent>\n\t\t\t</div>\n\t\t\t<div v-else class=\"unified-search-modal__results\">\n\t\t\t\t<div v-for=\"providerResult in results\" :key=\"providerResult.id\" class=\"result\">\n\t\t\t\t\t<div class=\"result-title\">\n\t\t\t\t\t\t<span>{{ providerResult.provider }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<ul class=\"result-items\">\n\t\t\t\t\t\t<SearchResult v-for=\"(result, index) in providerResult.results\" :key=\"index\" v-bind=\"result\" />\n\t\t\t\t\t</ul>\n\t\t\t\t\t<div class=\"result-footer\">\n\t\t\t\t\t\t<NcButton type=\"tertiary-no-background\" @click=\"loadMoreResultsForProvider(providerResult.id)\">\n\t\t\t\t\t\t\t{{ t('core', 'Load more results') }}\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<DotsHorizontalIcon :size=\"20\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t<NcButton v-if=\"providerResult.inAppSearch\" alignment=\"end-reverse\" type=\"tertiary-no-background\">\n\t\t\t\t\t\t\t{{ t('core', 'Search in') }} {{ providerResult.provider }}\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<ArrowRight :size=\"20\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</NcModal>\n</template>\n\n<script>\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\nimport AccountGroup from 'vue-material-design-icons/AccountGroup.vue'\nimport CalendarRangeIcon from 'vue-material-design-icons/CalendarRange.vue'\nimport CustomDateRangeModal from '../components/UnifiedSearch/CustomDateRangeModal.vue'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\nimport FilterIcon from 'vue-material-design-icons/Filter.vue'\nimport FilterChip from '../components/UnifiedSearch/SearchFilterChip.vue'\nimport ListBox from 'vue-material-design-icons/ListBox.vue'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'\nimport NcInputField from '@nextcloud/vue/dist/Components/NcInputField.js'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport MagnifyIcon from 'vue-material-design-icons/Magnify.vue'\nimport SearchableList from '../components/UnifiedSearch/SearchableList.vue'\nimport SearchResult from '../components/UnifiedSearch/SearchResult.vue'\n\nimport debounce from 'debounce'\nimport { emit, subscribe } from '@nextcloud/event-bus'\nimport { useBrowserLocation } from '@vueuse/core'\nimport { getProviders, search as unifiedSearch, getContacts } from '../services/UnifiedSearchService.js'\nimport { useSearchStore } from '../store/unified-search-external-filters.js'\n\nexport default {\n\tname: 'UnifiedSearchModal',\n\tcomponents: {\n\t\tArrowRight,\n\t\tAccountGroup,\n\t\tCalendarRangeIcon,\n\t\tCustomDateRangeModal,\n\t\tDotsHorizontalIcon,\n\t\tFilterIcon,\n\t\tFilterChip,\n\t\tListBox,\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tNcEmptyContent,\n\t\tNcModal,\n\t\tNcInputField,\n\t\tMagnifyIcon,\n\t\tSearchableList,\n\t\tSearchResult,\n\t},\n\tprops: {\n\t\tisVisible: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tsetup() {\n\t\t/**\n\t\t * Reactive version of window.location\n\t\t */\n\t\tconst currentLocation = useBrowserLocation()\n\t\tconst searchStore = useSearchStore()\n\t\treturn {\n\t\t\tcurrentLocation,\n\t\t\texternalFilters: searchStore.externalFilters,\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tproviders: [],\n\t\t\tproviderActionMenuIsOpen: false,\n\t\t\tdateActionMenuIsOpen: false,\n\t\t\tproviderResultLimit: 5,\n\t\t\tdateFilter: { id: 'date', type: 'date', text: '', startFrom: null, endAt: null },\n\t\t\tpersonFilter: { id: 'person', type: 'person', name: '' },\n\t\t\tdateFilterIsApplied: false,\n\t\t\tpersonFilterIsApplied: false,\n\t\t\tfilteredProviders: [],\n\t\t\tsearching: false,\n\t\t\tsearchQuery: '',\n\t\t\tplacessearchTerm: '',\n\t\t\tdateTimeFilter: null,\n\t\t\tfilters: [],\n\t\t\tresults: [],\n\t\t\tcontacts: [],\n\t\t\tdebouncedFind: debounce(this.find, 300),\n\t\t\tdebouncedFilterContacts: debounce(this.filterContacts, 300),\n\t\t\tshowDateRangeModal: false,\n\t\t\tinternalIsVisible: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tuserContacts() {\n\t\t\treturn this.contacts\n\t\t},\n\t\tnoContentInfo() {\n\t\t\tconst isEmptySearch = this.searchQuery.length === 0\n\t\t\tconst hasNoResults = this.searchQuery.length > 0 && this.results.length === 0\n\t\t\treturn {\n\t\t\t\tshow: isEmptySearch || hasNoResults,\n\t\t\t\ttext: this.searching && hasNoResults ? t('core', 'Searching …') : (isEmptySearch ? t('core', 'Start typing to search') : t('core', 'No matching results')),\n\t\t\t\ticon: MagnifyIcon,\n\t\t\t}\n\t\t},\n\t\tsupportFiltering() {\n\t\t\t/* Hard coded apps for the moment this would be improved in coming updates. */\n\t\t\tconst providerPaths = ['/settings/users', '/apps/files', '/apps/deck']\n\t\t\treturn providerPaths.some((path) => this.currentLocation.pathname?.includes?.(path))\n\t\t},\n\t},\n\twatch: {\n\t\tisVisible(value) {\n\t\t\tif (value) {\n\t\t\t\t/*\n\t\t\t\t * Before setting the search UI to visible, reset previous search event emissions.\n\t\t\t\t * This allows apps to restore defaults after \"Filter in current view\" if the user opens the search interface once more.\n\t\t\t\t * Additionally, it's a new search, so it's better to reset all previous events emitted.\n\t\t\t\t */\n\t\t\t\temit('nextcloud:unified-search.reset', { query: '' })\n\t\t\t}\n\t\t\tthis.internalIsVisible = value\n\t\t},\n\t\tinternalIsVisible(value) {\n\t\t\tthis.$emit('update:isVisible', value)\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis.focusInput()\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t},\n\tmounted() {\n\t\tsubscribe('nextcloud:unified-search:add-filter', this.handlePluginFilter)\n\t\tgetProviders().then((providers) => {\n\t\t\tthis.providers = providers\n\t\t\tthis.externalFilters.forEach(filter => {\n\t\t\t\tthis.providers.push(filter)\n\t\t\t})\n\t\t\tthis.providers = this.groupProvidersByApp(this.providers)\n\t\t\tconsole.debug('Search providers', this.providers)\n\t\t})\n\t\tgetContacts({ searchTerm: '' }).then((contacts) => {\n\t\t\tthis.contacts = this.mapContacts(contacts)\n\t\t\tconsole.debug('Contacts', this.contacts)\n\t\t})\n\t},\n\tmethods: {\n\t\tfind(query) {\n\t\t\tthis.searching = true\n\t\t\tif (query.length === 0) {\n\t\t\t\tthis.results = []\n\t\t\t\tthis.searching = false\n\t\t\t\temit('nextcloud:unified-search.reset', { query })\n\t\t\t\treturn\n\t\t\t}\n\t\t\temit('nextcloud:unified-search.search', { query })\n\t\t\tconst newResults = []\n\t\t\tconst providersToSearch = this.filteredProviders.length > 0 ? this.filteredProviders : this.providers\n\t\t\tconst searchProvider = (provider, filters) => {\n\t\t\t\tconst params = {\n\t\t\t\t\ttype: provider.id,\n\t\t\t\t\tquery,\n\t\t\t\t\tcursor: null,\n\t\t\t\t\textraQueries: provider.extraParams,\n\t\t\t\t}\n\n\t\t\t\tif (filters.dateFilterIsApplied) {\n\t\t\t\t\tif (provider.filters.since && provider.filters.until) {\n\t\t\t\t\t\tparams.since = this.dateFilter.startFrom\n\t\t\t\t\t\tparams.until = this.dateFilter.endAt\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Date filter is applied but provider does not support it, no need to search provider\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (filters.personFilterIsApplied) {\n\t\t\t\t\tif (provider.filters.person) {\n\t\t\t\t\t\tparams.person = this.personFilter.user\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Person filter is applied but provider does not support it, no need to search provider\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.providerResultLimit > 5) {\n\t\t\t\t\tparams.limit = this.providerResultLimit\n\t\t\t\t}\n\n\t\t\t\tconst request = unifiedSearch(params).request\n\n\t\t\t\trequest().then((response) => {\n\t\t\t\t\tnewResults.push({\n\t\t\t\t\t\tid: provider.id,\n\t\t\t\t\t\tprovider: provider.name,\n\t\t\t\t\t\tinAppSearch: provider.inAppSearch,\n\t\t\t\t\t\tresults: response.data.ocs.data.entries,\n\t\t\t\t\t})\n\n\t\t\t\t\tconsole.debug('New results', newResults)\n\t\t\t\t\tconsole.debug('Unified search results:', this.results)\n\n\t\t\t\t\tthis.updateResults(newResults)\n\t\t\t\t\tthis.searching = false\n\t\t\t\t})\n\t\t\t}\n\t\t\tprovidersToSearch.forEach(provider => {\n\t\t\t\tconst dateFilterIsApplied = this.dateFilterIsApplied\n\t\t\t\tconst personFilterIsApplied = this.personFilterIsApplied\n\t\t\t\tsearchProvider(provider, { dateFilterIsApplied, personFilterIsApplied })\n\t\t\t})\n\n\t\t},\n\t\tupdateResults(newResults) {\n\t\t\tlet updatedResults = [...this.results]\n\t\t\t// If filters are applied, remove any previous results for providers that are not in current filters\n\t\t\tif (this.filters.length > 0) {\n\t\t\t\tupdatedResults = updatedResults.filter(result => {\n\t\t\t\t\treturn this.filters.some(filter => filter.id === result.id)\n\t\t\t\t})\n\t\t\t}\n\t\t\t// Process the new results\n\t\t\tnewResults.forEach(newResult => {\n\t\t\t\tconst existingResultIndex = updatedResults.findIndex(result => result.id === newResult.id)\n\t\t\t\tif (existingResultIndex !== -1) {\n\t\t\t\t\tif (newResult.results.length === 0) {\n\t\t\t\t\t\t// If the new results data has no matches for and existing result, remove the existing result\n\t\t\t\t\t\tupdatedResults.splice(existingResultIndex, 1)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If input triggered a change in existing results, update existing result\n\t\t\t\t\t\tupdatedResults.splice(existingResultIndex, 1, newResult)\n\t\t\t\t\t}\n\t\t\t\t} else if (newResult.results.length > 0) {\n\t\t\t\t\t// Push the new result to the array only if its results array is not empty\n\t\t\t\t\tupdatedResults.push(newResult)\n\t\t\t\t}\n\t\t\t})\n\t\t\tconst sortedResults = updatedResults.slice(0)\n\t\t\t// Order results according to provider preference\n\t\t\tsortedResults.sort((a, b) => {\n\t\t\t\tconst aProvider = this.providers.find(provider => provider.id === a.id)\n\t\t\t\tconst bProvider = this.providers.find(provider => provider.id === b.id)\n\t\t\t\tconst aOrder = aProvider ? aProvider.order : 0\n\t\t\t\tconst bOrder = bProvider ? bProvider.order : 0\n\t\t\t\treturn aOrder - bOrder\n\t\t\t})\n\t\t\tthis.results = sortedResults\n\t\t},\n\t\tmapContacts(contacts) {\n\t\t\treturn contacts.map(contact => {\n\t\t\t\treturn {\n\t\t\t\t\t// id: contact.id,\n\t\t\t\t\t// name: '',\n\t\t\t\t\tdisplayName: contact.fullName,\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: contact.emailAddresses[0] ? contact.emailAddresses[0] : '',\n\t\t\t\t\ticon: '',\n\t\t\t\t\tuser: contact.id,\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t\tfilterContacts(query) {\n\t\t\tgetContacts({ searchTerm: query }).then((contacts) => {\n\t\t\t\tthis.contacts = this.mapContacts(contacts)\n\t\t\t\tconsole.debug(`Contacts filtered by ${query}`, this.contacts)\n\t\t\t})\n\t\t},\n\t\tapplyPersonFilter(person) {\n\t\t\tthis.personFilterIsApplied = true\n\t\t\tconst existingPersonFilter = this.filters.findIndex(filter => filter.id === person.id)\n\t\t\tif (existingPersonFilter === -1) {\n\t\t\t\tthis.personFilter.id = person.id\n\t\t\t\tthis.personFilter.user = person.user\n\t\t\t\tthis.personFilter.name = person.displayName\n\t\t\t\tthis.filters.push(this.personFilter)\n\t\t\t} else {\n\t\t\t\tthis.filters[existingPersonFilter].id = person.id\n\t\t\t\tthis.filters[existingPersonFilter].user = person.user\n\t\t\t\tthis.filters[existingPersonFilter].name = person.displayName\n\t\t\t}\n\n\t\t\tthis.debouncedFind(this.searchQuery)\n\t\t\tconsole.debug('Person filter applied', person)\n\t\t},\n\t\tloadMoreResultsForProvider(providerId) {\n\t\t\tthis.providerResultLimit += 5\n\t\t\tthis.filters = this.filters.filter(filter => filter.type !== 'provider')\n\t\t\tconst provider = this.providers.find(provider => provider.id === providerId)\n\t\t\tthis.addProviderFilter(provider, true)\n\t\t},\n\t\taddProviderFilter(providerFilter, loadMoreResultsForProvider = false) {\n\t\t\tif (!providerFilter.id) return\n\t\t\tif (providerFilter.isPluginFilter) {\n\t\t\t\tproviderFilter.callback()\n\t\t\t}\n\t\t\tthis.providerResultLimit = loadMoreResultsForProvider ? this.providerResultLimit : 5\n\t\t\tthis.providerActionMenuIsOpen = false\n\t\t\t// With the possibility for other apps to add new filters\n\t\t\t// Resulting in a possible id/provider collision\n\t\t\t// If a user tries to apply a filter that seems to already exist, we remove the current one and add the new one.\n\t\t\tconst existingFilterIndex = this.filteredProviders.findIndex(existing => existing.id === providerFilter.id)\n\t\t\tif (existingFilterIndex > -1) {\n\t\t\t\tthis.filteredProviders.splice(existingFilterIndex, 1)\n\t\t\t\tthis.filters = this.syncProviderFilters(this.filters, this.filteredProviders)\n\t\t\t}\n\t\t\tthis.filteredProviders.push({\n\t\t\t\tid: providerFilter.id,\n\t\t\t\tname: providerFilter.name,\n\t\t\t\ticon: providerFilter.icon,\n\t\t\t\ttype: providerFilter.type || 'provider',\n\t\t\t\tfilters: providerFilter.filters,\n\t\t\t\tisPluginFilter: providerFilter.isPluginFilter || false,\n\t\t\t})\n\t\t\tthis.filters = this.syncProviderFilters(this.filters, this.filteredProviders)\n\t\t\tconsole.debug('Search filters (newly added)', this.filters)\n\t\t\tthis.debouncedFind(this.searchQuery)\n\t\t},\n\t\tremoveFilter(filter) {\n\t\t\tif (filter.type === 'provider') {\n\t\t\t\tfor (let i = 0; i < this.filteredProviders.length; i++) {\n\t\t\t\t\tif (this.filteredProviders[i].id === filter.id) {\n\t\t\t\t\t\tthis.filteredProviders.splice(i, 1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.filters = this.syncProviderFilters(this.filters, this.filteredProviders)\n\t\t\t\tconsole.debug('Search filters (recently removed)', this.filters)\n\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < this.filters.length; i++) {\n\t\t\t\t\t// Remove date and person filter\n\t\t\t\t\tif (this.filters[i].id === 'date' || this.filters[i].id === filter.id) {\n\t\t\t\t\t\tthis.dateFilterIsApplied = false\n\t\t\t\t\t\tthis.filters.splice(i, 1)\n\t\t\t\t\t\tif (filter.type === 'person') {\n\t\t\t\t\t\t\tthis.personFilterIsApplied = false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.debouncedFind(this.searchQuery)\n\t\t},\n\t\tsyncProviderFilters(firstArray, secondArray) {\n\t\t\t// Create a copy of the first array to avoid modifying it directly.\n\t\t\tconst synchronizedArray = firstArray.slice()\n\t\t\t// Remove items from the synchronizedArray that are not in the secondArray.\n\t\t\tsynchronizedArray.forEach((item, index) => {\n\t\t\t\tconst itemId = item.id\n\t\t\t\tif (item.type === 'provider') {\n\t\t\t\t\tif (!secondArray.some(secondItem => secondItem.id === itemId)) {\n\t\t\t\t\t\tsynchronizedArray.splice(index, 1)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Add items to the synchronizedArray that are in the secondArray but not in the firstArray.\n\t\t\tsecondArray.forEach(secondItem => {\n\t\t\t\tconst itemId = secondItem.id\n\t\t\t\tif (secondItem.type === 'provider') {\n\t\t\t\t\tif (!synchronizedArray.some(item => item.id === itemId)) {\n\t\t\t\t\t\tsynchronizedArray.push(secondItem)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\n\t\t\treturn synchronizedArray\n\t\t},\n\t\tupdateDateFilter() {\n\t\t\tconst currFilterIndex = this.filters.findIndex(filter => filter.id === 'date')\n\t\t\tif (currFilterIndex !== -1) {\n\t\t\t\tthis.filters[currFilterIndex] = this.dateFilter\n\t\t\t} else {\n\t\t\t\tthis.filters.push(this.dateFilter)\n\t\t\t}\n\t\t\tthis.dateFilterIsApplied = true\n\t\t\tthis.debouncedFind(this.searchQuery)\n\t\t},\n\t\tapplyQuickDateRange(range) {\n\t\t\tthis.dateActionMenuIsOpen = false\n\t\t\tconst today = new Date()\n\t\t\tlet startDate\n\t\t\tlet endDate\n\n\t\t\tswitch (range) {\n\t\t\tcase 'today':\n\t\t\t\t// For 'Today', both start and end are set to today\n\t\t\t\tstartDate = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0, 0)\n\t\t\t\tendDate = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 23, 59, 59, 999)\n\t\t\t\tthis.dateFilter.text = t('core', 'Today')\n\t\t\t\tbreak\n\t\t\tcase '7days':\n\t\t\t\t// For 'Last 7 days', start date is 7 days ago, end is today\n\t\t\t\tstartDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 6, 0, 0, 0, 0)\n\t\t\t\tthis.dateFilter.text = t('core', 'Last 7 days')\n\t\t\t\tbreak\n\t\t\tcase '30days':\n\t\t\t\t// For 'Last 30 days', start date is 30 days ago, end is today\n\t\t\t\tstartDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 29, 0, 0, 0, 0)\n\t\t\t\tthis.dateFilter.text = t('core', 'Last 30 days')\n\t\t\t\tbreak\n\t\t\tcase 'thisyear':\n\t\t\t\t// For 'This year', start date is the first day of the year, end is the last day of the year\n\t\t\t\tstartDate = new Date(today.getFullYear(), 0, 1, 0, 0, 0, 0)\n\t\t\t\tendDate = new Date(today.getFullYear(), 11, 31, 23, 59, 59, 999)\n\t\t\t\tthis.dateFilter.text = t('core', 'This year')\n\t\t\t\tbreak\n\t\t\tcase 'lastyear':\n\t\t\t\t// For 'Last year', start date is the first day of the previous year, end is the last day of the previous year\n\t\t\t\tstartDate = new Date(today.getFullYear() - 1, 0, 1, 0, 0, 0, 0)\n\t\t\t\tendDate = new Date(today.getFullYear() - 1, 11, 31, 23, 59, 59, 999)\n\t\t\t\tthis.dateFilter.text = t('core', 'Last year')\n\t\t\t\tbreak\n\t\t\tcase 'custom':\n\t\t\t\tthis.showDateRangeModal = true\n\t\t\t\treturn\n\t\t\tdefault:\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.dateFilter.startFrom = startDate\n\t\t\tthis.dateFilter.endAt = endDate\n\t\t\tthis.updateDateFilter()\n\n\t\t},\n\t\tsetCustomDateRange(event) {\n\t\t\tconsole.debug('Custom date range', event)\n\t\t\tthis.dateFilter.startFrom = event.startFrom\n\t\t\tthis.dateFilter.endAt = event.endAt\n\t\t\tthis.dateFilter.text = t('core', `Between ${this.dateFilter.startFrom.toLocaleDateString()} and ${this.dateFilter.endAt.toLocaleDateString()}`)\n\t\t\tthis.updateDateFilter()\n\t\t},\n\t\thandlePluginFilter(addFilterEvent) {\n\t\t\tfor (let i = 0; i < this.filteredProviders.length; i++) {\n\t\t\t\tconst provider = this.filteredProviders[i]\n\t\t\t\tif (provider.id === addFilterEvent.id) {\n\t\t\t\t\tprovider.name = addFilterEvent.filterUpdateText\n\t\t\t\t\t// Filters attached may only make sense with certain providers,\n\t\t\t\t\t// So, find the provider attached, add apply the extra parameters to those providers only\n\t\t\t\t\tconst compatibleProviderIndex = this.providers.findIndex(provider => provider.id === addFilterEvent.id)\n\t\t\t\t\tif (compatibleProviderIndex > -1) {\n\t\t\t\t\t\tprovider.extraParams = addFilterEvent.filterParams\n\t\t\t\t\t\tthis.filteredProviders[i] = provider\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.debouncedFind(this.searchQuery)\n\t\t},\n\t\tgroupProvidersByApp(filters) {\n\t\t\tconst groupedByProviderApp = {}\n\n\t\t\tfilters.forEach(filter => {\n\t\t\t\tconst provider = filter.appId ? filter.appId : 'general'\n\t\t\t\tif (!groupedByProviderApp[provider]) {\n\t\t\t\t\tgroupedByProviderApp[provider] = []\n\t\t\t\t}\n\t\t\t\tgroupedByProviderApp[provider].push(filter)\n\t\t\t})\n\n\t\t\tconst flattenedArray = []\n\t\t\tObject.values(groupedByProviderApp).forEach(group => {\n\t\t\t\tflattenedArray.push(...group)\n\t\t\t})\n\n\t\t\treturn flattenedArray\n\t\t},\n\t\tfocusInput() {\n\t\t\tthis.$refs.searchInput.$el.children[0].children[0].focus()\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.internalIsVisible = false\n\t\t\tthis.searchQuery = ''\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.unified-search-modal {\n\tbox-sizing: border-box;\n\theight: 100%;\n\tmin-height: 80vh;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding-block: 10px 0;\n\n\t// inline padding on direct children to make sure the scrollbar is on the modal container\n\t>* {\n\t\tpadding-inline: 20px;\n\t}\n\n\t&__header {\n\t\tpadding-block-end: 8px;\n\t}\n\n\t&__heading {\n\t\tfont-size: 16px;\n\t\tfont-weight: bolder;\n\t\tline-height: 2em;\n\t\tmargin-bottom: 0;\n\t}\n\n\t&__filters {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tgap: 4px;\n\t\tjustify-content: start;\n\t\tpadding-top: 4px;\n\t}\n\n\t&__filters-applied {\n\t\tpadding-top: 4px;\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\t&__no-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\theight: 100%;\n\t}\n\n\t&__results {\n\t\toverflow: hidden scroll;\n\t\tpadding-block: 0 10px;\n\n\t\t.result {\n\t\t\t&-title {\n\t\t\t\tspan {\n\t\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\t\tfont-weight: bolder;\n\t\t\t\t\tfont-size: 16px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&-footer {\n\t\t\t\tjustify-content: space-between;\n\t\t\t\talign-items: center;\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t}\n\n\t}\n}\n\n.filter-button__icon {\n\theight: 20px;\n\twidth: 20px;\n\tobject-fit: contain;\n\tfilter: var(--background-invert-if-bright);\n\tpadding: 11px; // align with text to fit at least 44px\n}\n\n// Ensure modal is accessible on small devices\n@media only screen and (max-height: 400px) {\n\t.unified-search-modal__results {\n\t\toverflow: unset;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchModal.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchModal.vue?vue&type=style&index=0&id=45d54e50&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchModal.vue?vue&type=style&index=0&id=45d54e50&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearchModal.vue?vue&type=template&id=45d54e50&scoped=true\"\nimport script from \"./UnifiedSearchModal.vue?vue&type=script&lang=js\"\nexport * from \"./UnifiedSearchModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./UnifiedSearchModal.vue?vue&type=style&index=0&id=45d54e50&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"45d54e50\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcModal',{ref:\"unifiedSearchModal\",attrs:{\"id\":\"unified-search\",\"show\":_vm.internalIsVisible,\"clear-view-delay\":0},on:{\"update:show\":function($event){_vm.internalIsVisible=$event},\"close\":_vm.closeModal}},[_c('CustomDateRangeModal',{staticClass:\"unified-search__date-range\",attrs:{\"is-open\":_vm.showDateRangeModal},on:{\"set:custom-date-range\":_vm.setCustomDateRange,\"update:is-open\":function($event){_vm.showDateRangeModal = $event}}}),_vm._v(\" \"),_c('div',{ref:\"unifiedSearch\",staticClass:\"unified-search-modal\"},[_c('div',{staticClass:\"unified-search-modal__header\"},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Unified search')))]),_vm._v(\" \"),_c('NcInputField',{ref:\"searchInput\",attrs:{\"value\":_vm.searchQuery,\"type\":\"text\",\"label\":_vm.t('core', 'Search apps, files, tags, messages') + '...'},on:{\"update:value\":[function($event){_vm.searchQuery=$event},_vm.debouncedFind]}}),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-modal__filters\"},[_c('NcActions',{attrs:{\"menu-name\":_vm.t('core', 'Places'),\"open\":_vm.providerActionMenuIsOpen},on:{\"update:open\":function($event){_vm.providerActionMenuIsOpen=$event}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ListBox',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\" \"),_vm._l((_vm.providers),function(provider){return _c('NcActionButton',{key:`${provider.id}-${provider.name.replace(/\\s/g, '')}`,on:{\"click\":function($event){return _vm.addProviderFilter(provider)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"filter-button__icon\",attrs:{\"src\":provider.icon,\"alt\":\"\"}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(provider.name)+\"\\n\\t\\t\\t\\t\\t\")])})],2),_vm._v(\" \"),_c('NcActions',{attrs:{\"menu-name\":_vm.t('core', 'Date'),\"open\":_vm.dateActionMenuIsOpen},on:{\"update:open\":function($event){_vm.dateActionMenuIsOpen=$event}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CalendarRangeIcon',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('today')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Today'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('7days')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Last 7 days'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('30days')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Last 30 days'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('thisyear')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'This year'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('lastyear')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Last year'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('custom')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Custom date range'))+\"\\n\\t\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('SearchableList',{attrs:{\"label-text\":_vm.t('core', 'Search people'),\"search-list\":_vm.userContacts,\"empty-content-text\":_vm.t('core', 'Not found')},on:{\"search-term-change\":_vm.debouncedFilterContacts,\"item-selected\":_vm.applyPersonFilter},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcButton',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'People'))+\"\\n\\t\\t\\t\\t\\t\\t\")])]},proxy:true}])}),_vm._v(\" \"),(_vm.supportFiltering)?_c('NcButton',{on:{\"click\":_vm.closeModal},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('FilterIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2021673347)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Filter in current view'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-modal__filters-applied\"},_vm._l((_vm.filters),function(filter){return _c('FilterChip',{key:filter.id,attrs:{\"text\":filter.name ?? filter.text,\"pretext\":''},on:{\"delete\":function($event){return _vm.removeFilter(filter)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(filter.type === 'person')?_c('NcAvatar',{attrs:{\"user\":filter.user,\"size\":24,\"disable-menu\":true,\"show-user-status\":false,\"hide-favorite\":false}}):(filter.type === 'date')?_c('CalendarRangeIcon'):_c('img',{attrs:{\"src\":filter.icon,\"alt\":\"\"}})]},proxy:true}],null,true)})}),1)],1),_vm._v(\" \"),(_vm.noContentInfo.show)?_c('div',{staticClass:\"unified-search-modal__no-content\"},[_c('NcEmptyContent',{attrs:{\"name\":_vm.noContentInfo.text},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.noContentInfo.icon,{tag:\"component\"})]},proxy:true}],null,false,604901229)})],1):_c('div',{staticClass:\"unified-search-modal__results\"},_vm._l((_vm.results),function(providerResult){return _c('div',{key:providerResult.id,staticClass:\"result\"},[_c('div',{staticClass:\"result-title\"},[_c('span',[_vm._v(_vm._s(providerResult.provider))])]),_vm._v(\" \"),_c('ul',{staticClass:\"result-items\"},_vm._l((providerResult.results),function(result,index){return _c('SearchResult',_vm._b({key:index},'SearchResult',result,false))}),1),_vm._v(\" \"),_c('div',{staticClass:\"result-footer\"},[_c('NcButton',{attrs:{\"type\":\"tertiary-no-background\"},on:{\"click\":function($event){return _vm.loadMoreResultsForProvider(providerResult.id)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('DotsHorizontalIcon',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Load more results'))+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),(providerResult.inAppSearch)?_c('NcButton',{attrs:{\"alignment\":\"end-reverse\",\"type\":\"tertiary-no-background\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search in'))+\" \"+_vm._s(providerResult.provider)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()],1)])}),0)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"," <!--\n - @copyright Copyright (c) 2020 Fon E. Noel NFEBE <fenn25.fn@gmail.com>\n -\n - @author Fon E. Noel NFEBE <fenn25.fn@gmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"header-menu unified-search-menu\">\n\t\t<NcButton class=\"header-menu__trigger\"\n\t\t\t:aria-label=\"t('core', 'Unified search')\"\n\t\t\ttype=\"tertiary-no-background\"\n\t\t\t@click=\"toggleUnifiedSearch\">\n\t\t\t<template #icon>\n\t\t\t\t<Magnify class=\"header-menu__trigger-icon\" :size=\"20\" />\n\t\t\t</template>\n\t\t</NcButton>\n\t\t<UnifiedSearchModal :is-visible=\"showUnifiedSearch\" @update:isVisible=\"handleModalVisibilityChange\" />\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Magnify from 'vue-material-design-icons/Magnify.vue'\nimport UnifiedSearchModal from './UnifiedSearchModal.vue'\n\nexport default {\n\tname: 'UnifiedSearch',\n\tcomponents: {\n\t\tNcButton,\n\t\tMagnify,\n\t\tUnifiedSearchModal,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowUnifiedSearch: false,\n\t\t}\n\t},\n\tmounted() {\n\t\tconsole.debug('Unified search initialized!')\n\t},\n\tmethods: {\n\t\ttoggleUnifiedSearch() {\n\t\t\tthis.showUnifiedSearch = !this.showUnifiedSearch\n\t\t},\n\t\thandleModalVisibilityChange(newVisibilityVal) {\n\t\t\tthis.showUnifiedSearch = newVisibilityVal\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// this is needed to allow us overriding component styles (focus-visible)\n#header {\n\t.header-menu {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\t&__trigger {\n\t\t\theight: var(--header-height);\n\t\t\twidth: var(--header-height) !important;\n\n\t\t\t&:focus-visible {\n\t\t\t\t// align with other header menu entries\n\t\t\t\toutline: none !important;\n\t\t\t\tbox-shadow: none !important;\n\t\t\t}\n\n\t\t\t&:not(:hover,:focus,:focus-visible) {\n\t\t\t\topacity: .85;\n\t\t\t}\n\n\t\t\t&-icon {\n\t\t\t\t// ensure the icon has the correct color\n\t\t\t\tcolor: var(--color-primary-text) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.vue?vue&type=style&index=0&id=4621f4fc&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.vue?vue&type=style&index=0&id=4621f4fc&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearch.vue?vue&type=template&id=4621f4fc&scoped=true\"\nimport script from \"./UnifiedSearch.vue?vue&type=script&lang=js\"\nexport * from \"./UnifiedSearch.vue?vue&type=script&lang=js\"\nimport style0 from \"./UnifiedSearch.vue?vue&type=style&index=0&id=4621f4fc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4621f4fc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"header-menu unified-search-menu\"},[_c('NcButton',{staticClass:\"header-menu__trigger\",attrs:{\"aria-label\":_vm.t('core', 'Unified search'),\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.toggleUnifiedSearch},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify',{staticClass:\"header-menu__trigger-icon\",attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('UnifiedSearchModal',{attrs:{\"is-visible\":_vm.showUnifiedSearch},on:{\"update:isVisible\":_vm.handleModalVisibilityChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2024 Fon E. Noel NFEBE <opensource@nfebe.com>\n *\n * @author Fon E. Noel NFEBE <opensource@nfebe.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nimport { getRequestToken } from '@nextcloud/auth';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport UnifiedSearch from './views/UnifiedSearch.vue';\nimport { useSearchStore } from '../src/store/unified-search-external-filters.js';\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken());\nconst logger = getLoggerBuilder()\n .setApp('unified-search')\n .detectUser()\n .build();\nVue.mixin({\n data() {\n return {\n logger,\n };\n },\n methods: {\n t,\n n,\n },\n});\n// Register the add/register filter action API globally\nwindow.OCA = window.OCA || {};\nwindow.OCA.UnifiedSearch = {\n registerFilterAction: ({ id, appId, label, callback, icon }) => {\n const searchStore = useSearchStore();\n searchStore.registerExternalFilter({ id, appId, label, callback, icon });\n },\n};\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\nexport default new Vue({\n el: '#unified-search',\n pinia,\n // eslint-disable-next-line vue/match-component-file-name\n name: 'UnifiedSearchRoot',\n render: h => h(UnifiedSearch),\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.unified-search-custom-date-modal[data-v-99abc4fc]{padding:10px 20px 10px 20px}.unified-search-custom-date-modal h1[data-v-99abc4fc]{font-size:16px;font-weight:bolder;line-height:2em}.unified-search-custom-date-modal__pickers[data-v-99abc4fc]{display:flex;flex-direction:column}.unified-search-custom-date-modal__footer[data-v-99abc4fc]{display:flex;justify-content:end}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/CustomDateRangeModal.vue\"],\"names\":[],\"mappings\":\"AACA,mDACC,2BAAA,CAEA,sDACC,cAAA,CACA,kBAAA,CACA,eAAA,CAGD,4DACC,YAAA,CACA,qBAAA,CAGD,2DACC,YAAA,CACA,mBAAA\",\"sourcesContent\":[\"\\n.unified-search-custom-date-modal {\\n\\tpadding: 10px 20px 10px 20px;\\n\\n\\th1 {\\n\\t\\tfont-size: 16px;\\n\\t\\tfont-weight: bolder;\\n\\t\\tline-height: 2em;\\n\\t}\\n\\n\\t&__pickers {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n\\n\\t&__footer {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: end;\\n\\t}\\n\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.chip[data-v-5dc4d462]{display:flex;align-items:center;padding:2px 4px;border:1px solid var(--color-primary-element-light);border-radius:20px;background-color:var(--color-primary-element-light);margin:2px}.chip .icon[data-v-5dc4d462]{display:flex;align-items:center;padding-right:5px}.chip .icon img[data-v-5dc4d462]{width:20px;padding:2px;border-radius:20px;filter:var(--background-invert-if-bright)}.chip .text[data-v-5dc4d462]{margin:0 2px}.chip .close-icon[data-v-5dc4d462]{cursor:pointer}.chip .close-icon[data-v-5dc4d462] :hover{filter:invert(20%)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchFilterChip.vue\"],\"names\":[],\"mappings\":\"AACA,uBACI,YAAA,CACA,kBAAA,CACA,eAAA,CACA,mDAAA,CACA,kBAAA,CACA,mDAAA,CACA,UAAA,CAEA,6BACI,YAAA,CACA,kBAAA,CACA,iBAAA,CAEA,iCACI,UAAA,CACA,WAAA,CACA,kBAAA,CACA,yCAAA,CAIR,6BACI,YAAA,CAGJ,mCACI,cAAA,CAEA,0CACI,kBAAA\",\"sourcesContent\":[\"\\n.chip {\\n display: flex;\\n align-items: center;\\n padding: 2px 4px;\\n border: 1px solid var(--color-primary-element-light);\\n border-radius: 20px;\\n background-color: var(--color-primary-element-light);\\n margin: 2px;\\n\\n .icon {\\n display: flex;\\n align-items: center;\\n padding-right: 5px;\\n\\n img {\\n width: 20px;\\n padding: 2px;\\n border-radius: 20px;\\n filter: var(--background-invert-if-bright);\\n }\\n }\\n\\n .text {\\n margin: 0 2px;\\n }\\n\\n .close-icon {\\n cursor: pointer ;\\n\\n :hover {\\n filter: invert(20%);\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.result-items__item[data-v-67d9a3cf] a{border-radius:12px;border:2px solid rgba(0,0,0,0);border-radius:var(--border-radius-large) !important}.result-items__item[data-v-67d9a3cf] a--focused{background-color:var(--color-background-hover)}.result-items__item[data-v-67d9a3cf] a:active,.result-items__item[data-v-67d9a3cf] a:hover,.result-items__item[data-v-67d9a3cf] a:focus{background-color:var(--color-background-hover);border:2px solid var(--color-border-maxcontrast)}.result-items__item[data-v-67d9a3cf] a *{cursor:pointer}.result-items__item-icon[data-v-67d9a3cf]{overflow:hidden;width:44px;height:44px;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.result-items__item-icon--rounded[data-v-67d9a3cf]{border-radius:22px}.result-items__item-icon--no-preview[data-v-67d9a3cf]{background-size:32px}.result-items__item-icon--with-thumbnail[data-v-67d9a3cf]{background-size:cover}.result-items__item-icon--with-thumbnail[data-v-67d9a3cf]:not(.result-items__item-icon--rounded){max-width:42px;max-height:42px;border:1px solid var(--color-border)}.result-items__item-icon img[data-v-67d9a3cf]{width:100%;height:100%;object-fit:cover;object-position:center}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResult.vue\"],\"names\":[],\"mappings\":\"AAQI,uCACQ,kBAAA,CACA,8BAAA,CACA,mDAAA,CAEA,gDACI,8CAAA,CAGJ,wIAGI,8CAAA,CACA,gDAAA,CAGJ,yCACI,cAAA,CAKR,0CACI,eAAA,CACA,UA9BK,CA+BL,WA/BK,CAgCL,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CAEA,mDACI,kBAAA,CAGJ,sDACI,oBAAA,CAGJ,0DACI,qBAAA,CAGJ,iGAEI,cAAA,CACA,eAAA,CACA,oCAAA,CAGJ,8CAEI,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n@use \\\"sass:math\\\";\\n$clickable-area: 44px;\\n$margin: 10px;\\n\\n.result-items {\\n &__item {\\n\\n ::v-deep a {\\n border-radius: 12px;\\n border: 2px solid transparent;\\n border-radius: var(--border-radius-large) !important;\\n\\n &--focused {\\n background-color: var(--color-background-hover);\\n }\\n\\n &:active,\\n &:hover,\\n &:focus {\\n background-color: var(--color-background-hover);\\n border: 2px solid var(--color-border-maxcontrast);\\n }\\n\\n * {\\n cursor: pointer;\\n }\\n\\n }\\n\\n &-icon {\\n overflow: hidden;\\n width: $clickable-area;\\n height: $clickable-area;\\n border-radius: var(--border-radius);\\n background-repeat: no-repeat;\\n background-position: center center;\\n background-size: 32px;\\n\\n &--rounded {\\n border-radius: math.div($clickable-area, 2);\\n }\\n\\n &--no-preview {\\n background-size: 32px;\\n }\\n\\n &--with-thumbnail {\\n background-size: cover;\\n }\\n\\n &--with-thumbnail:not(&--rounded) {\\n // compensate for border\\n max-width: $clickable-area - 2px;\\n max-height: $clickable-area - 2px;\\n border: 1px solid var(--color-border);\\n }\\n\\n img {\\n // Make sure to keep ratio\\n width: 100%;\\n height: 100%;\\n\\n object-fit: cover;\\n object-position: center;\\n }\\n }\\n\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.searchable-list__wrapper[data-v-7cf71a2c]{padding:calc(var(--default-grid-baseline)*3);display:flex;flex-direction:column;align-items:center;width:250px}.searchable-list__list[data-v-7cf71a2c]{width:100%;max-height:284px;overflow-y:auto;margin-top:var(--default-grid-baseline);padding:var(--default-grid-baseline)}.searchable-list__list[data-v-7cf71a2c] .button-vue{border-radius:var(--border-radius-large) !important}.searchable-list__list[data-v-7cf71a2c] .button-vue span{font-weight:initial}.searchable-list__empty-content[data-v-7cf71a2c]{margin-top:calc(var(--default-grid-baseline)*3)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchableList.vue\"],\"names\":[],\"mappings\":\"AAEC,2CACC,4CAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,WAAA,CAGD,wCACC,UAAA,CACA,gBAAA,CACA,eAAA,CACA,uCAAA,CACA,oCAAA,CAEA,oDACC,mDAAA,CACA,yDACC,mBAAA,CAKH,iDACC,+CAAA\",\"sourcesContent\":[\"\\n.searchable-list {\\n\\t&__wrapper {\\n\\t\\tpadding: calc(var(--default-grid-baseline) * 3);\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\twidth: 250px;\\n\\t}\\n\\n\\t&__list {\\n\\t\\twidth: 100%;\\n\\t\\tmax-height: 284px;\\n\\t\\toverflow-y: auto;\\n\\t\\tmargin-top: var(--default-grid-baseline);\\n\\t\\tpadding: var(--default-grid-baseline);\\n\\n\\t\\t:deep(.button-vue) {\\n\\t\\t\\tborder-radius: var(--border-radius-large) !important;\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tfont-weight: initial;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__empty-content {\\n\\t\\tmargin-top: calc(var(--default-grid-baseline) * 3);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `#header .header-menu[data-v-4621f4fc]{display:flex;align-items:center;justify-content:center}#header .header-menu__trigger[data-v-4621f4fc]{height:var(--header-height);width:var(--header-height) !important}#header .header-menu__trigger[data-v-4621f4fc]:focus-visible{outline:none !important;box-shadow:none !important}#header .header-menu__trigger[data-v-4621f4fc]:not(:hover,:focus,:focus-visible){opacity:.85}#header .header-menu__trigger-icon[data-v-4621f4fc]{color:var(--color-primary-text) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UnifiedSearch.vue\"],\"names\":[],\"mappings\":\"AAGC,sCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,+CACC,2BAAA,CACA,qCAAA,CAEA,6DAEC,uBAAA,CACA,0BAAA,CAGD,iFACC,WAAA,CAGD,oDAEC,0CAAA\",\"sourcesContent\":[\"\\n// this is needed to allow us overriding component styles (focus-visible)\\n#header {\\n\\t.header-menu {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\n\\t\\t&__trigger {\\n\\t\\t\\theight: var(--header-height);\\n\\t\\t\\twidth: var(--header-height) !important;\\n\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t// align with other header menu entries\\n\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\tbox-shadow: none !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:not(:hover,:focus,:focus-visible) {\\n\\t\\t\\t\\topacity: .85;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-icon {\\n\\t\\t\\t\\t// ensure the icon has the correct color\\n\\t\\t\\t\\tcolor: var(--color-primary-text) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.unified-search-modal[data-v-45d54e50]{box-sizing:border-box;height:100%;min-height:80vh;display:flex;flex-direction:column;padding-block:10px 0}.unified-search-modal>*[data-v-45d54e50]{padding-inline:20px}.unified-search-modal__header[data-v-45d54e50]{padding-block-end:8px}.unified-search-modal__heading[data-v-45d54e50]{font-size:16px;font-weight:bolder;line-height:2em;margin-bottom:0}.unified-search-modal__filters[data-v-45d54e50]{display:flex;flex-wrap:wrap;gap:4px;justify-content:start;padding-top:4px}.unified-search-modal__filters-applied[data-v-45d54e50]{padding-top:4px;display:flex;flex-wrap:wrap}.unified-search-modal__no-content[data-v-45d54e50]{display:flex;align-items:center;height:100%}.unified-search-modal__results[data-v-45d54e50]{overflow:hidden scroll;padding-block:0 10px}.unified-search-modal__results .result-title span[data-v-45d54e50]{color:var(--color-primary-element);font-weight:bolder;font-size:16px}.unified-search-modal__results .result-footer[data-v-45d54e50]{justify-content:space-between;align-items:center;display:flex}.filter-button__icon[data-v-45d54e50]{height:20px;width:20px;object-fit:contain;filter:var(--background-invert-if-bright);padding:11px}@media only screen and (max-height: 400px){.unified-search-modal__results[data-v-45d54e50]{overflow:unset}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UnifiedSearchModal.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,qBAAA,CACA,WAAA,CACA,eAAA,CAEA,YAAA,CACA,qBAAA,CACA,oBAAA,CAGA,yCACC,mBAAA,CAGD,+CACC,qBAAA,CAGD,gDACC,cAAA,CACA,kBAAA,CACA,eAAA,CACA,eAAA,CAGD,gDACC,YAAA,CACA,cAAA,CACA,OAAA,CACA,qBAAA,CACA,eAAA,CAGD,wDACC,eAAA,CACA,YAAA,CACA,cAAA,CAGD,mDACC,YAAA,CACA,kBAAA,CACA,WAAA,CAGD,gDACC,sBAAA,CACA,oBAAA,CAIE,mEACC,kCAAA,CACA,kBAAA,CACA,cAAA,CAIF,+DACC,6BAAA,CACA,kBAAA,CACA,YAAA,CAOJ,sCACC,WAAA,CACA,UAAA,CACA,kBAAA,CACA,yCAAA,CACA,YAAA,CAID,2CACC,gDACC,cAAA,CAAA\",\"sourcesContent\":[\"\\n.unified-search-modal {\\n\\tbox-sizing: border-box;\\n\\theight: 100%;\\n\\tmin-height: 80vh;\\n\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tpadding-block: 10px 0;\\n\\n\\t// inline padding on direct children to make sure the scrollbar is on the modal container\\n\\t>* {\\n\\t\\tpadding-inline: 20px;\\n\\t}\\n\\n\\t&__header {\\n\\t\\tpadding-block-end: 8px;\\n\\t}\\n\\n\\t&__heading {\\n\\t\\tfont-size: 16px;\\n\\t\\tfont-weight: bolder;\\n\\t\\tline-height: 2em;\\n\\t\\tmargin-bottom: 0;\\n\\t}\\n\\n\\t&__filters {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: wrap;\\n\\t\\tgap: 4px;\\n\\t\\tjustify-content: start;\\n\\t\\tpadding-top: 4px;\\n\\t}\\n\\n\\t&__filters-applied {\\n\\t\\tpadding-top: 4px;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: wrap;\\n\\t}\\n\\n\\t&__no-content {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\theight: 100%;\\n\\t}\\n\\n\\t&__results {\\n\\t\\toverflow: hidden scroll;\\n\\t\\tpadding-block: 0 10px;\\n\\n\\t\\t.result {\\n\\t\\t\\t&-title {\\n\\t\\t\\t\\tspan {\\n\\t\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t\\t\\tfont-weight: bolder;\\n\\t\\t\\t\\t\\tfont-size: 16px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-footer {\\n\\t\\t\\t\\tjustify-content: space-between;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t}\\n}\\n\\n.filter-button__icon {\\n\\theight: 20px;\\n\\twidth: 20px;\\n\\tobject-fit: contain;\\n\\tfilter: var(--background-invert-if-bright);\\n\\tpadding: 11px; // align with text to fit at least 44px\\n}\\n\\n// Ensure modal is accessible on small devices\\n@media only screen and (max-height: 400px) {\\n\\t.unified-search-modal__results {\\n\\t\\toverflow: unset;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6776;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t6776: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(66686)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","activePinia","setActivePinia","pinia","piniaSymbol","Symbol","isPlainObject","o","Object","prototype","toString","call","toJSON","MutationType","IS_CLIENT","window","USE_DEVTOOLS","__VUE_PROD_DEVTOOLS__","_global","self","global","globalThis","HTMLElement","download","url","name","opts","xhr","XMLHttpRequest","open","responseType","onload","saveAs","response","onerror","console","error","send","corsEnabled","e","status","click","node","dispatchEvent","MouseEvent","evt","document","createEvent","initMouseEvent","_navigator","navigator","userAgent","isMacOSWebView","test","HTMLAnchorElement","blob","a","createElement","rel","href","origin","location","target","URL","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","autoBom","type","Blob","String","fromCharCode","bom","popup","title","body","innerText","force","isSafari","isChromeIOS","FileReader","reader","onloadend","result","Error","replace","assign","readAsDataURL","toastMessage","message","piniaMessage","__VUE_DEVTOOLS_TOAST__","warn","log","isPinia","checkClipboardAccess","checkNotFocusedError","toLowerCase","includes","fileInput","loadStoresState","state","key","storeState","value","formatDisplay","display","_custom","PINIA_ROOT_LABEL","PINIA_ROOT_ID","formatStoreForInspectorTree","store","id","label","$id","formatEventData","events","Array","isArray","reduce","data","event","keys","push","operations","oldValue","newValue","operation","formatMutationType","direct","patchFunction","patchObject","isTimelineActive","componentStateTypes","MUTATIONS_LAYER_ID","INSPECTOR_ID","assign$1","getStoreType","registerPiniaDevtools","app","logo","packageName","homepage","api","now","addTimelineLayer","color","addInspector","icon","treeFilterPlaceholder","actions","action","async","clipboard","writeText","JSON","stringify","actionGlobalCopyState","tooltip","parse","readText","actionGlobalPasteState","sendInspectorTree","sendInspectorState","actionGlobalSaveState","accept","Promise","resolve","reject","onchange","files","file","item","text","oncancel","actionGlobalOpenStateFile","nodeActions","nodeId","_s","get","$reset","on","inspectComponent","payload","ctx","proxy","componentInstance","_pStores","piniaStores","values","forEach","instanceData","editable","_isOptionsAPI","$state","_getters","length","getters","getInspectorTree","inspectorId","stores","concat","from","rootNodes","filter","map","getInspectorState","inspectedStore","storeNames","storeMap","storeId","getterName","_customProperties","size","customProperties","formatStoreForInspectorState","editInspectorState","path","unshift","has","set","editComponentState","startsWith","activeAction","runningActionId","patchActionForGrouping","actionNames","wrapWithProxy","storeActions","actionName","_actionId","trackedStore","Proxy","args","Reflect","retValue","apply","arguments","undefined","devtoolsPlugin","options","originalHotUpdate","_hotUpdate","newStore","this","_hmrPayload","settings","logStoreChanges","defaultValue","bind","Date","$onAction","after","onError","groupId","addTimelineEvent","layerId","time","subtitle","logType","notifyComponentUpdate","deep","$subscribe","eventData","detached","flush","hotUpdate","info","$dispose","getSettings","addStoreToDevtools","noop","addSubscription","subscriptions","callback","onCleanup","removeSubscription","idx","indexOf","splice","triggerSubscriptions","slice","fallbackRunWithContext","fn","mergeReactiveObjects","patchToApply","Map","Set","add","hasOwnProperty","subPatch","targetValue","skipHydrateSymbol","skipHydrateMap","WeakMap","createSetupStore","setup","hot","isOptionsStore","scope","optionsForPlugin","$subscribeOptions","isListening","isSyncListening","debuggerEvents","actionSubscriptions","initialState","hotState","activeListener","$patch","partialStateOrMutator","subscriptionMutation","myListenerId","then","newState","wrapAction","afterCallbackList","onErrorCallbackList","ret","catch","partialStore","_p","stopWatcher","run","stop","delete","_r","setupStore","_a","runWithContext","_e","prop","effect","obj","actionValue","defineProperty","nonEnumerable","writable","configurable","enumerable","p","extender","extensions","hydrate","emits","props","fillColor","default","Number","_vm","_c","_self","_b","staticClass","attrs","$event","$emit","$attrs","_v","components","NcButton","NcModal","CalendarRangeIcon","NcDateTimePicker","isOpen","Boolean","required","dateFilter","startFrom","endAt","computed","isModalOpen","methods","closeModal","applyCustomRange","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","t","model","$$v","$set","expression","scopedSlots","_u","CloseIcon","pretext","deleteChip","_t","A","N","toStringTag","NcPopover","NcTextField","Magnify","AlertCircleOutline","NcAvatar","NcEmptyContent","labelText","searchList","emptyContentText","opened","searchTerm","filteredList","element","some","clearSearch","itemSelected","searchTermChanged","term","_l","displayName","user","NcListItem","thumbnailUrl","subline","resourceUrl","rounded","query","focused","thumbnailHasError","watch","isValidIconOrPreviewUrl","thumbnailErrorHandler","class","style","backgroundImage","getContacts","_ref2","contacts","axios","post","generateUrl","authenticatedUser","getCurrentUser","uid","fullName","emailAddresses","useSearchStore","idOrOptions","setupOptions","useStore","hasContext","localState","computedGetters","createOptionsStore","defineStore","externalFilters","registerExternalFilter","_ref","appId","isPluginFilter","ArrowRight","AccountGroup","CustomDateRangeModal","DotsHorizontalIcon","FilterIcon","FilterChip","ListBox","NcActions","NcActionButton","NcInputField","MagnifyIcon","SearchableList","SearchResult","isVisible","currentLocation","useBrowserLocation","providers","providerActionMenuIsOpen","dateActionMenuIsOpen","providerResultLimit","personFilter","dateFilterIsApplied","personFilterIsApplied","filteredProviders","searching","searchQuery","placessearchTerm","dateTimeFilter","filters","results","debouncedFind","debounce","find","debouncedFilterContacts","filterContacts","showDateRangeModal","internalIsVisible","userContacts","noContentInfo","isEmptySearch","hasNoResults","show","supportFiltering","_this$currentLocation","_this$currentLocation2","pathname","emit","$nextTick","focusInput","mounted","subscribe","handlePluginFilter","generateOcsUrl","params","search","ocs","getProviders","groupProvidersByApp","debug","mapContacts","newResults","providersToSearch","searchProvider","provider","cursor","extraQueries","extraParams","since","until","person","limit","request","cancelToken","CancelToken","source","token","cancel","unifiedSearch","inAppSearch","entries","updateResults","updatedResults","newResult","existingResultIndex","findIndex","sortedResults","sort","b","aProvider","bProvider","order","contact","isNoUser","subname","applyPersonFilter","existingPersonFilter","loadMoreResultsForProvider","providerId","addProviderFilter","providerFilter","existingFilterIndex","existing","syncProviderFilters","removeFilter","i","firstArray","secondArray","synchronizedArray","index","itemId","secondItem","updateDateFilter","currFilterIndex","applyQuickDateRange","range","today","startDate","endDate","getFullYear","getMonth","getDate","setCustomDateRange","toLocaleDateString","addFilterEvent","filterUpdateText","compatibleProviderIndex","filterParams","groupedByProviderApp","flattenedArray","group","$refs","searchInput","$el","children","focus","ref","_filter$name","tag","providerResult","UnifiedSearchModal","showUnifiedSearch","toggleUnifiedSearch","handleModalVisibilityChange","newVisibilityVal","__webpack_nonce__","btoa","getRequestToken","logger","getLoggerBuilder","setApp","detectUser","build","Vue","mixin","n","OCA","UnifiedSearch","registerFilterAction","use","_Vue","beforeCreate","$options","_provided","provideCache","v","$pinia","parent","destroyed","toBeInstalled","install","provide","config","globalProperties","plugin","createPinia","el","render","h","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","r","getter","__esModule","d","definition","g","Function","nmd","paths","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}