{"version":3,"file":"gridstack-all.js","mappings":";CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAmB,UAAID,IAEvBD,EAAgB,UAAIC,GACrB,CATD,CASGK,MAAM,uBCRT,IAAIC,EAAsB,CCA1BA,EAAwB,CAACL,EAASM,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAER,EAASO,IAC5EE,OAAOC,eAAeV,EAASO,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,kCCqD3E,MAAMI,EAGXC,mBAAmBC,EAAuBtB,EAA+BuB,UACvE,GAAmB,iBAARD,EAAkB,CAC3B,MAAME,EAAO,mBAAoBxB,EAAQA,OAAmByB,EAK5D,GAAID,IAAQE,OAAOJ,EAAI,IAAK,CAC1B,MAAMK,EAAKH,EAAII,eAAeN,GAC9B,OAAOK,EAAK,CAACA,GAAM,GAGrB,IAAIE,EAAO7B,EAAK8B,iBAAiBR,GAKjC,OAJKO,EAAKE,QAAqB,MAAXT,EAAI,IAAyB,MAAXA,EAAI,KACxCO,EAAO7B,EAAK8B,iBAAiB,IAAMR,GAC9BO,EAAKE,SAAUF,EAAO7B,EAAK8B,iBAAiB,IAAMR,KAElDU,MAAMC,KAAKJ,GAEpB,MAAO,CAACP,EACV,CAGAD,kBAAkBC,EAAuBtB,EAA+BuB,UACtE,GAAmB,iBAARD,EAAkB,CAC3B,MAAME,EAAO,mBAAoBxB,EAAQA,OAAmByB,EAC5D,IAAKH,EAAIS,OAAQ,OAAO,KACxB,GAAIP,GAAkB,MAAXF,EAAI,GACb,OAAOE,EAAII,eAAeN,EAAIY,UAAU,IAE1C,GAAe,MAAXZ,EAAI,IAAyB,MAAXA,EAAI,IAAyB,MAAXA,EAAI,GAC1C,OAAOtB,EAAKmC,cAAcb,GAI5B,GAAIE,IAAQE,OAAOJ,EAAI,IACrB,OAAOE,EAAII,eAAeN,GAI5B,IAAIK,EAAK3B,EAAKmC,cAAcb,GAG5B,OAFIE,IAAQG,IAAMA,EAAKH,EAAII,eAAeN,IACrCK,IAAMA,EAAK3B,EAAKmC,cAAc,IAAMb,IAClCK,EAET,OAAOL,CACT,CAGAD,2BAA2Be,GACzB,OAAOA,GAAGC,SAAWD,EAAEE,eAAkBF,EAAEC,KAAKE,KAAKD,gBAAqC,IAApBF,EAAEE,cAC1E,CAGAjB,qBAAqBmB,EAAsBC,GACzC,QAASD,EAAEE,GAAKD,EAAEC,EAAID,EAAEE,GAAKH,EAAEE,EAAIF,EAAEG,GAAKF,EAAEC,GAAKF,EAAEI,EAAIJ,EAAEK,GAAKJ,EAAEG,GAAKJ,EAAEI,GAAKH,EAAEG,EAAIH,EAAEI,EACtF,CAGAxB,kBAAkBmB,EAAsBC,GACtC,OAAOrB,EAAM0B,cAAcN,EAAG,CAACI,EAAGH,EAAEG,EAAE,GAAKF,EAAGD,EAAEC,EAAE,GAAKG,EAAGJ,EAAEI,EAAE,EAAGF,EAAGF,EAAEE,EAAE,GAC1E,CAGAtB,qBAAqBmB,EAAsBC,GACzC,IAAIM,EAAMP,EAAEI,EAAIH,EAAEG,EAAKJ,EAAEI,EAAIH,EAAEG,EAC3BI,EAAMR,EAAEI,EAAEJ,EAAEK,EAAIJ,EAAEG,EAAEH,EAAEI,EAAKL,EAAEI,EAAEJ,EAAEK,EAAIJ,EAAEG,EAAEH,EAAEI,EAC/C,GAAIG,GAAMD,EAAI,OAAO,EACrB,IAAIE,EAAMT,EAAEE,EAAID,EAAEC,EAAKF,EAAEE,EAAID,EAAEC,EAC3BQ,EAAMV,EAAEE,EAAEF,EAAEG,EAAIF,EAAEC,EAAED,EAAEE,EAAKH,EAAEE,EAAEF,EAAEG,EAAIF,EAAEC,EAAED,EAAEE,EAC/C,OAAIO,GAAMD,EAAW,GACbD,EAAGD,IAAOG,EAAGD,EACvB,CAGA5B,YAAYmB,GACV,OAAOA,EAAEK,EAAIL,EAAEG,CACjB,CAQAtB,YAAY8B,EAAwBC,EAAc,EAAGC,GAEnD,OADAA,EAASA,GAAUF,EAAMG,QAAO,CAACC,EAAKnB,IAAMoB,KAAKC,IAAIrB,EAAEQ,EAAIR,EAAES,EAAGU,IAAM,IAAM,IAC/D,IAATH,EACKD,EAAMO,MAAK,CAAClB,EAAGC,KAAQA,EAAEG,GAAK,MAASH,EAAEC,GAAK,KAAQW,IAAUb,EAAEI,GAAK,MAASJ,EAAEE,GAAK,KAAQW,KAE/FF,EAAMO,MAAK,CAACjB,EAAGD,KAAQC,EAAEG,GAAK,MAASH,EAAEC,GAAK,KAAQW,IAAUb,EAAEI,GAAK,MAASJ,EAAEE,GAAK,KAAQW,IAC1G,CAQAhC,wBAAwBsC,EAAYC,EAAsBC,GACxD,IAAIC,EAA0BvC,SAASwC,cAAc,SACrD,MAAMC,EAAQH,GAASG,MAkBvB,OAjBIA,IAAOF,EAAME,MAAQA,GACzBF,EAAMG,aAAa,OAAQ,YAC3BH,EAAMG,aAAa,cAAeN,GAE7BG,EAAcI,WAEhBJ,EAAcI,WAAWC,QAAU,GAEpCL,EAAMM,YAAY7C,SAAS8C,eAAe,KAEvCT,EAKHA,EAAOU,aAAaR,EAAOF,EAAOW,aAHlCX,EAASrC,SAASiD,qBAAqB,QAAQ,IACxCJ,YAAYN,GAIdA,EAAMW,KACf,CAGApD,wBAAwBsC,GACtB,IAAIhC,EAAKJ,SAASY,cAAc,qBAAuBwB,EAAK,KACxDhC,GAAMA,EAAG+C,YAAY/C,EAAGgD,QAC9B,CAGAtD,kBAAkBoD,EAAsBG,EAAkBC,GAC3B,mBAAlBJ,EAAMK,QACfL,EAAMK,QAAQF,EAAUC,GACa,mBAArBJ,EAAMM,YACtBN,EAAMM,WAAW,GAAGH,KAAYC,KAEpC,CAGAxD,cAAc2D,GACZ,MAAiB,kBAANA,EACFA,EAEQ,iBAANA,IAEM,MADfA,EAAIA,EAAEC,gBACqB,OAAND,GAAoB,UAANA,GAAuB,MAANA,GAE/CE,QAAQF,EACjB,CAEA3D,gBAAgB8D,GACd,OAAkB,OAAVA,GAAmC,IAAjBA,EAAMpD,YAAgBN,EAAY2D,OAAOD,EACrE,CAEA9D,mBAAmBgE,GACjB,IAAI1C,EACA2C,EAAO,KACX,GAAmB,iBAARD,EAAkB,CAC3B,IAAIE,EAAQF,EAAIE,MAAM,yEACtB,IAAKA,EACH,MAAM,IAAIC,MAAM,kBAElBF,EAAOC,EAAM,IAAM,KACnB5C,EAAI8C,WAAWF,EAAM,SAErB5C,EAAI0C,EAEN,MAAO,CAAE1C,IAAG2C,OACd,CAIAjE,gBAAgBqE,KAAWC,GAczB,OAZAA,EAAQC,SAAQC,IACd,IAAK,MAAMpF,KAAOoF,EAAQ,CACxB,IAAKA,EAAO3E,eAAeT,GAAM,OACb,OAAhBiF,EAAOjF,SAAiCgB,IAAhBiE,EAAOjF,GACjCiF,EAAOjF,GAAOoF,EAAOpF,GACW,iBAAhBoF,EAAOpF,IAA4C,iBAAhBiF,EAAOjF,IAE1DqF,KAAKC,SAASL,EAAOjF,GAAMoF,EAAOpF,QAKjCiF,CACT,CAGArE,YAAYmB,EAAYC,GACtB,GAAiB,iBAAND,EAAiB,OAAOA,GAAKC,EACxC,UAAWD,UAAaC,EAAG,OAAO,EAElC,GAAI9B,OAAOqF,KAAKxD,GAAGT,SAAWpB,OAAOqF,KAAKvD,GAAGV,OAAQ,OAAO,EAC5D,IAAK,MAAMtB,KAAO+B,EAChB,GAAIA,EAAE/B,KAASgC,EAAEhC,GAAM,OAAO,EAEhC,OAAO,CACT,CAGAY,eAAemB,EAAoBC,EAAoBwD,GAAW,GAWhE,YAVYxE,IAARgB,EAAEG,IAAiBJ,EAAEI,EAAIH,EAAEG,QACnBnB,IAARgB,EAAEC,IAAiBF,EAAEE,EAAID,EAAEC,QACnBjB,IAARgB,EAAEI,IAAiBL,EAAEK,EAAIJ,EAAEI,QACnBpB,IAARgB,EAAEE,IAAiBH,EAAEG,EAAIF,EAAEE,GAC3BsD,IACExD,EAAEyD,OAAM1D,EAAE0D,KAAOzD,EAAEyD,MACnBzD,EAAE0D,OAAM3D,EAAE2D,KAAO1D,EAAE0D,MACnB1D,EAAE2D,OAAM5D,EAAE4D,KAAO3D,EAAE2D,MACnB3D,EAAE4D,OAAM7D,EAAE6D,KAAO5D,EAAE4D,OAElB7D,CACT,CAGAnB,eAAemB,EAAsBC,GACnC,OAAOD,GAAKC,GAAKD,EAAEI,IAAMH,EAAEG,GAAKJ,EAAEE,IAAMD,EAAEC,GAAKF,EAAEK,IAAMJ,EAAEI,GAAKL,EAAEG,IAAMF,EAAEE,CAC1E,CAGAtB,sBAAsBiF,GAEfA,EAAKJ,aAAeI,EAAKJ,KACzBI,EAAKH,aAAeG,EAAKH,KACzBG,EAAKF,aAAeE,EAAKF,KACzBE,EAAKD,aAAeC,EAAKD,IAChC,CAGAhF,6BAA6BmB,EAAYC,GACvC,GAAiB,iBAAND,GAA+B,iBAANC,EACpC,IAAK,IAAIhC,KAAO+B,EAAG,CACjB,IAAI6C,EAAM7C,EAAE/B,GACZ,GAAe,MAAXA,EAAI,IAAc4E,IAAQ5C,EAAEhC,UACvB+B,EAAE/B,QACJ,GAAI4E,GAAsB,iBAARA,QAA+B5D,IAAXgB,EAAEhC,GAAoB,CACjE,IAAK,IAAI8F,KAAKlB,EACRA,EAAIkB,KAAO9D,EAAEhC,GAAK8F,IAAe,MAATA,EAAE,WAAqBlB,EAAIkB,GAEpD5F,OAAOqF,KAAKX,GAAKtD,eAAiBS,EAAE/B,IAG/C,CAGAY,6BAA6Be,EAAkBoE,GAAW,GACxD,IAAK,IAAI/F,KAAO2B,EAAoB,MAAX3B,EAAI,IAAyB,OAAX2B,EAAE3B,SAA4BgB,IAAXW,EAAE3B,WAA4B2B,EAAE3B,UACvF2B,EAAEC,KACLmE,UAAiBpE,EAAET,GAElBS,EAAEqE,qBAAqBrE,EAAEqE,aACzBrE,EAAEsE,iBAAiBtE,EAAEsE,SACrBtE,EAAEuE,eAAevE,EAAEuE,OACnBvE,EAAEwE,eAAexE,EAAEwE,OACZ,IAARxE,EAAES,GAAWT,EAAES,IAAMT,EAAE8D,aAAa9D,EAAES,EAC9B,IAART,EAAEO,GAAWP,EAAEO,IAAMP,EAAE+D,aAAa/D,EAAEO,CAC5C,CAGAtB,wBAAwBM,EAAiBkF,GACvC,KAAOlF,GAAI,CACT,GAAIA,EAAGmF,UAAUC,SAASF,GAAO,OAAOlF,EACxCA,EAAKA,EAAGqF,cAEV,OAAO,IACT,CAGA3F,gBAAgB4F,EAAkBC,GAChC,IAAIC,GAAY,EAChB,MAAO,IAAIC,KACJD,IACHA,GAAY,EACZE,YAAW,KAAQJ,KAAQG,GAAOD,GAAY,CAAK,GAAKD,IAG9D,CAEA7F,+BAA+BM,GAC7B,IAAImC,EAAQnC,EAAGmC,MACXA,EAAMwD,UACRxD,EAAMyD,eAAe,YAEnBzD,EAAM0D,MACR1D,EAAMyD,eAAe,QAEnBzD,EAAM2D,KACR3D,EAAMyD,eAAe,OAEnBzD,EAAM4D,OACR5D,EAAMyD,eAAe,SAEnBzD,EAAM6D,QACR7D,EAAMyD,eAAe,SAEzB,CAGAlG,wBAAwBM,GACtB,IAAKA,EAAI,OAAOJ,SAASqG,kBAAmCrG,SAASsG,gBACrE,MAAM/D,EAAQgE,iBAAiBnG,GAG/B,MAFsB,gBAEJoG,KAAKjE,EAAMkE,SAAWlE,EAAMmE,WACrCtG,EAEAmE,KAAKoC,iBAAiBvG,EAAGqF,cAEpC,CAGA3F,4BAA4BM,EAAiB2F,EAAyBa,GAEpE,IAAIC,EAAOzG,EAAG0G,wBACVC,EAA6BC,OAAOC,aAAejH,SAASsG,gBAAgBY,aAChF,GAAIL,EAAKX,IAAM,GACbW,EAAKM,OAASJ,EACd,CAIA,IAAIK,EAAiBP,EAAKM,OAASJ,EAC/BM,EAAeR,EAAKX,IACpBoB,EAAW/C,KAAKoC,iBAAiBvG,GACrC,GAAiB,OAAbkH,EAAmB,CACrB,IAAIC,EAAaD,EAASE,UACtBX,EAAKX,IAAM,GAAKU,EAAW,EAEzBxG,EAAGqH,aAAeV,EACpBO,EAASE,WAAaZ,EAEtBU,EAASE,WAAavF,KAAKyF,IAAIL,GAAgBpF,KAAKyF,IAAId,GAAYA,EAAWS,EAExET,EAAW,IAEhBxG,EAAGqH,aAAeV,EACpBO,EAASE,WAAaZ,EAEtBU,EAASE,WAAaJ,EAAiBR,EAAWA,EAAWQ,GAIjErB,EAASG,KAAOoB,EAASE,UAAYD,GAG3C,CASAzH,0BAA0B6H,EAAmBvH,EAAiBwG,GAC5D,MAAMU,EAAW/C,KAAKoC,iBAAiBvG,GACjCgG,EAASkB,EAASJ,aAKlBU,EAAaN,IAAa/C,KAAKoC,mBAAsB,EAAIW,EAASR,wBAAwBZ,IAC1F2B,EAAcF,EAAMG,QAAUF,EAE9BT,EAASU,EAAczB,EAASQ,EAD1BiB,EAAcjB,EAMxBU,EAASS,SAAS,CAAEC,SAAU,SAAU9B,IAAK2B,EAAcjB,IAClDO,GACTG,EAASS,SAAS,CAAEC,SAAU,SAAU9B,IAAKU,GAAYR,EAASyB,IAEtE,CAGA/H,aAAgBN,GACd,OAAIA,SAAqD,iBAAV,EACtCA,EAGLA,aAAeiB,MAEV,IAAIjB,GAEN,IAAIA,EACb,CAMAM,iBAAoBN,GAElB,MAAMyI,EAAa,CAAC,aAAc,KAAM,OAAQ,UAAW,UAErDC,EAAMrI,EAAMsI,MAAM3I,GACxB,IAAK,MAAMN,KAAOgJ,EAEZA,EAAIvI,eAAeT,IAA6B,iBAAdgJ,EAAIhJ,IAA8C,OAAxBA,EAAIyB,UAAU,EAAG,KAAgBsH,EAAWG,MAAKC,GAAKA,IAAMnJ,MAC1HgJ,EAAIhJ,GAAOW,EAAMyI,UAAU9I,EAAIN,KAGnC,OAAOgJ,CACT,CAGOpI,iBAAiBM,GACtB,MAAM2E,EAAO3E,EAAGmI,WAAU,GAE1B,OADAxD,EAAKyD,gBAAgB,MACdzD,CACT,CAEOjF,gBAAgBM,EAAiBiC,GACtC,IAAIc,EAEFA,EADoB,iBAAXd,EACIxC,EAAM4I,WAAWpG,GAEjBA,EAEXc,GACFA,EAAWN,YAAYzC,EAE3B,CAQON,mBAAmBM,EAAiBsI,GACzC,GAAIA,aAAkBtJ,OACpB,IAAK,MAAMuJ,KAAKD,EACVA,EAAO/I,eAAegJ,KACpBlI,MAAMmI,QAAQF,EAAOC,IAEtBD,EAAOC,GAAgBtE,SAAQP,IAC9B1D,EAAGmC,MAAMoG,GAAK7E,CAAG,IAGnB1D,EAAGmC,MAAMoG,GAAKD,EAAOC,GAK/B,CAEO7I,iBAAoB+I,EAA2BC,GACpD,MAAMC,EAAM,CAAEC,KAAMF,EAAKE,MACnBxJ,EAAM,CACVyJ,OAAQ,EACRC,MAAO,EACPC,QAAS,EACTC,SAAS,EACTC,YAAY,EACZlF,OAAQ2E,EAAK3E,OAAS2E,EAAK3E,OAAS0E,EAAE1E,QAQxC,OALK0E,EAAgBS,eACnBP,EAAkB,aAAKF,EAAgBS,cAEzC,CAAC,SAAS,UAAU,UAAU,YAAYjF,SAAQkF,GAAKR,EAAIQ,GAAKV,EAAEU,KAClE,CAAC,QAAQ,QAAQ,UAAU,UAAU,UAAU,WAAWlF,SAAQkF,GAAKR,EAAIQ,GAAKV,EAAEU,KAC3E,IAAIR,KAAQvJ,EACrB,CAGOM,0BAA0B+I,EAAeW,EAAuBrF,GACrE,MAAMsF,EAAiBzJ,SAAS0J,YAAY,eAC5CD,EAAeE,eACbH,GACA,GACA,EACAxC,OACA,EACA6B,EAAEe,QACFf,EAAEgB,QACFhB,EAAEiB,QACFjB,EAAEf,QACFe,EAAEkB,QACFlB,EAAEmB,OACFnB,EAAEoB,SACFpB,EAAEqB,QACF,EACArB,EAAE1E,SAEHA,GAAU0E,EAAE1E,QAAQgG,cAAcV,EACrC,ECvgBF,MAAaW,EAsBX,YAAmBpJ,EAA+B,CAAC,GAlB5C,KAAAqJ,WAA8B,GAC9B,KAAAC,aAAgC,GAkBrC/F,KAAKzC,OAASd,EAAKc,QAAU,GAC7ByC,KAAKgG,OAASvJ,EAAKuJ,OACnBhG,KAAKiG,OAASxJ,EAAKyJ,MACnBlG,KAAK3C,MAAQZ,EAAKY,OAAS,GAC3B2C,KAAKmG,SAAW1J,EAAK0J,QACvB,CAEOC,YAAYC,GAAO,EAAMC,GAAS,GACvC,QAAMtG,KAAKuG,YAAcF,IACzBrG,KAAKuG,UAAYF,EACbA,GACFrG,KAAKwG,WAAaxG,KAAKiG,OACvBjG,KAAKiG,QAAS,EACdjG,KAAKyG,aACLzG,KAAK0G,gBAEL1G,KAAKiG,OAASjG,KAAKwG,kBACZxG,KAAKwG,WACRF,GAAQtG,KAAK2G,aACjB3G,KAAK4G,YAX+B5G,IAcxC,CAGU6G,kBAAkBrG,EAAqBsG,GAC/C,QAAS9G,KAAKkG,OAASlG,KAAKuG,YAAcvG,KAAKwG,cAAgBxG,KAAK+G,cAAgBvG,EAAKwG,SAAWxG,EAAKyG,WAAaH,EAAGlK,GAAK4D,EAAK5D,EACrI,CAIUsK,eAAe1G,EAAqBsG,EAAKtG,EAAM2G,EAAyBC,EAAyB,CAAC,GAI1G,GAHApH,KAAKqH,WAAW,KAEhBF,EAAUA,GAAWnH,KAAKmH,QAAQ3G,EAAMsG,IAC1B,OAAO,EAGrB,GAAItG,EAAKwG,UAAYI,EAAIE,SAAWtH,KAAKkG,OACnClG,KAAKuH,KAAK/G,EAAM2G,GAAU,OAAO,EAIvC,IAAIK,EAAOV,EACP9G,KAAK6G,kBAAkBrG,EAAMsG,KAC/BU,EAAO,CAAC1K,EAAG,EAAGC,EAAGiD,KAAKzC,OAAQX,EAAGkK,EAAGlK,EAAGC,EAAGiK,EAAGjK,GAC7CsK,EAAUnH,KAAKmH,QAAQ3G,EAAMgH,EAAMJ,EAAIK,OAGzC,IAAIC,GAAU,EACVC,EAA4B,CAACL,QAAQ,EAAMM,MAAM,GACrD,KAAOT,EAAUA,GAAWnH,KAAKmH,QAAQ3G,EAAMgH,EAAMJ,EAAIK,OAAO,CAC9D,IAAII,EAqBJ,GAlBIV,EAAQrG,QAAUN,EAAKwG,UAAYxG,EAAKyG,WAAaH,EAAGlK,EAAI4D,EAAK5D,IAAMoD,KAAKkG,SAE5ElG,KAAKmH,QAAQA,EAAS,IAAIA,EAASvK,EAAG4D,EAAK5D,GAAI4D,KAAUR,KAAKmH,QAAQA,EAAS,IAAIA,EAASvK,EAAGkK,EAAGlK,EAAIuK,EAAQtK,GAAI2D,KACpHA,EAAKyG,UAAazG,EAAKyG,WAAaH,EAAGlK,EAAI4D,EAAK5D,EAChDiL,EAAQ7H,KAAK8H,SAAStH,EAAM,IAAIsG,EAAIlK,EAAGuK,EAAQvK,EAAIuK,EAAQtK,KAAM8K,IAC7DR,EAAQrG,QAAU+G,EACpBvM,EAAMyM,QAAQjB,EAAItG,IACR2G,EAAQrG,QAAU+G,GAAST,EAAIQ,OAEzC5H,KAAK2G,aACLG,EAAGlK,EAAIuK,EAAQvK,EAAIuK,EAAQtK,EAC3BvB,EAAMyM,QAAQvH,EAAMsG,IAEtBY,EAAUA,GAAWG,GAGrBA,EAAQ7H,KAAK8H,SAASX,EAAS,IAAIA,EAASvK,EAAGkK,EAAGlK,EAAIkK,EAAGjK,EAAG4K,KAAMjH,KAASmH,KAExEE,EAAS,OAAOH,EACrBP,OAAUxL,EAEZ,OAAO+L,CACT,CAGOP,QAAQM,EAAqBD,EAAOC,EAAMO,GAC/C,MAAMC,EAASR,EAAKS,IACdC,EAAUH,GAAOE,IACvB,OAAOlI,KAAK3C,MAAMwG,MAAKvH,GAAKA,EAAE4L,MAAQD,GAAU3L,EAAE4L,MAAQC,GAAW7M,EAAM0B,cAAcV,EAAGkL,IAC9F,CACOY,WAAWX,EAAqBD,EAAOC,EAAMO,GAClD,MAAMC,EAASR,EAAKS,IACdC,EAAUH,GAAOE,IACvB,OAAOlI,KAAK3C,MAAMgL,QAAO/L,GAAKA,EAAE4L,MAAQD,GAAU3L,EAAE4L,MAAQC,GAAW7M,EAAM0B,cAAcV,EAAGkL,IAChG,CAGUc,yBAAyB9H,EAAqB5F,EAAsB2N,GAC5E,IAAK3N,EAAE0H,OAAS9B,EAAKgI,MAAO,OAC5B,IAiBIrB,EAjBAsB,EAAKjI,EAAKgI,MACVE,EAAI,IAAI9N,EAAE0H,MAGVoG,EAAE9L,EAAI6L,EAAG7L,GACX8L,EAAE7L,GAAK6L,EAAE9L,EAAI6L,EAAG7L,EAChB8L,EAAE9L,EAAI6L,EAAG7L,GAET8L,EAAE7L,GAAK4L,EAAG7L,EAAI8L,EAAE9L,EAEd8L,EAAE5L,EAAI2L,EAAG3L,GACX4L,EAAE3L,GAAK2L,EAAE5L,EAAI2L,EAAG3L,EAChB4L,EAAE5L,EAAI2L,EAAG3L,GAET4L,EAAE3L,GAAK0L,EAAG3L,EAAI4L,EAAE5L,EAIlB,IAAI6L,EAAU,GAwBd,OAvBAJ,EAASzI,SAAQxD,IACf,GAAIA,EAAEwE,SAAWxE,EAAEkM,MAAO,OAC1B,IAAII,EAAKtM,EAAEkM,MACPK,EAAQvJ,OAAOwJ,UAAWC,EAAQzJ,OAAOwJ,UAGzCL,EAAG7L,EAAIgM,EAAGhM,EACZiM,GAAUH,EAAE9L,EAAI8L,EAAE7L,EAAK+L,EAAGhM,GAAKgM,EAAG/L,EACzB4L,EAAG7L,EAAE6L,EAAG5L,EAAI+L,EAAGhM,EAAEgM,EAAG/L,IAC7BgM,GAAUD,EAAGhM,EAAIgM,EAAG/L,EAAK6L,EAAE9L,GAAKgM,EAAG/L,GAEjC4L,EAAG3L,EAAI8L,EAAG9L,EACZiM,GAAUL,EAAE5L,EAAI4L,EAAE3L,EAAK6L,EAAG9L,GAAK8L,EAAG7L,EACzB0L,EAAG3L,EAAE2L,EAAG1L,EAAI6L,EAAG9L,EAAE8L,EAAG7L,IAC7BgM,GAAUH,EAAG9L,EAAI8L,EAAG7L,EAAK2L,EAAE5L,GAAK8L,EAAG7L,GAErC,IAAIiM,EAAOtL,KAAKuL,IAAIF,EAAOF,GACvBG,EAAOL,IACTA,EAAUK,EACV7B,EAAU7K,MAGd1B,EAAEuM,QAAUA,EACLA,CACT,CAoBO+B,WAAWnM,EAAWF,EAAW8E,EAAawH,EAAevG,EAAgBlB,GAUlF,OARA1B,KAAK3C,MAAMyC,SAAQxD,GACjBA,EAAEkM,MAAQ,CACR5L,EAAGN,EAAEM,EAAIC,EAAI8E,EACb7E,EAAGR,EAAEQ,EAAIC,EAAI2E,EACb3E,EAAGT,EAAES,EAAIA,EAAI2E,EAAOyH,EACpBtM,EAAGP,EAAEO,EAAIA,EAAI8E,EAAMiB,KAGhB5C,IACT,CAGOuH,KAAK7K,EAAkBC,GAC5B,IAAKA,GAAKA,EAAEmE,SAAWpE,GAAKA,EAAEoE,OAAQ,OAAO,EAE7C,SAASsI,IACP,IAAItM,EAAIH,EAAEG,EAAGF,EAAID,EAAEC,EAUnB,OATAD,EAAEG,EAAIJ,EAAEI,EAAGH,EAAEC,EAAIF,EAAEE,EACfF,EAAEG,GAAKF,EAAEE,GACXH,EAAEI,EAAIA,EAAGJ,EAAEE,EAAID,EAAEC,EAAID,EAAEE,GACdH,EAAEK,GAAKJ,EAAEI,GAClBL,EAAEI,EAAIH,EAAEG,EAAIH,EAAEI,EAAGL,EAAEE,EAAIA,IAEvBF,EAAEI,EAAIA,EAAGJ,EAAEE,EAAIA,GAEjBF,EAAE2M,OAAS1M,EAAE0M,QAAS,GACf,CACT,CACA,IAAIC,EAGJ,GAAI5M,EAAEK,IAAMJ,EAAEI,GAAKL,EAAEG,IAAMF,EAAEE,IAAMH,EAAEI,IAAMH,EAAEG,GAAKJ,EAAEE,IAAMD,EAAEC,KAAO0M,EAAWhO,EAAMiO,WAAW7M,EAAGC,IAChG,OAAOyM,IACT,IAAiB,IAAbE,EAAJ,CAGA,GAAI5M,EAAEK,IAAMJ,EAAEI,GAAKL,EAAEI,IAAMH,EAAEG,IAAMwM,IAAaA,EAAWhO,EAAMiO,WAAW7M,EAAGC,KAAM,CACnF,GAAIA,EAAEC,EAAIF,EAAEE,EAAG,CAAE,IAAI4M,EAAI9M,EAAGA,EAAIC,EAAGA,EAAI6M,EACvC,OAAOJ,IAET,IAAiB,IAAbE,EAAJ,CAGA,GAAI5M,EAAEG,IAAMF,EAAEE,GAAKH,EAAEE,IAAMD,EAAEC,IAAM0M,IAAaA,EAAWhO,EAAMiO,WAAW7M,EAAGC,KAAM,CACnF,GAAIA,EAAEG,EAAIJ,EAAEI,EAAG,CAAE,IAAI0M,EAAI9M,EAAGA,EAAIC,EAAGA,EAAI6M,EACvC,OAAOJ,IAET,OAAO,CAPuB,CAPA,CAehC,CAEOK,YAAY3M,EAAWF,EAAWG,EAAWF,GAClD,IAAIiK,EAAoB,CAAChK,EAAGA,GAAK,EAAGF,EAAGA,GAAK,EAAGG,EAAGA,GAAK,EAAGF,EAAGA,GAAK,GAClE,OAAQmD,KAAKmH,QAAQL,EACvB,CAGO4C,QAAQC,EAAyB,UAAWC,GAAS,GAC1D,GAA0B,IAAtB5J,KAAK3C,MAAMpB,OAAc,OAAO+D,KAChC4J,GAAQ5J,KAAKqH,YACjB,MAAMwC,EAAW7J,KAAKuG,UACjBsD,GAAU7J,KAAKoG,cACpB,MAAM0D,EAAkB9J,KAAK+J,gBACxBD,IAAiB9J,KAAK+J,iBAAkB,GAC7C,IAAIC,EAAYhK,KAAK3C,MAYrB,OAXA2C,KAAK3C,MAAQ,GACb2M,EAAUlK,SAAQ,CAACxD,EAAG2N,EAAOlO,KAC3B,IAAImO,EACC5N,EAAEwE,SACLxE,EAAEqE,cAAe,EACF,SAAXgJ,GAAqBM,IAAOC,EAAQnO,EAAKkO,EAAQ,KAEvDjK,KAAKmK,QAAQ7N,GAAG,EAAO4N,EAAM,IAE1BJ,UAAwB9J,KAAK+J,gBAC7BF,GAAU7J,KAAKoG,aAAY,GACzBpG,IACT,CAGWkG,UAAM3G,GACXS,KAAKiG,SAAW1G,IACpBS,KAAKiG,OAAS1G,IAAO,EAChBA,GACHS,KAAK2G,aAAaC,UAEtB,CAGWV,YAAmB,OAAOlG,KAAKiG,SAAU,CAAO,CAGpDoB,UAAU/J,EAAc,EAAGC,EAASyC,KAAKzC,QAE9C,OADAyC,KAAK3C,MAAQ/B,EAAMsC,KAAKoC,KAAK3C,MAAOC,EAAKC,GAClCyC,IACT,CAGU2G,aACR,OAAI3G,KAAKuG,YACTvG,KAAKqH,YAEDrH,KAAKkG,MAEPlG,KAAK3C,MAAMyC,SAAQxD,IACjB,GAAIA,EAAE8N,gBAAyBzO,IAAZW,EAAE+N,OAAuB/N,EAAEM,IAAMN,EAAE+N,MAAMzN,EAAG,OAC/D,IAAI0N,EAAOhO,EAAEM,EACb,KAAO0N,EAAOhO,EAAE+N,MAAMzN,KAClB0N,EACYtK,KAAKmH,QAAQ7K,EAAG,CAACQ,EAAGR,EAAEQ,EAAGF,EAAG0N,EAAMvN,EAAGT,EAAES,EAAGF,EAAGP,EAAEO,MAE3DP,EAAE+M,QAAS,EACX/M,EAAEM,EAAI0N,MAMZtK,KAAK3C,MAAMyC,SAAQ,CAACxD,EAAGmE,KACrB,IAAInE,EAAEwE,OACN,KAAOxE,EAAEM,EAAI,GAAG,CACd,IAAI0N,EAAa,IAAN7J,EAAU,EAAInE,EAAEM,EAAI,EAE/B,GADuB,IAAN6D,GAAYT,KAAKmH,QAAQ7K,EAAG,CAACQ,EAAGR,EAAEQ,EAAGF,EAAG0N,EAAMvN,EAAGT,EAAES,EAAGF,EAAGP,EAAEO,IAC3D,MAIjBP,EAAE+M,OAAU/M,EAAEM,IAAM0N,EACpBhO,EAAEM,EAAI0N,OA7BiBtK,IAkC/B,CAOOuK,YAAY/J,EAAqBgK,IACtChK,EAAOA,GAAQ,CAAC,GACX0H,IAAM1H,EAAK0H,KAAOrC,EAAgB4E,cAGxB9O,IAAX6E,EAAK1D,QAA8BnB,IAAX6E,EAAK5D,GAA8B,OAAX4D,EAAK1D,GAAyB,OAAX0D,EAAK5D,IAC1E4D,EAAKG,cAAe,GAItB,IAAIV,EAA0B,CAAEnD,EAAG,EAAGF,EAAG,EAAGG,EAAG,EAAGF,EAAG,GAkBrD,OAjBAvB,EAAM2E,SAASO,EAAMP,GAEhBO,EAAKG,qBAAuBH,EAAKG,aACjCH,EAAKI,iBAAmBJ,EAAKI,SAC7BJ,EAAKK,eAAiBL,EAAKK,OAChCvF,EAAMoP,eAAelK,GAGA,iBAAVA,EAAK1D,IAAiB0D,EAAK1D,EAAIwC,OAAOkB,EAAK1D,IACjC,iBAAV0D,EAAK5D,IAAiB4D,EAAK5D,EAAI0C,OAAOkB,EAAK5D,IACjC,iBAAV4D,EAAKzD,IAAiByD,EAAKzD,EAAIuC,OAAOkB,EAAKzD,IACjC,iBAAVyD,EAAK3D,IAAiB2D,EAAK3D,EAAIyC,OAAOkB,EAAK3D,IAClDjB,MAAM4E,EAAK1D,KAAM0D,EAAK1D,EAAImD,EAASnD,EAAG0D,EAAKG,cAAe,GAC1D/E,MAAM4E,EAAK5D,KAAM4D,EAAK5D,EAAIqD,EAASrD,EAAG4D,EAAKG,cAAe,GAC1D/E,MAAM4E,EAAKzD,KAAMyD,EAAKzD,EAAIkD,EAASlD,GACnCnB,MAAM4E,EAAK3D,KAAM2D,EAAK3D,EAAIoD,EAASpD,GAEhCmD,KAAK2K,aAAanK,EAAMgK,EACjC,CAGOG,aAAanK,EAAqBgK,GAEvC,IAAII,EAASpK,EAAK6J,OAAS/O,EAAMyM,QAAQ,CAAC,EAAGvH,GAW7C,GATIA,EAAKF,OAAQE,EAAKzD,EAAIW,KAAKuL,IAAIzI,EAAKzD,EAAGyD,EAAKF,OAC5CE,EAAKD,OAAQC,EAAK3D,EAAIa,KAAKuL,IAAIzI,EAAK3D,EAAG2D,EAAKD,OAC5CC,EAAKJ,MAAQI,EAAKJ,MAAQJ,KAAKzC,SAAUiD,EAAKzD,EAAIW,KAAKC,IAAI6C,EAAKzD,EAAGyD,EAAKJ,OACxEI,EAAKH,OAAQG,EAAK3D,EAAIa,KAAKC,IAAI6C,EAAK3D,EAAG2D,EAAKH,QAK9BG,EAAK1D,GAAK,IAAM0D,EAAKzD,GAAK,GAAKiD,KAAKzC,QACtCyC,KAAKzC,OAAS,KAAOyC,KAAK+J,iBAAmBvJ,EAAK0H,MAA2C,IAApClI,KAAK6K,gBAAgBrK,EAAM,IAAY,CAC9G,IAAIsK,EAAO,IAAItK,GACXsK,EAAKnK,qBAAuBmK,EAAKhO,SAAUgO,EAAKlO,GAC/CkO,EAAKhO,EAAIY,KAAKuL,IAAI,GAAI6B,EAAKhO,GAChCgO,EAAK/N,EAAIW,KAAKuL,IAAI,GAAI6B,EAAK/N,GAC3BiD,KAAK+K,eAAeD,EAAM,IAyC5B,OAtCItK,EAAKzD,EAAIiD,KAAKzC,OAChBiD,EAAKzD,EAAIiD,KAAKzC,OACLiD,EAAKzD,EAAI,IAClByD,EAAKzD,EAAI,GAGPiD,KAAKgG,QAAUxF,EAAK3D,EAAImD,KAAKgG,OAC/BxF,EAAK3D,EAAImD,KAAKgG,OACLxF,EAAK3D,EAAI,IAClB2D,EAAK3D,EAAI,GAGP2D,EAAK1D,EAAI,IACX0D,EAAK1D,EAAI,GAEP0D,EAAK5D,EAAI,IACX4D,EAAK5D,EAAI,GAGP4D,EAAK1D,EAAI0D,EAAKzD,EAAIiD,KAAKzC,SACrBiN,EACFhK,EAAKzD,EAAIiD,KAAKzC,OAASiD,EAAK1D,EAE5B0D,EAAK1D,EAAIkD,KAAKzC,OAASiD,EAAKzD,GAG5BiD,KAAKgG,QAAUxF,EAAK5D,EAAI4D,EAAK3D,EAAImD,KAAKgG,SACpCwE,EACFhK,EAAK3D,EAAImD,KAAKgG,OAASxF,EAAK5D,EAE5B4D,EAAK5D,EAAIoD,KAAKgG,OAASxF,EAAK3D,GAI3BvB,EAAM0P,QAAQxK,EAAMoK,KACvBpK,EAAK6I,QAAS,GAGT7I,CACT,CAGOyK,cAAcC,GAEnB,OAAIA,EACKlL,KAAK3C,MAAMgL,QAAO/L,GAAKA,EAAE+M,SAAW/N,EAAM0P,QAAQ1O,EAAGA,EAAE+N,SAEzDrK,KAAK3C,MAAMgL,QAAO/L,GAAKA,EAAE+M,QAClC,CAGUzC,QAAQb,GAChB,GAAI/F,KAAKuG,YAAcvG,KAAKmG,SAAU,OAAOnG,KAC7C,IAAImL,GAAcpF,GAAgB,IAAIqF,OAAOpL,KAAKiL,iBAElD,OADAjL,KAAKmG,SAASgF,GACPnL,IACT,CAGOyG,aACL,OAAIzG,KAAKuG,WACTvG,KAAK3C,MAAMyC,SAAQxD,WACVA,EAAE+M,cACF/M,EAAE+O,UAAU,IAHMrL,IAM7B,CAKO0G,cAML,OALA1G,KAAK3C,MAAMyC,SAAQxD,IACjBA,EAAE+N,MAAQ/O,EAAMyM,QAAQ,CAAC,EAAGzL,UACrBA,EAAE+M,MAAM,IAEjBrJ,KAAK+G,WAAa/G,KAAK3C,MAAMiO,MAAKhP,GAAKA,EAAEwE,SAClCd,IACT,CAGOuL,iBAOL,OANAvL,KAAK3C,MAAMyC,SAAQxD,IACbhB,EAAM0P,QAAQ1O,EAAGA,EAAE+N,SACvB/O,EAAMyM,QAAQzL,EAAGA,EAAE+N,OACnB/N,EAAE+M,QAAS,EAAI,IAEjBrJ,KAAK4G,UACE5G,IACT,CAMOwL,kBAAkBhL,EAAqBiL,EAAWzL,KAAK3C,MAAOE,EAASyC,KAAKzC,OAAQ2M,GACzF,IACIwB,GAAQ,EACZ,IAAK,IAAIjL,EAFGyJ,EAAQA,EAAMtN,EAAIW,GAAU2M,EAAMpN,EAAIoN,EAAMnN,GAAK,GAExC2O,IAASjL,EAAG,CAC/B,IAAI3D,EAAI2D,EAAIlD,EACRX,EAAIc,KAAKiO,MAAMlL,EAAIlD,GACvB,GAAIT,EAAI0D,EAAKzD,EAAIQ,EACf,SAEF,IAAIqO,EAAM,CAAC9O,IAAGF,IAAGG,EAAGyD,EAAKzD,EAAGF,EAAG2D,EAAK3D,GAC/B4O,EAAS5H,MAAKvH,GAAKhB,EAAM0B,cAAc4O,EAAKtP,OAC3CkE,EAAK1D,IAAMA,GAAK0D,EAAK5D,IAAMA,IAAG4D,EAAK6I,QAAS,GAChD7I,EAAK1D,EAAIA,EACT0D,EAAK5D,EAAIA,SACF4D,EAAKG,aACZ+K,GAAQ,GAGZ,OAAOA,CACT,CAGOvB,QAAQ3J,EAAqBqL,GAAkB,EAAO3B,GAC3D,IAQI4B,EAPJ,OADU9L,KAAK3C,MAAMwG,MAAKvH,GAAKA,EAAE4L,MAAQ1H,EAAK0H,eAI9C1H,EAAOR,KAAK+J,gBAAkB/J,KAAK2K,aAAanK,GAAQR,KAAKuK,YAAY/J,IAC7DuL,yBACLvL,EAAKwL,WAGRxL,EAAKG,cAAgBX,KAAKwL,kBAAkBhL,EAAMR,KAAK3C,MAAO2C,KAAKzC,OAAQ2M,YACtE1J,EAAKG,aACZmL,GAAgB,GAGlB9L,KAAK3C,MAAM4O,KAAKzL,GACZqL,GAAmB7L,KAAK8F,WAAWmG,KAAKzL,GAEvCsL,GAAe9L,KAAKkH,eAAe1G,GACnCR,KAAKuG,WAAavG,KAAK2G,aAAaC,UAClCpG,EACT,CAEO0L,WAAW1L,EAAqB2L,GAAY,EAAMC,GAAe,GACtE,OAAKpM,KAAK3C,MAAMwG,MAAKvH,GAAKA,EAAE4L,MAAQ1H,EAAK0H,OAIrCkE,GACFpM,KAAK+F,aAAakG,KAAKzL,GAErB2L,IAAW3L,EAAKwL,YAAa,GAEjChM,KAAK3C,MAAQ2C,KAAK3C,MAAMgL,QAAO/L,GAAKA,EAAE4L,MAAQ1H,EAAK0H,MAC9C1H,EAAK6L,kBAAkBrM,KAAK2G,aACjC3G,KAAK4G,QAAQ,CAACpG,IACPR,MAVEA,IAWX,CAEOsM,UAAUH,GAAY,GAE3B,cADOnM,KAAKuM,SACPvM,KAAK3C,MAAMpB,QAChBkQ,GAAanM,KAAK3C,MAAMyC,SAAQxD,GAAKA,EAAE0P,YAAa,IACpDhM,KAAK+F,aAAe/F,KAAK3C,MACzB2C,KAAK3C,MAAQ,GACN2C,KAAK4G,QAAQ5G,KAAK+F,eAJM/F,IAKjC,CAKOwM,cAAchM,EAAqB5F,GAExC,IAAKoF,KAAKyM,oBAAoBjM,EAAM5F,GAAI,OAAO,EAI/C,GAHAA,EAAEgN,MAAO,GAGJ5H,KAAKgG,OACR,OAAOhG,KAAK8H,SAAStH,EAAM5F,GAI7B,IAAI8R,EACA9I,EAAQ,IAAIiC,EAAgB,CAC9BtI,OAAQyC,KAAKzC,OACb2I,MAAOlG,KAAKkG,MACZ7I,MAAO2C,KAAK3C,MAAMsP,KAAIrQ,GAChBA,EAAE4L,MAAQ1H,EAAK0H,KACjBwE,EAAa,IAAIpQ,GACVoQ,GAEF,IAAIpQ,OAGf,IAAKoQ,EAAY,OAAO,EAIxB,IAAIE,EAAUhJ,EAAMkE,SAAS4E,EAAY9R,IAAMgJ,EAAMiJ,UAAYnP,KAAKC,IAAIqC,KAAK6M,SAAU7M,KAAKgG,QAE9F,IAAK4G,IAAYhS,EAAE4P,UAAY5P,EAAEuM,QAAS,CACxC,IAAIA,EAAUvM,EAAEuM,QAAQtL,GAAGiR,cAC3B,GAAI9M,KAAKuH,KAAK/G,EAAM2G,GAElB,OADAnH,KAAK4G,WACE,EAGX,QAAKgG,IAILhJ,EAAMvG,MAAMgL,QAAO/L,GAAKA,EAAE+M,SAAQvJ,SAAQiN,IACxC,IAAIzQ,EAAI0D,KAAK3C,MAAMwG,MAAKnH,GAAKA,EAAEwL,MAAQ6E,EAAE7E,MACpC5L,IACLhB,EAAMyM,QAAQzL,EAAGyQ,GACjBzQ,EAAE+M,QAAS,EAAI,IAEjBrJ,KAAK4G,WACE,EACT,CAGOoG,UAAUxM,GAEf,UADOA,EAAKyM,aACPjN,KAAKgG,OAAQ,OAAO,EAEzB,IAAIpC,EAAQ,IAAIiC,EAAgB,CAC9BtI,OAAQyC,KAAKzC,OACb2I,MAAOlG,KAAKkG,MACZ7I,MAAO2C,KAAK3C,MAAMsP,KAAIrQ,IAAa,IAAIA,QAErCA,EAAI,IAAIkE,GAIZ,OAHAR,KAAKkN,YAAY5Q,UACVA,EAAET,UAAWS,EAAE4L,WAAY5L,EAAE6Q,eAAgB7Q,EAAEC,KACtDqH,EAAMuG,QAAQ7N,GACVsH,EAAMiJ,UAAY7M,KAAKgG,SACzBxF,EAAKyM,YAAc3R,EAAMyM,QAAQ,CAAC,EAAGzL,IAC9B,EAGX,CAGOmQ,oBAAoBjM,EAAqBwE,GAI9C,OAFAA,EAAEjI,EAAIiI,EAAEjI,GAAKyD,EAAKzD,EAClBiI,EAAEnI,EAAImI,EAAEnI,GAAK2D,EAAK3D,EACd2D,EAAK1D,IAAMkI,EAAElI,GAAK0D,EAAK5D,IAAMoI,EAAEpI,IAE/B4D,EAAKF,OAAQ0E,EAAEjI,EAAIW,KAAKuL,IAAIjE,EAAEjI,EAAGyD,EAAKF,OACtCE,EAAKD,OAAQyE,EAAEnI,EAAIa,KAAKuL,IAAIjE,EAAEnI,EAAG2D,EAAKD,OACtCC,EAAKJ,OAAQ4E,EAAEjI,EAAIW,KAAKC,IAAIqH,EAAEjI,EAAGyD,EAAKJ,OACtCI,EAAKH,OAAQ2E,EAAEnI,EAAIa,KAAKC,IAAIqH,EAAEnI,EAAG2D,EAAKH,OAClCG,EAAKzD,IAAMiI,EAAEjI,GAAKyD,EAAK3D,IAAMmI,EAAEnI,EACzC,CAGOiL,SAAStH,EAAqB5F,GACnC,IAAK4F,IAA4B5F,EAAG,OAAO,EAC3C,IAAIwS,OACWzR,IAAXf,EAAEgN,OACJwF,EAAmBxS,EAAEgN,MAAO,GAIX,iBAARhN,EAAEkC,IAAkBlC,EAAEkC,EAAI0D,EAAK1D,GACvB,iBAARlC,EAAEgC,IAAkBhC,EAAEgC,EAAI4D,EAAK5D,GACvB,iBAARhC,EAAEmC,IAAkBnC,EAAEmC,EAAIyD,EAAKzD,GACvB,iBAARnC,EAAEiC,IAAkBjC,EAAEiC,EAAI2D,EAAK3D,GAC1C,IAAI2N,EAAYhK,EAAKzD,IAAMnC,EAAEmC,GAAKyD,EAAK3D,IAAMjC,EAAEiC,EAC3CiK,EAAoBxL,EAAMyM,QAAQ,CAAC,EAAGvH,GAAM,GAKhD,GAJAlF,EAAMyM,QAAQjB,EAAIlM,GAClBkM,EAAK9G,KAAK2K,aAAa7D,EAAI0D,GAC3BlP,EAAMyM,QAAQnN,EAAGkM,GAEbxL,EAAM0P,QAAQxK,EAAM5F,GAAI,OAAO,EACnC,IAAIyS,EAA6B/R,EAAMyM,QAAQ,CAAC,EAAGvH,GAG/C+H,EAAWvI,KAAKoI,WAAW5H,EAAMsG,EAAIlM,EAAE6M,MACvC6F,GAAa,EACjB,GAAI/E,EAAStM,OAAQ,CACnB,IAAIsR,EAAa/M,EAAKwG,UAAYpM,EAAE0M,OAEhCH,EAAUoG,EAAavN,KAAKsI,yBAAyB9H,EAAM5F,EAAG2N,GAAYA,EAAS,GAEvF,GAAIgF,GAAcpG,GAAW3G,EAAKjE,MAAME,MAAM+Q,iBAAmBhN,EAAKjE,KAAKkR,QAAS,CAClF,IAAIzE,EAAO1N,EAAMoS,cAAc9S,EAAE0H,KAAM6E,EAAQqB,OAC3CmF,EAAKrS,EAAMkM,KAAK5M,EAAE0H,MAClBsL,EAAKtS,EAAMkM,KAAKL,EAAQqB,OACjBQ,GAAQ2E,EAAKC,EAAKD,EAAKC,GACvB,KACTzG,EAAQ5K,KAAKsR,YAAY1G,EAAQtL,QAAIF,EAAW6E,GAChD2G,OAAUxL,GAIVwL,EACFmG,GAActN,KAAKkH,eAAe1G,EAAMsG,EAAIK,EAASvM,IAErD0S,GAAa,EACTF,UAAyBxS,EAAEgN,MAanC,OARI0F,IACF9M,EAAK6I,QAAS,EACd/N,EAAMyM,QAAQvH,EAAMsG,IAElBlM,EAAEgN,MACJ5H,KAAK2G,aACFC,WAEGtL,EAAM0P,QAAQxK,EAAM6M,EAC9B,CAEOR,SACL,OAAO7M,KAAK3C,MAAMG,QAAO,CAACsQ,EAAKxR,IAAMoB,KAAKC,IAAImQ,EAAKxR,EAAEM,EAAIN,EAAEO,IAAI,EACjE,CAEOkR,YAAYvN,GAMjB,OALKA,EAAK4J,YACR5J,EAAK4J,WAAY,SACV5J,EAAKyG,UACPjH,KAAKuG,WAAWvG,KAAK0G,eAErB1G,IACT,CAEOgO,YACL,IAAI1R,EAAI0D,KAAK3C,MAAMwG,MAAKvH,GAAKA,EAAE8N,YAK/B,OAJI9N,WACKA,EAAE8N,iBACF9N,EAAE2K,WAEJjH,IACT,CAIOiO,KAAKC,GAAc,EAAMC,GAE9B,IAAIC,EAAMpO,KAAKuM,UAAUtQ,OACrB0N,EAASyE,GAAOpO,KAAKzC,SAAY6Q,EAAM,EAAKpO,KAAKuM,SAAS6B,EAAM,GAAK,KACrErS,EAAwB,GAW5B,OAVAiE,KAAKqH,YACLrH,KAAK3C,MAAMyC,SAAQxD,IACjB,IAAI+R,EAAK1E,GAAQ9F,MAAKyK,GAAKA,EAAEpG,MAAQ5L,EAAE4L,MACnCnL,EAAmB,IAAIT,GAEvB+R,IAAMtR,EAAED,EAAIuR,EAAGvR,EAAGC,EAAEH,EAAIyR,EAAGzR,EAAGG,EAAEA,EAAIsR,EAAGtR,GAC3CzB,EAAMiT,sBAAsBxR,GAAImR,GAC5BC,GAAQA,EAAO7R,EAAGS,GACtBhB,EAAKkQ,KAAKlP,EAAE,IAEPhB,CACT,CAGOyS,mBAAmBnR,GACxB,OAAK2C,KAAKuM,UAAYvM,KAAK+J,iBAE3B/J,KAAKuM,SAASzM,SAAQ,CAAC6J,EAAQpM,KAC7B,IAAKoM,GAAUpM,IAAWyC,KAAKzC,OAAQ,OAAOyC,KAC9C,GAAIzC,EAASyC,KAAKzC,OAChByC,KAAKuM,SAAShP,QAAU5B,MAErB,CAGH,IAAI8S,EAAQlR,EAASyC,KAAKzC,OAC1BF,EAAMyC,SAAQU,IACZ,IAAKA,EAAK6J,MAAO,OACjB,IAAI/N,EAAIqN,EAAO9F,MAAKyK,GAAKA,EAAEpG,MAAQ1H,EAAK0H,MACnC5L,IAGDA,EAAEM,GAAK,GAAK4D,EAAK5D,IAAM4D,EAAK6J,MAAMzN,IACpCN,EAAEM,GAAM4D,EAAK5D,EAAI4D,EAAK6J,MAAMzN,GAG1B4D,EAAK1D,IAAM0D,EAAK6J,MAAMvN,IACxBR,EAAEQ,EAAIY,KAAKgR,MAAMlO,EAAK1D,EAAI2R,IAGxBjO,EAAKzD,IAAMyD,EAAK6J,MAAMtN,IACxBT,EAAES,EAAIW,KAAKgR,MAAMlO,EAAKzD,EAAI0R,YA1BiBzO,IAiCrD,CAaO2O,cAAcC,EAAoBrR,EAAgBF,EAAwBsM,EAAwB,aACvG,IAAK3J,KAAK3C,MAAMpB,SAAWsB,GAAUqR,IAAerR,EAAQ,OAAOyC,KAGnE,MAAM6O,EAAuB,YAAXlF,GAAmC,SAAXA,EACtCkF,GACF7O,KAAKqH,UAAU,EAAGuH,GAIhBrR,EAASqR,GAAY5O,KAAK8O,YAAY9O,KAAK3C,MAAOuR,GACtD5O,KAAKoG,cACL,IAAI2I,EAA4B,GAG5BC,GAAW,EACf,GAAe,IAAXzR,GAAgBF,GAAOpB,OAAQ,CACjC+S,GAAW,EACX,IAAIrN,EAAM,EACVtE,EAAMyC,SAAQxD,IACZA,EAAEQ,EAAI,EACNR,EAAES,EAAI,EACNT,EAAEM,EAAIc,KAAKC,IAAIrB,EAAEM,EAAG+E,GACpBA,EAAMrF,EAAEM,EAAIN,EAAEO,CAAC,IAEjBkS,EAAW1R,EACXA,EAAQ,QAERA,EAAQwR,EAAY7O,KAAK3C,MAAQ/B,EAAMsC,KAAKoC,KAAK3C,OAAQ,EAAGuR,GAK9D,GAAIrR,EAASqR,GAAc5O,KAAKuM,SAAU,CACxC,MAAM0C,EAAajP,KAAKuM,SAAShP,IAAW,GAG5C,IAAI2R,EAAYlP,KAAKuM,SAAStQ,OAAS,GAClCgT,EAAWhT,QAAU2S,IAAeM,GAAalP,KAAKuM,SAAS2C,IAAYjT,SAC9E2S,EAAaM,EACblP,KAAKuM,SAAS2C,GAAWpP,SAAQqP,IAC/B,IAAI7S,EAAIe,EAAMwG,MAAKvH,GAAKA,EAAE4L,MAAQiH,EAAUjH,MACxC5L,IAEGuS,GAAcM,EAAUxO,eAC3BrE,EAAEQ,EAAIqS,EAAUrS,GAAKR,EAAEQ,EACvBR,EAAEM,EAAIuS,EAAUvS,GAAKN,EAAEM,GAEzBN,EAAES,EAAIoS,EAAUpS,GAAKT,EAAES,EACJpB,MAAfwT,EAAUrS,QAAkCnB,IAAhBwT,EAAUvS,IAAiBN,EAAEqE,cAAe,QAMlFsO,EAAWnP,SAAQqP,IACjB,IAAIC,EAAI/R,EAAMgS,WAAU/S,GAAKA,EAAE4L,MAAQiH,EAAUjH,MACjD,IAAW,IAAPkH,EAAU,CACZ,MAAM9S,EAAIe,EAAM+R,GAEhB,GAAIP,EAEF,YADAvS,EAAES,EAAIoS,EAAUpS,IAGdoS,EAAUxO,cAAgB/E,MAAMuT,EAAUrS,IAAMlB,MAAMuT,EAAUvS,KAClEoD,KAAKwL,kBAAkB2D,EAAWJ,GAE/BI,EAAUxO,eACbrE,EAAEQ,EAAIqS,EAAUrS,GAAKR,EAAEQ,EACvBR,EAAEM,EAAIuS,EAAUvS,GAAKN,EAAEM,EACvBN,EAAES,EAAIoS,EAAUpS,GAAKT,EAAES,EACvBgS,EAAS9C,KAAK3P,IAEhBe,EAAMiS,OAAOF,EAAG,OAMtB,GAAIP,EACF7O,KAAK0J,QAAQC,GAAQ,OAChB,CAEL,GAAItM,EAAMpB,OACR,GAAsB,mBAAX0N,EACTA,EAAOpM,EAAQqR,EAAYG,EAAU1R,QAChC,IAAK2R,EAAU,CACpB,IAAIP,EAASI,GAAwB,SAAXlF,EAAqB,EAAIpM,EAASqR,EACxDW,EAAmB,SAAX5F,GAAgC,cAAXA,EAC7B6F,EAAoB,UAAX7F,GAAiC,cAAXA,EACnCtM,EAAMyC,SAAQU,IAEZA,EAAK1D,EAAgB,IAAXS,EAAe,EAAKgS,EAAO7R,KAAKgR,MAAMlO,EAAK1D,EAAI2R,GAAS/Q,KAAKuL,IAAIzI,EAAK1D,EAAGS,EAAS,GAC5FiD,EAAKzD,EAAiB,IAAXQ,GAA+B,IAAfqR,EAAoB,EAAIY,EAAS9R,KAAKgR,MAAMlO,EAAKzD,EAAI0R,IAAU,EAAM/Q,KAAKuL,IAAIzI,EAAKzD,EAAGQ,GACjHwR,EAAS9C,KAAKzL,EAAK,IAErBnD,EAAQ,GAKP2R,IAAUD,EAAWzT,EAAMsC,KAAKmR,GAAW,EAAGxR,IACnDyC,KAAK+J,iBAAkB,EACvB/J,KAAK3C,MAAQ,GACb0R,EAASjP,SAAQU,IACfR,KAAKmK,QAAQ3J,GAAM,UACZA,EAAK6J,KAAK,IAOrB,OAHArK,KAAK3C,MAAMyC,SAAQxD,UAAYA,EAAE+N,QACjCrK,KAAKoG,aAAY,GAAQyI,UAClB7O,KAAK+J,gBACL/J,IACT,CAQO8O,YAAYzR,EAAwBE,EAAgBkS,GAAQ,GACjE,IAAI3E,EAAwB,GAO5B,OANAzN,EAAMyC,SAAQ,CAACxD,EAAGmE,KAChBnE,EAAE4L,IAAM5L,EAAE4L,KAAOrC,EAAgB4E,SACjCK,EAAKrK,GAAK,CAAC3D,EAAGR,EAAEQ,EAAGF,EAAGN,EAAEM,EAAGG,EAAGT,EAAES,EAAGmL,IAAK5L,EAAE4L,IAAI,IAEhDlI,KAAKuM,SAAWkD,EAAQ,GAAKzP,KAAKuM,UAAY,GAC9CvM,KAAKuM,SAAShP,GAAUuN,EACjB9K,IACT,CAOO+K,eAAezO,EAAkBiB,GACtCjB,EAAE4L,IAAM5L,EAAE4L,KAAOrC,EAAgB4E,SACjC,IAAI6D,EAAmB,CAACxR,EAAGR,EAAEQ,EAAGF,EAAGN,EAAEM,EAAGG,EAAGT,EAAES,EAAGmL,IAAK5L,EAAE4L,KACnD5L,EAAEqE,sBAAuB2N,EAAExR,SAAUwR,EAAE1R,EAAG0R,EAAE3N,cAAe,GAC/DX,KAAKuM,SAAWvM,KAAKuM,UAAY,GACjCvM,KAAKuM,SAAShP,GAAUyC,KAAKuM,SAAShP,IAAW,GACjD,IAAI0M,EAAQjK,KAAK6K,gBAAgBvO,EAAGiB,GAKpC,OAJe,IAAX0M,EACFjK,KAAKuM,SAAShP,GAAQ0O,KAAKqC,GAE3BtO,KAAKuM,SAAShP,GAAQ0M,GAASqE,EAC1BtO,IACT,CAEU6K,gBAAgBvO,EAAkBiB,GAC1C,OAAOyC,KAAKuM,WAAWhP,IAAS8R,WAAUf,GAAKA,EAAEpG,MAAQ5L,EAAE4L,QAAS,CACtE,CAIOgF,YAAY1M,GACjB,IAAK,IAAItF,KAAQsF,EACC,MAAZtF,EAAK,IAAuB,QAATA,UAAuBsF,EAAKtF,GAErD,OAAO8E,IACT,EAz5Bc,EAAAyK,OAAS,ECrClB,MAAMiF,EAAiC,CAC5CC,uBAAwB,SACxBC,SAAS,EACTC,MAAM,EACNC,WAAY,OACZC,mBAAoB,IACpBC,eAAgB,KAChBzS,OAAQ,GACR0S,UAAW,CAAEC,OAAQ,2BAA4BC,SAAU,OAAQC,QAAQ,GAC3EF,OAAQ,2BACRG,UAAW,kBACXC,OAAQ,GACRC,WAAY,KACZvK,OAAQ,EACRwK,OAAQ,EACRC,cAAe,IACfC,iBAAkB,yBAClBC,gBAAiB,GACjBC,iBAAkB,CAAEC,OAAQ,kBAAmBC,QAAS,4BACxDC,UAAW,CAAEC,QAAS,MACtBC,IAAK,QAgBMC,EAAoC,CAC/ChB,OAAQ,2BACRC,SAAU,QCnCL,MAAMgB,GCAN,MAAMC,EAAqC,oBAAX3O,QAA8C,oBAAbhH,WACtE,iBAAkBA,UACf,iBAAkBgH,QAGhBA,OAAe4O,eAAiB5V,oBAAqBgH,OAAe4O,eACtEC,UAAUC,eAAiB,GAE1BD,UAAkBE,iBAAmB,GAK3C,MAAMC,GAoBN,SAASC,EAAmBpN,EAAeW,GAGzC,GAAIX,EAAEqN,QAAQ1V,OAAS,EAAG,OAGtBqI,EAAEQ,YAAYR,EAAEsN,iBAEpB,MAAMC,EAAQvN,EAAEwN,eAAe,GAAI5M,EAAiBzJ,SAAS0J,YAAY,eAGzED,EAAeE,eACbH,GACA,GACA,EACAxC,OACA,EACAoP,EAAMxM,QACNwM,EAAMvM,QACNuM,EAAMtM,QACNsM,EAAMtO,SACN,GACA,GACA,GACA,EACA,EACA,MAIFe,EAAE1E,OAAOgG,cAAcV,EACzB,CAOA,SAAS6M,EAA0BzN,EAAiBW,GAG9CX,EAAEQ,YAAYR,EAAEsN,iBAEpB,MAAM1M,EAAiBzJ,SAAS0J,YAAY,eAG5CD,EAAeE,eACbH,GACA,GACA,EACAxC,OACA,EACA6B,EAAEe,QACFf,EAAEgB,QACFhB,EAAEiB,QACFjB,EAAEf,SACF,GACA,GACA,GACA,EACA,EACA,MAIFe,EAAE1E,OAAOgG,cAAcV,EACzB,CAOO,SAAS8M,EAAW1N,GAErBmN,EAAQQ,eACZR,EAAQQ,cAAe,EAKvBP,EAAmBpN,EAAG,aACxB,CAMO,SAAS4N,EAAU5N,GAEnBmN,EAAQQ,cAEbP,EAAmBpN,EAAG,YACxB,CAMO,SAAS6N,EAAS7N,GAGvB,IAAKmN,EAAQQ,aAAc,OAGvBR,EAAQW,sBACV3P,OAAO4P,aAAaZ,EAAQW,4BACrBX,EAAQW,qBAGjB,MAAME,IAAgBnB,EAAUoB,YAGhCb,EAAmBpN,EAAG,WAIjBgO,GACHZ,EAAmBpN,EAAG,SAIxBmN,EAAQQ,cAAe,CACzB,CAOO,SAASO,EAAYlO,GAEJ,UAAlBA,EAAEmO,aACLnO,EAAE1E,OAAuB8S,sBAAsBpO,EAAEqO,UACpD,CAEO,SAASC,EAAatO,GAEtB6M,EAAUoB,aAKO,UAAlBjO,EAAEmO,aACNV,EAA0BzN,EAAG,aAC/B,CAEO,SAASuO,EAAavO,GAGtB6M,EAAUoB,aAIO,UAAlBjO,EAAEmO,cACNhB,EAAQW,oBAAsB3P,OAAOlB,YAAW,YACvCkQ,EAAQW,oBAEfL,EAA0BzN,EAAG,aAAa,GACzC,IACL,CChMA,MAAawO,EAgBXC,YAAYC,EAAmBC,EAAmBC,GANxC,KAAAC,QAAS,EAOjBnT,KAAKgT,KAAOA,EACZhT,KAAK1C,IAAM2V,EACXjT,KAAKkT,OAASA,EAEdlT,KAAKoT,WAAapT,KAAKoT,WAAWC,KAAKrT,MACvCA,KAAKsT,WAAatT,KAAKsT,WAAWD,KAAKrT,MACvCA,KAAKuT,SAAWvT,KAAKuT,SAASF,KAAKrT,MAEnCA,KAAKwT,OACP,CAGUA,QACR,MAAM3X,EAAKJ,SAASwC,cAAc,OAalC,OAZApC,EAAGmF,UAAUyS,IAAI,uBACjB5X,EAAGmF,UAAUyS,IAAI,GAAGX,EAAkBY,SAAS1T,KAAK1C,OACpDzB,EAAGmC,MAAM2V,OAAS,MAClB9X,EAAGmC,MAAM4V,WAAa,OACtB5T,KAAKnE,GAAKA,EACVmE,KAAKgT,KAAK1U,YAAY0B,KAAKnE,IAC3BmE,KAAKnE,GAAGgY,iBAAiB,YAAa7T,KAAKoT,YACvChC,IACFpR,KAAKnE,GAAGgY,iBAAiB,aAAc7B,GACvChS,KAAKnE,GAAGgY,iBAAiB,cAAerB,IAGnCxS,IACT,CAGO8T,UAUL,OATI9T,KAAKmT,QAAQnT,KAAKuT,SAASvT,KAAK+T,gBACpC/T,KAAKnE,GAAGmY,oBAAoB,YAAahU,KAAKoT,YAC1ChC,IACFpR,KAAKnE,GAAGmY,oBAAoB,aAAchC,GAC1ChS,KAAKnE,GAAGmY,oBAAoB,cAAexB,IAE7CxS,KAAKgT,KAAKiB,YAAYjU,KAAKnE,WACpBmE,KAAKnE,UACLmE,KAAKgT,KACLhT,IACT,CAGUoT,WAAW9O,GACnBtE,KAAK+T,eAAiBzP,EACtB7I,SAASoY,iBAAiB,YAAa7T,KAAKsT,YAAY,GACxD7X,SAASoY,iBAAiB,UAAW7T,KAAKuT,UAAU,GAChDnC,IACFpR,KAAKnE,GAAGgY,iBAAiB,YAAa3B,GACtClS,KAAKnE,GAAGgY,iBAAiB,WAAY1B,IAEvC7N,EAAE4P,kBACF5P,EAAEsN,gBACJ,CAGU0B,WAAWhP,GACnB,IAAIF,EAAIpE,KAAK+T,eACT/T,KAAKmT,OACPnT,KAAKmU,cAAc,OAAQ7P,GAClB5G,KAAKyF,IAAImB,EAAExH,EAAIsH,EAAEtH,GAAKY,KAAKyF,IAAImB,EAAE1H,EAAIwH,EAAExH,GAAK,IAErDoD,KAAKmT,QAAS,EACdnT,KAAKmU,cAAc,QAASnU,KAAK+T,gBACjC/T,KAAKmU,cAAc,OAAQ7P,IAE7BA,EAAE4P,kBACF5P,EAAEsN,gBACJ,CAGU2B,SAASjP,GACbtE,KAAKmT,QACPnT,KAAKmU,cAAc,OAAQ7P,GAE7B7I,SAASuY,oBAAoB,YAAahU,KAAKsT,YAAY,GAC3D7X,SAASuY,oBAAoB,UAAWhU,KAAKuT,UAAU,GACnDnC,IACFpR,KAAKnE,GAAGmY,oBAAoB,YAAa9B,GACzClS,KAAKnE,GAAGmY,oBAAoB,WAAY7B,WAEnCnS,KAAKmT,cACLnT,KAAK+T,eACZzP,EAAE4P,kBACF5P,EAAEsN,gBACJ,CAGUuC,cAAcpT,EAAcqC,GAEpC,OADIpD,KAAKkT,OAAOnS,IAAOf,KAAKkT,OAAOnS,GAAMqC,GAClCpD,IACT,EA/FiB,EAAA0T,OAAS,gBCrBrB,MAAeU,EAAtB,cAOY,KAAAC,eAEN,CAAC,CA0BP,CAjCaC,eAAwB,OAAOtU,KAAKuU,SAAW,CASnDC,GAAGpR,EAAeqR,GACvBzU,KAAKqU,eAAejR,GAASqR,CAC/B,CAEOC,IAAItR,UACFpD,KAAKqU,eAAejR,EAC7B,CAEOuR,SACL3U,KAAKuU,WAAY,CACnB,CAEOK,UACL5U,KAAKuU,WAAY,CACnB,CAEOT,iBACE9T,KAAKqU,cACd,CAEOjI,aAAayI,EAAmBzR,GACrC,IAAKpD,KAAKsU,UAAYtU,KAAKqU,gBAAkBrU,KAAKqU,eAAeQ,GAC/D,OAAO7U,KAAKqU,eAAeQ,GAAWzR,EAC1C,ECdF,MAAa0R,UAAoBV,EA2B/BrB,YAAYlX,EAAiBY,EAAuB,CAAC,GACnDsY,QAkQQ,KAAAC,IAAM,KACd,MACMC,EADgBjV,KAAKnE,GAAGqF,cACQqB,wBAChC2S,EAAU,CACdtT,MAAO5B,KAAKmV,aAAavT,MACzBC,OAAQ7B,KAAKmV,aAAatT,OAAS7B,KAAKoV,SACxC1T,KAAM1B,KAAKmV,aAAazT,KACxBC,IAAK3B,KAAKmV,aAAaxT,IAAM3B,KAAKoV,UAE9B9S,EAAOtC,KAAKqV,cAAgBH,EAClC,MAAO,CACL1T,SAAU,CACRE,KAAMY,EAAKZ,KAAOuT,EAAgBvT,KAClCC,IAAKW,EAAKX,IAAMsT,EAAgBtT,KAElC2T,KAAM,CACJ1T,MAAOU,EAAKV,MACZC,OAAQS,EAAKT,QAehB,EAjSD7B,KAAKnE,GAAKA,EACVmE,KAAKkT,OAASzW,EAEduD,KAAKuV,WAAavV,KAAKuV,WAAWlC,KAAKrT,MACvCA,KAAKwV,UAAYxV,KAAKwV,UAAUnC,KAAKrT,MACrCA,KAAK2U,SACL3U,KAAKyV,eAAezV,KAAKkT,OAAOwC,UAChC1V,KAAK2V,gBACP,CAEOnB,GAAGpR,EAAgDqR,GACxDM,MAAMP,GAAGpR,EAAOqR,EAClB,CAEOC,IAAItR,GACT2R,MAAML,IAAItR,EACZ,CAEOuR,SACLI,MAAMJ,SACN3U,KAAKnE,GAAGmF,UAAUnC,OAAO,yBACzBmB,KAAKyV,eAAezV,KAAKkT,OAAOwC,SAClC,CAEOd,UACLG,MAAMH,UACN5U,KAAKnE,GAAGmF,UAAUyS,IAAI,yBACtBzT,KAAKyV,gBAAe,EACtB,CAEO3B,UACL9T,KAAK4V,kBACL5V,KAAKyV,gBAAe,UACbzV,KAAKnE,GACZkZ,MAAMjB,SACR,CAEO+B,aAAapZ,GAClB,IAAIqZ,EAAiBrZ,EAAKuU,SAAWvU,EAAKuU,UAAYhR,KAAKkT,OAAOlC,QAC9D+E,EAAkBtZ,EAAKiZ,UAAYjZ,EAAKiZ,WAAa1V,KAAKkT,OAAOwC,SASrE,OARA7a,OAAOqF,KAAKzD,GAAMqD,SAAQnF,GAAOqF,KAAKkT,OAAOvY,GAAO8B,EAAK9B,KACrDmb,IACF9V,KAAK4V,kBACL5V,KAAK2V,kBAEHI,GACF/V,KAAKyV,eAAezV,KAAKkT,OAAOwC,UAE3B1V,IACT,CAGUyV,eAAe5F,GAcvB,OAbIA,GACF7P,KAAKnE,GAAGmF,UAAUyS,IAAI,yBAEtBzT,KAAKnE,GAAGgY,iBAAiB,YAAa7T,KAAKuV,YAC3CvV,KAAKnE,GAAGgY,iBAAiB,WAAY7T,KAAKwV,aAE1CxV,KAAKnE,GAAGmF,UAAUnC,OAAO,yBACzBmB,KAAKnE,GAAGmY,oBAAoB,YAAahU,KAAKuV,YAC9CvV,KAAKnE,GAAGmY,oBAAoB,WAAYhU,KAAKwV,WACzCrE,EAAU6E,oBAAsBhW,aAC3BmR,EAAU6E,mBAGdhW,IACT,CAIUuV,WAAWjR,GAGf6M,EAAU6E,mBAAqB7E,EAAUoB,cAC7CpB,EAAU6E,kBAAoBhW,KAE9BA,KAAKnE,GAAGmF,UAAUnC,OAAO,yBAC3B,CAIU2W,UAAUlR,GAEd6M,EAAU6E,oBAAsBhW,cAC7BmR,EAAU6E,kBAEjBhW,KAAKnE,GAAGmF,UAAUyS,IAAI,yBACxB,CAGUkC,iBACR,IAAIM,EAAmBjW,KAAKkT,OAAOlC,SAAW,SAiB9C,MAhByB,QAArBiF,IACFA,EAAmB,uBAErBjW,KAAKkW,SAAWD,EAAiBE,MAAM,KACpCxJ,KAAIrP,GAAOA,EAAI8Y,SACfzJ,KAAIrP,GAAO,IAAIwV,EAAkB9S,KAAKnE,GAAIyB,EAAK,CAC9C+Y,MAAQjT,IACNpD,KAAKsW,aAAalT,EAAM,EAE1BmT,KAAOnT,IACLpD,KAAKwW,YAAYpT,EAAM,EAEzBmM,KAAOnM,IACLpD,KAAKyW,UAAUrT,EAAO9F,EAAI,MAGzB0C,IACT,CAGUsW,aAAalT,GACrBpD,KAAKmV,aAAenV,KAAKnE,GAAG0G,wBAC5BvC,KAAK+C,SAAWzH,EAAM8G,iBAAiBpC,KAAKnE,IAC5CmE,KAAK0W,QAAU1W,KAAK+C,SAASE,UAC7BjD,KAAKoV,SAAW,EAChBpV,KAAK2W,WAAavT,EAClBpD,KAAK4W,eACL5W,KAAK6W,eACL,MAAMC,EAAKxb,EAAMyb,UAAsB3T,EAAO,CAAEqB,KAAM,cAAe7E,OAAQI,KAAKnE,KAMlF,OALImE,KAAKkT,OAAOmD,OACdrW,KAAKkT,OAAOmD,MAAMS,EAAI9W,KAAKgV,OAE7BhV,KAAKnE,GAAGmF,UAAUyS,IAAI,yBACtBzT,KAAKoM,aAAa,cAAe0K,GAC1B9W,IACT,CAGUyW,UAAUrT,EAAmB9F,GACrC0C,KAAKoV,SAAWpV,KAAK+C,SAASE,UAAYjD,KAAK0W,QAC/C1W,KAAKqV,aAAerV,KAAKgX,WAAW5T,EAAO9F,GAC3C0C,KAAK6W,eACL,MAAMC,EAAKxb,EAAMyb,UAAsB3T,EAAO,CAAEqB,KAAM,SAAU7E,OAAQI,KAAKnE,KAK7E,OAJImE,KAAKkT,OAAO+D,QACdjX,KAAKkT,OAAO+D,OAAOH,EAAI9W,KAAKgV,OAE9BhV,KAAKoM,aAAa,SAAU0K,GACrB9W,IACT,CAGUwW,YAAYpT,GACpB,MAAM0T,EAAKxb,EAAMyb,UAAsB3T,EAAO,CAAEqB,KAAM,aAAc7E,OAAQI,KAAKnE,KAYjF,OAXImE,KAAKkT,OAAOqD,MACdvW,KAAKkT,OAAOqD,KAAKO,GAEnB9W,KAAKnE,GAAGmF,UAAUnC,OAAO,yBACzBmB,KAAKoM,aAAa,aAAc0K,GAChC9W,KAAKkX,sBACElX,KAAK2W,kBACL3W,KAAKmV,oBACLnV,KAAKqV,oBACLrV,KAAK0W,eACL1W,KAAKoV,SACLpV,IACT,CAGU4W,eAQR,OAPA5W,KAAKmX,iBAAmBrC,EAAYsC,iBAAiBzK,KAAIzR,GAAQ8E,KAAKnE,GAAGmC,MAAM9C,KAC/E8E,KAAKqX,0BAA4BrX,KAAKnE,GAAGqF,cAAclD,MAAMwD,SACzDQ,iBAAiBhC,KAAKnE,GAAGqF,eAAeM,SAAS/B,MAAM,YACzDO,KAAKnE,GAAGqF,cAAclD,MAAMwD,SAAW,YAEzCxB,KAAKnE,GAAGmC,MAAMwD,SAAW,WACzBxB,KAAKnE,GAAGmC,MAAMsZ,QAAU,MACjBtX,IACT,CAGUkX,eAKR,OAJApC,EAAYsC,iBAAiBtX,SAAQ,CAAC5E,EAAMuF,KAC1CT,KAAKnE,GAAGmC,MAAM9C,GAAQ8E,KAAKmX,iBAAiB1W,IAAM,IAAI,IAExDT,KAAKnE,GAAGqF,cAAclD,MAAMwD,SAAWxB,KAAKqX,2BAA6B,KAClErX,IACT,CAGUgX,WAAW5T,EAAmB9F,GACtC,MAAMia,EAASvX,KAAK2W,WACdzB,EAAU,CACdtT,MAAO5B,KAAKmV,aAAavT,MACzBC,OAAQ7B,KAAKmV,aAAatT,OAAS7B,KAAKoV,SACxC1T,KAAM1B,KAAKmV,aAAazT,KACxBC,IAAK3B,KAAKmV,aAAaxT,IAAM3B,KAAKoV,UAG9BoC,EAAUpU,EAAMmC,QAAUgS,EAAOhS,QACjCkS,EAAUrU,EAAMG,QAAUgU,EAAOhU,QAEnCjG,EAAIoa,QAAQ,MAAQ,EACtBxC,EAAQtT,OAAS4V,EACRla,EAAIoa,QAAQ,MAAQ,IAC7BxC,EAAQtT,OAAS4V,EACjBtC,EAAQxT,MAAQ8V,GAEdla,EAAIoa,QAAQ,MAAQ,EACtBxC,EAAQrT,QAAU4V,EACTna,EAAIoa,QAAQ,MAAQ,IAC7BxC,EAAQrT,QAAU4V,EAClBvC,EAAQvT,KAAO8V,GAEjB,MAAME,EAAY3X,KAAK4X,eAAe1C,EAAQtT,MAAOsT,EAAQrT,QAa7D,OAZInE,KAAKgR,MAAMwG,EAAQtT,SAAWlE,KAAKgR,MAAMiJ,EAAU/V,SACjDtE,EAAIoa,QAAQ,MAAQ,IACtBxC,EAAQxT,MAAQwT,EAAQtT,MAAQ+V,EAAU/V,OAE5CsT,EAAQtT,MAAQ+V,EAAU/V,OAExBlE,KAAKgR,MAAMwG,EAAQrT,UAAYnE,KAAKgR,MAAMiJ,EAAU9V,UAClDvE,EAAIoa,QAAQ,MAAQ,IACtBxC,EAAQvT,KAAOuT,EAAQrT,OAAS8V,EAAU9V,QAE5CqT,EAAQrT,OAAS8V,EAAU9V,QAEtBqT,CACT,CAGU0C,eAAeC,EAAgBC,GACvC,MAAMC,EAAW/X,KAAKkT,OAAO6E,UAAYzY,OAAO0Y,iBAC1CC,EAAWjY,KAAKkT,OAAO+E,UAAYJ,EACnCK,EAAYlY,KAAKkT,OAAOgF,WAAa5Y,OAAO0Y,iBAC5CG,EAAYnY,KAAKkT,OAAOiF,WAAaL,EAG3C,MAAO,CAAElW,MAFKlE,KAAKuL,IAAI8O,EAAUra,KAAKC,IAAIsa,EAAUJ,IAEpChW,OADDnE,KAAKuL,IAAIiP,EAAWxa,KAAKC,IAAIwa,EAAWL,IAEzD,CAGUjB,eACR,IAAI5B,EAAkB,CAAEvT,KAAM,EAAGC,IAAK,EAAGC,MAAO,EAAGC,OAAQ,GAC3D,GAA+B,aAA3B7B,KAAKnE,GAAGmC,MAAMwD,SAAyB,CACzC,MAAM4W,EAAgBpY,KAAKnE,GAAGqF,eACxB,KAAEQ,EAAI,IAAEC,GAAQyW,EAAc7V,wBACpC0S,EAAkB,CAAEvT,OAAMC,MAAKC,MAAO,EAAGC,OAAQ,GAEnD,OAAK7B,KAAKqV,cACVxa,OAAOqF,KAAKF,KAAKqV,cAAcvV,SAAQnF,IACrC,MAAM0E,EAAQW,KAAKqV,aAAa1a,GAChCqF,KAAKnE,GAAGmC,MAAMrD,GAAO0E,EAAQ4V,EAAgBta,GAAO,IAAI,IAEnDqF,MALwBA,IAMjC,CAGU4V,kBAGR,OAFA5V,KAAKkW,SAASpW,SAAQoQ,GAAUA,EAAO4D,mBAChC9T,KAAKkW,SACLlW,IACT,EAlQiB,EAAAoX,iBAAmB,CAAC,QAAS,SAAU,WAAY,OAAQ,MAAO,UAAW,UCThG,MAAaiB,UAAoBjE,EAwB/BrB,YAAYlX,EAAiBqX,EAAyB,CAAC,GACrD6B,QACA/U,KAAKnE,GAAKA,EACVmE,KAAKkT,OAASA,EAGd,IAAIoF,EAAapF,EAAOhD,OAAO9T,UAAU,GACzC4D,KAAKuY,OAAS1c,EAAGmF,UAAUC,SAASqX,GAAczc,EAAKA,EAAGQ,cAAc6W,EAAOhD,SAAWrU,EAE1FmE,KAAKoT,WAAapT,KAAKoT,WAAWC,KAAKrT,MACvCA,KAAKsT,WAAatT,KAAKsT,WAAWD,KAAKrT,MACvCA,KAAKuT,SAAWvT,KAAKuT,SAASF,KAAKrT,MACnCA,KAAK2U,QACP,CAEOH,GAAGpR,EAAoBqR,GAC5BM,MAAMP,GAAGpR,EAAOqR,EAClB,CAEOC,IAAItR,GACT2R,MAAML,IAAItR,EACZ,CAEOuR,UACiB,IAAlB3U,KAAKsU,WACTS,MAAMJ,SACN3U,KAAKuY,OAAO1E,iBAAiB,YAAa7T,KAAKoT,YAC3ChC,IACFpR,KAAKuY,OAAO1E,iBAAiB,aAAc7B,GAC3ChS,KAAKuY,OAAO1E,iBAAiB,cAAerB,IAG9CxS,KAAKnE,GAAGmF,UAAUnC,OAAO,yBAC3B,CAEO+V,QAAQ4D,GAAa,IACJ,IAAlBxY,KAAKsU,WACTS,MAAMH,UACN5U,KAAKuY,OAAOvE,oBAAoB,YAAahU,KAAKoT,YAC9ChC,IACFpR,KAAKuY,OAAOvE,oBAAoB,aAAchC,GAC9ChS,KAAKuY,OAAOvE,oBAAoB,cAAexB,IAE5CgG,GAAYxY,KAAKnE,GAAGmF,UAAUyS,IAAI,yBACzC,CAEOK,UACD9T,KAAKyY,aAAahW,OAAO4P,aAAarS,KAAKyY,oBACxCzY,KAAKyY,YACRzY,KAAK0Y,UAAU1Y,KAAKuT,SAASvT,KAAK+T,gBACtC/T,KAAK4U,SAAQ,UACN5U,KAAKnE,UACLmE,KAAK2Y,cACL3Y,KAAKkT,OACZ6B,MAAMjB,SACR,CAEO+B,aAAapZ,GAElB,OADA5B,OAAOqF,KAAKzD,GAAMqD,SAAQnF,GAAOqF,KAAKkT,OAAOvY,GAAO8B,EAAK9B,KAClDqF,IACT,CAGUoT,WAAW9O,GAEnB,IAAI6M,EAAUyH,aACd,OAAiB,IAAbtU,EAAEI,QAGDJ,EAAE1E,OAAuBiZ,QAjGZ,sFAkGd7Y,KAAKkT,OAAO4F,QACTxU,EAAE1E,OAAuBiZ,QAAQ7Y,KAAKkT,OAAO4F,UAWpD9Y,KAAK+T,eAAiBzP,SACftE,KAAK0Y,gBACLvH,EAAUoB,mBACVpB,EAAU4H,YAEjBtd,SAASoY,iBAAiB,YAAa7T,KAAKsT,YAAY,GACxD7X,SAASoY,iBAAiB,UAAW7T,KAAKuT,UAAU,GAChDnC,IACFpR,KAAKuY,OAAO1E,iBAAiB,YAAa3B,GAC1ClS,KAAKuY,OAAO1E,iBAAiB,WAAY1B,IAG3C7N,EAAEsN,iBAGEnW,SAASud,eAAgBvd,SAASud,cAA8BC,OAEpE9H,EAAUyH,cAAe,IAjCE,CAmC7B,CAGUM,UAAU5U,GAClB,IAAKtE,KAAK0Y,SAAU,OACpB,MAAM5B,EAAKxb,EAAMyb,UAAqBzS,EAAG,CAAE1E,OAAQI,KAAKnE,GAAI4I,KAAM,SAC9DzE,KAAKkT,OAAOiG,MACdnZ,KAAKkT,OAAOiG,KAAKrC,EAAI9W,KAAKoZ,MAE5BpZ,KAAKoM,aAAa,OAAQ0K,EAC5B,CAGUxD,WAAWhP,GAEnB,IAAIF,EAAIpE,KAAK+T,eAEb,GAAI/T,KAAK0Y,SAGP,GAFA1Y,KAAKqZ,YAAY/U,GAEb6M,EAAUmI,UAAW,CACvB,MAAMC,EAAQja,OAAOka,UAAUrI,EAAUmI,WAAanI,EAAUmI,UAAsB,IAClFtZ,KAAKyY,aAAahW,OAAO4P,aAAarS,KAAKyY,aAC/CzY,KAAKyY,YAAchW,OAAOlB,YAAW,IAAMvB,KAAKkZ,UAAU5U,IAAIiV,QAE9DvZ,KAAKkZ,UAAU5U,QAEZ,GAAI5G,KAAKyF,IAAImB,EAAExH,EAAIsH,EAAEtH,GAAKY,KAAKyF,IAAImB,EAAE1H,EAAIwH,EAAExH,GAAK,EAAG,CAIxDoD,KAAK0Y,UAAW,EAChBvH,EAAUoB,YAAcvS,KAExB,IAAIzD,EAAQyD,KAAKnE,GAA2BiR,eAAevQ,KACvDA,EACF4U,EAAU4H,YAAexc,EAAKV,GAAqB4d,UAAUC,mBAEtDvI,EAAU4H,YAEnB/Y,KAAK2Y,OAAS3Y,KAAK2Z,cAAcrV,GACjCtE,KAAK4Z,+BACL5Z,KAAK6Z,WAAa7Z,KAAK8Z,eAAexV,EAAGtE,KAAKnE,GAAImE,KAAK+Z,mBACvD,MAAMjD,EAAKxb,EAAMyb,UAAqBzS,EAAG,CAAE1E,OAAQI,KAAKnE,GAAI4I,KAAM,cAElEzE,KAAKga,kBAAkB1V,GACnBtE,KAAKkT,OAAOmD,OACdrW,KAAKkT,OAAOmD,MAAMS,EAAI9W,KAAKoZ,MAE7BpZ,KAAKoM,aAAa,YAAa0K,GAGjC,OADAxS,EAAEsN,kBACK,CACT,CAGU2B,SAASjP,GAOjB,GANA7I,SAASuY,oBAAoB,YAAahU,KAAKsT,YAAY,GAC3D7X,SAASuY,oBAAoB,UAAWhU,KAAKuT,UAAU,GACnDnC,IACFpR,KAAKuY,OAAOvE,oBAAoB,YAAa9B,GAAW,GACxDlS,KAAKuY,OAAOvE,oBAAoB,WAAY7B,GAAU,IAEpDnS,KAAK0Y,SAAU,QACV1Y,KAAK0Y,SAGRvH,EAAU4H,aAAald,KAAOmE,KAAKnE,GAAGqF,sBACjCiQ,EAAU4H,YAGnB/Y,KAAK+Z,kBAAkB/b,MAAMwD,SAAWxB,KAAKqX,2BAA6B,KACtErX,KAAK2Y,SAAW3Y,KAAKnE,GACvBmE,KAAKia,qBAELja,KAAK2Y,OAAO9Z,SAEd,MAAMiY,EAAKxb,EAAMyb,UAAqBzS,EAAG,CAAE1E,OAAQI,KAAKnE,GAAI4I,KAAM,aAC9DzE,KAAKkT,OAAOqD,MACdvW,KAAKkT,OAAOqD,KAAKO,GAEnB9W,KAAKoM,aAAa,WAAY0K,GAG1B3F,EAAU4H,aACZ5H,EAAU4H,YAAYmB,KAAK5V,UAGxBtE,KAAK2Y,cACL3Y,KAAK+T,sBACL5C,EAAUoB,mBACVpB,EAAU4H,mBACV5H,EAAUyH,aACjBtU,EAAEsN,gBACJ,CAGU+H,cAAcvW,GACtB,IAAIuV,EAAS3Y,KAAKnE,GAYlB,MAXkC,mBAAvBmE,KAAKkT,OAAOyF,OACrBA,EAAS3Y,KAAKkT,OAAOyF,OAAOvV,GACI,UAAvBpD,KAAKkT,OAAOyF,SACrBA,EAASrd,EAAM0I,UAAUhE,KAAKnE,KAE3BJ,SAAS0e,KAAKlZ,SAAS0X,IAC1Brd,EAAM6U,SAASwI,EAAiC,WAAzB3Y,KAAKkT,OAAO/C,SAAwBnQ,KAAKnE,GAAGqF,cAAgBlB,KAAKkT,OAAO/C,UAE7FwI,IAAW3Y,KAAKnE,KAClBmE,KAAKoa,uBAAyB/B,EAAYgC,gBAAgB1N,KAAIzR,GAAQ8E,KAAKnE,GAAGmC,MAAM9C,MAE/Eyd,CACT,CAGUqB,kBAAkB1V,GAC1BtE,KAAK2Y,OAAO3X,UAAUyS,IAAI,yBAE1B,MAAMzV,EAAQgC,KAAK2Y,OAAO3a,MAc1B,OAbAA,EAAMsc,cAAgB,OAEtBtc,EAAM4D,MAAQ5B,KAAK6Z,WAAWjY,MAAQ,KACtC5D,EAAM6D,OAAS7B,KAAK6Z,WAAWhY,OAAS,KACxC7D,EAAMuc,WAAa,YACnBvc,EAAMwD,SAAW,QACjBxB,KAAKqZ,YAAY/U,GACjBtG,EAAMwc,WAAa,OACnBjZ,YAAW,KACLvB,KAAK2Y,SACP3a,EAAMwc,WAAa,QAEpB,GACIxa,IACT,CAGUia,qBACRja,KAAK2Y,OAAO3X,UAAUnC,OAAO,yBAC7B,IAAI2B,EAAQR,KAAK2Y,QAAgC7L,cAEjD,IAAKtM,GAAM6L,kBAAoBrM,KAAKoa,uBAAwB,CAC1D,IAAIzB,EAAS3Y,KAAK2Y,OAMd6B,EAAaxa,KAAKoa,uBAAmC,YAAK,KAC9DzB,EAAO3a,MAAMwc,WAAaxa,KAAKoa,uBAAmC,WAAI,OACtE/B,EAAYgC,gBAAgBva,SAAQ5E,GAAQyd,EAAO3a,MAAM9C,GAAQ8E,KAAKoa,uBAAuBlf,IAAS,OACtGqG,YAAW,IAAMoX,EAAO3a,MAAMwc,WAAaA,GAAY,IAGzD,cADOxa,KAAKoa,uBACLpa,IACT,CAGUqZ,YAAY/U,GAMpB,MAAMtG,EAAQgC,KAAK2Y,OAAO3a,MACpByc,EAASza,KAAK6Z,WACpB7b,EAAM0D,KAAO4C,EAAEiB,QAAUkV,EAAOC,WAPF,EAOsC,KACpE1c,EAAM2D,IAAM2C,EAAEf,QAAUkX,EAAOpX,UARO,EAQ2B,IACnE,CAGUuW,+BAQR,OAPA5Z,KAAK+Z,kBAAoB/Z,KAAK2Y,OAAOzX,cACF,UAA/BlB,KAAK2Y,OAAO3a,MAAMwD,WACpBxB,KAAKqX,0BAA4BrX,KAAK+Z,kBAAkB/b,MAAMwD,SAC1DQ,iBAAiBhC,KAAK+Z,mBAAmBvY,SAAS/B,MAAM,YAC1DO,KAAK+Z,kBAAkB/b,MAAMwD,SAAW,aAGrCxB,IACT,CAGU8Z,eAAe1W,EAAkBvH,EAAiBiC,GAG1D,IAAI6c,EAAe,EACfC,EAAe,EACnB,GAAI9c,EAAQ,CACV,MAAM+c,EAASpf,SAASwC,cAAc,OACtC3C,EAAMwf,YAAYD,EAAQ,CACxBvD,QAAS,IACT9V,SAAU,QACVG,IAAK,MACLD,KAAM,MACNE,MAAO,MACPC,OAAQ,MACR8R,OAAQ,YAEV7V,EAAOQ,YAAYuc,GACnB,MAAME,EAAiBF,EAAOtY,wBAC9BzE,EAAOmW,YAAY4G,GACnBF,EAAeI,EAAerZ,KAC9BkZ,EAAeG,EAAepZ,IAIhC,MAAMqZ,EAAenf,EAAG0G,wBACxB,MAAO,CACLb,KAAMsZ,EAAatZ,KACnBC,IAAKqZ,EAAarZ,IAClB+Y,YAActX,EAAMmC,QAAUyV,EAAatZ,KAAOiZ,EAClDtX,WAAaD,EAAMG,QAAUyX,EAAarZ,IAAMiZ,EAChDhZ,MAAOoZ,EAAapZ,MACpBC,OAAQmZ,EAAanZ,OAEzB,CAGOuX,KACL,MACMnE,EADgBjV,KAAKnE,GAAGqF,cACQqB,wBAChCkY,EAASza,KAAK2Y,OAAOpW,wBAC3B,MAAO,CACLf,SAAU,CACRG,IAAK8Y,EAAO9Y,IAAMsT,EAAgBtT,IAClCD,KAAM+Y,EAAO/Y,KAAOuT,EAAgBvT,MAO1C,EAhViB,EAAA2Y,gBAAkB,CAAC,aAAc,gBAAiB,WAAY,OAAQ,MAAO,WAAY,cCxCrG,MAAMY,UAAoB7G,EAM/BrB,YAAYlX,EAAiBY,EAAuB,CAAC,GACnDsY,QACA/U,KAAKnE,GAAKA,EACVmE,KAAKkT,OAASzW,EAEduD,KAAKkb,YAAclb,KAAKkb,YAAY7H,KAAKrT,MACzCA,KAAKmb,YAAcnb,KAAKmb,YAAY9H,KAAKrT,MACzCA,KAAK2U,SACL3U,KAAKob,cACP,CAEO5G,GAAGpR,EAAwCqR,GAChDM,MAAMP,GAAGpR,EAAOqR,EAClB,CAEOC,IAAItR,GACT2R,MAAML,IAAItR,EACZ,CAEOuR,UACiB,IAAlB3U,KAAKsU,WACTS,MAAMJ,SACN3U,KAAKnE,GAAGmF,UAAUyS,IAAI,gBACtBzT,KAAKnE,GAAGmF,UAAUnC,OAAO,yBACzBmB,KAAKnE,GAAGgY,iBAAiB,aAAc7T,KAAKkb,aAC5Clb,KAAKnE,GAAGgY,iBAAiB,aAAc7T,KAAKmb,aACxC/J,IACFpR,KAAKnE,GAAGgY,iBAAiB,eAAgBjB,GACzC5S,KAAKnE,GAAGgY,iBAAiB,eAAgBhB,IAE7C,CAEO+B,QAAQ4D,GAAa,IACJ,IAAlBxY,KAAKsU,WACTS,MAAMH,UACN5U,KAAKnE,GAAGmF,UAAUnC,OAAO,gBACpB2Z,GAAYxY,KAAKnE,GAAGmF,UAAUyS,IAAI,yBACvCzT,KAAKnE,GAAGmY,oBAAoB,aAAchU,KAAKkb,aAC/Clb,KAAKnE,GAAGmY,oBAAoB,aAAchU,KAAKmb,aAC3C/J,IACFpR,KAAKnE,GAAGmY,oBAAoB,eAAgBpB,GAC5C5S,KAAKnE,GAAGmY,oBAAoB,eAAgBnB,IAEhD,CAEOiB,UACL9T,KAAK4U,SAAQ,GACb5U,KAAKnE,GAAGmF,UAAUnC,OAAO,gBACzBmB,KAAKnE,GAAGmF,UAAUnC,OAAO,yBACzBkW,MAAMjB,SACR,CAEO+B,aAAapZ,GAGlB,OAFA5B,OAAOqF,KAAKzD,GAAMqD,SAAQnF,GAAOqF,KAAKkT,OAAOvY,GAAO8B,EAAK9B,KACzDqF,KAAKob,eACEpb,IACT,CAGUkb,YAAY5W,GAEpB,IAAK6M,EAAUoB,YAAa,OAC5B,IAAKvS,KAAKqb,SAASlK,EAAUoB,YAAY1W,IAAK,OAC9CyI,EAAEsN,iBACFtN,EAAE4P,kBAGE/C,EAAU4H,aAAe5H,EAAU4H,cAAgB/Y,MACrDmR,EAAU4H,YAAYoC,YAAY7W,GAEpC6M,EAAU4H,YAAc/Y,KAExB,MAAM8W,EAAKxb,EAAMyb,UAAqBzS,EAAG,CAAE1E,OAAQI,KAAKnE,GAAI4I,KAAM,aAC9DzE,KAAKkT,OAAOlK,MACdhJ,KAAKkT,OAAOlK,KAAK8N,EAAI9W,KAAKgV,IAAI7D,EAAUoB,cAE1CvS,KAAKoM,aAAa,WAAY0K,GAC9B9W,KAAKnE,GAAGmF,UAAUyS,IAAI,oBAExB,CAGU0H,YAAY7W,GAEpB,IAAK6M,EAAUoB,aAAepB,EAAU4H,cAAgB/Y,KAAM,OAC9DsE,EAAEsN,iBACFtN,EAAE4P,kBAEF,MAAM4C,EAAKxb,EAAMyb,UAAqBzS,EAAG,CAAE1E,OAAQI,KAAKnE,GAAI4I,KAAM,YAMlE,GALIzE,KAAKkT,OAAOoI,KACdtb,KAAKkT,OAAOoI,IAAIxE,EAAI9W,KAAKgV,IAAI7D,EAAUoB,cAEzCvS,KAAKoM,aAAa,UAAW0K,GAEzB3F,EAAU4H,cAAgB/Y,KAAM,CAKlC,IAAIub,SAJGpK,EAAU4H,YAKjB,IAAIjb,EAAwBkC,KAAKnE,GAAGqF,cACpC,MAAQqa,GAAczd,GACpByd,EAAazd,EAAO2b,WAAWC,YAC/B5b,EAASA,EAAOoD,cAEdqa,GACFA,EAAWL,YAAY5W,GAG7B,CAGO4V,KAAK5V,GACVA,EAAEsN,iBACF,MAAMkF,EAAKxb,EAAMyb,UAAqBzS,EAAG,CAAE1E,OAAQI,KAAKnE,GAAI4I,KAAM,SAC9DzE,KAAKkT,OAAOgH,MACdla,KAAKkT,OAAOgH,KAAKpD,EAAI9W,KAAKgV,IAAI7D,EAAUoB,cAE1CvS,KAAKoM,aAAa,OAAQ0K,EAC5B,CAGUuE,SAASxf,GACjB,OAAOA,KAAQmE,KAAK6Q,QAAU7Q,KAAK6Q,OAAOhV,GAC5C,CAGUuf,eACR,OAAKpb,KAAKkT,OAAOrC,QACiB,iBAAvB7Q,KAAKkT,OAAOrC,OACrB7Q,KAAK6Q,OAAUhV,GAAoBA,EAAGmF,UAAUC,SAASjB,KAAKkT,OAAOrC,SAAqBhV,EAAG2f,QAAQxb,KAAKkT,OAAOrC,QAEjH7Q,KAAK6Q,OAAS7Q,KAAKkT,OAAOrC,OAErB7Q,MANyBA,IAOlC,CAGUgV,IAAImE,GACZ,MAAO,CACLlJ,UAAWkJ,EAAKtd,MACbsd,EAAKC,KAEZ,EC7JK,MAAMqC,EAEXlgB,YAAYM,GAEV,OADKA,EAAG4d,YAAa5d,EAAG4d,UAAY,IAAIgC,EAAU5f,IAC3CA,EAAG4d,SACZ,CAOA1G,YAAYlX,GACVmE,KAAKnE,GAAKA,CACZ,CAEO2Y,GAAGK,EAAmBJ,GAQ3B,OAPIzU,KAAK0b,aAAe,CAAC,OAAQ,YAAa,YAAYhE,QAAQ7C,IAAc,EAC9E7U,KAAK0b,YAAYlH,GAAGK,EAAgDJ,GAC3DzU,KAAK0Z,aAAe,CAAC,OAAQ,WAAY,WAAWhC,QAAQ7C,IAAc,EACnF7U,KAAK0Z,YAAYlF,GAAGK,EAA8CJ,GACzDzU,KAAK2b,aAAe,CAAC,cAAe,SAAU,cAAcjE,QAAQ7C,IAAc,GAC3F7U,KAAK2b,YAAYnH,GAAGK,EAAsDJ,GAErEzU,IACT,CAEO0U,IAAIG,GAQT,OAPI7U,KAAK0b,aAAe,CAAC,OAAQ,YAAa,YAAYhE,QAAQ7C,IAAc,EAC9E7U,KAAK0b,YAAYhH,IAAIG,GACZ7U,KAAK0Z,aAAe,CAAC,OAAQ,WAAY,WAAWhC,QAAQ7C,IAAc,EACnF7U,KAAK0Z,YAAYhF,IAAIG,GACZ7U,KAAK2b,aAAe,CAAC,cAAe,SAAU,cAAcjE,QAAQ7C,IAAc,GAC3F7U,KAAK2b,YAAYjH,IAAIG,GAEhB7U,IACT,CAEO4b,eAAenf,GAMpB,OALKuD,KAAK0b,YAGR1b,KAAK0b,YAAY7F,aAAapZ,GAF9BuD,KAAK0b,YAAc,IAAIrD,EAAYrY,KAAKnE,GAAIY,GAIvCuD,IACT,CAEO6b,iBAKL,OAJI7b,KAAK0b,cACP1b,KAAK0b,YAAY5H,iBACV9T,KAAK0b,aAEP1b,IACT,CAEO8b,eAAerf,GAMpB,OALKuD,KAAK2b,YAGR3b,KAAK2b,YAAY9F,aAAapZ,GAF9BuD,KAAK2b,YAAc,IAAI7G,EAAY9U,KAAKnE,GAAIY,GAIvCuD,IACT,CAEO+b,iBAKL,OAJI/b,KAAK2b,cACP3b,KAAK2b,YAAY7H,iBACV9T,KAAK2b,aAEP3b,IACT,CAEOgc,eAAevf,GAMpB,OALKuD,KAAK0Z,YAGR1Z,KAAK0Z,YAAY7D,aAAapZ,GAF9BuD,KAAK0Z,YAAc,IAAIuB,EAAYjb,KAAKnE,GAAIY,GAIvCuD,IACT,CAEOic,iBAKL,OAJIjc,KAAK0Z,cACP1Z,KAAK0Z,YAAY5F,iBACV9T,KAAK0Z,aAEP1Z,IACT,EC7EF,MAAMkc,EAAK,ICOJ,MAEEnL,UAAUlV,EAAyBY,EAAc9B,EAAa0E,GAuBnE,OAtBAW,KAAKmc,eAAetgB,GAAIiE,SAAQsc,IAC9B,GAAa,YAAT3f,GAA+B,WAATA,EACxB2f,EAAIT,aAAeS,EAAIT,YAAYlf,UAC9B,GAAa,YAATA,EACT2f,EAAIT,aAAeS,EAAIL,sBAClB,GAAa,WAATtf,EACT2f,EAAIN,eAAe,CAAE,CAACnhB,GAAM0E,QACvB,CACL,MAAM9C,EAAO6f,EAAIvgB,GAAGiR,cAAcvQ,KAClC,IAAIyU,EAAUoL,EAAIvgB,GAAGwgB,aAAa,qBAAuBD,EAAIvgB,GAAGwgB,aAAa,qBAAuB9f,EAAKE,KAAKsU,UAAUC,QACpH0E,GAAYnZ,EAAKE,KAAKkT,uBAC1ByM,EAAIN,eAAe,IACdvf,EAAKE,KAAKsU,UACRC,UAAS0E,WAEZW,MAAO5Z,EAAK4Z,MACZE,KAAM9Z,EAAK8Z,KACXU,OAAQxa,EAAKwa,aAKdjX,IACT,CAEOiQ,UAAUpU,EAAyBY,EAAc9B,EAAa0E,GAqBnE,OApBAW,KAAKmc,eAAetgB,GAAIiE,SAAQsc,IAC9B,GAAa,YAAT3f,GAA+B,WAATA,EACxB2f,EAAIV,aAAeU,EAAIV,YAAYjf,UAC9B,GAAa,YAATA,EACT2f,EAAIV,aAAeU,EAAIP,sBAClB,GAAa,WAATpf,EACT2f,EAAIR,eAAe,CAAE,CAACjhB,GAAM0E,QACvB,CACL,MAAM9C,EAAO6f,EAAIvgB,GAAGiR,cAAcvQ,KAClC6f,EAAIR,eAAe,IACdrf,EAAKE,KAAKwT,UAGXoG,MAAO5Z,EAAK4Z,MACZE,KAAM9Z,EAAK8Z,KACX4C,KAAM1c,EAAK0c,WAKZnZ,IACT,CAEOsc,OAAOzgB,EAAsBY,GAElC,OADAuD,KAAKmc,eAAetgB,GAAIiE,SAAQsc,GAAOA,EAAIR,eAAenf,KACnDuD,IACT,CAEOuc,UAAU1gB,EAAyBY,EAA0B9B,EAAa0E,GAkB/E,MAjB2B,mBAAhB5C,EAAKoU,QAA0BpU,EAAK+f,UAC7C/f,EAAK+f,QAAU/f,EAAKoU,OACpBpU,EAAKoU,OAAUhV,GAAOY,EAAK+f,QAAQ3gB,IAErCmE,KAAKmc,eAAetgB,GAAIiE,SAAQsc,IACjB,YAAT3f,GAA+B,WAATA,EACxB2f,EAAI1C,aAAe0C,EAAI1C,YAAYjd,KACjB,YAATA,EACL2f,EAAI1C,aACN0C,EAAIH,iBAEY,WAATxf,EACT2f,EAAIJ,eAAe,CAAE,CAACrhB,GAAM0E,IAE5B+c,EAAIJ,eAAevf,MAGhBuD,IACT,CAGOyc,YAAY5gB,GACjB,UAAUA,GAAMA,EAAG4d,WAAa5d,EAAG4d,UAAUC,cAAgB7d,EAAG4d,UAAUC,YAAYpF,SACxF,CAGOoI,YAAY7gB,GACjB,UAAUA,GAAMA,EAAG4d,WAAa5d,EAAG4d,UAAUiC,cAAgB7f,EAAG4d,UAAUiC,YAAYpH,SACxF,CAGOqI,YAAY9gB,GACjB,UAAUA,GAAMA,EAAG4d,WAAa5d,EAAG4d,UAAUkC,cAAgB9f,EAAG4d,UAAUkC,YAAYrH,SACxF,CAEOE,GAAG3Y,EAAyBkF,EAAc0T,GAS/C,OARAzU,KAAKmc,eAAetgB,GAAIiE,SAAQsc,GAC9BA,EAAI5H,GAAGzT,GAAOqC,IACZqR,EACErR,EACA+N,EAAUoB,YAAcpB,EAAUoB,YAAY1W,GAAKuH,EAAMxD,OACzDuR,EAAUoB,YAAcpB,EAAUoB,YAAYoG,OAAS,KAAK,MAG3D3Y,IACT,CAEO0U,IAAI7Y,EAAyBkF,GAElC,OADAf,KAAKmc,eAAetgB,GAAIiE,SAAQsc,GAAOA,EAAI1H,IAAI3T,KACxCf,IACT,CAGUmc,eAAe3gB,EAAuBohB,GAAS,GACvD,IAAIC,EAAQvhB,EAAMwhB,YAAYthB,GAC9B,IAAKqhB,EAAM5gB,OAAQ,MAAO,GAC1B,IAAIF,EAAO8gB,EAAMlQ,KAAIrI,GAAKA,EAAEmV,YAAcmD,EAASnB,EAAUsB,KAAKzY,GAAK,QAEvE,OADKsY,GAAU7gB,EAAKsM,QAAO2U,GAAKA,IACzBjhB,CACT,GD9EF,MAAakhB,EAeJ1hB,YAAYwC,EAA4B,CAAC,EAAGmf,EAA+B,eAChF,IAAIrhB,EAAKohB,EAAUE,eAAeD,GAClC,OAAKrhB,GASAA,EAAGuhB,YACNvhB,EAAGuhB,UAAY,IAAIH,EAAUphB,EAAIP,EAAMyI,UAAUhG,KAE5ClC,EAAGuhB,YAXkB,iBAAfF,EACTG,QAAQC,MAAM,wDAA0DJ,EAA1D,+IAGdG,QAAQC,MAAM,gDAET,KAMX,CAWO/hB,eAAewC,EAA4B,CAAC,EAAGe,EAAW,eAC/D,IAAIye,EAAqB,GAWzB,OAVAN,EAAUO,gBAAgB1e,GAAUgB,SAAQjE,IACrCA,EAAGuhB,YACNvhB,EAAGuhB,UAAY,IAAIH,EAAUphB,EAAIP,EAAMyI,UAAUhG,KAEnDwf,EAAMtR,KAAKpQ,EAAGuhB,UAAU,IAEL,IAAjBG,EAAMthB,QACRohB,QAAQC,MAAM,wDAA0Dxe,EAA1D,+IAGTye,CACT,CASOhiB,eAAeuC,EAAqBsJ,EAAwB,CAAC,GAClE,IAAKtJ,EAAQ,OAAO,KAEpB,IAAIjC,EAAKiC,EACT,GAAIjC,EAAGuhB,UAAW,CAEhB,MAAM7gB,EAAOV,EAAGuhB,UAGhB,OAFIhW,IAAK7K,EAAKE,KAAO,IAAIF,EAAKE,QAAS2K,SAClBzL,IAAjByL,EAAIqW,UAAwBlhB,EAAKmhB,KAAKtW,EAAIqW,UACvClhB,EAKT,IADqBuB,EAAOkD,UAAUC,SAAS,eAC1Bgc,EAAUU,YAC7B,GAAIV,EAAUU,YACZ9hB,EAAKohB,EAAUU,YAAY7f,EAAQsJ,GAAK,GAAM,OACzC,CACL,IAAI1L,EAAMD,SAASmiB,eAAeC,mBAAmB,IACrDniB,EAAIye,KAAK2D,UAAY,0BAA0B1W,EAAI2W,OAAS,aAC5DliB,EAAKH,EAAIye,KAAKsD,SAAS,GACvB3f,EAAOQ,YAAYzC,GAMvB,OADWohB,EAAUF,KAAK3V,EAAKvL,EAEjC,CAMAN,sBAAsByiB,GACpBf,EAAUe,YAAcA,CAC1B,CAiDWC,kBACT,IAAKje,KAAKke,aAAc,CACtB,IAAIC,EAAmB1iB,SAASwC,cAAc,OAC9CkgB,EAAiBC,UAAY,sBACzBpe,KAAKvD,KAAKkU,kBACZwN,EAAiBL,UAAY9d,KAAKvD,KAAKkU,iBAEzC3Q,KAAKke,aAAeziB,SAASwC,cAAc,OAC3C+B,KAAKke,aAAald,UAAUyS,IAAIzT,KAAKvD,KAAKiU,iBAAkBhB,EAAaW,UAAWrQ,KAAKvD,KAAK4T,WAC9FrQ,KAAKie,YAAY3f,YAAY6f,GAE/B,OAAOne,KAAKke,YACd,CA8BA,YAAmBriB,EAAqBY,EAAyB,CAAC,GAtB3D,KAAA4hB,gBAAkB,CAAC,EAYhB,KAAAC,cAAgB,EAWxBte,KAAKnE,GAAKA,EACVY,EAAOA,GAAQ,CAAC,EAEXZ,EAAGmF,UAAUC,SAAS,eACzBjB,KAAKnE,GAAGmF,UAAUyS,IAAI,cAIpBhX,EAAKqR,MACPrR,EAAK+T,OAAS/T,EAAKuJ,OAASvJ,EAAKqR,WAC1BrR,EAAKqR,KAEd,IAAIyQ,EAAUjjB,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,WAGzB,SAAhB5f,EAAKc,eACAd,EAAKc,YAGsB5B,IAAhCc,EAAKkT,yBACNlT,EAAkCgiB,wBAA0BhiB,EAAKkT,wBAIpE,IAAI1P,EAA6B,IAAI3E,EAAMyI,UAAU2L,GACnDnS,OAAQjC,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,eAAiB3M,EAAanS,OACrEiT,OAAQ+N,GAAoBjjB,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,gBAAkB3M,EAAac,OAC1FxK,OAAQuY,GAAoBjjB,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,gBAAkB3M,EAAa1J,OAC1F0Y,WAAYpjB,EAAMqjB,OAAO9iB,EAAGwgB,aAAa,eAAiB3M,EAAagP,WACvEzO,UAAW,CACTC,QAASzT,EAAKmiB,YAAc,IAAMniB,EAAKmiB,YAAeniB,EAAKyT,OAASzT,EAAKyT,OAAS,KAAQR,EAAaO,UAAUC,QAEnHU,iBAAkB,CAChBC,OAAQpU,EAAK4T,WAAaX,EAAakB,iBAAiBC,OACxDC,QAASpB,EAAakB,iBAAiBE,UAGvCjV,EAAGwgB,aAAa,gBAClBpc,EAAS2P,QAAUtU,EAAMqjB,OAAO9iB,EAAGwgB,aAAa,gBAGlDrc,KAAKvD,KAAOnB,EAAM2E,SAASxD,EAAMwD,GACjCxD,EAAO,KACPuD,KAAK6e,cAGoB,IAArB7e,KAAKvD,KAAKc,SAAiByC,KAAKvD,KAAKqiB,sBAAwB9e,KAAK+e,qBAAuB/e,KAAKvD,KAAKgU,gBACrGzQ,KAAKgf,YAAchf,KAAKif,YACxBjf,KAAKvD,KAAKc,OAAS,GAGC,SAAlByC,KAAKvD,KAAKwU,MACZjR,KAAKvD,KAAKwU,IAA8B,QAAvBpV,EAAGmC,MAAMiV,WAExBjT,KAAKvD,KAAKwU,KACZjR,KAAKnE,GAAGmF,UAAUyS,IAAI,kBAIxB,IAAIyL,EAAkB5jB,EAAM6jB,iBAAiBnf,KAAKnE,GAAI6T,EAAaW,YAAoCvD,cACnGoS,IACFA,EAAeE,QAAUpf,KACzBA,KAAKkf,eAAiBA,EACtBlf,KAAKnE,GAAGmF,UAAUyS,IAAI,qBACtByL,EAAerjB,GAAGmF,UAAUyS,IAAI,wBAGlCzT,KAAKqf,kBAA8C,SAAzBrf,KAAKvD,KAAKqT,WAChC9P,KAAKqf,mBAA8C,YAAzBrf,KAAKvD,KAAKqT,WAEtC9P,KAAK8P,gBAAWnU,GAAW,IAGQ,iBAAxBqE,KAAKvD,KAAKqT,YAA0B9P,KAAKvD,KAAKuT,gBAAkBhQ,KAAKvD,KAAKuT,iBAAmBN,EAAaM,iBACnHhQ,KAAKvD,KAAKqT,WAAa9P,KAAKvD,KAAKqT,WAAa9P,KAAKvD,KAAKuT,sBACjDhQ,KAAKvD,KAAKuT,gBAEnBhQ,KAAK8P,WAAW9P,KAAKvD,KAAKqT,YAAY,IAIC,WAArC9P,KAAKvD,KAAKkT,yBACZ3P,KAAKvD,KAAKkT,uBAAyByB,GAGrCpR,KAAKsf,iBAAmB,SAAWzZ,EAAgB4E,SACnDzK,KAAKnE,GAAGmF,UAAUyS,IAAIzT,KAAKsf,kBAE3Btf,KAAKuf,kBAEL,IAAIvB,EAAche,KAAKvD,KAAKuhB,aAAef,EAAUe,aAAenY,EA6BpE,GA5BA7F,KAAKwf,OAAS,IAAIxB,EAAY,CAC5BzgB,OAAQyC,KAAKif,YACb/Y,MAAOlG,KAAKvD,KAAKyJ,MACjBF,OAAQhG,KAAKvD,KAAKuJ,OAClBG,SAAWsZ,IACT,IAAIlf,EAAO,EACXP,KAAKwf,OAAOniB,MAAMyC,SAAQxD,IAAOiE,EAAO7C,KAAKC,IAAI4C,EAAMjE,EAAEM,EAAIN,EAAEO,EAAE,IACjE4iB,EAAQ3f,SAAQxD,IACd,IAAIT,EAAKS,EAAET,GACNA,IACDS,EAAE0P,YACAnQ,GAAIA,EAAGgD,gBACJvC,EAAE0P,YAEThM,KAAK0f,cAAc7jB,EAAIS,OAG3B0D,KAAK2f,eAAc,EAAOpf,EAAK,IAI/BP,KAAKvD,KAAKoT,OACZ7P,KAAKoG,cACLpG,KAAK4f,eAAe9f,SAAQjE,GAAMmE,KAAK6f,gBAAgBhkB,KACvDmE,KAAKoG,aAAY,IAIfpG,KAAKvD,KAAKghB,SAAU,CACtB,IAAIA,EAAWzd,KAAKvD,KAAKghB,gBAClBzd,KAAKvD,KAAKghB,SACbA,EAASxhB,QAAQ+D,KAAK0d,KAAKD,GAGjCzd,KAAK8f,aAAa9f,KAAKvD,KAAKmT,SAE5B5P,KAAK2f,gBACL3f,KAAKnE,GAAGmF,UAAUyS,IAAI,MAAQzT,KAAKvD,KAAKc,QAGpCyC,KAAKvD,KAAK+Q,iBAAmB2D,EAAUmI,YAAWnI,EAAUmI,WAAY,QACzC3d,IAA/BqE,KAAKvD,KAAKwT,WAAWsJ,QAAqBpI,EAAUmI,UAAYtZ,KAAKvD,KAAKwT,UAAUsJ,OAExFvZ,KAAK+f,mBACL/f,KAAKggB,qBACLhgB,KAAKigB,oBACP,CAiBOC,UAAU1kB,EAA0CuC,GAKzD,IAAIlC,EACA2E,EACJ,GAAmB,iBAARhF,EAAkB,CAC3B,IAAIE,EAAMD,SAASmiB,eAAeC,mBAAmB,IACrDniB,EAAIye,KAAK2D,UAAYtiB,EACrBK,EAAKH,EAAIye,KAAKsD,SAAS,QAClB,GAAyB,IAArB0C,UAAUlkB,QAAqC,IAArBkkB,UAAUlkB,cAT7BN,KADSoB,EAUsDvB,GATtEK,SAA4BF,IAARoB,EAAED,QAA2BnB,IAARoB,EAAEH,QAA2BjB,IAARoB,EAAEA,QAA2BpB,IAARoB,EAAEF,QAAiClB,IAAdoB,EAAEoQ,SAWnH,GADA3M,EAAOzC,EAAUvC,EACbgF,GAAM3E,GACRA,EAAK2E,EAAK3E,QACL,GAAIohB,EAAUU,YACnB9hB,EAAKohB,EAAUU,YAAY3d,KAAKnE,GAAIkC,GAAS,GAAM,OAC9C,CACL,IAAIoP,EAAUpP,GAASoP,SAAW,GAC9BzR,EAAMD,SAASmiB,eAAeC,mBAAmB,IACrDniB,EAAIye,KAAK2D,UAAY,+BAA+B9d,KAAKvD,KAAK4T,WAAa,4CAA4ClD,gBACvHtR,EAAKH,EAAIye,KAAKsD,SAAS,QAGzB5hB,EAAKL,EAvBP,IAA2BuB,EA0B3B,IAAKlB,EAAI,OAIT,GADA2E,EAAO3E,EAAGiR,cACNtM,GAAQ3E,EAAGqF,gBAAkBlB,KAAKnE,IAAMmE,KAAKwf,OAAOniB,MAAMwG,MAAKvH,GAAKA,EAAE4L,MAAQ1H,EAAK0H,MAAM,OAAOrM,EAKpG,IAAIukB,EAAUpgB,KAAKqgB,UAAUxkB,GAc7B,OAbAkC,EAAUzC,EAAMyI,UAAUhG,IAAY,CAAC,EACvCzC,EAAM2E,SAASlC,EAASqiB,GACxB5f,EAAOR,KAAKwf,OAAOjV,YAAYxM,GAC/BiC,KAAKsgB,WAAWzkB,EAAIkC,GAEhBiC,KAAKugB,iBACPvgB,KAAKnE,GAAG2kB,QAAQ3kB,GAEhBmE,KAAKnE,GAAGyC,YAAYzC,GAGtBmE,KAAKygB,WAAW5kB,EAAIkC,GAEblC,CACT,CAUOgS,YAAYhS,EAAyB6kB,EAAwBC,EAA2BC,GAAc,GAC3G,IAOIC,EAPArgB,EAAO3E,EAAGiR,cAId,GAHKtM,IACHA,EAAOR,KAAKygB,WAAW5kB,GAAIiR,eAEzBtM,EAAK4e,SAASvjB,GAAI,OAAO2E,EAAK4e,QAIlC,IAUI0B,EAVAvkB,EAAkByD,KACtB,KAAOzD,IAASskB,GACdA,EAAkBtkB,EAAKE,MAAMskB,YAC7BxkB,EAAOA,EAAK2iB,gBAAgB3iB,KAG9BmkB,EAAMplB,EAAMyI,UAAU,IAAK8c,GAAmB,CAAC,EAAIpD,cAAU9hB,KAAe+kB,GAAOlgB,EAAKugB,cACxFvgB,EAAKugB,YAAcL,EAIA,SAAfA,EAAInjB,SACNujB,GAAa,EACbJ,EAAInjB,OAASG,KAAKC,IAAI6C,EAAKzD,GAAK,EAAG4jB,GAAW5jB,GAAK,GACnD2jB,EAAI5B,sBAAuB,GAI7B,IACIkC,EACAC,EAFA9T,EAAU3M,EAAK3E,GAAGQ,cAAc,4BAGpC,GAAIukB,EAAa,CASf,GARA5gB,KAAKkhB,UAAU1gB,EAAK3E,IACpBolB,EAAa,IAAIzgB,EAAM1D,EAAE,EAAGF,EAAE,GAC9BtB,EAAMiT,sBAAsB0S,UACrBA,EAAWF,YACdvgB,EAAK2M,UACP8T,EAAW9T,QAAU3M,EAAK2M,eACnB3M,EAAK2M,SAEV8P,EAAUU,YACZqD,EAAU/D,EAAUU,YAAY3d,KAAKnE,GAAIolB,GAAY,GAAM,OACtD,CACL,IAAIvlB,EAAMD,SAASmiB,eAAeC,mBAAmB,IACrDniB,EAAIye,KAAK2D,UAAY,sCACrBkD,EAAUtlB,EAAIye,KAAKsD,SAAS,GAC5BuD,EAAQ1iB,YAAY6O,GACpBzR,EAAIye,KAAK2D,UAAY,8CACrB3Q,EAAUzR,EAAIye,KAAKsD,SAAS,GAC5Bjd,EAAK3E,GAAGyC,YAAY6O,GAEtBnN,KAAKmhB,uBAAuB3gB,GAI9B,GAAImgB,EAAW,CACb,IAAI5jB,EAAI+jB,EAAaJ,EAAInjB,OAASiD,EAAKzD,EACnCF,EAAI2D,EAAK3D,EAAI8jB,EAAU9jB,EACvBmB,EAAQwC,EAAK3E,GAAGmC,MACpBA,EAAMwc,WAAa,OACnBxa,KAAKohB,OAAO5gB,EAAK3E,GAAI,CAACkB,IAAGF,MACzB0E,YAAW,IAAOvD,EAAMwc,WAAa,OAGvC,IAAI4E,EAAU5e,EAAK4e,QAAUnC,EAAUoE,QAAQlU,EAASuT,GAkBxD,OAjBIC,GAAW3Z,UAASoY,EAAQ3R,SAAU,GACtCqT,IAAY1B,EAAQkC,aAAc,GAGlCV,GACFxB,EAAQc,UAAUc,EAASC,GAIzBN,IACEA,EAAU3Z,QAEZvE,OAAOlB,YAAW,IAAMjG,EAAMoW,mBAAmBiP,EAAUY,OAAQ,aAAcnC,EAAQvjB,KAAK,GAE9FujB,EAAQc,UAAU1f,EAAK3E,GAAI2E,IAGxB4e,CACT,CAMOoC,gBAAgBC,GACrB,IAAIC,EAAQ1hB,KAAKkf,gBAAgB3iB,KAC5BmlB,IAELA,EAAMtb,cACNsb,EAAMC,aAAa3hB,KAAKkf,eAAerjB,IAAI,GAAM,GACjDmE,KAAKwf,OAAOniB,MAAMyC,SAAQxD,IAExBA,EAAEQ,GAAKkD,KAAKkf,eAAepiB,EAC3BR,EAAEM,GAAKoD,KAAKkf,eAAetiB,EAC3B8kB,EAAMxB,UAAU5jB,EAAET,GAAIS,EAAE,IAE1BolB,EAAMtb,aAAY,GACdpG,KAAKkf,uBAAuBlf,KAAKkf,eAAeE,eAC7Cpf,KAAKkf,eAGRuC,GACFhf,OAAOlB,YAAW,IAAMjG,EAAMoW,mBAAmB+P,EAAgBF,OAAQ,aAAcG,EAAM7lB,KAAK,GAEtG,CAWOoS,KAAK2S,GAAc,EAAMgB,GAAc,EAAOzT,EAAS8O,EAAU9O,QAEtE,IAAIpS,EAAOiE,KAAKwf,OAAOvR,KAAK2S,EAAazS,GAqBzC,GAlBApS,EAAK+D,SAAQxD,IACX,GAAIskB,GAAetkB,EAAET,KAAOS,EAAE8iB,UAAYjR,EAAQ,CAChD,IAAI0T,EAAMvlB,EAAET,GAAGQ,cAAc,4BAC7BC,EAAE6Q,QAAU0U,EAAMA,EAAI/D,eAAYniB,EAC7BW,EAAE6Q,gBAAgB7Q,EAAE6Q,aAIzB,GAFKyT,GAAgBzS,UAAiB7R,EAAE6Q,QAEpC7Q,EAAE8iB,SAASvjB,GAAI,CACjB,MAAMimB,EAAYxlB,EAAE8iB,QAAQnR,KAAK2S,EAAagB,EAAazT,GAC3D7R,EAAEykB,YAAea,EAAcE,EAAY,CAACrE,SAAUqE,UAC/CxlB,EAAE8iB,eAGN9iB,EAAET,EAAE,IAIT+lB,EAAa,CACf,IAAIhnB,EAA8BU,EAAMyI,UAAU/D,KAAKvD,MAEnD7B,EAAEmnB,eAAiBnnB,EAAEonB,WAAapnB,EAAEqnB,cAAgBrnB,EAAEsnB,YAActnB,EAAEonB,YAAcpnB,EAAEqnB,cACxFrnB,EAAE0V,OAAS1V,EAAEonB,iBACNpnB,EAAEonB,iBAAkBpnB,EAAEqnB,mBAAoBrnB,EAAEmnB,oBAAqBnnB,EAAEsnB,YAExEtnB,EAAEqW,OAAqC,QAA5BjR,KAAKnE,GAAGmC,MAAMiV,aAAwBrY,EAAEqW,IAAM,QACzDjR,KAAKqf,oBACPzkB,EAAEkV,WAAa,QAEb9P,KAAKshB,cACP1mB,EAAE2C,OAAS,cACJ3C,EAAEkkB,sBAEX,MAAMqD,EAAWvnB,EAAE6jB,wBASnB,cARO7jB,EAAE6jB,6BACQ9iB,IAAbwmB,EACFvnB,EAAE+U,uBAAyBwS,SAEpBvnB,EAAE+U,uBAEXrU,EAAM8mB,sBAAsBxnB,EAAG8U,GAC/B9U,EAAE6iB,SAAW1hB,EACNnB,EAGT,OAAOmB,CACT,CAYO2hB,KAAK/T,EAA2B0Y,EAAoCpF,EAAUU,cAAe,GAElG,MAAM2E,EAAY3Y,EAAO2B,MAAKvO,QAAapB,IAARoB,EAAED,QAA2BnB,IAARoB,EAAEH,IAC1D,IAAI2lB,EAAQD,EAAYhnB,EAAMsC,KAAK+L,GAAS,EAAG3J,KAAKgf,aAAehf,KAAKif,aAAetV,EACvF3J,KAAKugB,iBAAmB+B,EAIpBtiB,KAAKgf,aAAehf,KAAKgf,cAAgBhf,KAAKvD,KAAKc,QAAUglB,EAAMjX,MAAKhP,IAAOA,EAAEQ,GAAK,GAAKR,EAAES,EAAMiD,KAAKvD,KAAKc,WAC/GyC,KAAKwiB,0BAA2B,EAChCxiB,KAAKwf,OAAO1Q,YAAYyT,EAAOviB,KAAKgf,aAAa,IAInD,MAAMyD,EAASxF,EAAUU,YACC,mBAAhB,IAA4BV,EAAUU,YAAc0E,GAE9D,IAAIK,EAA2B,GAC/B1iB,KAAKoG,cAGDic,GACc,IAAIriB,KAAKwf,OAAOniB,OACtByC,SAAQxD,IACLimB,EAAM1e,MAAK9G,GAAKT,EAAEuB,KAAOd,EAAEc,OAEhCof,EAAUU,aACZV,EAAUU,YAAY3d,KAAKnE,GAAIS,GAAG,GAAO,GAC3ComB,EAAQzW,KAAK3P,GACb0D,KAAK2hB,aAAarlB,EAAET,IAAI,GAAM,OAMpC,IAAImO,EAAYhK,KAAKwf,OAAOniB,MAgC5B,OA/BA2C,KAAKwf,OAAOniB,MAAQ,GACpBklB,EAAMziB,SAAQ/C,IACZ,IAAI4lB,OAAiBhnB,IAAToB,EAAEc,GAAoBmM,EAAUnG,MAAKvH,GAAKA,EAAEuB,KAAOd,EAAEc,UAAMlC,EACvE,GAAIgnB,GASF,IAPI5lB,EAAE4D,mBAAwBhF,IAARoB,EAAED,QAA2BnB,IAARoB,EAAEH,KAC3CG,EAAEA,EAAIA,EAAEA,GAAK4lB,EAAK5lB,EAClBA,EAAEF,EAAIE,EAAEF,GAAK8lB,EAAK9lB,EAClBmD,KAAKwf,OAAOhU,kBAAkBzO,IAEhCiD,KAAKwf,OAAOniB,MAAM4O,KAAK0W,GACvB3iB,KAAKohB,OAAOuB,EAAK9mB,GAAIkB,GACjBA,EAAEgkB,aAAatD,SAAU,CAC3B,IAAIoE,EAAMc,EAAK9mB,GAAGQ,cAAc,eAC5BwlB,GAAOA,EAAIzE,YACbyE,EAAIzE,UAAUM,KAAK3gB,EAAEgkB,YAAYtD,UACjCzd,KAAKugB,kBAAmB,SAGnB8B,GACTriB,KAAKkgB,UAAUnjB,MAInBiD,KAAKwf,OAAOzZ,aAAe2c,EAC3B1iB,KAAKoG,aAAY,UAGVpG,KAAKwiB,gCACLxiB,KAAKugB,iBACZkC,EAASxF,EAAUU,YAAc8E,SAAgBxF,EAAUU,YACpD3d,IACT,CAMOoG,YAAYC,GAAO,GAQxB,OAPArG,KAAKwf,OAAOpZ,YAAYC,GACnBA,IACHrG,KAAK4iB,yBACL5iB,KAAK6iB,sBACL7iB,KAAK8iB,mBACL9iB,KAAK+iB,uBAEA/iB,IACT,CAKOgjB,cAAcC,GAAa,GAChC,GAAIjjB,KAAKvD,KAAKqT,YAAuC,SAAzB9P,KAAKvD,KAAKqT,cACjCmT,IAAejjB,KAAKvD,KAAKuT,gBAA+C,OAA7BhQ,KAAKvD,KAAKuT,gBACxD,OAAOhQ,KAAKvD,KAAKqT,WAGnB,IAAIjU,EAAKmE,KAAKnE,GAAGQ,cAAc,IAAM2D,KAAKvD,KAAK4T,WAC/C,GAAIxU,EAAI,CACN,IAAIgG,EAASvG,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,UAAY,EACxD,OAAO3e,KAAKgR,MAAM7S,EAAGqH,aAAerB,GAGtC,IAAIqhB,EAAOC,SAASnjB,KAAKnE,GAAGwgB,aAAa,mBACzC,OAAO6G,EAAOxlB,KAAKgR,MAAM1O,KAAKnE,GAAG0G,wBAAwBV,OAASqhB,GAAQljB,KAAKvD,KAAKqT,UACtF,CAgBOA,WAAWvQ,EAAsB6hB,GAAS,GAY/C,GATIA,QAAkBzlB,IAAR4D,GACRS,KAAKqf,qBAA+B,SAAR9f,KAC9BS,KAAKqf,kBAA6B,SAAR9f,EAC1BS,KAAKigB,sBAGG,YAAR1gB,GAA6B,SAARA,IAAkBA,OAAM5D,QAGrCA,IAAR4D,EAAmB,CACrB,IAAI6jB,GAAgBpjB,KAAKvD,KAAKwlB,YAA0BjiB,KAAKvD,KAAKylB,WAC7DliB,KAAKvD,KAAKulB,UAAwBhiB,KAAKvD,KAAKslB,aACjDxiB,EAAMS,KAAKqjB,YAAcD,EAG3B,IAAIE,EAAOhoB,EAAMioB,YAAYhkB,GAC7B,OAAIS,KAAKvD,KAAKuT,iBAAmBsT,EAAK9jB,MAAQQ,KAAKvD,KAAKqT,aAAewT,EAAKzmB,IAG5EmD,KAAKvD,KAAKuT,eAAiBsT,EAAK9jB,KAChCQ,KAAKvD,KAAKqT,WAAawT,EAAKzmB,EAE5BmD,KAAKwjB,iBAAgB,GAAO,GAExBpC,GACFphB,KAAK2f,eAAc,IARZ3f,IAWX,CAGOqjB,YACL,OAAOrjB,KAAK+e,oBAAsB/e,KAAKif,WACzC,CAEUF,oBAGR,OAAQ/e,KAAKnE,GAAG4nB,aAAezjB,KAAKnE,GAAGqF,cAAcuiB,aAAehhB,OAAOihB,UAC7E,CASOha,QAAQC,EAAyB,UAAWC,GAAS,GAG1D,OAFA5J,KAAKwf,OAAO9V,QAAQC,EAAQC,GAC5B5J,KAAK+iB,sBACE/iB,IACT,CAWOzC,OAAOA,EAAgBoM,EAAwB,aACpD,IAAKpM,GAAUA,EAAS,GAAKyC,KAAKvD,KAAKc,SAAWA,EAAQ,OAAOyC,KACjE,IAeI2jB,EAfAC,EAAY5jB,KAAKif,YAiCrB,OA7Be,IAAX1hB,EACFyC,KAAKgf,YAAc4E,SAEZ5jB,KAAKgf,YAGdhf,KAAKnE,GAAGmF,UAAUnC,OAAO,MAAQ+kB,GACjC5jB,KAAKnE,GAAGmF,UAAUyS,IAAI,MAAQlW,GAC9ByC,KAAKvD,KAAKc,OAASyC,KAAKwf,OAAOjiB,OAASA,EAIzB,IAAXA,GAAgByC,KAAKvD,KAAKonB,uBAC5BF,EAAW,GACX3jB,KAAK4f,eAAe9f,SAAQjE,IACtBA,EAAGiR,eAAiB6W,EAAS1X,KAAKpQ,EAAGiR,kBAEtC6W,EAAS1nB,SAAU0nB,OAAWhoB,IAErCqE,KAAKwf,OAAO7Q,cAAciV,EAAWrmB,EAAQomB,EAAUha,GACnD3J,KAAKqf,mBAAmBrf,KAAK8P,aAEjC9P,KAAKwjB,kBAGLxjB,KAAKwiB,0BAA2B,EAChCxiB,KAAK+iB,6BACE/iB,KAAKwiB,yBAELxiB,IACT,CAKOif,YACL,OAAOjf,KAAKvD,KAAKc,MACnB,CAGOqiB,eACL,OAAO1jB,MAAMC,KAAK6D,KAAKnE,GAAG4hB,UACvBpV,QAAQxM,GAAoBA,EAAG2f,QAAQ,IAAMxb,KAAKvD,KAAK4T,aAAexU,EAAG2f,QAAQ,IAAMxb,KAAKvD,KAAKiU,mBACtG,CAMOoD,QAAQ3H,GAAY,GACzB,GAAKnM,KAAKnE,GAoBV,OAnBAmE,KAAK8jB,SACL9jB,KAAKigB,oBAAmB,GACxBjgB,KAAK+jB,WAAU,GAAM,GACrB/jB,KAAK8f,cAAa,GACb3T,EAKHnM,KAAKnE,GAAG+C,WAAWqV,YAAYjU,KAAKnE,KAJpCmE,KAAKsM,UAAUH,GACfnM,KAAKnE,GAAGmF,UAAUnC,OAAOmB,KAAKsf,kBAC9Btf,KAAKnE,GAAGoI,gBAAgB,mBAI1BjE,KAAKgkB,oBACDhkB,KAAKkf,uBAAuBlf,KAAKkf,eAAeE,eAC7Cpf,KAAKkf,sBACLlf,KAAKvD,YACLuD,KAAKke,oBACLle,KAAKwf,cACLxf,KAAKnE,GAAGuhB,iBACRpd,KAAKnE,GACLmE,IACT,CAKOkG,MAAM3G,GAKX,OAJIS,KAAKvD,KAAKyJ,QAAU3G,IACtBS,KAAKvD,KAAKyJ,MAAQlG,KAAKwf,OAAOtZ,MAAQ3G,EACtCS,KAAK+iB,uBAEA/iB,IACT,CAKOikB,WACL,OAAOjkB,KAAKwf,OAAOtZ,KACrB,CAWOge,iBAAiB1iB,EAAyB2iB,GAAiB,GAChE,IAEIC,EAFAxY,EAAM5L,KAAKnE,GAAG0G,wBAIhB6hB,EADED,EACa,CAACxiB,IAAKiK,EAAIjK,IAAMlG,SAASsG,gBAAgBkB,UAAWvB,KAAMkK,EAAIlK,MAG9D,CAACC,IAAK3B,KAAKnE,GAAGwH,UAAW3B,KAAM1B,KAAKnE,GAAG6e,YAGxD,IAAI2J,EAAe7iB,EAASE,KAAO0iB,EAAa1iB,KAC5C4iB,EAAc9iB,EAASG,IAAMyiB,EAAaziB,IAE1C4iB,EAAe3Y,EAAIhK,MAAQ5B,KAAKif,YAChCuF,EAAa5Y,EAAI/J,OAASshB,SAASnjB,KAAKnE,GAAGwgB,aAAa,mBAE5D,MAAO,CAACvf,EAAGY,KAAKiO,MAAM0Y,EAAeE,GAAc3nB,EAAGc,KAAKiO,MAAM2Y,EAAcE,GACjF,CAGO3X,SACL,OAAOnP,KAAKC,IAAIqC,KAAKwf,OAAO3S,SAAU7M,KAAKvD,KAAK+T,OAClD,CASO/G,YAAY3M,EAAWF,EAAWG,EAAWF,GAClD,OAAOmD,KAAKwf,OAAO/V,YAAY3M,EAAGF,EAAGG,EAAGF,EAC1C,CAgBO4jB,WAAWjlB,EAAuBuC,GACvC,IAAIlC,EAAKohB,EAAU/Y,WAAW1I,GAC9BwE,KAAK6f,gBAAgBhkB,GAAI,EAAMkC,GAC/B,MAAMyC,EAAO3E,EAAGiR,cAoBhB,OAlBA9M,KAAK4iB,yBAEL5iB,KAAKwjB,iBAAgB,GAAO,EAAOhjB,GAG/BA,EAAKugB,aACP/gB,KAAK6N,YAAYhS,EAAI2E,EAAKugB,iBAAaplB,GAAW,GAKhDqE,KAAKgf,aAAoC,IAArBhf,KAAKvD,KAAKc,SAChCyC,KAAKwiB,0BAA2B,GAElCxiB,KAAK8iB,mBACL9iB,KAAK+iB,6BACE/iB,KAAKwiB,yBAEL3mB,CACT,CAkBO2Y,GAAGzT,EAAsB0T,GAE9B,IAA2B,IAAvB1T,EAAK2W,QAAQ,KAGf,OAFY3W,EAAKoV,MAAM,KACjBrW,SAAQiB,GAAQf,KAAKwU,GAAGzT,EAAM0T,KAC7BzU,KAGT,GAAa,WAATe,GAA8B,UAATA,GAA6B,YAATA,GAA+B,WAATA,GAA8B,YAATA,EAAoB,CAE1G,IAAI0jB,EAAmB,WAAT1jB,GAA8B,YAATA,EAEjCf,KAAKqe,gBAAgBtd,GADnB0jB,EAC4BrhB,GAAkBqR,EAAmCrR,GAErDA,GAAwBqR,EAAmCrR,EAAOA,EAAMshB,QAExG1kB,KAAKnE,GAAGgY,iBAAiB9S,EAAMf,KAAKqe,gBAAgBtd,QAClC,SAATA,GAA4B,cAATA,GAAiC,aAATA,GAAgC,gBAATA,GAAmC,WAATA,GACzF,eAATA,GAAkC,YAATA,GAA+B,kBAATA,EAGlDf,KAAKqe,gBAAgBtd,GAAQ0T,EAE7B4I,QAAQsH,IAAI,gBAAkB5jB,EAAO,mHAEvC,OAAOf,IACT,CAMO0U,IAAI3T,GAET,OAA2B,IAAvBA,EAAK2W,QAAQ,MACH3W,EAAKoV,MAAM,KACjBrW,SAAQiB,GAAQf,KAAK0U,IAAI3T,KACxBf,OAGI,WAATe,GAA8B,UAATA,GAA6B,YAATA,GAA+B,WAATA,GAA8B,YAATA,GAElFf,KAAKqe,gBAAgBtd,IACvBf,KAAKnE,GAAGmY,oBAAoBjT,EAAMf,KAAKqe,gBAAgBtd,WAGpDf,KAAKqe,gBAAgBtd,GAErBf,KACT,CAGO8jB,SAEL,OADAjpB,OAAOqF,KAAKF,KAAKqe,iBAAiBve,SAAQnF,GAAOqF,KAAK0U,IAAI/Z,KACnDqF,IACT,CAQO2hB,aAAanmB,EAAuB2Q,GAAY,EAAMC,GAAe,GA4B1E,OA3BA6Q,EAAUH,YAAYthB,GAAKsE,SAAQjE,IACjC,GAAIA,EAAGqF,eAAiBrF,EAAGqF,gBAAkBlB,KAAKnE,GAAI,OACtD,IAAI2E,EAAO3E,EAAGiR,cAETtM,IACHA,EAAOR,KAAKwf,OAAOniB,MAAMwG,MAAKvH,GAAKT,IAAOS,EAAET,MAEzC2E,IAEDyc,EAAUU,aACZV,EAAUU,YAAY3d,KAAKnE,GAAI2E,GAAM,GAAO,UAIvC3E,EAAGiR,cACV9M,KAAKkhB,UAAUrlB,GAEfmE,KAAKwf,OAAOtT,WAAW1L,EAAM2L,EAAWC,GAEpCD,GAAatQ,EAAGqF,eAClBrF,EAAGgD,aAGHuN,IACFpM,KAAK6iB,sBACL7iB,KAAK+iB,uBAEA/iB,IACT,CAMOsM,UAAUH,GAAY,GAQ3B,OANAnM,KAAKwf,OAAOniB,MAAMyC,SAAQxD,WACjBA,EAAET,GAAGiR,cACZ9M,KAAKkhB,UAAU5kB,EAAET,GAAG,IAEtBmE,KAAKwf,OAAOlT,UAAUH,GACtBnM,KAAK6iB,sBACE7iB,IACT,CAMO8f,aAAa8E,GAMlB,OALIA,EACF5kB,KAAKnE,GAAGmF,UAAUyS,IAAI,sBAEtBzT,KAAKnE,GAAGmF,UAAUnC,OAAO,sBAEpBmB,IACT,CASO+jB,UAAUxkB,EAAcslB,GAAc,EAAMC,GAAU,GAC3D,QAAM9kB,KAAKvD,KAAKiiB,aAAenf,IAC/BA,EAAMS,KAAKvD,KAAKiiB,YAAa,SAAc1e,KAAKvD,KAAKiiB,WACrD1e,KAAK+f,mBACL/f,KAAKggB,qBACLhgB,KAAKwf,OAAOniB,MAAMyC,SAAQxD,IACxB0D,KAAKmhB,uBAAuB7kB,GACxBA,EAAE8iB,SAAW0F,GAASxoB,EAAE8iB,QAAQ2E,UAAUxkB,EAAKslB,EAAaC,EAAQ,IAEtED,GAAe7kB,KAAKuf,mBARmBvf,IAU7C,CAOOohB,OAAO5lB,EAAuB4L,GAGnC,GAAI+Y,UAAUlkB,OAAS,EAAG,CACxBohB,QAAQ0H,KAAK,yHAEb,IAAIroB,EAAIyjB,UAAW1f,EAAI,EAEvB,OADA2G,EAAM,CAAEtK,EAAEJ,EAAE+D,KAAM7D,EAAEF,EAAE+D,KAAM1D,EAAEL,EAAE+D,KAAM5D,EAAEH,EAAE+D,MACnCT,KAAKohB,OAAO5lB,EAAK4L,GA0D1B,OAvDA6V,EAAUH,YAAYthB,GAAKsE,SAAQjE,IACjC,IAAIS,EAAIT,GAAIiR,cACZ,IAAKxQ,EAAG,OACR,IAAIS,EAAIzB,EAAMyI,UAAUqD,UACjBrK,EAAE4D,aAGT,IACIqkB,EADA9kB,EAAO,CAAC,IAAK,IAAK,IAAK,KAe3B,GAbIA,EAAKoL,MAAKxH,QAAcnI,IAAToB,EAAE+G,IAAoB/G,EAAE+G,KAAOxH,EAAEwH,OAClDkhB,EAAI,CAAC,EACL9kB,EAAKJ,SAAQgE,IACXkhB,EAAElhB,QAAenI,IAAToB,EAAE+G,GAAoB/G,EAAE+G,GAAKxH,EAAEwH,UAChC/G,EAAE+G,EAAE,MAIVkhB,IAAMjoB,EAAEqD,MAAQrD,EAAEsD,MAAQtD,EAAEuD,MAAQvD,EAAEwD,QACzCykB,EAAI,CAAC,QAIWrpB,IAAdoB,EAAEoQ,QAAuB,CAC3B,MAAM8X,EAAcppB,EAAGQ,cAAc,4BACrC,IAAK4oB,GAAeA,EAAYnH,YAAc/gB,EAAEoQ,QAAS,OACzD8X,EAAYnH,UAAY/gB,EAAEoQ,QAEtB7Q,EAAE8iB,SAASvjB,KACbopB,EAAY3mB,YAAYhC,EAAE8iB,QAAQvjB,IAC7BS,EAAE8iB,QAAQ3iB,KAAKyoB,aAAa5oB,EAAE8iB,QAAQO,eAAc,WAEpD5iB,EAAEoQ,QAIX,IAAIgY,GAAU,EACVC,GAAY,EAChB,IAAK,MAAMzqB,KAAOoC,EACD,MAAXpC,EAAI,IAAc2B,EAAE3B,KAASoC,EAAEpC,KACjC2B,EAAE3B,GAAOoC,EAAEpC,GACXwqB,GAAU,EACVC,EAAYA,IAAeplB,KAAKvD,KAAKiiB,aAAuB,aAAR/jB,GAA8B,WAARA,GAA4B,WAARA,IAGlGW,EAAMoP,eAAepO,GAGjB0oB,GAAGhlB,KAAK8H,SAASxL,EAAG0oB,GACpBG,GACFnlB,KAAKsgB,WAAWzkB,EAAIS,GAElB8oB,GACFplB,KAAKmhB,uBAAuB7kB,MAGzB0D,IACT,CAEQ8H,SAASxL,EAAkB0oB,GACjChlB,KAAKwf,OAAO/Y,aACTsH,YAAYzR,GACZwL,SAASxL,EAAG0oB,GACfhlB,KAAK4iB,yBACL5iB,KAAK+iB,sBACL/iB,KAAKwf,OAAOxR,WACd,CAOOqX,gBAAgBxpB,EAAyBypB,GAAc,GAE5D,GADAzpB,GAAImF,UAAUnC,OAAO,wBAChBhD,GAAI8G,aAAc,OACvB,IAAIrG,EAAIT,EAAGiR,cACX,IAAKxQ,EAAG,OACR,MAAMC,EAAOD,EAAEC,KACf,IAAKA,EAAM,OACX,GAAIV,EAAGqF,gBAAkB3E,EAAKV,GAAI,OAClC,MAAM0pB,EAAOhpB,EAAKymB,gBAClB,IAAKuC,EAAM,OACX,IACI5C,EADA9gB,EAASyjB,GAAehpB,EAAEO,EAAIP,EAAEO,EAAI0oB,EAAO1pB,EAAG8G,aAIlD,GAFIrG,EAAEkpB,wBAAuB7C,EAAO9mB,EAAGQ,cAAcC,EAAEkpB,wBAClD7C,IAAMA,EAAO9mB,EAAGQ,cAAc4gB,EAAUuI,yBACxC7C,EAAM,OACX,MAAM8C,EAAU5pB,EAAG8G,aAAeggB,EAAKhgB,aACjC+iB,EAAQJ,GAAehpB,EAAEO,EAAIP,EAAEO,EAAI0oB,EAAOE,EAAU9C,EAAKhgB,aAC/D,IAAIgjB,EACJ,GAAIrpB,EAAE8iB,QAEJuG,EAAUrpB,EAAE8iB,QAAQvS,SAAWvQ,EAAE8iB,QAAQ4D,oBACpC,CAEL,MAAM4C,EAAQjD,EAAKkD,kBACnB,IAAKD,EAA2K,YAAlKvI,QAAQsH,IAAI,6BAA6B1H,EAAUuI,8GACjEG,EAAUC,EAAMrjB,wBAAwBV,QAAU6jB,EAEpD,GAAIA,IAAUC,EAAS,OACvB9jB,GAAU8jB,EAAUD,EACpB,IAAI7oB,EAAIa,KAAKooB,KAAKjkB,EAAS0jB,GAE3B,MAAMQ,EAAUzmB,OAAOka,UAAUld,EAAEE,eAAiBF,EAAEE,cAA0B,EAC5EupB,GAAWlpB,EAAIkpB,IACjBlpB,EAAIkpB,EACJlqB,EAAGmF,UAAUyS,IAAI,wBAEfnX,EAAE+D,MAAQxD,EAAIP,EAAE+D,KAAMxD,EAAIP,EAAE+D,KACvB/D,EAAEiE,MAAQ1D,EAAIP,EAAEiE,OAAM1D,EAAIP,EAAEiE,MACjC1D,IAAMP,EAAEO,IACVN,EAAKimB,0BAA2B,EAChCjmB,EAAKuL,SAASxL,EAAG,CAACO,aACXN,EAAKimB,yBAEhB,CAGUwD,qBAAqBnqB,EAAyBoqB,GAAU,GAC5DhJ,EAAUiJ,kBAAmBjJ,EAAUiJ,kBAAkBrqB,GACxDmE,KAAKqlB,gBAAgBxpB,EAAIoqB,EAChC,CAMO3V,OAAOjR,GAGZ,KAFqC,iBAAVA,GAAsBA,EAAM8W,MAAM,KAAKla,OAAS,GAExD,CACjB,IAAIqnB,EAAOhoB,EAAMioB,YAAYlkB,GAC7B,GAAIW,KAAKvD,KAAK8T,aAAe+S,EAAK9jB,MAAQQ,KAAKvD,KAAK6T,SAAWgT,EAAKzmB,EAAG,OASzE,OANAmD,KAAKvD,KAAK6T,OAASjR,EACnBW,KAAKvD,KAAKulB,UAAYhiB,KAAKvD,KAAKslB,aAAe/hB,KAAKvD,KAAKylB,WAAaliB,KAAKvD,KAAKwlB,iBAActmB,EAC9FqE,KAAK6e,cAEL7e,KAAK2f,eAAc,GAEZ3f,IACT,CAGOmmB,YAAsB,OAAOnmB,KAAKvD,KAAK6T,MAAkB,CAczDtD,UAAUxM,GAEf,GAAI2f,UAAUlkB,OAAS,EAAG,CACxBohB,QAAQ0H,KAAK,uHAEb,IAAIroB,EAAIyjB,UAAW1f,EAAI,EACrB1D,EAAqB,CAAED,EAAEJ,EAAE+D,KAAM7D,EAAEF,EAAE+D,KAAM1D,EAAEL,EAAE+D,KAAM5D,EAAEH,EAAE+D,KAAME,aAAajE,EAAE+D,MAChF,OAAOT,KAAKgN,UAAUjQ,GAExB,OAAOiD,KAAKwf,OAAOxS,UAAUxM,EAC/B,CAGUuiB,sBACR,GAAI/iB,KAAKwf,OAAOjZ,UAAW,OAAOvG,KAClC,IAAIomB,EAAWpmB,KAAKwf,OAAOvU,eAAc,GAQzC,OAPImb,GAAYA,EAASnqB,SAClB+D,KAAKwiB,0BACRxiB,KAAKwf,OAAOhR,mBAAmB4X,GAEjCpmB,KAAKmU,cAAc,SAAUiS,IAE/BpmB,KAAKwf,OAAO9Y,cACL1G,IACT,CAGU8iB,mBACR,OAAI9iB,KAAKwf,OAAOjZ,WACZvG,KAAKwf,OAAO1Z,YAAY7J,SACrB+D,KAAKwiB,0BACRxiB,KAAKwf,OAAOhR,mBAAmBxO,KAAKwf,OAAO1Z,YAG7C9F,KAAKwf,OAAO1Z,WAAWhG,SAAQxD,WAAcA,EAAE+M,MAAM,IACrDrJ,KAAKmU,cAAc,QAASnU,KAAKwf,OAAO1Z,YACxC9F,KAAKwf,OAAO1Z,WAAa,IARO9F,IAWpC,CAGO6iB,sBACL,OAAI7iB,KAAKwf,OAAOjZ,WACZvG,KAAKwf,OAAOzZ,cAAc9J,SAC5B+D,KAAKmU,cAAc,UAAWnU,KAAKwf,OAAOzZ,cAC1C/F,KAAKwf,OAAOzZ,aAAe,IAHK/F,IAMpC,CAGUmU,cAAc1P,EAAc6e,GACpC,IAAIlgB,EAAQkgB,EAAO,IAAI+C,YAAY5hB,EAAM,CAACI,SAAS,EAAO6f,OAAQpB,IAAS,IAAIgD,MAAM7hB,GAErF,OADAzE,KAAKnE,GAAG+J,cAAcxC,GACfpD,IACT,CAGUgkB,oBAMR,OAJIhkB,KAAKumB,UACPjrB,EAAMkrB,iBAAiBxmB,KAAKsf,yBACrBtf,KAAKumB,SAEPvmB,IACT,CAGU2f,cAAc8G,GAAc,EAAOlmB,GAU3C,GARIkmB,GACFzmB,KAAKgkB,oBAGFzjB,IAAMA,EAAOP,KAAK6M,UACvB7M,KAAK4iB,yBAGwB,IAAzB5iB,KAAKvD,KAAKqT,WACZ,OAAO9P,KAGT,IAAI8P,EAAa9P,KAAKvD,KAAKqT,WACvBE,EAAiBhQ,KAAKvD,KAAKuT,eAC3B0D,EAAS,IAAI1T,KAAKsf,uBAAuBtf,KAAKvD,KAAK4T,YAGvD,IAAKrQ,KAAKumB,QAAS,CAEjB,IAAIG,EAAgB1mB,KAAKvD,KAAKyoB,iBAAcvpB,EAAYqE,KAAKnE,GAAG+C,WAIhE,GAHAoB,KAAKumB,QAAUjrB,EAAMqrB,iBAAiB3mB,KAAKsf,iBAAkBoH,EAAe,CAC1ExoB,MAAO8B,KAAKvD,KAAKyB,SAEd8B,KAAKumB,QAAS,OAAOvmB,KAC1BA,KAAKumB,QAAQK,KAAO,EAGpBtrB,EAAMurB,WAAW7mB,KAAKumB,QAAS7S,EAAQ,WAAW5D,IAAaE,KAE/D,IAAIrO,EAAc3B,KAAKvD,KAAKulB,UAAYhiB,KAAKvD,KAAK8T,WAC9C3N,EAAiB5C,KAAKvD,KAAKslB,aAAe/hB,KAAKvD,KAAK8T,WACpDpH,EAAgBnJ,KAAKvD,KAAKwlB,YAAcjiB,KAAKvD,KAAK8T,WAClD7O,EAAe1B,KAAKvD,KAAKylB,WAAaliB,KAAKvD,KAAK8T,WAChDpD,EAAU,GAAGuG,+BACbuK,EAAc,IAAIje,KAAKsf,oEAC3BhkB,EAAMurB,WAAW7mB,KAAKumB,QAASpZ,EAAS,QAAQxL,aAAewH,cAAkBvG,YAAiBlB,MAClGpG,EAAMurB,WAAW7mB,KAAKumB,QAAStI,EAAa,QAAQtc,aAAewH,cAAkBvG,YAAiBlB,MAEtGpG,EAAMurB,WAAW7mB,KAAKumB,QAAS,GAAG7S,uBAA6B,UAAUvK,KACzE7N,EAAMurB,WAAW7mB,KAAKumB,QAAS,GAAG7S,sBAA4B,UAAUvK,KACxE7N,EAAMurB,WAAW7mB,KAAKumB,QAAS,GAAG7S,uBAA6B,UAAUvK,cAAkBvG,KAC3FtH,EAAMurB,WAAW7mB,KAAKumB,QAAS,GAAG7S,uBAA6B,SAAShS,KACxEpG,EAAMurB,WAAW7mB,KAAKumB,QAAS,GAAG7S,sBAA4B,SAAShS,KACvEpG,EAAMurB,WAAW7mB,KAAKumB,QAAS,GAAG7S,uBAA6B,SAAShS,cAAiBkB,KAK3F,IADArC,EAAOA,GAAQP,KAAKumB,QAAQK,MACjB5mB,KAAKumB,QAAQK,KAAM,CAC5B,IAAIE,EAAa5D,GAA0BpT,EAAaoT,EAAQlT,EAChE,IAAK,IAAIvP,EAAIT,KAAKumB,QAAQK,KAAO,EAAGnmB,GAAKF,EAAME,IAC7CnF,EAAMurB,WAAW7mB,KAAKumB,QAAS,GAAG7S,WAAgBjT,MAAO,QAAQqmB,EAAUrmB,MAC3EnF,EAAMurB,WAAW7mB,KAAKumB,QAAS,GAAG7S,WAAgBjT,EAAE,MAAO,WAAWqmB,EAAUrmB,EAAE,MAEpFT,KAAKumB,QAAQK,KAAOrmB,EAEtB,OAAOP,IACT,CAGU4iB,yBACR,IAAK5iB,KAAKwf,QAAUxf,KAAKwf,OAAOjZ,UAAW,OAAOvG,KAClD,IAAI8N,EAAM9N,KAAK6M,SAAW7M,KAAKse,cAY/B,GADAte,KAAKnE,GAAGsC,aAAa,iBAAkB4oB,OAAOjZ,IAClC,IAARA,EACF9N,KAAKnE,GAAGmC,MAAMyD,eAAe,kBACxB,CACL,IAAIqO,EAAa9P,KAAKvD,KAAKqT,WACvBtQ,EAAOQ,KAAKvD,KAAKuT,eACrB,IAAKF,EAAY,OAAO9P,KACxBA,KAAKnE,GAAGmC,MAAMma,UAAYrK,EAAMgC,EAAatQ,EAQ/C,OAJIQ,KAAKkf,iBAAmBlf,KAAKkf,eAAe3iB,KAAKijB,OAAOjZ,WAAajL,EAAM0rB,oBAAoBhnB,KAAKkf,iBACtGlf,KAAKkf,eAAe3iB,KAAKypB,qBAAqBhmB,KAAKkf,eAAerjB,IAG7DmE,IACT,CAGU6f,gBAAgBhkB,EAAyBgQ,GAAkB,EAAOrL,GAC1E3E,EAAGmF,UAAUyS,IAAIzT,KAAKvD,KAAK4T,WAC3B7P,EAAOA,GAAQR,KAAKqgB,UAAUxkB,GAC9BA,EAAGiR,cAAgBtM,EACnBA,EAAK3E,GAAKA,EACV2E,EAAKjE,KAAOyD,KACZ,IAAI8K,EAAO,IAAItK,GAQf,OAPAA,EAAOR,KAAKwf,OAAOrV,QAAQ3J,EAAMqL,GAE5BvQ,EAAM2rB,KAAKzmB,EAAMsK,IACpB9K,KAAKsgB,WAAWzkB,EAAI2E,GAElBlF,EAAM0rB,oBAAoBxmB,IAAO3E,EAAGmF,UAAUyS,IAAI,mBACtDzT,KAAKmhB,uBAAuB3gB,GACrBR,IACT,CAGU0f,cAAc7jB,EAAiBS,GAKvC,YAJYX,IAARW,EAAEQ,GAA2B,OAARR,EAAEQ,GAAcjB,EAAGsC,aAAa,OAAQ4oB,OAAOzqB,EAAEQ,SAC9DnB,IAARW,EAAEM,GAA2B,OAARN,EAAEM,GAAcf,EAAGsC,aAAa,OAAQ4oB,OAAOzqB,EAAEM,IAC1EN,EAAES,EAAI,EAAIlB,EAAGsC,aAAa,OAAQ4oB,OAAOzqB,EAAES,IAAMlB,EAAGoI,gBAAgB,QACpE3H,EAAEO,EAAI,EAAIhB,EAAGsC,aAAa,OAAQ4oB,OAAOzqB,EAAEO,IAAMhB,EAAGoI,gBAAgB,QAC7DjE,IACT,CAGUsgB,WAAWzkB,EAAiB2E,GACpC,IAAKA,EAAM,OAAOR,KAClBA,KAAK0f,cAAc7jB,EAAI2E,GAEvB,IAAI0mB,EAA2C,CAC7CvmB,aAAc,mBACdC,SAAU,eACVC,OAAQ,aACRC,OAAQ,YACRjD,GAAI,SAEN,IAAK,MAAMlD,KAAOusB,EACZ1mB,EAAK7F,GACPkB,EAAGsC,aAAa+oB,EAAMvsB,GAAMosB,OAAOvmB,EAAK7F,KAExCkB,EAAGoI,gBAAgBijB,EAAMvsB,IAG7B,OAAOqF,IACT,CAGUqgB,UAAUxkB,EAAiBsrB,GAAmB,GACtD,IAAI7qB,EAAmB,CAAC,EACxBA,EAAEQ,EAAIxB,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,SACrC/f,EAAEM,EAAItB,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,SACrC/f,EAAES,EAAIzB,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,SACrC/f,EAAEO,EAAIvB,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,SACrC/f,EAAEqE,aAAerF,EAAMqjB,OAAO9iB,EAAGwgB,aAAa,qBAC9C/f,EAAEsE,SAAWtF,EAAMqjB,OAAO9iB,EAAGwgB,aAAa,iBAC1C/f,EAAEuE,OAASvF,EAAMqjB,OAAO9iB,EAAGwgB,aAAa,eACxC/f,EAAEwE,OAASxF,EAAMqjB,OAAO9iB,EAAGwgB,aAAa,cACxC/f,EAAEuB,GAAKhC,EAAGwgB,aAAa,SAGvB/f,EAAEgE,KAAOhF,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,aACxC/f,EAAE8D,KAAO9E,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,aACxC/f,EAAEiE,KAAOjF,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,aACxC/f,EAAE+D,KAAO/E,EAAMkjB,SAAS3iB,EAAGwgB,aAAa,aAGpC8K,IACU,IAAR7qB,EAAES,GAASlB,EAAGoI,gBAAgB,QACtB,IAAR3H,EAAEO,GAAShB,EAAGoI,gBAAgB,QAC9B3H,EAAEgE,MAAMzE,EAAGoI,gBAAgB,YAC3B3H,EAAE8D,MAAMvE,EAAGoI,gBAAgB,YAC3B3H,EAAEiE,MAAM1E,EAAGoI,gBAAgB,YAC3B3H,EAAE+D,MAAMxE,EAAGoI,gBAAgB,aAIjC,IAAK,MAAMtJ,KAAO2B,EAAG,CACnB,IAAKA,EAAElB,eAAeT,GAAM,OACvB2B,EAAE3B,IAAmB,IAAX2B,EAAE3B,WACR2B,EAAE3B,GAIb,OAAO2B,CACT,CAGUijB,kBACR,IAAI6H,EAAU,CAAC,qBAUf,OARIpnB,KAAKvD,KAAKiiB,YACZ1e,KAAKnE,GAAGmF,UAAUyS,OAAO2T,GACzBpnB,KAAKnE,GAAGsC,aAAa,YAAa,UAElC6B,KAAKnE,GAAGmF,UAAUnC,UAAUuoB,GAC5BpnB,KAAKnE,GAAGoI,gBAAgB,cAGnBjE,IACT,CAOOqnB,WACL,IAAKrnB,KAAKnE,IAAI4nB,YAAa,OAC3B,GAAIzjB,KAAKsnB,YAActnB,KAAKnE,GAAG4nB,YAAa,OAC5CzjB,KAAKsnB,UAAYtnB,KAAKnE,GAAG4nB,YAGzBzjB,KAAKoG,cAGL,IAAIuI,GAAgB,EACpB,GAAI3O,KAAKshB,aAAethB,KAAKkf,eACvBlf,KAAKvD,KAAKc,SAAWyC,KAAKkf,eAAeniB,IAC3CiD,KAAKzC,OAAOyC,KAAKkf,eAAeniB,EAAG,QACnC4R,GAAgB,OAEb,CAEL,IAAI4Y,GAAavnB,KAAKvD,KAAKqiB,sBAAwB9e,KAAKnE,GAAG4nB,aAAezjB,KAAKvD,KAAKgU,eAC9D,IAArBzQ,KAAKvD,KAAKc,SAAiByC,KAAKgf,YACP,IAArBhf,KAAKvD,KAAKc,SAAkBgqB,IAE/BvnB,KAAKzC,OAAOgqB,EAAY,EAAIvnB,KAAKgf,aAEjCrQ,GAAgB,GAiBpB,OAZI3O,KAAKqf,mBAAmBrf,KAAK8P,aAGjC9P,KAAKwf,OAAOniB,MAAMyC,SAAQxD,IACpBA,EAAE8iB,SAAS9iB,EAAE8iB,QAAQiI,UAAU,IAGhCrnB,KAAKwnB,oBAAoBxnB,KAAKwjB,gBAAgB7U,UAC5C3O,KAAKwnB,mBAEZxnB,KAAKoG,aAAY,GAEVpG,IACT,CAEQwjB,gBAAgBpiB,GAAQ,EAAM6kB,GAAU,EAAO3pB,EAAmBX,WAGxE4F,YAAW,KACR,GAAIjF,EACChB,EAAM0rB,oBAAoB1qB,IAAI0D,KAAKgmB,qBAAqB1pB,EAAET,GAAIoqB,QAC5D,GAAIjmB,KAAKwf,OAAOniB,MAAMiO,MAAKhP,GAAKhB,EAAM0rB,oBAAoB1qB,KAAK,CACrE,MAAMe,EAAQ,IAAI2C,KAAKwf,OAAOniB,OAC9B2C,KAAKoG,cACL/I,EAAMyC,SAAQxD,IACRhB,EAAM0rB,oBAAoB1qB,IAAI0D,KAAKgmB,qBAAqB1pB,EAAET,GAAIoqB,EAAQ,IAE5EjmB,KAAKoG,aAAY,GAGfpG,KAAKqe,gBAA+B,eAAGre,KAAKqe,gBAA+B,cAAE,KAAM/hB,EAAI,CAACA,GAAK0D,KAAKwf,OAAOniB,MAAM,GAClH+D,EAAQ,IAAW,EACxB,CAGU6e,mBAAmBwH,GAAc,GAGzC,MAAMC,GAAa1nB,KAAKkf,iBAAmBlf,KAAKqf,mBAAqBrf,KAAKvD,KAAKD,gBAAkBwD,KAAKvD,KAAKqiB,sBACtG9e,KAAKwf,OAAOniB,MAAMwG,MAAKvH,GAAKA,EAAEE,iBAanC,OAXKirB,IAAeC,GAAc1nB,KAAK2nB,gBAK3BF,GAAgBC,IAAc1nB,KAAK2nB,iBAC7C3nB,KAAK2nB,eAAeC,oBACb5nB,KAAK2nB,sBACL3nB,KAAK6nB,gBAPZ7nB,KAAK6nB,cAAgBvsB,EAAMwsB,UAAS,IAAM9nB,KAAKqnB,YAAYrnB,KAAKvD,KAAKsT,oBACrE/P,KAAK2nB,eAAiB,IAAII,gBAAeC,GAAWhoB,KAAK6nB,kBACzD7nB,KAAK2nB,eAAeM,QAAQjoB,KAAKnE,IACjCmE,KAAKwnB,oBAAqB,GAOrBxnB,IACT,CAGOzE,kBAAkBC,EAAwB,oBAA2C,OAAOF,EAAM4I,WAAW1I,EAAK,CAElHD,mBAAmBC,EAAwB,oBAA6C,OAAOF,EAAMwhB,YAAYthB,EAAK,CAEtHD,sBAAsBC,GAA0C,OAAOyhB,EAAU/Y,WAAW1I,EAAK,CAEjGD,uBAAuBC,GAAkC,OAAOF,EAAMwhB,YAAYthB,EAAK,CAGpFqjB,cAER,IAAIyE,EACAhT,EAAS,EAGT4X,EAAoB,GAsDxB,MArDgC,iBAArBloB,KAAKvD,KAAK6T,SACnB4X,EAAUloB,KAAKvD,KAAK6T,OAAO6F,MAAM,MAEZ,IAAnB+R,EAAQjsB,QACV+D,KAAKvD,KAAKulB,UAAYhiB,KAAKvD,KAAKslB,aAAemG,EAAQ,GACvDloB,KAAKvD,KAAKylB,WAAaliB,KAAKvD,KAAKwlB,YAAciG,EAAQ,IAC3B,IAAnBA,EAAQjsB,QACjB+D,KAAKvD,KAAKulB,UAAYkG,EAAQ,GAC9BloB,KAAKvD,KAAKwlB,YAAciG,EAAQ,GAChCloB,KAAKvD,KAAKslB,aAAemG,EAAQ,GACjCloB,KAAKvD,KAAKylB,WAAagG,EAAQ,KAE/B5E,EAAOhoB,EAAMioB,YAAYvjB,KAAKvD,KAAK6T,QACnCtQ,KAAKvD,KAAK8T,WAAa+S,EAAK9jB,KAC5B8Q,EAAStQ,KAAKvD,KAAK6T,OAASgT,EAAKzmB,QAIPlB,IAAxBqE,KAAKvD,KAAKulB,UACZhiB,KAAKvD,KAAKulB,UAAY1R,GAEtBgT,EAAOhoB,EAAMioB,YAAYvjB,KAAKvD,KAAKulB,WACnChiB,KAAKvD,KAAKulB,UAAYsB,EAAKzmB,SACpBmD,KAAKvD,KAAK6T,aAGY3U,IAA3BqE,KAAKvD,KAAKslB,aACZ/hB,KAAKvD,KAAKslB,aAAezR,GAEzBgT,EAAOhoB,EAAMioB,YAAYvjB,KAAKvD,KAAKslB,cACnC/hB,KAAKvD,KAAKslB,aAAeuB,EAAKzmB,SACvBmD,KAAKvD,KAAK6T,aAGW3U,IAA1BqE,KAAKvD,KAAKwlB,YACZjiB,KAAKvD,KAAKwlB,YAAc3R,GAExBgT,EAAOhoB,EAAMioB,YAAYvjB,KAAKvD,KAAKwlB,aACnCjiB,KAAKvD,KAAKwlB,YAAcqB,EAAKzmB,SACtBmD,KAAKvD,KAAK6T,aAGU3U,IAAzBqE,KAAKvD,KAAKylB,WACZliB,KAAKvD,KAAKylB,WAAa5R,GAEvBgT,EAAOhoB,EAAMioB,YAAYvjB,KAAKvD,KAAKylB,YACnCliB,KAAKvD,KAAKylB,WAAaoB,EAAKzmB,SACrBmD,KAAKvD,KAAK6T,QAEnBtQ,KAAKvD,KAAK8T,WAAa+S,EAAK9jB,KACxBQ,KAAKvD,KAAKulB,YAAchiB,KAAKvD,KAAKslB,cAAgB/hB,KAAKvD,KAAKylB,aAAeliB,KAAKvD,KAAKwlB,aAAejiB,KAAKvD,KAAKulB,YAAchiB,KAAKvD,KAAKwlB,cACxIjiB,KAAKvD,KAAK6T,OAAStQ,KAAKvD,KAAKulB,WAExBhiB,IACT,CAWOzE,eACL,OAAO2gB,CACT,CAUO3gB,mBAAmB+gB,EAAiC6L,EAA6BjuB,EAA+BuB,eACxFE,IAAzBwsB,GAAe5O,QACjBpI,EAAUmI,UAAY6O,EAAc5O,OAGtC4O,EAAgB,IAAIjX,KAA0BiX,GAAiB,CAAC,GAChE,IAAI3sB,EAAwC,iBAAX8gB,EAAuBhhB,EAAMwhB,YAAYR,EAAQpiB,GAAQoiB,EACtF9gB,EAAIS,QAAQT,GAAKsE,SAAQjE,IACtBqgB,EAAGQ,YAAY7gB,IAAKqgB,EAAGI,OAAOzgB,EAAIssB,EAAc,GAEzD,CAQOC,QAAQ5sB,EAAuB+D,GACpC,OAAIS,KAAKvD,KAAKiiB,YACdzB,EAAUH,YAAYthB,GAAKsE,SAAQjE,IACjC,IAAIS,EAAIT,EAAGiR,cACNxQ,IACLiD,SAAajD,EAAEuE,OAASvE,EAAEuE,QAAS,EACnCb,KAAKmhB,uBAAuB7kB,GAAE,IALC0D,IAQnC,CAOO+Q,UAAUvV,EAAuB+D,GACtC,OAAIS,KAAKvD,KAAKiiB,YACdzB,EAAUH,YAAYthB,GAAKsE,SAAQjE,IACjC,IAAIS,EAAIT,EAAGiR,cACNxQ,IACLiD,SAAajD,EAAEsE,SAAWtE,EAAEsE,UAAW,EACvCZ,KAAKmhB,uBAAuB7kB,GAAE,IALC0D,IAQnC,CAYO4U,QAAQkQ,GAAU,GACvB,IAAI9kB,KAAKvD,KAAKiiB,WAId,OAHA1e,KAAKqoB,YAAW,EAAOvD,GACvB9kB,KAAKsoB,cAAa,EAAOxD,GACzB9kB,KAAKmU,cAAc,WACZnU,IACT,CAUO2U,OAAOmQ,GAAU,GACtB,IAAI9kB,KAAKvD,KAAKiiB,WAId,OAHA1e,KAAKqoB,YAAW,EAAMvD,GACtB9kB,KAAKsoB,cAAa,EAAMxD,GACxB9kB,KAAKmU,cAAc,UACZnU,IACT,CAMOqoB,WAAWE,EAAmBzD,GAAU,GAC7C,OAAI9kB,KAAKvD,KAAKiiB,aACd6J,SAAkBvoB,KAAKvD,KAAK+rB,YAAcxoB,KAAKvD,KAAK+rB,aAAc,EAClExoB,KAAKwf,OAAOniB,MAAMyC,SAAQxD,IACxB0D,KAAKmhB,uBAAuB7kB,GACxBA,EAAE8iB,SAAW0F,GAASxoB,EAAE8iB,QAAQiJ,WAAWE,EAAUzD,EAAQ,KAJlC9kB,IAOnC,CAMOsoB,aAAaC,EAAmBzD,GAAU,GAC/C,OAAI9kB,KAAKvD,KAAKiiB,aACd6J,SAAkBvoB,KAAKvD,KAAKgsB,cAAgBzoB,KAAKvD,KAAKgsB,eAAgB,EACtEzoB,KAAKwf,OAAOniB,MAAMyC,SAAQxD,IACxB0D,KAAKmhB,uBAAuB7kB,GACxBA,EAAE8iB,SAAW0F,GAASxoB,EAAE8iB,QAAQkJ,aAAaC,EAAUzD,EAAQ,KAJpC9kB,IAOnC,CAGUkhB,UAAUrlB,GAMlB,OALAqgB,EAAGjM,UAAUpU,EAAI,WAAWkV,UAAUlV,EAAI,WACtCA,EAAGiR,sBACEjR,EAAGiR,cAAc4b,eAEnB7sB,EAAG4d,UACHzZ,IACT,CAGUggB,qBAGR,GAAIhgB,KAAKvD,KAAKiiB,aAAgB1e,KAAKvD,KAAKksB,gBAAkB3oB,KAAKvD,KAAKmsB,UAElE,OADA1M,EAAGK,UAAUvc,KAAKnE,GAAI,WACfmE,KAIT,IAAI8P,EAAoBuT,EAEpBwF,EAAS,CAACzlB,EAAkBvH,EAAyB8c,KACvD,IAAInY,EAAO3E,EAAGiR,cACd,IAAKtM,EAAM,OAEXmY,EAASA,GAAU9c,EACnB,IAAIiC,EAASkC,KAAKnE,GAAG0G,yBACjB,IAACZ,EAAG,KAAED,GAAQiX,EAAOpW,wBACzBb,GAAQ5D,EAAO4D,KACfC,GAAO7D,EAAO6D,IACd,IAAIyX,EAAe,CAAC5X,SAAU,CAACG,MAAKD,SAEpC,GAAIlB,EAAKuL,kBAAmB,CAO1B,GANAvL,EAAK1D,EAAIY,KAAKC,IAAI,EAAGD,KAAKgR,MAAMhN,EAAO2hB,IACvC7iB,EAAK5D,EAAIc,KAAKC,IAAI,EAAGD,KAAKgR,MAAM/M,EAAMmO,WAC/BtP,EAAKG,aACZX,KAAKwf,OAAO7U,aAAanK,IAGpBR,KAAKwf,OAAOxS,UAAUxM,GAAO,CAEhC,GADAA,EAAKG,cAAe,GACfX,KAAKwf,OAAOxS,UAAUxM,GAEzB,YADA0b,EAAGxH,IAAI7Y,EAAI,QAGT2E,EAAKyM,cAEP3R,EAAMyM,QAAQvH,EAAMA,EAAKyM,oBAClBzM,EAAKyM,aAKhBjN,KAAK8oB,eAAenQ,EAAQvV,EAAOgW,EAAI5Y,EAAM6iB,EAAWvT,QAGxD9P,KAAK+oB,cAAcpQ,EAAQvV,EAAOgW,EAAI5Y,EAAM6iB,EAAWvT,IA4L3D,OAxLAoM,EAAGK,UAAUvc,KAAKnE,GAAI,CACpBgV,OAAShV,IACP,IAAI2E,EAAsB3E,EAAGiR,cAE7B,GAAItM,GAAMjE,OAASyD,KAAM,OAAO,EAChC,IAAKA,KAAKvD,KAAKksB,cAAe,OAAO,EAErC,IAAIK,GAAY,EAChB,GAAuC,mBAA5BhpB,KAAKvD,KAAKksB,cACnBK,EAAYhpB,KAAKvD,KAAKksB,cAAc9sB,OAC/B,CACL,IAAIiD,GAAwC,IAA5BkB,KAAKvD,KAAKksB,cAAyB,mBAAqB3oB,KAAKvD,KAAKksB,cAClFK,EAAYntB,EAAG2f,QAAQ1c,GAGzB,GAAIkqB,GAAaxoB,GAAQR,KAAKvD,KAAKuJ,OAAQ,CACzC,IAAI1J,EAAI,CAACS,EAAGyD,EAAKzD,EAAGF,EAAG2D,EAAK3D,EAAGuD,KAAMI,EAAKJ,KAAMC,KAAMG,EAAKH,MAC3D2oB,EAAYhpB,KAAKwf,OAAOxS,UAAU1Q,GAEpC,OAAO0sB,CAAS,IAMjBxU,GAAGxU,KAAKnE,GAAI,YAAY,CAACuH,EAAcvH,EAAyB8c,KAE/D,IAAInY,EAAO3E,EAAGiR,cAEd,GAAItM,GAAMjE,OAASyD,OAASQ,EAAKuL,kBAE/B,OAAO,EAILvL,GAAMjE,MAAQiE,EAAKjE,OAASyD,OAASQ,EAAKuL,mBAE5BvL,EAAKjE,KACX0sB,OAAOptB,EAAI8c,GAIvB0K,EAAYrjB,KAAKqjB,YACjBvT,EAAa9P,KAAKgjB,eAAc,GAG3BxiB,IACHA,EAAOR,KAAKqgB,UAAUxkB,GAAI,IAEvB2E,EAAKjE,OACRiE,EAAK0oB,aAAc,EACnBrtB,EAAGiR,cAAgBtM,GAIrBmY,EAASA,GAAU9c,EACnB,IAAIkB,EAAIyD,EAAKzD,GAAKW,KAAKgR,MAAMiK,EAAOwQ,YAAc9F,IAAc,EAC5DxmB,EAAI2D,EAAK3D,GAAKa,KAAKgR,MAAMiK,EAAOzV,aAAe4M,IAAe,EAyBlE,OAtBItP,EAAKjE,MAAQiE,EAAKjE,OAASyD,MAGxBnE,EAAGutB,qBAAoBvtB,EAAGutB,mBAAqB5oB,GACpD3E,EAAGiR,cAAgBtM,EAAO,IAAIA,EAAMzD,IAAGF,EAAGN,KAAMyD,MAChDA,KAAKwf,OAAOtS,YAAY1M,GACrBmK,aAAanK,GAEhBA,EAAKkoB,QACPloB,EAAK0oB,YACL1oB,EAAKuL,mBAAoB,IAEvBvL,EAAKzD,EAAIA,EAAGyD,EAAK3D,EAAIA,EACrB2D,EAAKuL,mBAAoB,GAI3B/L,KAAKqpB,cAAc7oB,EAAK3E,IAAI,GAE5BqgB,EAAG1H,GAAG3Y,EAAI,OAAQgtB,GAElBA,EAAOzlB,EAAoBvH,EAAI8c,IACxB,CAAK,IAKbnE,GAAGxU,KAAKnE,GAAI,WAAW,CAACuH,EAAOvH,EAAyB8c,KAEvD,IAAInY,EAAO3E,EAAGiR,cACd,QAAKtM,IAGAA,EAAKjE,MAAQiE,EAAKjE,OAASyD,OAC9BA,KAAKipB,OAAOptB,EAAI8c,GAEZ3Y,KAAKyN,SACPzN,KAAKwhB,gBAAgBhhB,KAGlB,EAAK,IAKbgU,GAAGxU,KAAKnE,GAAI,QAAQ,CAACuH,EAAOvH,EAAyB8c,KACpD,IAAInY,EAAO3E,EAAGiR,cAEd,GAAItM,GAAMjE,OAASyD,OAASQ,EAAK0oB,YAAa,OAAO,EAErD,IAAII,IAAatpB,KAAKie,YAAY/c,cAClClB,KAAKie,YAAYpf,SAIjB,IAAI0qB,EAAW1tB,EAAGutB,mBAElB,UADOvtB,EAAGutB,mBACNE,GAAYC,GAAUhtB,MAAQgtB,EAAShtB,OAASyD,KAAM,CACxD,IAAIwpB,EAAQD,EAAShtB,KACrBitB,EAAMhK,OAAOzZ,aAAakG,KAAKsd,GAC/BC,EAAM3G,sBAAsBE,sBAExByG,EAAMtK,iBAAmBsK,EAAMhK,OAAOniB,MAAMpB,QAAUutB,EAAM/sB,KAAK+Q,gBACnEgc,EAAMhI,kBAIV,IAAKhhB,EAAM,OAAO,EAoBlB,GAjBI8oB,IACFtpB,KAAKwf,OAAOtS,YAAY1M,GACxBA,EAAKjE,KAAOyD,MAEdkc,EAAGxH,IAAI7Y,EAAI,QAGP8c,IAAW9c,GACb8c,EAAO9Z,SACPhD,EAAGiR,cAAgByc,EACfD,IACFztB,EAAKA,EAAGmI,WAAU,MAGpBnI,EAAGgD,SACHmB,KAAKkhB,UAAUrlB,KAEZytB,EAAU,OAAO,EACtBztB,EAAGiR,cAAgBtM,EACnBA,EAAK3E,GAAKA,EACV,IAAIujB,EAAU5e,EAAK4e,SAASvjB,IAAIuhB,UAgChC,OA9BA9hB,EAAMyM,QAAQvH,EAAMR,KAAKqgB,UAAUrgB,KAAKie,cACxC3iB,EAAMmuB,wBAAwB5tB,GAC9BmE,KAAKsgB,WAAWzkB,EAAI2E,GACpB3E,EAAGmF,UAAUyS,IAAI/D,EAAaW,UAAWrQ,KAAKvD,KAAK4T,WACnDrQ,KAAKnE,GAAGyC,YAAYzC,GAChBujB,IACFA,EAAQF,eAAiB1e,EACpB4e,EAAQ3iB,KAAKyoB,aAAa9F,EAAQO,eAAc,IAEvD3f,KAAK4iB,yBACL5iB,KAAKwf,OAAO1Z,WAAWmG,KAAKzL,GAC5BR,KAAK8iB,mBACL9iB,KAAK+iB,sBAEL/iB,KAAKwf,OAAOxR,YACRhO,KAAKqe,gBAAyB,SAChCre,KAAKqe,gBAAyB,QAAE,IAAIjb,EAAOqB,KAAM,WAAY8kB,GAAYA,EAAShtB,KAAOgtB,OAAW5tB,EAAW6E,GAIjHiC,OAAOlB,YAAW,KAEZf,EAAK3E,IAAM2E,EAAK3E,GAAGqF,cACrBlB,KAAKmhB,uBAAuB3gB,GAE5BR,KAAKwf,OAAOtT,WAAW1L,UAElBA,EAAKjE,KAAKkR,OAAO,KAGnB,CAAK,IAETzN,IACT,CAGQqpB,cAAcxtB,EAAyBgD,GAC7C,IAAI2B,EAAO3E,EAAKA,EAAGiR,mBAAgBnR,EAC9B6E,GAASA,EAAKjE,OAAQV,EAAGmF,UAAUC,SAASjB,KAAKvD,KAAKmU,iBAAiBE,WAC5EjS,EAAS2B,EAAK6L,kBAAmB,SAAc7L,EAAK6L,iBACpDxN,EAAShD,EAAGmF,UAAUyS,IAAI,4BAA8B5X,EAAGmF,UAAUnC,OAAO,4BAC9E,CAGUkhB,mBACR,IAAK/f,KAAKvD,KAAKiiB,YAA6C,iBAAxB1e,KAAKvD,KAAKmsB,UAAwB,CACpE,IAAIc,EAAUjuB,SAASY,cAAc2D,KAAKvD,KAAKmsB,WAC/C,IAAKc,EAAS,OAAO1pB,KAIhBkc,EAAGO,YAAYiN,IAClBxN,EAAGK,UAAUmN,EAAS1pB,KAAKvD,KAAKmU,kBAC7B4D,GAAGkV,EAAS,YAAY,CAACtmB,EAAOvH,IAAOmE,KAAKqpB,cAAcxtB,GAAI,KAC9D2Y,GAAGkV,EAAS,WAAY,CAACtmB,EAAOvH,IAAOmE,KAAKqpB,cAAcxtB,GAAI,KAGrE,OAAOmE,IACT,CAGUmhB,uBAAuB3gB,GAC/B,IAAI3E,EAAK2E,EAAK3E,GACd,MAAMgF,EAASL,EAAKK,QAAUb,KAAKvD,KAAK+rB,YAClC5nB,EAAWJ,EAAKI,UAAYZ,KAAKvD,KAAKgsB,cAG5C,GAAIzoB,KAAKvD,KAAKiiB,YAAe7d,GAAUD,EAMrC,OALIJ,EAAKkoB,UACP1oB,KAAKkhB,UAAUrlB,UACR2E,EAAKkoB,SAEd7sB,EAAGmF,UAAUyS,IAAI,wBAAyB,yBACnCzT,KAGT,IAAKQ,EAAKkoB,QAAS,CAEjB,IAAIrF,EACAvT,EAGA6Z,EAAgB,CAACvmB,EAAcgW,KAE7BpZ,KAAKqe,gBAAgBjb,EAAMqB,OAC7BzE,KAAKqe,gBAAgBjb,EAAMqB,MAAMrB,EAAOA,EAAMxD,QAEhDyjB,EAAYrjB,KAAKqjB,YACjBvT,EAAa9P,KAAKgjB,eAAc,GAEhChjB,KAAK8oB,eAAejtB,EAAIuH,EAAOgW,EAAI5Y,EAAM6iB,EAAWvT,EAAW,EAI7D8Z,EAAe,CAACxmB,EAAmBgW,KACrCpZ,KAAK+oB,cAAcltB,EAAIuH,EAAOgW,EAAI5Y,EAAM6iB,EAAWvT,EAAW,EAI5D+Z,EAAezmB,IACjBpD,KAAKie,YAAYpf,gBACV2B,EAAKwG,eACLxG,EAAK+gB,cACL/gB,EAAK6K,WAGZ,IAAIzL,EAA8BwD,EAAMxD,OACxC,GAAKA,EAAOkN,eAAiBlN,EAAOkN,cAAcvQ,OAASyD,KAA3D,CAIA,GAFAQ,EAAK3E,GAAK+D,EAENY,EAAK6L,iBAAkB,CACzB,IAAI9P,EAAOV,EAAGiR,cAAcvQ,KACxBA,EAAK8hB,gBAAgBjb,EAAMqB,OAC7BlI,EAAK8hB,gBAAgBjb,EAAMqB,MAAMrB,EAAOxD,GAE1CrD,EAAKijB,OAAOniB,MAAM4O,KAAKzL,GACvBjE,EAAKolB,aAAa9lB,GAAI,GAAM,QAE5BP,EAAMmuB,wBAAwB7pB,GAC1BY,EAAKuL,mBAEPzQ,EAAMyM,QAAQvH,EAAMA,EAAK6J,OACzBrK,KAAK0f,cAAc9f,EAAQY,GAC3BR,KAAKwf,OAAOrV,QAAQ3J,IAGpBR,KAAK0f,cAAc9f,EAAQY,GAEzBR,KAAKqe,gBAAgBjb,EAAMqB,OAC7BzE,KAAKqe,gBAAgBjb,EAAMqB,MAAMrB,EAAOxD,GAI5CI,KAAKse,cAAgB,EACrBte,KAAK4iB,yBACL5iB,KAAK+iB,sBAEL/iB,KAAKwf,OAAOxR,YAEO,eAAf5K,EAAMqB,OACJnF,OAAOka,UAAUhZ,EAAKhE,iBAAgBgE,EAAKhE,cAAgBgE,EAAK3D,GACpEmD,KAAKwjB,iBAAgB,GAAO,EAAMhjB,GAnCmC,GAuCzE0b,EAAGjM,UAAUpU,EAAI,CACfwa,MAAOsT,EACPpT,KAAMsT,EACN1Q,KAAMyQ,IACL7Y,UAAUlV,EAAI,CACfwa,MAAOsT,EACPpT,KAAMsT,EACN5S,OAAQ2S,IAEVppB,EAAKkoB,SAAU,EAOjB,OAHAxM,EAAGjM,UAAUpU,EAAIgF,EAAS,UAAY,UACnCkQ,UAAUlV,EAAI+E,EAAW,UAAY,UAEjCZ,IACT,CAGU8oB,eAAejtB,EAAyBuH,EAAcgW,EAAc5Y,EAAqB6iB,EAAmBvT,GACpH9P,KAAKwf,OAAO/Y,aACTsH,YAAYvN,GAEfR,KAAK0f,cAAc1f,KAAKie,YAAazd,GACrCR,KAAKnE,GAAGyC,YAAY0B,KAAKie,aAGzBzd,EAAK3E,GAAKmE,KAAKie,YACfzd,EAAKspB,gBAAkB1Q,EAAG5X,SAC1BhB,EAAKupB,UAAY3Q,EAAG5X,SAASG,IAC7BnB,EAAKwG,QAA0B,cAAf5D,EAAMqB,YACfjE,EAAK6K,WAEO,aAAfjI,EAAMqB,MAAuBjE,EAAKuL,oBAEpC/L,KAAKwf,OAAOrV,QAAQ3J,GACpBA,EAAKwG,SAAU,GAIjBhH,KAAKwf,OAAOtW,WAAWma,EAAWvT,EAAY9P,KAAKvD,KAAKulB,UAAqBhiB,KAAKvD,KAAKwlB,YAAuBjiB,KAAKvD,KAAKslB,aAAwB/hB,KAAKvD,KAAKylB,YACvI,gBAAf9e,EAAMqB,OACRyX,EAAGnL,UAAUlV,EAAI,SAAU,WAAYwnB,GAAa7iB,EAAKJ,MAAQ,IAC9D2Q,UAAUlV,EAAI,SAAU,YAAaiU,GAActP,EAAKH,MAAQ,IAC/DG,EAAKF,MAAQ4b,EAAGnL,UAAUlV,EAAI,SAAU,WAAYwnB,EAAY7iB,EAAKF,MACrEE,EAAKD,MAAQ2b,EAAGnL,UAAUlV,EAAI,SAAU,YAAaiU,EAAatP,EAAKD,MAE/E,CAGUwoB,cAAcltB,EAAyBuH,EAAmBgW,EAAc5Y,EAAqB6iB,EAAmBvT,GACxH,IACItF,EADAxF,EAAI,IAAIxE,EAAK6J,OAEb2f,EAAQhqB,KAAKvD,KAAKylB,WACpB+H,EAASjqB,KAAKvD,KAAKwlB,YACnBiI,EAAOlqB,KAAKvD,KAAKulB,UACjBmI,EAAUnqB,KAAKvD,KAAKslB,aAGlBqI,EAAU1sB,KAAKgR,MAAmB,GAAboB,GACvBua,EAAS3sB,KAAKgR,MAAkB,GAAZ2U,GAMtB,GALA2G,EAAQtsB,KAAKuL,IAAI+gB,EAAOK,GACxBJ,EAASvsB,KAAKuL,IAAIghB,EAAQI,GAC1BH,EAAOxsB,KAAKuL,IAAIihB,EAAME,GACtBD,EAAUzsB,KAAKuL,IAAIkhB,EAASC,GAET,SAAfhnB,EAAMqB,KAAiB,CACzB,GAAIjE,EAAKuL,kBAAmB,OAC5B,IAAI1J,EAAW+W,EAAG5X,SAASG,IAAMnB,EAAKupB,UACtCvpB,EAAKupB,UAAY3Q,EAAG5X,SAASG,KACM,IAA/B3B,KAAKvD,KAAKwT,UAAUG,QACtB9U,EAAMgvB,qBAAqBzuB,EAAIud,EAAG5X,SAAUa,GAI9C,IAAIX,EAAO0X,EAAG5X,SAASE,MAAQ0X,EAAG5X,SAASE,KAAOlB,EAAKspB,gBAAgBpoB,MAASuoB,EAASD,GACrFroB,EAAMyX,EAAG5X,SAASG,KAAOyX,EAAG5X,SAASG,IAAMnB,EAAKspB,gBAAgBnoB,KAAQwoB,EAAUD,GACtFllB,EAAElI,EAAIY,KAAKgR,MAAMhN,EAAO2hB,GACxBre,EAAEpI,EAAIc,KAAKgR,MAAM/M,EAAMmO,GAGvB,IAAIya,EAAOvqB,KAAKse,cAChB,GAAIte,KAAKwf,OAAOrY,QAAQ3G,EAAMwE,GAAI,CAChC,IAAI8I,EAAM9N,KAAK6M,SACX2d,EAAQ9sB,KAAKC,IAAI,EAAIqH,EAAEpI,EAAI4D,EAAK3D,EAAKiR,GACrC9N,KAAKvD,KAAKuJ,QAAU8H,EAAM0c,EAAQxqB,KAAKvD,KAAKuJ,SAC9CwkB,EAAQ9sB,KAAKC,IAAI,EAAGqC,KAAKvD,KAAKuJ,OAAS8H,IAEzC9N,KAAKse,cAAgBkM,OAChBxqB,KAAKse,cAAgB,EAG5B,GAFIte,KAAKse,gBAAkBiM,GAAMvqB,KAAK4iB,yBAElCpiB,EAAK1D,IAAMkI,EAAElI,GAAK0D,EAAK5D,IAAMoI,EAAEpI,EAAG,YAGjC,GAAmB,WAAfwG,EAAMqB,KAAoB,CACnC,GAAIO,EAAElI,EAAI,EAAG,OAOb,GALAxB,EAAMmvB,mBAAmBrnB,EAAOvH,EAAIiU,GAGpC9K,EAAEjI,EAAIW,KAAKgR,OAAO0K,EAAG9D,KAAK1T,MAAQooB,GAAS3G,GAC3Cre,EAAEnI,EAAIa,KAAKgR,OAAO0K,EAAG9D,KAAKzT,OAASqoB,GAAQpa,GACvCtP,EAAKzD,IAAMiI,EAAEjI,GAAKyD,EAAK3D,IAAMmI,EAAEnI,EAAG,OACtC,GAAI2D,EAAK6K,YAAc7K,EAAK6K,WAAWtO,IAAMiI,EAAEjI,GAAKyD,EAAK6K,WAAWxO,IAAMmI,EAAEnI,EAAG,OAG/E,IAAI6E,EAAO0X,EAAG5X,SAASE,KAAOsoB,EAC1BroB,EAAMyX,EAAG5X,SAASG,IAAMuoB,EAC5BllB,EAAElI,EAAIY,KAAKgR,MAAMhN,EAAO2hB,GACxBre,EAAEpI,EAAIc,KAAKgR,MAAM/M,EAAMmO,GAEvBtF,GAAW,EAGbhK,EAAK+gB,OAASne,EACd5C,EAAK6K,WAAarG,EAClB,IAAI1C,EAA0B,CAC5BxF,EAAGsc,EAAG5X,SAASE,KAAOsoB,EACtBptB,EAAGwc,EAAG5X,SAASG,IAAMuoB,EACrBntB,GAAIqc,EAAG9D,KAAO8D,EAAG9D,KAAK1T,MAAQpB,EAAKzD,EAAIsmB,GAAa2G,EAAQC,EAC5DptB,GAAIuc,EAAG9D,KAAO8D,EAAG9D,KAAKzT,OAASrB,EAAK3D,EAAIiT,GAAcoa,EAAOC,GAE/D,GAAInqB,KAAKwf,OAAOhT,cAAchM,EAAM,IAAIwE,EAAGqe,YAAWvT,aAAYxN,OAAMkI,aAAY,CAClFhK,EAAKspB,gBAAkB1Q,EAAG5X,SAC1BxB,KAAKwf,OAAOtW,WAAWma,EAAWvT,EAAYoa,EAAMD,EAAQE,EAASH,UAC9DxpB,EAAKyG,UACRuD,GAAYhK,EAAK4e,SAAS5e,EAAK4e,QAAQiI,WAC3CrnB,KAAKse,cAAgB,EACrBte,KAAK4iB,yBAEL,IAAIhjB,EAASwD,EAAMxD,OACnBI,KAAK0f,cAAc9f,EAAQY,GACvBR,KAAKqe,gBAAgBjb,EAAMqB,OAC7BzE,KAAKqe,gBAAgBjb,EAAMqB,MAAMrB,EAAOxD,GAG9C,CAMUqpB,OAAOptB,EAAyB8c,GACxC,IAAInY,EAAO3E,EAAGiR,cACTtM,IAEL0b,EAAGxH,IAAI7Y,EAAI,QAGP2E,EAAKuL,oBACTvL,EAAKuL,mBAAoB,EAEzB/L,KAAKwf,OAAOtT,WAAW1L,GACvBA,EAAK3E,GAAK2E,EAAK0oB,aAAevQ,EAASA,EAAS9c,GAEpB,IAAxBmE,KAAKvD,KAAKmsB,WAEZ5oB,KAAKqpB,cAAcxtB,GAAI,GAIrBA,EAAGutB,oBAELvtB,EAAGiR,cAAgBjR,EAAGutB,0BACfvtB,EAAGutB,oBACD5oB,EAAK0oB,qBAEP1oB,EAAK3E,UACLA,EAAGiR,cAEV9M,KAAKwf,OAAOjU,mBAEhB,CAGOmf,SAA+F,OAA1D1qB,KAAKoG,aAAY,GX53EvCjL,UW43EuF6E,IAAM,SAntErG,EAAAwlB,sBAAwB,2BAGxB,EAAAlqB,MAAQA,EAGR,EAAAqvB,OAAS9kB,EAqjDhB,EAAA+kB,MAAQ","sources":["webpack://GridStack/webpack/universalModuleDefinition","webpack://GridStack/webpack/bootstrap","webpack://GridStack/webpack/runtime/define property getters","webpack://GridStack/webpack/runtime/hasOwnProperty shorthand","webpack://GridStack/./src/utils.ts","webpack://GridStack/./src/gridstack-engine.ts","webpack://GridStack/./src/types.ts","webpack://GridStack/./src/dd-manager.ts","webpack://GridStack/./src/dd-touch.ts","webpack://GridStack/./src/dd-resizable-handle.ts","webpack://GridStack/./src/dd-base-impl.ts","webpack://GridStack/./src/dd-resizable.ts","webpack://GridStack/./src/dd-draggable.ts","webpack://GridStack/./src/dd-droppable.ts","webpack://GridStack/./src/dd-element.ts","webpack://GridStack/./src/gridstack.ts","webpack://GridStack/./src/dd-gridstack.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"GridStack\"] = factory();\n\telse\n\t\troot[\"GridStack\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\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};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\r\n * utils.ts 9.2.0\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\n\r\nimport { GridStackElement, GridStackNode, GridStackOptions, numberOrString, GridStackPosition, GridStackWidget } from './types';\r\n\r\nexport interface HeightData {\r\n h: number;\r\n unit: string;\r\n}\r\n\r\n/** checks for obsolete method names */\r\n// eslint-disable-next-line\r\nexport function obsolete(self, f, oldName: string, newName: string, rev: string): (...args: any[]) => any {\r\n let wrapper = (...args) => {\r\n console.warn('gridstack.js: Function `' + oldName + '` is deprecated in ' + rev + ' and has been replaced ' +\r\n 'with `' + newName + '`. It will be **removed** in a future release');\r\n return f.apply(self, args);\r\n }\r\n wrapper.prototype = f.prototype;\r\n return wrapper;\r\n}\r\n\r\n/** checks for obsolete grid options (can be used for any fields, but msg is about options) */\r\nexport function obsoleteOpts(opts: GridStackOptions, oldName: string, newName: string, rev: string): void {\r\n if (opts[oldName] !== undefined) {\r\n opts[newName] = opts[oldName];\r\n console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + ' and has been replaced with `' +\r\n newName + '`. It will be **removed** in a future release');\r\n }\r\n}\r\n\r\n/** checks for obsolete grid options which are gone */\r\nexport function obsoleteOptsDel(opts: GridStackOptions, oldName: string, rev: string, info: string): void {\r\n if (opts[oldName] !== undefined) {\r\n console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + info);\r\n }\r\n}\r\n\r\n/** checks for obsolete Jquery element attributes */\r\nexport function obsoleteAttr(el: HTMLElement, oldName: string, newName: string, rev: string): void {\r\n let oldAttr = el.getAttribute(oldName);\r\n if (oldAttr !== null) {\r\n el.setAttribute(newName, oldAttr);\r\n console.warn('gridstack.js: attribute `' + oldName + '`=' + oldAttr + ' is deprecated on this object in ' + rev + ' and has been replaced with `' +\r\n newName + '`. It will be **removed** in a future release');\r\n }\r\n}\r\n\r\n/**\r\n * Utility methods\r\n */\r\nexport class Utils {\r\n\r\n /** convert a potential selector into actual list of html elements. optional root which defaults to document (for shadow dom) */\r\n static getElements(els: GridStackElement, root: HTMLElement | Document = document): HTMLElement[] {\r\n if (typeof els === 'string') {\r\n const doc = ('getElementById' in root) ? root as Document : undefined;\r\n\r\n // Note: very common for people use to id='1,2,3' which is only legal as HTML5 id, but not CSS selectors\r\n // so if we start with a number, assume it's an id and just return that one item...\r\n // see https://github.com/gridstack/gridstack.js/issues/2234#issuecomment-1523796562\r\n if (doc && !isNaN(+els[0])) { // start with digit\r\n const el = doc.getElementById(els);\r\n return el ? [el] : [];\r\n }\r\n\r\n let list = root.querySelectorAll(els);\r\n if (!list.length && els[0] !== '.' && els[0] !== '#') {\r\n list = root.querySelectorAll('.' + els);\r\n if (!list.length) { list = root.querySelectorAll('#' + els) }\r\n }\r\n return Array.from(list) as HTMLElement[];\r\n }\r\n return [els];\r\n }\r\n\r\n /** convert a potential selector into actual single element. optional root which defaults to document (for shadow dom) */\r\n static getElement(els: GridStackElement, root: HTMLElement | Document = document): HTMLElement {\r\n if (typeof els === 'string') {\r\n const doc = ('getElementById' in root) ? root as Document : undefined;\r\n if (!els.length) return null;\r\n if (doc && els[0] === '#') {\r\n return doc.getElementById(els.substring(1));\r\n }\r\n if (els[0] === '#' || els[0] === '.' || els[0] === '[') {\r\n return root.querySelector(els);\r\n }\r\n\r\n // if we start with a digit, assume it's an id (error calling querySelector('#1')) as class are not valid CSS\r\n if (doc && !isNaN(+els[0])) { // start with digit\r\n return doc.getElementById(els);\r\n }\r\n\r\n // finally try string, then id, then class\r\n let el = root.querySelector(els);\r\n if (doc && !el) { el = doc.getElementById(els) }\r\n if (!el) { el = root.querySelector('.' + els) }\r\n return el as HTMLElement;\r\n }\r\n return els;\r\n }\r\n\r\n /** true if we should resize to content */\r\n static shouldSizeToContent(n: GridStackNode | undefined): boolean {\r\n return n?.grid && (!!n.sizeToContent || (n.grid.opts.sizeToContent && n.sizeToContent !== false));\r\n }\r\n\r\n /** returns true if a and b overlap */\r\n static isIntercepted(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return !(a.y >= b.y + b.h || a.y + a.h <= b.y || a.x + a.w <= b.x || a.x >= b.x + b.w);\r\n }\r\n\r\n /** returns true if a and b touch edges or corners */\r\n static isTouching(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return Utils.isIntercepted(a, {x: b.x-0.5, y: b.y-0.5, w: b.w+1, h: b.h+1})\r\n }\r\n\r\n /** returns the area a and b overlap */\r\n static areaIntercept(a: GridStackPosition, b: GridStackPosition): number {\r\n let x0 = (a.x > b.x) ? a.x : b.x;\r\n let x1 = (a.x+a.w < b.x+b.w) ? a.x+a.w : b.x+b.w;\r\n if (x1 <= x0) return 0; // no overlap\r\n let y0 = (a.y > b.y) ? a.y : b.y;\r\n let y1 = (a.y+a.h < b.y+b.h) ? a.y+a.h : b.y+b.h;\r\n if (y1 <= y0) return 0; // no overlap\r\n return (x1-x0) * (y1-y0);\r\n }\r\n\r\n /** returns the area */\r\n static area(a: GridStackPosition): number {\r\n return a.w * a.h;\r\n }\r\n\r\n /**\r\n * Sorts array of nodes\r\n * @param nodes array to sort\r\n * @param dir 1 for asc, -1 for desc (optional)\r\n * @param width width of the grid. If undefined the width will be calculated automatically (optional).\r\n **/\r\n static sort(nodes: GridStackNode[], dir: 1 | -1 = 1, column?: number): GridStackNode[] {\r\n column = column || nodes.reduce((col, n) => Math.max(n.x + n.w, col), 0) || 12;\r\n if (dir === -1)\r\n return nodes.sort((a, b) => ((b.x ?? 1000) + (b.y ?? 1000) * column)-((a.x ?? 1000) + (a.y ?? 1000) * column));\r\n else\r\n return nodes.sort((b, a) => ((b.x ?? 1000) + (b.y ?? 1000) * column)-((a.x ?? 1000) + (a.y ?? 1000) * column));\r\n }\r\n\r\n /**\r\n * creates a style sheet with style id under given parent\r\n * @param id will set the 'gs-style-id' attribute to that id\r\n * @param parent to insert the stylesheet as first child,\r\n * if none supplied it will be appended to the document head instead.\r\n */\r\n static createStylesheet(id: string, parent?: HTMLElement, options?: { nonce?: string }): CSSStyleSheet {\r\n let style: HTMLStyleElement = document.createElement('style');\r\n const nonce = options?.nonce\r\n if (nonce) style.nonce = nonce\r\n style.setAttribute('type', 'text/css');\r\n style.setAttribute('gs-style-id', id);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if ((style as any).styleSheet) { // TODO: only CSSImportRule have that and different beast ??\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (style as any).styleSheet.cssText = '';\r\n } else {\r\n style.appendChild(document.createTextNode('')); // WebKit hack\r\n }\r\n if (!parent) {\r\n // default to head\r\n parent = document.getElementsByTagName('head')[0];\r\n parent.appendChild(style);\r\n } else {\r\n parent.insertBefore(style, parent.firstChild);\r\n }\r\n return style.sheet as CSSStyleSheet;\r\n }\r\n\r\n /** removed the given stylesheet id */\r\n static removeStylesheet(id: string): void {\r\n let el = document.querySelector('STYLE[gs-style-id=' + id + ']');\r\n if (el && el.parentNode) el.remove();\r\n }\r\n\r\n /** inserts a CSS rule */\r\n static addCSSRule(sheet: CSSStyleSheet, selector: string, rules: string): void {\r\n if (typeof sheet.addRule === 'function') {\r\n sheet.addRule(selector, rules);\r\n } else if (typeof sheet.insertRule === 'function') {\r\n sheet.insertRule(`${selector}{${rules}}`);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n static toBool(v: unknown): boolean {\r\n if (typeof v === 'boolean') {\r\n return v;\r\n }\r\n if (typeof v === 'string') {\r\n v = v.toLowerCase();\r\n return !(v === '' || v === 'no' || v === 'false' || v === '0');\r\n }\r\n return Boolean(v);\r\n }\r\n\r\n static toNumber(value: null | string): number {\r\n return (value === null || value.length === 0) ? undefined : Number(value);\r\n }\r\n\r\n static parseHeight(val: numberOrString): HeightData {\r\n let h: number;\r\n let unit = 'px';\r\n if (typeof val === 'string') {\r\n let match = val.match(/^(-[0-9]+\\.[0-9]+|[0-9]*\\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%)?$/);\r\n if (!match) {\r\n throw new Error('Invalid height');\r\n }\r\n unit = match[2] || 'px';\r\n h = parseFloat(match[1]);\r\n } else {\r\n h = val;\r\n }\r\n return { h, unit };\r\n }\r\n\r\n /** copies unset fields in target to use the given default sources values */\r\n // eslint-disable-next-line\r\n static defaults(target, ...sources): {} {\r\n\r\n sources.forEach(source => {\r\n for (const key in source) {\r\n if (!source.hasOwnProperty(key)) return;\r\n if (target[key] === null || target[key] === undefined) {\r\n target[key] = source[key];\r\n } else if (typeof source[key] === 'object' && typeof target[key] === 'object') {\r\n // property is an object, recursively add it's field over... #1373\r\n this.defaults(target[key], source[key]);\r\n }\r\n }\r\n });\r\n\r\n return target;\r\n }\r\n\r\n /** given 2 objects return true if they have the same values. Checks for Object {} having same fields and values (just 1 level down) */\r\n static same(a: unknown, b: unknown): boolean {\r\n if (typeof a !== 'object') return a == b;\r\n if (typeof a !== typeof b) return false;\r\n // else we have object, check just 1 level deep for being same things...\r\n if (Object.keys(a).length !== Object.keys(b).length) return false;\r\n for (const key in a) {\r\n if (a[key] !== b[key]) return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** copies over b size & position (GridStackPosition), and optionally min/max as well */\r\n static copyPos(a: GridStackWidget, b: GridStackWidget, doMinMax = false): GridStackWidget {\r\n if (b.x !== undefined) a.x = b.x;\r\n if (b.y !== undefined) a.y = b.y;\r\n if (b.w !== undefined) a.w = b.w;\r\n if (b.h !== undefined) a.h = b.h;\r\n if (doMinMax) {\r\n if (b.minW) a.minW = b.minW;\r\n if (b.minH) a.minH = b.minH;\r\n if (b.maxW) a.maxW = b.maxW;\r\n if (b.maxH) a.maxH = b.maxH;\r\n }\r\n return a;\r\n }\r\n\r\n /** true if a and b has same size & position */\r\n static samePos(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return a && b && a.x === b.x && a.y === b.y && a.w === b.w && a.h === b.h;\r\n }\r\n\r\n /** given a node, makes sure it's min/max are valid */\r\n static sanitizeMinMax(node: GridStackNode) {\r\n // remove 0, undefine, null\r\n if (!node.minW) { delete node.minW; }\r\n if (!node.minH) { delete node.minH; }\r\n if (!node.maxW) { delete node.maxW; }\r\n if (!node.maxH) { delete node.maxH; }\r\n }\r\n\r\n /** removes field from the first object if same as the second objects (like diffing) and internal '_' for saving */\r\n static removeInternalAndSame(a: unknown, b: unknown):void {\r\n if (typeof a !== 'object' || typeof b !== 'object') return;\r\n for (let key in a) {\r\n let val = a[key];\r\n if (key[0] === '_' || val === b[key]) {\r\n delete a[key]\r\n } else if (val && typeof val === 'object' && b[key] !== undefined) {\r\n for (let i in val) {\r\n if (val[i] === b[key][i] || i[0] === '_') { delete val[i] }\r\n }\r\n if (!Object.keys(val).length) { delete a[key] }\r\n }\r\n }\r\n }\r\n\r\n /** removes internal fields '_' and default values for saving */\r\n static removeInternalForSave(n: GridStackNode, removeEl = true): void {\r\n for (let key in n) { if (key[0] === '_' || n[key] === null || n[key] === undefined ) delete n[key]; }\r\n delete n.grid;\r\n if (removeEl) delete n.el;\r\n // delete default values (will be re-created on read)\r\n if (!n.autoPosition) delete n.autoPosition;\r\n if (!n.noResize) delete n.noResize;\r\n if (!n.noMove) delete n.noMove;\r\n if (!n.locked) delete n.locked;\r\n if (n.w === 1 || n.w === n.minW) delete n.w;\r\n if (n.h === 1 || n.h === n.minH) delete n.h;\r\n }\r\n\r\n /** return the closest parent (or itself) matching the given class */\r\n static closestUpByClass(el: HTMLElement, name: string): HTMLElement {\r\n while (el) {\r\n if (el.classList.contains(name)) return el;\r\n el = el.parentElement\r\n }\r\n return null;\r\n }\r\n\r\n /** delay calling the given function for given delay, preventing new calls from happening while waiting */\r\n static throttle(func: () => void, delay: number): () => void {\r\n let isWaiting = false;\r\n return (...args) => {\r\n if (!isWaiting) {\r\n isWaiting = true;\r\n setTimeout(() => { func(...args); isWaiting = false; }, delay);\r\n }\r\n }\r\n }\r\n\r\n static removePositioningStyles(el: HTMLElement): void {\r\n let style = el.style;\r\n if (style.position) {\r\n style.removeProperty('position');\r\n }\r\n if (style.left) {\r\n style.removeProperty('left');\r\n }\r\n if (style.top) {\r\n style.removeProperty('top');\r\n }\r\n if (style.width) {\r\n style.removeProperty('width');\r\n }\r\n if (style.height) {\r\n style.removeProperty('height');\r\n }\r\n }\r\n\r\n /** @internal returns the passed element if scrollable, else the closest parent that will, up to the entire document scrolling element */\r\n static getScrollElement(el?: HTMLElement): HTMLElement {\r\n if (!el) return document.scrollingElement as HTMLElement || document.documentElement; // IE support\r\n const style = getComputedStyle(el);\r\n const overflowRegex = /(auto|scroll)/;\r\n\r\n if (overflowRegex.test(style.overflow + style.overflowY)) {\r\n return el;\r\n } else {\r\n return this.getScrollElement(el.parentElement);\r\n }\r\n }\r\n\r\n /** @internal */\r\n static updateScrollPosition(el: HTMLElement, position: {top: number}, distance: number): void {\r\n // is widget in view?\r\n let rect = el.getBoundingClientRect();\r\n let innerHeightOrClientHeight = (window.innerHeight || document.documentElement.clientHeight);\r\n if (rect.top < 0 ||\r\n rect.bottom > innerHeightOrClientHeight\r\n ) {\r\n // set scrollTop of first parent that scrolls\r\n // if parent is larger than el, set as low as possible\r\n // to get entire widget on screen\r\n let offsetDiffDown = rect.bottom - innerHeightOrClientHeight;\r\n let offsetDiffUp = rect.top;\r\n let scrollEl = this.getScrollElement(el);\r\n if (scrollEl !== null) {\r\n let prevScroll = scrollEl.scrollTop;\r\n if (rect.top < 0 && distance < 0) {\r\n // moving up\r\n if (el.offsetHeight > innerHeightOrClientHeight) {\r\n scrollEl.scrollTop += distance;\r\n } else {\r\n scrollEl.scrollTop += Math.abs(offsetDiffUp) > Math.abs(distance) ? distance : offsetDiffUp;\r\n }\r\n } else if (distance > 0) {\r\n // moving down\r\n if (el.offsetHeight > innerHeightOrClientHeight) {\r\n scrollEl.scrollTop += distance;\r\n } else {\r\n scrollEl.scrollTop += offsetDiffDown > distance ? distance : offsetDiffDown;\r\n }\r\n }\r\n // move widget y by amount scrolled\r\n position.top += scrollEl.scrollTop - prevScroll;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal Function used to scroll the page.\r\n *\r\n * @param event `MouseEvent` that triggers the resize\r\n * @param el `HTMLElement` that's being resized\r\n * @param distance Distance from the V edges to start scrolling\r\n */\r\n static updateScrollResize(event: MouseEvent, el: HTMLElement, distance: number): void {\r\n const scrollEl = this.getScrollElement(el);\r\n const height = scrollEl.clientHeight;\r\n // #1727 event.clientY is relative to viewport, so must compare this against position of scrollEl getBoundingClientRect().top\r\n // #1745 Special situation if scrollEl is document 'html': here browser spec states that\r\n // clientHeight is height of viewport, but getBoundingClientRect() is rectangle of html element;\r\n // this discrepancy arises because in reality scrollbar is attached to viewport, not html element itself.\r\n const offsetTop = (scrollEl === this.getScrollElement()) ? 0 : scrollEl.getBoundingClientRect().top;\r\n const pointerPosY = event.clientY - offsetTop;\r\n const top = pointerPosY < distance;\r\n const bottom = pointerPosY > height - distance;\r\n\r\n if (top) {\r\n // This also can be done with a timeout to keep scrolling while the mouse is\r\n // in the scrolling zone. (will have smoother behavior)\r\n scrollEl.scrollBy({ behavior: 'smooth', top: pointerPosY - distance});\r\n } else if (bottom) {\r\n scrollEl.scrollBy({ behavior: 'smooth', top: distance - (height - pointerPosY)});\r\n }\r\n }\r\n\r\n /** single level clone, returning a new object with same top fields. This will share sub objects and arrays */\r\n static clone(obj: T): T {\r\n if (obj === null || obj === undefined || typeof(obj) !== 'object') {\r\n return obj;\r\n }\r\n // return Object.assign({}, obj);\r\n if (obj instanceof Array) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return [...obj] as any;\r\n }\r\n return {...obj};\r\n }\r\n\r\n /**\r\n * Recursive clone version that returns a full copy, checking for nested objects and arrays ONLY.\r\n * Note: this will use as-is any key starting with double __ (and not copy inside) some lib have circular dependencies.\r\n */\r\n static cloneDeep(obj: T): T {\r\n // list of fields we will skip during cloneDeep (nested objects, other internal)\r\n const skipFields = ['parentGrid', 'el', 'grid', 'subGrid', 'engine'];\r\n // return JSON.parse(JSON.stringify(obj)); // doesn't work with date format ?\r\n const ret = Utils.clone(obj);\r\n for (const key in ret) {\r\n // NOTE: we don't support function/circular dependencies so skip those properties for now...\r\n if (ret.hasOwnProperty(key) && typeof(ret[key]) === 'object' && key.substring(0, 2) !== '__' && !skipFields.find(k => k === key)) {\r\n ret[key] = Utils.cloneDeep(obj[key]);\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n /** deep clone the given HTML node, removing teh unique id field */\r\n public static cloneNode(el: HTMLElement): HTMLElement {\r\n const node = el.cloneNode(true) as HTMLElement;\r\n node.removeAttribute('id');\r\n return node;\r\n }\r\n\r\n public static appendTo(el: HTMLElement, parent: string | HTMLElement): void {\r\n let parentNode: HTMLElement;\r\n if (typeof parent === 'string') {\r\n parentNode = Utils.getElement(parent);\r\n } else {\r\n parentNode = parent;\r\n }\r\n if (parentNode) {\r\n parentNode.appendChild(el);\r\n }\r\n }\r\n\r\n // public static setPositionRelative(el: HTMLElement): void {\r\n // if (!(/^(?:r|a|f)/).test(getComputedStyle(el).position)) {\r\n // el.style.position = \"relative\";\r\n // }\r\n // }\r\n\r\n public static addElStyles(el: HTMLElement, styles: { [prop: string]: string | string[] }): void {\r\n if (styles instanceof Object) {\r\n for (const s in styles) {\r\n if (styles.hasOwnProperty(s)) {\r\n if (Array.isArray(styles[s])) {\r\n // support fallback value\r\n (styles[s] as string[]).forEach(val => {\r\n el.style[s] = val;\r\n });\r\n } else {\r\n el.style[s] = styles[s];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public static initEvent(e: DragEvent | MouseEvent, info: { type: string; target?: EventTarget }): T {\r\n const evt = { type: info.type };\r\n const obj = {\r\n button: 0,\r\n which: 0,\r\n buttons: 1,\r\n bubbles: true,\r\n cancelable: true,\r\n target: info.target ? info.target : e.target\r\n };\r\n // don't check for `instanceof DragEvent` as Safari use MouseEvent #1540\r\n if ((e as DragEvent).dataTransfer) {\r\n evt['dataTransfer'] = (e as DragEvent).dataTransfer; // workaround 'readonly' field.\r\n }\r\n ['altKey','ctrlKey','metaKey','shiftKey'].forEach(p => evt[p] = e[p]); // keys\r\n ['pageX','pageY','clientX','clientY','screenX','screenY'].forEach(p => evt[p] = e[p]); // point info\r\n return {...evt, ...obj} as unknown as T;\r\n }\r\n\r\n /** copies the MouseEvent properties and sends it as another event to the given target */\r\n public static simulateMouseEvent(e: MouseEvent, simulatedType: string, target?: EventTarget): void {\r\n const simulatedEvent = document.createEvent('MouseEvents');\r\n simulatedEvent.initMouseEvent(\r\n simulatedType, // type\r\n true, // bubbles\r\n true, // cancelable\r\n window, // view\r\n 1, // detail\r\n e.screenX, // screenX\r\n e.screenY, // screenY\r\n e.clientX, // clientX\r\n e.clientY, // clientY\r\n e.ctrlKey, // ctrlKey\r\n e.altKey, // altKey\r\n e.shiftKey, // shiftKey\r\n e.metaKey, // metaKey\r\n 0, // button\r\n e.target // relatedTarget\r\n );\r\n (target || e.target).dispatchEvent(simulatedEvent);\r\n }\r\n\r\n /** returns true if event is inside the given element rectangle */\r\n // Note: Safari Mac has null event.relatedTarget which causes #1684 so check if DragEvent is inside the coordinates instead\r\n // this.el.contains(event.relatedTarget as HTMLElement)\r\n // public static inside(e: MouseEvent, el: HTMLElement): boolean {\r\n // // srcElement, toElement, target: all set to placeholder when leaving simple grid, so we can't use that (Chrome)\r\n // let target: HTMLElement = e.relatedTarget || (e as any).fromElement;\r\n // if (!target) {\r\n // const { bottom, left, right, top } = el.getBoundingClientRect();\r\n // return (e.x < right && e.x > left && e.y < bottom && e.y > top);\r\n // }\r\n // return el.contains(target);\r\n // }\r\n}\r\n","/**\n * gridstack-engine.ts 9.2.0\n * Copyright (c) 2021-2022 Alain Dumesny - see GridStack root license\n */\n\nimport { Utils } from './utils';\nimport { GridStackNode, ColumnOptions, GridStackPosition, GridStackMoveOpts, SaveFcn, CompactOptions } from './types';\n\n/** callback to update the DOM attributes since this class is generic (no HTML or other info) for items that changed - see _notify() */\ntype OnChangeCB = (nodes: GridStackNode[]) => void;\n\n/** options used during creation - similar to GridStackOptions */\nexport interface GridStackEngineOptions {\n column?: number;\n maxRow?: number;\n float?: boolean;\n nodes?: GridStackNode[];\n onChange?: OnChangeCB;\n}\n\n/**\n * Defines the GridStack engine that does most no DOM grid manipulation.\n * See GridStack methods and vars for descriptions.\n *\n * NOTE: values should not be modified directly - call the main GridStack API instead\n */\nexport class GridStackEngine {\n public column: number;\n public maxRow: number;\n public nodes: GridStackNode[];\n public addedNodes: GridStackNode[] = [];\n public removedNodes: GridStackNode[] = [];\n public batchMode: boolean;\n /** @internal callback to update the DOM attributes */\n protected onChange: OnChangeCB;\n /** @internal */\n protected _float: boolean;\n /** @internal */\n protected _prevFloat: boolean;\n /** @internal cached layouts of difference column count so we can restore back (eg 12 -> 1 -> 12) */\n protected _layouts?: GridStackNode[][]; // maps column # to array of values nodes\n /** @internal true while we are resizing widgets during column resize to skip certain parts */\n protected _inColumnResize: boolean;\n /** @internal true if we have some items locked */\n protected _hasLocked: boolean;\n /** @internal unique global internal _id counter */\n public static _idSeq = 0;\n\n public constructor(opts: GridStackEngineOptions = {}) {\n this.column = opts.column || 12;\n this.maxRow = opts.maxRow;\n this._float = opts.float;\n this.nodes = opts.nodes || [];\n this.onChange = opts.onChange;\n }\n\n public batchUpdate(flag = true, doPack = true): GridStackEngine {\n if (!!this.batchMode === flag) return this;\n this.batchMode = flag;\n if (flag) {\n this._prevFloat = this._float;\n this._float = true; // let things go anywhere for now... will restore and possibly reposition later\n this.cleanNodes();\n this.saveInitial(); // since begin update (which is called multiple times) won't do this\n } else {\n this._float = this._prevFloat;\n delete this._prevFloat;\n if (doPack) this._packNodes();\n this._notify();\n }\n return this;\n }\n\n // use entire row for hitting area (will use bottom reverse sorted first) if we not actively moving DOWN and didn't already skip\n protected _useEntireRowArea(node: GridStackNode, nn: GridStackPosition): boolean {\n return (!this.float || this.batchMode && !this._prevFloat) && !this._hasLocked && (!node._moving || node._skipDown || nn.y <= node.y);\n }\n\n /** @internal fix collision on given 'node', going to given new location 'nn', with optional 'collide' node already found.\n * return true if we moved. */\n protected _fixCollisions(node: GridStackNode, nn = node, collide?: GridStackNode, opt: GridStackMoveOpts = {}): boolean {\n this.sortNodes(-1); // from last to first, so recursive collision move items in the right order\n\n collide = collide || this.collide(node, nn); // REAL area collide for swap and skip if none...\n if (!collide) return false;\n\n // swap check: if we're actively moving in gravity mode, see if we collide with an object the same size\n if (node._moving && !opt.nested && !this.float) {\n if (this.swap(node, collide)) return true;\n }\n\n // during while() collisions MAKE SURE to check entire row so larger items don't leap frog small ones (push them all down starting last in grid)\n let area = nn;\n if (this._useEntireRowArea(node, nn)) {\n area = {x: 0, w: this.column, y: nn.y, h: nn.h};\n collide = this.collide(node, area, opt.skip); // force new hit\n }\n\n let didMove = false;\n let newOpt: GridStackMoveOpts = {nested: true, pack: false};\n while (collide = collide || this.collide(node, area, opt.skip)) { // could collide with more than 1 item... so repeat for each\n let moved: boolean;\n // if colliding with a locked item OR moving down with top gravity (and collide could move up) -> skip past the collide,\n // but remember that skip down so we only do this once (and push others otherwise).\n if (collide.locked || node._moving && !node._skipDown && nn.y > node.y && !this.float &&\n // can take space we had, or before where we're going\n (!this.collide(collide, {...collide, y: node.y}, node) || !this.collide(collide, {...collide, y: nn.y - collide.h}, node))) {\n node._skipDown = (node._skipDown || nn.y > node.y);\n moved = this.moveNode(node, {...nn, y: collide.y + collide.h, ...newOpt});\n if (collide.locked && moved) {\n Utils.copyPos(nn, node); // moving after lock become our new desired location\n } else if (!collide.locked && moved && opt.pack) {\n // we moved after and will pack: do it now and keep the original drop location, but past the old collide to see what else we might push way\n this._packNodes();\n nn.y = collide.y + collide.h;\n Utils.copyPos(node, nn);\n }\n didMove = didMove || moved;\n } else {\n // move collide down *after* where we will be, ignoring where we are now (don't collide with us)\n moved = this.moveNode(collide, {...collide, y: nn.y + nn.h, skip: node, ...newOpt});\n }\n if (!moved) { return didMove; } // break inf loop if we couldn't move after all (ex: maxRow, fixed)\n collide = undefined;\n }\n return didMove;\n }\n\n /** return the nodes that intercept the given node. Optionally a different area can be used, as well as a second node to skip */\n public collide(skip: GridStackNode, area = skip, skip2?: GridStackNode): GridStackNode {\n const skipId = skip._id;\n const skip2Id = skip2?._id;\n return this.nodes.find(n => n._id !== skipId && n._id !== skip2Id && Utils.isIntercepted(n, area));\n }\n public collideAll(skip: GridStackNode, area = skip, skip2?: GridStackNode): GridStackNode[] {\n const skipId = skip._id;\n const skip2Id = skip2?._id;\n return this.nodes.filter(n => n._id !== skipId && n._id !== skip2Id && Utils.isIntercepted(n, area));\n }\n\n /** does a pixel coverage collision based on where we started, returning the node that has the most coverage that is >50% mid line */\n protected directionCollideCoverage(node: GridStackNode, o: GridStackMoveOpts, collides: GridStackNode[]): GridStackNode {\n if (!o.rect || !node._rect) return;\n let r0 = node._rect; // where started\n let r = {...o.rect}; // where we are\n\n // update dragged rect to show where it's coming from (above or below, etc...)\n if (r.y > r0.y) {\n r.h += r.y - r0.y;\n r.y = r0.y;\n } else {\n r.h += r0.y - r.y;\n }\n if (r.x > r0.x) {\n r.w += r.x - r0.x;\n r.x = r0.x;\n } else {\n r.w += r0.x - r.x;\n }\n\n let collide: GridStackNode;\n let overMax = 0.5; // need >50%\n collides.forEach(n => {\n if (n.locked || !n._rect) return;\n let r2 = n._rect; // overlapping target\n let yOver = Number.MAX_VALUE, xOver = Number.MAX_VALUE;\n // depending on which side we started from, compute the overlap % of coverage\n // (ex: from above/below we only compute the max horizontal line coverage)\n if (r0.y < r2.y) { // from above\n yOver = ((r.y + r.h) - r2.y) / r2.h;\n } else if (r0.y+r0.h > r2.y+r2.h) { // from below\n yOver = ((r2.y + r2.h) - r.y) / r2.h;\n }\n if (r0.x < r2.x) { // from the left\n xOver = ((r.x + r.w) - r2.x) / r2.w;\n } else if (r0.x+r0.w > r2.x+r2.w) { // from the right\n xOver = ((r2.x + r2.w) - r.x) / r2.w;\n }\n let over = Math.min(xOver, yOver);\n if (over > overMax) {\n overMax = over;\n collide = n;\n }\n });\n o.collide = collide; // save it so we don't have to find it again\n return collide;\n }\n\n /** does a pixel coverage returning the node that has the most coverage by area */\n /*\n protected collideCoverage(r: GridStackPosition, collides: GridStackNode[]): {collide: GridStackNode, over: number} {\n let collide: GridStackNode;\n let overMax = 0;\n collides.forEach(n => {\n if (n.locked || !n._rect) return;\n let over = Utils.areaIntercept(r, n._rect);\n if (over > overMax) {\n overMax = over;\n collide = n;\n }\n });\n return {collide, over: overMax};\n }\n */\n\n /** called to cache the nodes pixel rectangles used for collision detection during drag */\n public cacheRects(w: number, h: number, top: number, right: number, bottom: number, left: number): GridStackEngine\n {\n this.nodes.forEach(n =>\n n._rect = {\n y: n.y * h + top,\n x: n.x * w + left,\n w: n.w * w - left - right,\n h: n.h * h - top - bottom\n }\n );\n return this;\n }\n\n /** called to possibly swap between 2 nodes (same size or column, not locked, touching), returning true if successful */\n public swap(a: GridStackNode, b: GridStackNode): boolean {\n if (!b || b.locked || !a || a.locked) return false;\n\n function _doSwap(): true { // assumes a is before b IFF they have different height (put after rather than exact swap)\n let x = b.x, y = b.y;\n b.x = a.x; b.y = a.y; // b -> a position\n if (a.h != b.h) {\n a.x = x; a.y = b.y + b.h; // a -> goes after b\n } else if (a.w != b.w) {\n a.x = b.x + b.w; a.y = y; // a -> goes after b\n } else {\n a.x = x; a.y = y; // a -> old b position\n }\n a._dirty = b._dirty = true;\n return true;\n }\n let touching: boolean; // remember if we called it (vs undefined)\n\n // same size and same row or column, and touching\n if (a.w === b.w && a.h === b.h && (a.x === b.x || a.y === b.y) && (touching = Utils.isTouching(a, b)))\n return _doSwap();\n if (touching === false) return; // IFF ran test and fail, bail out\n\n // check for taking same columns (but different height) and touching\n if (a.w === b.w && a.x === b.x && (touching || (touching = Utils.isTouching(a, b)))) {\n if (b.y < a.y) { let t = a; a = b; b = t; } // swap a <-> b vars so a is first\n return _doSwap();\n }\n if (touching === false) return;\n\n // check if taking same row (but different width) and touching\n if (a.h === b.h && a.y === b.y && (touching || (touching = Utils.isTouching(a, b)))) {\n if (b.x < a.x) { let t = a; a = b; b = t; } // swap a <-> b vars so a is first\n return _doSwap();\n }\n return false;\n }\n\n public isAreaEmpty(x: number, y: number, w: number, h: number): boolean {\n let nn: GridStackNode = {x: x || 0, y: y || 0, w: w || 1, h: h || 1};\n return !this.collide(nn);\n }\n\n /** re-layout grid items to reclaim any empty space - optionally keeping the sort order exactly the same ('list' mode) vs truly finding an empty spaces */\n public compact(layout: CompactOptions = 'compact', doSort = true): GridStackEngine {\n if (this.nodes.length === 0) return this;\n if (doSort) this.sortNodes();\n const wasBatch = this.batchMode;\n if (!wasBatch) this.batchUpdate();\n const wasColumnResize = this._inColumnResize;\n if (!wasColumnResize) this._inColumnResize = true; // faster addNode()\n let copyNodes = this.nodes;\n this.nodes = []; // pretend we have no nodes to conflict layout to start with...\n copyNodes.forEach((n, index, list) => {\n let after: GridStackNode;\n if (!n.locked) {\n n.autoPosition = true;\n if (layout === 'list' && index) after = list[index - 1];\n }\n this.addNode(n, false, after); // 'false' for add event trigger\n });\n if (!wasColumnResize) delete this._inColumnResize;\n if (!wasBatch) this.batchUpdate(false);\n return this;\n }\n\n /** enable/disable floating widgets (default: `false`) See [example](http://gridstackjs.com/demo/float.html) */\n public set float(val: boolean) {\n if (this._float === val) return;\n this._float = val || false;\n if (!val) {\n this._packNodes()._notify();\n }\n }\n\n /** float getter method */\n public get float(): boolean { return this._float || false; }\n\n /** sort the nodes array from first to last, or reverse. Called during collision/placement to force an order */\n public sortNodes(dir: 1 | -1 = 1, column = this.column): GridStackEngine {\n this.nodes = Utils.sort(this.nodes, dir, column);\n return this;\n }\n\n /** @internal called to top gravity pack the items back OR revert back to original Y positions when floating */\n protected _packNodes(): GridStackEngine {\n if (this.batchMode) { return this; }\n this.sortNodes(); // first to last\n\n if (this.float) {\n // restore original Y pos\n this.nodes.forEach(n => {\n if (n._updating || n._orig === undefined || n.y === n._orig.y) return;\n let newY = n.y;\n while (newY > n._orig.y) {\n --newY;\n let collide = this.collide(n, {x: n.x, y: newY, w: n.w, h: n.h});\n if (!collide) {\n n._dirty = true;\n n.y = newY;\n }\n }\n });\n } else {\n // top gravity pack\n this.nodes.forEach((n, i) => {\n if (n.locked) return;\n while (n.y > 0) {\n let newY = i === 0 ? 0 : n.y - 1;\n let canBeMoved = i === 0 || !this.collide(n, {x: n.x, y: newY, w: n.w, h: n.h});\n if (!canBeMoved) break;\n // Note: must be dirty (from last position) for GridStack::OnChange CB to update positions\n // and move items back. The user 'change' CB should detect changes from the original\n // starting position instead.\n n._dirty = (n.y !== newY);\n n.y = newY;\n }\n });\n }\n return this;\n }\n\n /**\n * given a random node, makes sure it's coordinates/values are valid in the current grid\n * @param node to adjust\n * @param resizing if out of bound, resize down or move into the grid to fit ?\n */\n public prepareNode(node: GridStackNode, resizing?: boolean): GridStackNode {\n node = node || {};\n node._id = node._id ?? GridStackEngine._idSeq++;\n\n // if we're missing position, have the grid position us automatically (before we set them to 0,0)\n if (node.x === undefined || node.y === undefined || node.x === null || node.y === null) {\n node.autoPosition = true;\n }\n\n // assign defaults for missing required fields\n let defaults: GridStackNode = { x: 0, y: 0, w: 1, h: 1};\n Utils.defaults(node, defaults);\n\n if (!node.autoPosition) { delete node.autoPosition; }\n if (!node.noResize) { delete node.noResize; }\n if (!node.noMove) { delete node.noMove; }\n Utils.sanitizeMinMax(node);\n\n // check for NaN (in case messed up strings were passed. can't do parseInt() || defaults.x above as 0 is valid #)\n if (typeof node.x == 'string') { node.x = Number(node.x); }\n if (typeof node.y == 'string') { node.y = Number(node.y); }\n if (typeof node.w == 'string') { node.w = Number(node.w); }\n if (typeof node.h == 'string') { node.h = Number(node.h); }\n if (isNaN(node.x)) { node.x = defaults.x; node.autoPosition = true; }\n if (isNaN(node.y)) { node.y = defaults.y; node.autoPosition = true; }\n if (isNaN(node.w)) { node.w = defaults.w; }\n if (isNaN(node.h)) { node.h = defaults.h; }\n\n return this.nodeBoundFix(node, resizing);\n }\n\n /** part2 of preparing a node to fit inside our grid - checks for x,y,w from grid dimensions */\n public nodeBoundFix(node: GridStackNode, resizing?: boolean): GridStackNode {\n\n let before = node._orig || Utils.copyPos({}, node);\n\n if (node.maxW) { node.w = Math.min(node.w, node.maxW); }\n if (node.maxH) { node.h = Math.min(node.h, node.maxH); }\n if (node.minW && node.minW <= this.column) { node.w = Math.max(node.w, node.minW); }\n if (node.minH) { node.h = Math.max(node.h, node.minH); }\n\n // if user loaded a larger than allowed widget for current # of columns,\n // remember it's position & width so we can restore back (1 -> 12 column) #1655 #1985\n // IFF we're not in the middle of column resizing!\n const saveOrig = (node.x || 0) + (node.w || 1) > this.column;\n if (saveOrig && this.column < 12 && !this._inColumnResize && node._id && this.findCacheLayout(node, 12) === -1) {\n let copy = {...node}; // need _id + positions\n if (copy.autoPosition) { delete copy.x; delete copy.y; }\n else copy.x = Math.min(11, copy.x);\n copy.w = Math.min(12, copy.w);\n this.cacheOneLayout(copy, 12);\n }\n\n if (node.w > this.column) {\n node.w = this.column;\n } else if (node.w < 1) {\n node.w = 1;\n }\n\n if (this.maxRow && node.h > this.maxRow) {\n node.h = this.maxRow;\n } else if (node.h < 1) {\n node.h = 1;\n }\n\n if (node.x < 0) {\n node.x = 0;\n }\n if (node.y < 0) {\n node.y = 0;\n }\n\n if (node.x + node.w > this.column) {\n if (resizing) {\n node.w = this.column - node.x;\n } else {\n node.x = this.column - node.w;\n }\n }\n if (this.maxRow && node.y + node.h > this.maxRow) {\n if (resizing) {\n node.h = this.maxRow - node.y;\n } else {\n node.y = this.maxRow - node.h;\n }\n }\n\n if (!Utils.samePos(node, before)) {\n node._dirty = true;\n }\n\n return node;\n }\n\n /** returns a list of modified nodes from their original values */\n public getDirtyNodes(verify?: boolean): GridStackNode[] {\n // compare original x,y,w,h instead as _dirty can be a temporary state\n if (verify) {\n return this.nodes.filter(n => n._dirty && !Utils.samePos(n, n._orig));\n }\n return this.nodes.filter(n => n._dirty);\n }\n\n /** @internal call this to call onChange callback with dirty nodes so DOM can be updated */\n protected _notify(removedNodes?: GridStackNode[]): GridStackEngine {\n if (this.batchMode || !this.onChange) return this;\n let dirtyNodes = (removedNodes || []).concat(this.getDirtyNodes());\n this.onChange(dirtyNodes);\n return this;\n }\n\n /** @internal remove dirty and last tried info */\n public cleanNodes(): GridStackEngine {\n if (this.batchMode) return this;\n this.nodes.forEach(n => {\n delete n._dirty;\n delete n._lastTried;\n });\n return this;\n }\n\n /** @internal called to save initial position/size to track real dirty state.\n * Note: should be called right after we call change event (so next API is can detect changes)\n * as well as right before we start move/resize/enter (so we can restore items to prev values) */\n public saveInitial(): GridStackEngine {\n this.nodes.forEach(n => {\n n._orig = Utils.copyPos({}, n);\n delete n._dirty;\n });\n this._hasLocked = this.nodes.some(n => n.locked);\n return this;\n }\n\n /** @internal restore all the nodes back to initial values (called when we leave) */\n public restoreInitial(): GridStackEngine {\n this.nodes.forEach(n => {\n if (Utils.samePos(n, n._orig)) return;\n Utils.copyPos(n, n._orig);\n n._dirty = true;\n });\n this._notify();\n return this;\n }\n\n /** find the first available empty spot for the given node width/height, updating the x,y attributes. return true if found.\n * optionally you can pass your own existing node list and column count, otherwise defaults to that engine data.\n * Optionally pass a widget to start search AFTER, meaning the order will remain the same but possibly have empty slots we skipped\n */\n public findEmptyPosition(node: GridStackNode, nodeList = this.nodes, column = this.column, after?: GridStackNode): boolean {\n let start = after ? after.y * column + (after.x + after.w) : 0;\n let found = false;\n for (let i = start; !found; ++i) {\n let x = i % column;\n let y = Math.floor(i / column);\n if (x + node.w > column) {\n continue;\n }\n let box = {x, y, w: node.w, h: node.h};\n if (!nodeList.find(n => Utils.isIntercepted(box, n))) {\n if (node.x !== x || node.y !== y) node._dirty = true;\n node.x = x;\n node.y = y;\n delete node.autoPosition;\n found = true;\n }\n }\n return found;\n }\n\n /** call to add the given node to our list, fixing collision and re-packing */\n public addNode(node: GridStackNode, triggerAddEvent = false, after?: GridStackNode): GridStackNode {\n let dup = this.nodes.find(n => n._id === node._id);\n if (dup) return dup; // prevent inserting twice! return it instead.\n\n // skip prepareNode if we're in middle of column resize (not new) but do check for bounds!\n node = this._inColumnResize ? this.nodeBoundFix(node) : this.prepareNode(node);\n delete node._temporaryRemoved;\n delete node._removeDOM;\n\n let skipCollision: boolean;\n if (node.autoPosition && this.findEmptyPosition(node, this.nodes, this.column, after)) {\n delete node.autoPosition; // found our slot\n skipCollision = true;\n }\n\n this.nodes.push(node);\n if (triggerAddEvent) { this.addedNodes.push(node); }\n\n if (!skipCollision) this._fixCollisions(node);\n if (!this.batchMode) { this._packNodes()._notify(); }\n return node;\n }\n\n public removeNode(node: GridStackNode, removeDOM = true, triggerEvent = false): GridStackEngine {\n if (!this.nodes.find(n => n._id === node._id)) {\n // TEST console.log(`Error: GridStackEngine.removeNode() node._id=${node._id} not found!`)\n return this;\n }\n if (triggerEvent) { // we wait until final drop to manually track removed items (rather than during drag)\n this.removedNodes.push(node);\n }\n if (removeDOM) node._removeDOM = true; // let CB remove actual HTML (used to set _id to null, but then we loose layout info)\n // don't use 'faster' .splice(findIndex(),1) in case node isn't in our list, or in multiple times.\n this.nodes = this.nodes.filter(n => n._id !== node._id);\n if (!node._isAboutToRemove) this._packNodes(); // if dragged out, no need to relayout as already done...\n this._notify([node]);\n return this;\n }\n\n public removeAll(removeDOM = true): GridStackEngine {\n delete this._layouts;\n if (!this.nodes.length) return this;\n removeDOM && this.nodes.forEach(n => n._removeDOM = true); // let CB remove actual HTML (used to set _id to null, but then we loose layout info)\n this.removedNodes = this.nodes;\n this.nodes = [];\n return this._notify(this.removedNodes);\n }\n\n /** checks if item can be moved (layout constrain) vs moveNode(), returning true if was able to move.\n * In more complicated cases (maxRow) it will attempt at moving the item and fixing\n * others in a clone first, then apply those changes if still within specs. */\n public moveNodeCheck(node: GridStackNode, o: GridStackMoveOpts): boolean {\n // if (node.locked) return false;\n if (!this.changedPosConstrain(node, o)) return false;\n o.pack = true;\n\n // simpler case: move item directly...\n if (!this.maxRow) {\n return this.moveNode(node, o);\n }\n\n // complex case: create a clone with NO maxRow (will check for out of bounds at the end)\n let clonedNode: GridStackNode;\n let clone = new GridStackEngine({\n column: this.column,\n float: this.float,\n nodes: this.nodes.map(n => {\n if (n._id === node._id) {\n clonedNode = {...n};\n return clonedNode;\n }\n return {...n};\n })\n });\n if (!clonedNode) return false;\n\n // check if we're covering 50% collision and could move, while still being under maxRow or at least not making it worse\n // (case where widget was somehow added past our max #2449)\n let canMove = clone.moveNode(clonedNode, o) && clone.getRow() <= Math.max(this.getRow(), this.maxRow);\n // else check if we can force a swap (float=true, or different shapes) on non-resize\n if (!canMove && !o.resizing && o.collide) {\n let collide = o.collide.el.gridstackNode; // find the source node the clone collided with at 50%\n if (this.swap(node, collide)) { // swaps and mark dirty\n this._notify();\n return true;\n }\n }\n if (!canMove) return false;\n\n // if clone was able to move, copy those mods over to us now instead of caller trying to do this all over!\n // Note: we can't use the list directly as elements and other parts point to actual node, so copy content\n clone.nodes.filter(n => n._dirty).forEach(c => {\n let n = this.nodes.find(a => a._id === c._id);\n if (!n) return;\n Utils.copyPos(n, c);\n n._dirty = true;\n });\n this._notify();\n return true;\n }\n\n /** return true if can fit in grid height constrain only (always true if no maxRow) */\n public willItFit(node: GridStackNode): boolean {\n delete node._willFitPos;\n if (!this.maxRow) return true;\n // create a clone with NO maxRow and check if still within size\n let clone = new GridStackEngine({\n column: this.column,\n float: this.float,\n nodes: this.nodes.map(n => {return {...n}})\n });\n let n = {...node}; // clone node so we don't mod any settings on it but have full autoPosition and min/max as well! #1687\n this.cleanupNode(n);\n delete n.el; delete n._id; delete n.content; delete n.grid;\n clone.addNode(n);\n if (clone.getRow() <= this.maxRow) {\n node._willFitPos = Utils.copyPos({}, n);\n return true;\n }\n return false;\n }\n\n /** true if x,y or w,h are different after clamping to min/max */\n public changedPosConstrain(node: GridStackNode, p: GridStackPosition): boolean {\n // first make sure w,h are set for caller\n p.w = p.w || node.w;\n p.h = p.h || node.h;\n if (node.x !== p.x || node.y !== p.y) return true;\n // check constrained w,h\n if (node.maxW) { p.w = Math.min(p.w, node.maxW); }\n if (node.maxH) { p.h = Math.min(p.h, node.maxH); }\n if (node.minW) { p.w = Math.max(p.w, node.minW); }\n if (node.minH) { p.h = Math.max(p.h, node.minH); }\n return (node.w !== p.w || node.h !== p.h);\n }\n\n /** return true if the passed in node was actually moved (checks for no-op and locked) */\n public moveNode(node: GridStackNode, o: GridStackMoveOpts): boolean {\n if (!node || /*node.locked ||*/ !o) return false;\n let wasUndefinedPack: boolean;\n if (o.pack === undefined) {\n wasUndefinedPack = o.pack = true;\n }\n\n // constrain the passed in values and check if we're still changing our node\n if (typeof o.x !== 'number') { o.x = node.x; }\n if (typeof o.y !== 'number') { o.y = node.y; }\n if (typeof o.w !== 'number') { o.w = node.w; }\n if (typeof o.h !== 'number') { o.h = node.h; }\n let resizing = (node.w !== o.w || node.h !== o.h);\n let nn: GridStackNode = Utils.copyPos({}, node, true); // get min/max out first, then opt positions next\n Utils.copyPos(nn, o);\n nn = this.nodeBoundFix(nn, resizing);\n Utils.copyPos(o, nn);\n\n if (Utils.samePos(node, o)) return false;\n let prevPos: GridStackPosition = Utils.copyPos({}, node);\n\n // check if we will need to fix collision at our new location\n let collides = this.collideAll(node, nn, o.skip);\n let needToMove = true;\n if (collides.length) {\n let activeDrag = node._moving && !o.nested;\n // check to make sure we actually collided over 50% surface area while dragging\n let collide = activeDrag ? this.directionCollideCoverage(node, o, collides) : collides[0];\n // if we're enabling creation of sub-grids on the fly, see if we're covering 80% of either one, if we didn't already do that\n if (activeDrag && collide && node.grid?.opts?.subGridDynamic && !node.grid._isTemp) {\n let over = Utils.areaIntercept(o.rect, collide._rect);\n let a1 = Utils.area(o.rect);\n let a2 = Utils.area(collide._rect);\n let perc = over / (a1 < a2 ? a1 : a2);\n if (perc > .8) {\n collide.grid.makeSubGrid(collide.el, undefined, node);\n collide = undefined;\n }\n }\n\n if (collide) {\n needToMove = !this._fixCollisions(node, nn, collide, o); // check if already moved...\n } else {\n needToMove = false; // we didn't cover >50% for a move, skip...\n if (wasUndefinedPack) delete o.pack;\n }\n }\n\n // now move (to the original ask vs the collision version which might differ) and repack things\n if (needToMove) {\n node._dirty = true;\n Utils.copyPos(node, nn);\n }\n if (o.pack) {\n this._packNodes()\n ._notify();\n }\n return !Utils.samePos(node, prevPos); // pack might have moved things back\n }\n\n public getRow(): number {\n return this.nodes.reduce((row, n) => Math.max(row, n.y + n.h), 0);\n }\n\n public beginUpdate(node: GridStackNode): GridStackEngine {\n if (!node._updating) {\n node._updating = true;\n delete node._skipDown;\n if (!this.batchMode) this.saveInitial();\n }\n return this;\n }\n\n public endUpdate(): GridStackEngine {\n let n = this.nodes.find(n => n._updating);\n if (n) {\n delete n._updating;\n delete n._skipDown;\n }\n return this;\n }\n\n /** saves a copy of the largest column layout (eg 12 even when rendering oneColumnMode) so we don't loose orig layout,\n * returning a list of widgets for serialization */\n public save(saveElement = true, saveCB?: SaveFcn): GridStackNode[] {\n // use the highest layout for any saved info so we can have full detail on reload #1849\n let len = this._layouts?.length;\n let layout = len && this.column !== (len - 1) ? this._layouts[len - 1] : null;\n let list: GridStackNode[] = [];\n this.sortNodes();\n this.nodes.forEach(n => {\n let wl = layout?.find(l => l._id === n._id);\n let w: GridStackNode = {...n};\n // use layout info instead if set\n if (wl) { w.x = wl.x; w.y = wl.y; w.w = wl.w; }\n Utils.removeInternalForSave(w, !saveElement);\n if (saveCB) saveCB(n, w);\n list.push(w);\n });\n return list;\n }\n\n /** @internal called whenever a node is added or moved - updates the cached layouts */\n public layoutsNodesChange(nodes: GridStackNode[]): GridStackEngine {\n if (!this._layouts || this._inColumnResize) return this;\n // remove smaller layouts - we will re-generate those on the fly... larger ones need to update\n this._layouts.forEach((layout, column) => {\n if (!layout || column === this.column) return this;\n if (column < this.column) {\n this._layouts[column] = undefined;\n }\n else {\n // we save the original x,y,w (h isn't cached) to see what actually changed to propagate better.\n // NOTE: we don't need to check against out of bound scaling/moving as that will be done when using those cache values. #1785\n let ratio = column / this.column;\n nodes.forEach(node => {\n if (!node._orig) return; // didn't change (newly added ?)\n let n = layout.find(l => l._id === node._id);\n if (!n) return; // no cache for new nodes. Will use those values.\n // Y changed, push down same amount\n // TODO: detect doing item 'swaps' will help instead of move (especially in 1 column mode)\n if (n.y >= 0 && node.y !== node._orig.y) {\n n.y += (node.y - node._orig.y);\n }\n // X changed, scale from new position\n if (node.x !== node._orig.x) {\n n.x = Math.round(node.x * ratio);\n }\n // width changed, scale from new width\n if (node.w !== node._orig.w) {\n n.w = Math.round(node.w * ratio);\n }\n // ...height always carries over from cache\n });\n }\n });\n return this;\n }\n\n /**\n * @internal Called to scale the widget width & position up/down based on the column change.\n * Note we store previous layouts (especially original ones) to make it possible to go\n * from say 12 -> 1 -> 12 and get back to where we were.\n *\n * @param prevColumn previous number of columns\n * @param column new column number\n * @param nodes different sorted list (ex: DOM order) instead of current list\n * @param layout specify the type of re-layout that will happen (position, size, etc...).\n * Note: items will never be outside of the current column boundaries. default (moveScale). Ignored for 1 column\n */\n public columnChanged(prevColumn: number, column: number, nodes: GridStackNode[], layout: ColumnOptions = 'moveScale'): GridStackEngine {\n if (!this.nodes.length || !column || prevColumn === column) return this;\n\n // simpler shortcuts layouts\n const doCompact = layout === 'compact' || layout === 'list';\n if (doCompact) {\n this.sortNodes(1, prevColumn); // sort with original layout once and only once (new column will affect order otherwise)\n }\n\n // cache the current layout in case they want to go back (like 12 -> 1 -> 12) as it requires original data IFF we're sizing down (see below)\n if (column < prevColumn) this.cacheLayout(this.nodes, prevColumn);\n this.batchUpdate(); // do this EARLY as it will call saveInitial() so we can detect where we started for _dirty and collision\n let newNodes: GridStackNode[] = [];\n \n // if we're going to 1 column and using DOM order (item passed in) rather than default sorting, then generate that layout\n let domOrder = false;\n if (column === 1 && nodes?.length) {\n domOrder = true;\n let top = 0;\n nodes.forEach(n => {\n n.x = 0;\n n.w = 1;\n n.y = Math.max(n.y, top);\n top = n.y + n.h;\n });\n newNodes = nodes;\n nodes = [];\n } else {\n nodes = doCompact ? this.nodes : Utils.sort(this.nodes, -1, prevColumn); // current column reverse sorting so we can insert last to front (limit collision)\n }\n\n // see if we have cached previous layout IFF we are going up in size (restore) otherwise always\n // generate next size down from where we are (looks more natural as you gradually size down).\n if (column > prevColumn && this._layouts) {\n const cacheNodes = this._layouts[column] || [];\n // ...if not, start with the largest layout (if not already there) as down-scaling is more accurate\n // by pretending we came from that larger column by assigning those values as starting point\n let lastIndex = this._layouts.length - 1;\n if (!cacheNodes.length && prevColumn !== lastIndex && this._layouts[lastIndex]?.length) {\n prevColumn = lastIndex;\n this._layouts[lastIndex].forEach(cacheNode => {\n let n = nodes.find(n => n._id === cacheNode._id);\n if (n) {\n // still current, use cache info positions\n if (!doCompact && !cacheNode.autoPosition) {\n n.x = cacheNode.x ?? n.x;\n n.y = cacheNode.y ?? n.y;\n }\n n.w = cacheNode.w ?? n.w;\n if (cacheNode.x == undefined || cacheNode.y === undefined) n.autoPosition = true;\n }\n });\n }\n\n // if we found cache re-use those nodes that are still current\n cacheNodes.forEach(cacheNode => {\n let j = nodes.findIndex(n => n._id === cacheNode._id);\n if (j !== -1) {\n const n = nodes[j];\n // still current, use cache info positions\n if (doCompact) {\n n.w = cacheNode.w; // only w is used, and don't trim the list\n return;\n }\n if (cacheNode.autoPosition || isNaN(cacheNode.x) || isNaN(cacheNode.y)) {\n this.findEmptyPosition(cacheNode, newNodes);\n }\n if (!cacheNode.autoPosition) {\n n.x = cacheNode.x ?? n.x;\n n.y = cacheNode.y ?? n.y;\n n.w = cacheNode.w ?? n.w;\n newNodes.push(n);\n }\n nodes.splice(j, 1);\n }\n });\n }\n\n // much simpler layout that just compacts\n if (doCompact) {\n this.compact(layout, false);\n } else {\n // ...and add any extra non-cached ones\n if (nodes.length) {\n if (typeof layout === 'function') {\n layout(column, prevColumn, newNodes, nodes);\n } else if (!domOrder) {\n let ratio = (doCompact || layout === 'none') ? 1 : column / prevColumn;\n let move = (layout === 'move' || layout === 'moveScale');\n let scale = (layout === 'scale' || layout === 'moveScale');\n nodes.forEach(node => {\n // NOTE: x + w could be outside of the grid, but addNode() below will handle that\n node.x = (column === 1 ? 0 : (move ? Math.round(node.x * ratio) : Math.min(node.x, column - 1)));\n node.w = ((column === 1 || prevColumn === 1) ? 1 : scale ? (Math.round(node.w * ratio) || 1) : (Math.min(node.w, column)));\n newNodes.push(node);\n });\n nodes = [];\n }\n }\n\n // finally re-layout them in reverse order (to get correct placement)\n if (!domOrder) newNodes = Utils.sort(newNodes, -1, column);\n this._inColumnResize = true; // prevent cache update\n this.nodes = []; // pretend we have no nodes to start with (add() will use same structures) to simplify layout\n newNodes.forEach(node => {\n this.addNode(node, false); // 'false' for add event trigger\n delete node._orig; // make sure the commit doesn't try to restore things back to original\n });\n }\n \n this.nodes.forEach(n => delete n._orig); // clear _orig before batch=false so it doesn't handle float=true restore\n this.batchUpdate(false, !doCompact);\n delete this._inColumnResize;\n return this;\n }\n\n /**\n * call to cache the given layout internally to the given location so we can restore back when column changes size\n * @param nodes list of nodes\n * @param column corresponding column index to save it under\n * @param clear if true, will force other caches to be removed (default false)\n */\n public cacheLayout(nodes: GridStackNode[], column: number, clear = false): GridStackEngine {\n let copy: GridStackNode[] = [];\n nodes.forEach((n, i) => {\n n._id = n._id ?? GridStackEngine._idSeq++; // make sure we have an id in case this is new layout, else re-use id already set\n copy[i] = {x: n.x, y: n.y, w: n.w, _id: n._id} // only thing we change is x,y,w and id to find it back\n });\n this._layouts = clear ? [] : this._layouts || []; // use array to find larger quick\n this._layouts[column] = copy;\n return this;\n }\n\n /**\n * call to cache the given node layout internally to the given location so we can restore back when column changes size\n * @param node single node to cache\n * @param column corresponding column index to save it under\n */\n public cacheOneLayout(n: GridStackNode, column: number): GridStackEngine {\n n._id = n._id ?? GridStackEngine._idSeq++;\n let l: GridStackNode = {x: n.x, y: n.y, w: n.w, _id: n._id}\n if (n.autoPosition) { delete l.x; delete l.y; l.autoPosition = true; }\n this._layouts = this._layouts || [];\n this._layouts[column] = this._layouts[column] || [];\n let index = this.findCacheLayout(n, column);\n if (index === -1)\n this._layouts[column].push(l);\n else\n this._layouts[column][index] = l;\n return this;\n }\n\n protected findCacheLayout(n: GridStackNode, column: number): number {\n return this._layouts?.[column]?.findIndex(l => l._id === n._id) ?? -1;\n }\n\n\n /** called to remove all internal values but the _id */\n public cleanupNode(node: GridStackNode): GridStackEngine {\n for (let prop in node) {\n if (prop[0] === '_' && prop !== '_id') delete node[prop];\n }\n return this;\n }\n}\n","/**\r\n * types.ts 9.2.0\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\n\r\nimport { GridStack } from './gridstack';\r\nimport { GridStackEngine } from './gridstack-engine';\r\n\r\n// default values for grid options - used during init and when saving out\r\nexport const gridDefaults: GridStackOptions = {\r\n alwaysShowResizeHandle: 'mobile',\r\n animate: true,\r\n auto: true,\r\n cellHeight: 'auto',\r\n cellHeightThrottle: 100,\r\n cellHeightUnit: 'px',\r\n column: 12,\r\n draggable: { handle: '.grid-stack-item-content', appendTo: 'body', scroll: true },\r\n handle: '.grid-stack-item-content',\r\n itemClass: 'grid-stack-item',\r\n margin: 10,\r\n marginUnit: 'px',\r\n maxRow: 0,\r\n minRow: 0,\r\n oneColumnSize: 768,\r\n placeholderClass: 'grid-stack-placeholder',\r\n placeholderText: '',\r\n removableOptions: { accept: 'grid-stack-item', decline: 'grid-stack-non-removable'},\r\n resizable: { handles: 'se' },\r\n rtl: 'auto',\r\n\r\n // **** same as not being set ****\r\n // disableDrag: false,\r\n // disableOneColumnMode: false,\r\n // disableResize: false,\r\n // float: false,\r\n // handleClass: null,\r\n // oneColumnModeDomSort: false,\r\n // removable: false,\r\n // staticGrid: false,\r\n // styleInHead: false,\r\n //removable\r\n};\r\n\r\n/** default dragIn options */\r\nexport const dragInDefaultOptions: DDDragInOpt = {\r\n handle: '.grid-stack-item-content',\r\n appendTo: 'body',\r\n // revert: 'invalid',\r\n // scroll: false,\r\n};\r\n\r\n/** \r\n * different layout options when changing # of columns, including a custom function that takes new/old column count, and array of new/old positions\r\n * Note: new list may be partially already filled if we have a cache of the layout at that size and new items were added later.\r\n * Options are:\r\n * 'list' - treat items as sorted list, keeping items (un-sized unless too big for column count) sequentially reflowing them\r\n * 'compact' - similar to list, but using compact() method which will possibly re-order items if an empty slots are available due to a larger item needing to be pushed to next row\r\n * 'moveScale' - will scale and move items by the ratio new newColumnCount / oldColumnCount\r\n * 'move' | 'scale' - will only size or move items\r\n * 'none' will leave items unchanged, unless they don't fit in column count\r\n */\r\nexport type ColumnOptions = 'list' | 'compact' | 'moveScale' | 'move' | 'scale' | 'none' |\r\n ((column: number, oldColumn: number, nodes: GridStackNode[], oldNodes: GridStackNode[]) => void);\r\nexport type CompactOptions = 'list' | 'compact';\r\nexport type numberOrString = number | string;\r\nexport interface GridItemHTMLElement extends HTMLElement {\r\n /** pointer to grid node instance */\r\n gridstackNode?: GridStackNode;\r\n /** @internal */\r\n _gridstackNodeOrig?: GridStackNode;\r\n}\r\n\r\nexport type GridStackElement = string | HTMLElement | GridItemHTMLElement;\r\n\r\n/** specific and general event handlers for the .on() method */\r\nexport type GridStackEventHandler = (event: Event) => void;\r\nexport type GridStackElementHandler = (event: Event, el: GridItemHTMLElement) => void;\r\nexport type GridStackNodesHandler = (event: Event, nodes: GridStackNode[]) => void;\r\nexport type GridStackDroppedHandler = (event: Event, previousNode: GridStackNode, newNode: GridStackNode) => void;\r\nexport type GridStackEventHandlerCallback = GridStackEventHandler | GridStackElementHandler | GridStackNodesHandler | GridStackDroppedHandler;\r\n\r\n/** optional function called during load() to callback the user on new added/remove grid items | grids */\r\nexport type AddRemoveFcn = (parent: HTMLElement, w: GridStackWidget, add: boolean, grid: boolean) => HTMLElement | undefined;\r\n\r\n/** optional function called during save() to let the caller add additional custom data to the GridStackWidget structure that will get returned */\r\nexport type SaveFcn = (node: GridStackNode, w: GridStackWidget) => void;\r\n\r\nexport type ResizeToContentFcn = (els: GridItemHTMLElement) => void;\r\n\r\n/**\r\n * Defines the options for a Grid\r\n */\r\nexport interface GridStackOptions {\r\n /**\r\n * accept widgets dragged from other grids or from outside (default: `false`). Can be:\r\n * `true` (uses `'.grid-stack-item'` class filter) or `false`,\r\n * string for explicit class name,\r\n * function returning a boolean. See [example](http://gridstack.github.io/gridstack.js/demo/two.html)\r\n */\r\n acceptWidgets?: boolean | string | ((element: Element) => boolean);\r\n\r\n /** possible values (default: `mobile`) - does not apply to non-resizable widgets\r\n * `false` the resizing handles are only shown while hovering over a widget\r\n * `true` the resizing handles are always shown\r\n * 'mobile' if running on a mobile device, default to `true` (since there is no hovering per say), else `false`.\r\n See [example](http://gridstack.github.io/gridstack.js/demo/mobile.html) */\r\n alwaysShowResizeHandle?: true | false | 'mobile';\r\n\r\n /** turns animation on (default?: true) */\r\n animate?: boolean;\r\n\r\n /** if false gridstack will not initialize existing items (default?: true) */\r\n auto?: boolean;\r\n\r\n /**\r\n * one cell height (default?: 'auto'). Can be:\r\n * an integer (px)\r\n * a string (ex: '100px', '10em', '10rem'). Note: % doesn't right - see demo/cell-height.html\r\n * 0, in which case the library will not generate styles for rows. Everything must be defined in your own CSS files.\r\n * 'auto' - height will be calculated for square cells (width / column) and updated live as you resize the window - also see `cellHeightThrottle`\r\n * 'initial' - similar to 'auto' (start at square cells) but stay that size during window resizing.\r\n */\r\n cellHeight?: numberOrString;\r\n\r\n /** throttle time delay (in ms) used when cellHeight='auto' to improve performance vs usability (default?: 100).\r\n * A value of 0 will make it instant at a cost of re-creating the CSS file at ever window resize event!\r\n * */\r\n cellHeightThrottle?: number;\r\n\r\n /** (internal) unit for cellHeight (default? 'px') which is set when a string cellHeight with a unit is passed (ex: '10rem') */\r\n cellHeightUnit?: string;\r\n\r\n /** list of children item to create when calling load() or addGrid() */\r\n children?: GridStackWidget[];\r\n\r\n /** number of columns (default?: 12). Note: IF you change this, CSS also have to change. See https://github.com/gridstack/gridstack.js#change-grid-columns.\r\n * Note: for nested grids, it is recommended to use 'auto' which will always match the container grid-item current width (in column) to keep inside and outside\r\n * items always to same. flag is not supported for regular non-nested grids.\r\n */\r\n column?: number | 'auto';\r\n\r\n /** additional class on top of '.grid-stack' (which is required for our CSS) to differentiate this instance.\r\n Note: only used by addGrid(), else your element should have the needed class */\r\n class?: string;\r\n\r\n /** disallows dragging of widgets (default?: false) */\r\n disableDrag?: boolean;\r\n\r\n /** disables the onColumnMode when the grid width is less than oneColumnSize (default?: false) */\r\n disableOneColumnMode?: boolean;\r\n\r\n /** disallows resizing of widgets (default?: false). */\r\n disableResize?: boolean;\r\n\r\n /** allows to override UI draggable options. (default?: { handle?: '.grid-stack-item-content', appendTo?: 'body' }) */\r\n draggable?: DDDragOpt;\r\n\r\n /** let user drag nested grid items out of a parent or not (default true - not supported yet) */\r\n //dragOut?: boolean;\r\n\r\n /** the type of engine to create (so you can subclass) default to GridStackEngine */\r\n engineClass?: typeof GridStackEngine;\r\n\r\n /** enable floating widgets (default?: false) See example (http://gridstack.github.io/gridstack.js/demo/float.html) */\r\n float?: boolean;\r\n\r\n /** draggable handle selector (default?: '.grid-stack-item-content') */\r\n handle?: string;\r\n\r\n /** draggable handle class (e.g. 'grid-stack-item-content'). If set 'handle' is ignored (default?: null) */\r\n handleClass?: string;\r\n\r\n /** additional widget class (default?: 'grid-stack-item') */\r\n itemClass?: string;\r\n\r\n /**\r\n * gap between grid item and content (default?: 10). This will set all 4 sides and support the CSS formats below\r\n * an integer (px)\r\n * a string with possible units (ex: '2em', '20px', '2rem')\r\n * string with space separated values (ex: '5px 10px 0 20px' for all 4 sides, or '5em 10em' for top/bottom and left/right pairs like CSS).\r\n * Note: all sides must have same units (last one wins, default px)\r\n */\r\n margin?: numberOrString;\r\n\r\n /** OLD way to optionally set each side - use margin: '5px 10px 0 20px' instead. Used internally to store each side. */\r\n marginTop?: numberOrString;\r\n marginRight?: numberOrString;\r\n marginBottom?: numberOrString;\r\n marginLeft?: numberOrString;\r\n\r\n /** (internal) unit for margin (default? 'px') set when `margin` is set as string with unit (ex: 2rem') */\r\n marginUnit?: string;\r\n\r\n /** maximum rows amount. Default? is 0 which means no maximum rows */\r\n maxRow?: number;\r\n\r\n /** minimum rows amount. Default is `0`. You can also do this with `min-height` CSS attribute\r\n * on the grid div in pixels, which will round to the closest row.\r\n */\r\n minRow?: number;\r\n\r\n /** If you are using a nonce-based Content Security Policy, pass your nonce here and\r\n * GridStack will add it to the