{"version":3,"file":"js/5040.e7c7a22c.js","mappings":"oIAAc,SAAUA,IACpB,MAAMC,EAAaA,CAACC,EAAeC,EAAU,wBAClCD,IAASA,EAAME,SAAgBD,EAGpCE,EAAqBA,CAACH,EAAgBC,EAAU,uBAC3CD,GAAeC,EAGpBG,EAAWJ,KACN,8CAA8CK,KAAKL,IAAgB,yBAGxEM,EAAQA,CAACN,EAAeC,EAAU,2BAC7B,mCAAmCI,KAAKL,IAAgBC,EAG7DM,EAASA,CAACP,EAAeC,EAAU,4BAC9B,oBAAoBI,KAAKL,IAAgBC,EAG9CO,EAAUA,CAACR,EAAeC,EAAU,oCAC/B,qDAAqDI,KAAKL,IAAiBC,EAGhFQ,EAAWA,CAACT,EAAeU,EAAS,KAC/BV,EAAMU,QAAUA,GAAgB,oBAAoBA,eAGzDC,EAAWA,CAACX,EAAeU,IACtBV,EAAMU,QAAUA,GAAgB,wBAAwBA,eAG7DE,EAAUA,CAACZ,EAAea,MACrBA,EAAQC,SAASd,IAAgB,mCAAmCa,EAAQE,KAAK,UAGtFC,EAAQA,CAAChB,EAAwBC,EAAU,yBACrB,kBAAVD,GAAsBiB,MAAMjB,IAAUA,EAAQ,GAAKA,EAAQ,MAAMC,EAGnF,MAAO,CACHF,aACAI,qBACAC,UACAE,QACAC,SACAC,UACAC,WACAE,WACAC,UACAI,QAER,C;;;;;IC7CA,SAASE,EAAWC,GAChB,MAAqB,oBAAPA,CAClB,CACA,SAASC,EAAkBpB,GACvB,OAAiB,OAAVA,QAA4BqB,IAAVrB,CAC7B,CACA,MAAMsB,EAAYC,GAAgB,OAARA,KAAkBA,GAAsB,kBAARA,IAAqBC,MAAMC,QAAQF,GAC7F,SAASG,EAAQ1B,GACb,OAAO2B,OAAO3B,IAAU,CAC5B,CACA,SAAS4B,EAAS5B,GACd,MAAM6B,EAAIC,WAAW9B,GACrB,OAAOiB,MAAMY,GAAK7B,EAAQ6B,CAC9B,CAEA,MAAME,EAAQ,CAAC,EAYf,SAASC,EAAYC,GACjB,OAAOF,EAAME,EACjB,CAWA,MAAMC,EAAiBC,OAAO,qBACxBC,EAAkBD,OAAO,+BACzBE,EAAYF,OAAO,uBAEnBG,EAA6B,qBAAXC,OACxB,SAASC,EAAUxC,GACf,OAAOkB,EAAWlB,MAAYA,EAAMyC,YACxC,CACA,SAASC,EAAe1C,GACpB,QAASA,GAASkB,EAAWlB,EAAM2C,SACvC,CACA,SAASC,EAAeC,GACpB,MAAgB,aAATA,GAAgC,UAATA,CAClC,CACA,SAASC,EAAiB9C,GACtB,OAAOsB,EAAStB,IAAUwB,MAAMC,QAAQzB,EAC5C,CAIA,SAAS+C,EAAiB/C,GACtB,OAAIwB,MAAMC,QAAQzB,GACU,IAAjBA,EAAMU,OAEVY,EAAStB,IAAwC,IAA9BgD,OAAOC,KAAKjD,GAAOU,MACjD,CAIA,SAASwC,EAAgBC,GACrB,MAAO,YAAY9C,KAAK8C,EAC5B,CAIA,SAASC,EAAoBC,GACzB,OAAOC,EAAeD,IAAOA,EAAGE,QACpC,CAIA,SAASD,EAAeD,GACpB,MAAsB,WAAfA,EAAGG,OACd,CAIA,SAASC,EAAwBC,EAAKC,GAElC,MAAMC,GAAyB,EAAC,EAAO,UAAMvC,EAAW,GAAGP,SAAS6C,EAAMJ,YAAc5B,OAAOV,MAAM0C,EAAMJ,UAC3G,MAAe,WAARG,GAAoB,aAAcC,GAASC,CACtD,CAQA,SAASC,EAAuBH,EAAKC,GACjC,OAAQF,EAAwBC,EAAKC,IAAyB,SAAfA,EAAMd,OAAoBD,EAAee,EAAMd,KAClG,CACA,SAASiB,EAAkBC,GACvB,OAAOC,EAAQD,IAAQA,EAAIE,QAAU,WAAYF,EAAIE,MACzD,CACA,SAASD,EAAQD,GACb,QAAKA,OAGgB,qBAAVG,OAAyBhD,EAAWgD,QAAUH,aAAeG,WAKpEH,IAAOA,EAAII,YAInB,CACA,SAASC,EAAc7C,EAAK8C,GACxB,OAAOA,KAAQ9C,GAAOA,EAAI8C,KAAUhC,CACxC,CAMA,SAASiC,EAAQC,EAAGC,GAChB,GAAID,IAAMC,EACN,OAAO,EACX,GAAID,GAAKC,GAAkB,kBAAND,GAA+B,kBAANC,EAAgB,CAC1D,GAAID,EAAEE,cAAgBD,EAAEC,YACpB,OAAO,EAEX,IAAI/D,EAAQgE,EAAGzB,EACf,GAAIzB,MAAMC,QAAQ8C,GAAI,CAGlB,GAFA7D,EAAS6D,EAAE7D,OAEPA,GAAU8D,EAAE9D,OACZ,OAAO,EACX,IAAKgE,EAAIhE,EAAgB,IAARgE,KACb,IAAKJ,EAAQC,EAAEG,GAAIF,EAAEE,IACjB,OAAO,EACf,OAAO,CACX,CACA,GAAIH,aAAaI,KAAOH,aAAaG,IAAK,CACtC,GAAIJ,EAAEK,OAASJ,EAAEI,KACb,OAAO,EACX,IAAKF,KAAKH,EAAEM,UACR,IAAKL,EAAEM,IAAIJ,EAAE,IACT,OAAO,EACf,IAAKA,KAAKH,EAAEM,UACR,IAAKP,EAAQI,EAAE,GAAIF,EAAEO,IAAIL,EAAE,KACvB,OAAO,EACf,OAAO,CACX,CAGA,GAAIM,EAAOT,IAAMS,EAAOR,GACpB,OAAID,EAAEK,OAASJ,EAAEI,OAEbL,EAAEU,OAAST,EAAES,OAEbV,EAAEW,eAAiBV,EAAEU,cAErBX,EAAE1B,OAAS2B,EAAE3B,OAIrB,GAAI0B,aAAaY,KAAOX,aAAaW,IAAK,CACtC,GAAIZ,EAAEK,OAASJ,EAAEI,KACb,OAAO,EACX,IAAKF,KAAKH,EAAEM,UACR,IAAKL,EAAEM,IAAIJ,EAAE,IACT,OAAO,EACf,OAAO,CACX,CACA,GAAIU,YAAYC,OAAOd,IAAMa,YAAYC,OAAOb,GAAI,CAGhD,GAFA9D,EAAS6D,EAAE7D,OAEPA,GAAU8D,EAAE9D,OACZ,OAAO,EACX,IAAKgE,EAAIhE,EAAgB,IAARgE,KACb,GAAIH,EAAEG,KAAOF,EAAEE,GACX,OAAO,EACf,OAAO,CACX,CACA,GAAIH,EAAEE,cAAgBa,OAClB,OAAOf,EAAEgB,SAAWf,EAAEe,QAAUhB,EAAEiB,QAAUhB,EAAEgB,MAClD,GAAIjB,EAAEkB,UAAYzC,OAAO0C,UAAUD,QAC/B,OAAOlB,EAAEkB,YAAcjB,EAAEiB,UAC7B,GAAIlB,EAAEoB,WAAa3C,OAAO0C,UAAUC,SAChC,OAAOpB,EAAEoB,aAAenB,EAAEmB,WAG9B,GAFA1C,EAAOD,OAAOC,KAAKsB,GACnB7D,EAASuC,EAAKvC,OACVA,IAAWsC,OAAOC,KAAKuB,GAAG9D,OAC1B,OAAO,EACX,IAAKgE,EAAIhE,EAAgB,IAARgE,KACb,IAAK1B,OAAO0C,UAAUE,eAAeC,KAAKrB,EAAGvB,EAAKyB,IAC9C,OAAO,EACf,IAAKA,EAAIhE,EAAgB,IAARgE,KAAY,CAEzB,IAAIoB,EAAM7C,EAAKyB,GACf,IAAKJ,EAAQC,EAAEuB,GAAMtB,EAAEsB,IACnB,OAAO,CACf,CACA,OAAO,CACX,CAGA,OAAOvB,IAAMA,GAAKC,IAAMA,CAC5B,CACA,SAASQ,EAAOT,GACZ,QAAKjC,GAGEiC,aAAawB,IACxB,CAEA,SAASC,EAAIzE,EAAKuE,EAAKG,GACG,kBAAdA,EAAIjG,QAAoBiG,EAAIjG,MAAQkG,EAAMD,EAAIjG,QACpDiG,EAAIE,aAAcF,EAAIlB,MAAOkB,EAAID,KAAQC,EAAIG,cAAiBH,EAAII,UAAoB,cAARP,EAE5EvE,EAAIuE,GAAOG,EAAIjG,MADrBgD,OAAOsD,eAAe/E,EAAKuE,EAAKG,EAElC,CAEA,SAASC,EAAMK,GACd,GAAiB,kBAANA,EAAgB,OAAOA,EAElC,IAASC,EAAGC,EAAMC,EAAdhC,EAAE,EAAiBiC,EAAI3D,OAAO0C,UAAUC,SAASE,KAAKU,GA8B1D,GA5BY,oBAARI,EACHD,EAAM1D,OAAO4D,OAAOL,EAAEM,WAAa,MACjB,mBAARF,EACVD,EAAMlF,MAAM+E,EAAE7F,QACI,iBAARiG,GACVD,EAAM,IAAIvB,IACVoB,EAAEO,SAAQ,SAAUb,GACnBS,EAAIK,IAAIb,EAAMD,GACf,KACkB,iBAARU,GACVD,EAAM,IAAI/B,IACV4B,EAAEO,SAAQ,SAAUb,EAAKH,GACxBY,EAAIV,IAAIE,EAAMJ,GAAMI,EAAMD,GAC3B,KACkB,kBAARU,EACVD,EAAM,IAAIM,MAAMT,GACE,oBAARI,EACVD,EAAM,IAAIpB,OAAOiB,EAAEhB,OAAQgB,EAAEf,OACX,sBAARmB,EACVD,EAAM,IAAIH,EAAE9B,YAAayB,EAAMK,EAAEU,SACf,yBAARN,EACVD,EAAMH,EAAEW,MAAM,GACc,WAAlBP,EAAIO,OAAO,KAGrBR,EAAM,IAAIH,EAAE9B,YAAY8B,IAGrBG,EAAK,CACR,IAAKD,EAAKzD,OAAOmE,sBAAsBZ,GAAI7B,EAAI+B,EAAK/F,OAAQgE,IAC3DsB,EAAIU,EAAKD,EAAK/B,GAAI1B,OAAOoE,yBAAyBb,EAAGE,EAAK/B,KAG3D,IAAKA,EAAE,EAAG+B,EAAKzD,OAAOqE,oBAAoBd,GAAI7B,EAAI+B,EAAK/F,OAAQgE,IAC1D1B,OAAO4C,eAAeC,KAAKa,EAAKF,EAAEC,EAAK/B,KAAOgC,EAAIF,KAAOD,EAAEC,IAC/DR,EAAIU,EAAKF,EAAGxD,OAAOoE,yBAAyBb,EAAGC,GAEjD,CAEA,OAAOE,GAAOH,CACf,CAEA,SAASe,EAAqBnE,GAC1B,OAAID,EAAgBC,GACTA,EAAKoE,QAAQ,UAAW,IAE5BpE,CACX,CACA,SAASqE,EAAYC,EAAQtE,EAAMuE,GAC/B,IAAKD,EACD,OAAOC,EAEX,GAAIxE,EAAgBC,GAChB,OAAOsE,EAAOH,EAAqBnE,IAEvC,MAAMwE,GAAiBxE,GAAQ,IAC1ByE,MAAM,gBACNC,OAAOC,SACPC,QAAO,CAACC,EAAKC,IACVnF,EAAiBkF,IAAQC,KAAWD,EAC7BA,EAAIC,GAERP,GACRD,GACH,OAAOE,CACX,CAIA,SAASO,EAAUT,EAAQtE,EAAMnD,GAC7B,GAAIkD,EAAgBC,GAEhB,YADAsE,EAAOH,EAAqBnE,IAASnD,GAGzC,MAAMiD,EAAOE,EAAKyE,MAAM,gBAAgBC,OAAOC,SAC/C,IAAIE,EAAMP,EACV,IAAK,IAAI/C,EAAI,EAAGA,EAAIzB,EAAKvC,OAAQgE,IAAK,CAElC,GAAIA,IAAMzB,EAAKvC,OAAS,EAEpB,YADAsH,EAAI/E,EAAKyB,IAAM1E,GAIbiD,EAAKyB,KAAMsD,IAAQ5G,EAAkB4G,EAAI/E,EAAKyB,OAEhDsD,EAAI/E,EAAKyB,IAAMhD,EAAQuB,EAAKyB,EAAI,IAAM,GAAK,CAAC,GAEhDsD,EAAMA,EAAI/E,EAAKyB,GACnB,CACJ,CACA,SAASyD,EAAMV,EAAQ3B,GACftE,MAAMC,QAAQgG,IAAW/F,EAAQoE,GACjC2B,EAAOW,OAAOzG,OAAOmE,GAAM,GAG3BxE,EAASmG,WACFA,EAAO3B,EAEtB,CAIA,SAASuC,EAAUZ,EAAQtE,GACvB,GAAID,EAAgBC,GAEhB,mBADOsE,EAAOH,EAAqBnE,IAGvC,MAAMF,EAAOE,EAAKyE,MAAM,gBAAgBC,OAAOC,SAC/C,IAAIE,EAAMP,EACV,IAAK,IAAI/C,EAAI,EAAGA,EAAIzB,EAAKvC,OAAQgE,IAAK,CAElC,GAAIA,IAAMzB,EAAKvC,OAAS,EAAG,CACvByH,EAAMH,EAAK/E,EAAKyB,IAChB,KACJ,CAEA,KAAMzB,EAAKyB,KAAMsD,IAAQ5G,EAAkB4G,EAAI/E,EAAKyB,KAChD,MAEJsD,EAAMA,EAAI/E,EAAKyB,GACnB,CACA,MAAM4D,EAAarF,EAAKsF,KAAI,CAACC,EAAGC,IACrBjB,EAAYC,EAAQxE,EAAKiE,MAAM,EAAGuB,GAAK1H,KAAK,QAEvD,IAAK,IAAI2D,EAAI4D,EAAW5H,OAAS,EAAGgE,GAAK,EAAGA,IACnC3B,EAAiBuF,EAAW5D,MAGvB,IAANA,EAIJyD,EAAMG,EAAW5D,EAAI,GAAIzB,EAAKyB,EAAI,IAH9ByD,EAAMV,EAAQxE,EAAK,IAK/B,CAIA,SAASyF,EAAOC,GACZ,OAAO3F,OAAOC,KAAK0F,EACvB,CAGA,SAASC,EAAeC,EAAQC,EAAMzH,WAClC,MAAM0H,GAAK,IAAAC,sBACX,OAAe,OAAPD,QAAsB,IAAPA,OAAgB,EAASA,EAAGE,SAASJ,MAAY,IAAAK,QAAOL,EAAQC,EAC3F,CACA,SAASK,EAAKlJ,IACV,IAAAkJ,MAAO,mBAAmBlJ,IAC9B,CAUA,SAASmJ,EAAyBC,EAAcC,EAAcC,GAC1D,GAAI/H,MAAMC,QAAQ4H,GAAe,CAC7B,MAAMG,EAAS,IAAIH,GAEbZ,EAAMe,EAAOC,WAAUC,GAAKpF,EAAQoF,EAAGJ,KAE7C,OADAb,GAAO,EAAIe,EAAOpB,OAAOK,EAAK,GAAKe,EAAOG,KAAKL,GACxCE,CACX,CACA,OAAOlF,EAAQ+E,EAAcC,GAAgBC,EAAiBD,CAClE,CAKA,SAASM,EAASC,EAAMC,GACpB,IAAIC,EACAC,EACJ,OAAO,YAAaC,GAEhB,MAAMC,EAAUC,KAMhB,OALKJ,IACDA,GAAa,EACbK,YAAW,IAAOL,GAAa,GAAQD,GACvCE,EAAaH,EAAKQ,MAAMH,EAASD,IAE9BD,CACX,CACJ,CACA,SAASM,EAAcC,EAAOC,EAAK,GAC/B,IAAIC,EAAQ,KACRC,EAAW,GACf,OAAO,YAAaT,GAYhB,OAVIQ,GACAlI,OAAOoI,aAAaF,GAExBA,EAAQlI,OAAO6H,YAAW,KAGtB,MAAMQ,EAASL,KAASN,GACxBS,EAAS5D,SAAQ+D,GAAKA,EAAED,KACxBF,EAAW,EAAE,GACdF,GACI,IAAIM,SAAQC,GAAWL,EAASf,KAAKoB,IAChD,CACJ,CACA,SAASC,EAAoBhL,EAAOiL,GAChC,OAAK3J,EAAS2J,IAGVA,EAAUC,OACHtJ,EAAS5B,GAHTA,CAMf,CACA,SAASmL,EAAWhK,EAAIiK,GACpB,IAAIC,EACJ,OAAOC,kBAA4BrB,GAC/B,MAAMsB,EAAUpK,KAAM8I,GACtBoB,EAAYE,EACZ,MAAMX,QAAeW,EACrB,OAAIA,IAAYF,IAGhBA,OAAYhK,EACZ+J,EAAOR,EAAQX,IAHJW,CAKf,CACJ,CACA,SAASY,GAAa,IAAEzG,EAAG,IAAEiB,IACzB,MAAMyF,GAAU,IAAAC,KAAIxF,EAAMnB,MAiB1B,OAhBA,IAAA4G,OAAM5G,GAAK6G,IACHtH,EAAQsH,EAAUH,EAAQzL,SAG9ByL,EAAQzL,MAAQkG,EAAM0F,GAAS,GAChC,CACCC,MAAM,KAEV,IAAAF,OAAMF,GAASG,IACPtH,EAAQsH,EAAU7G,MAGtBiB,EAAIE,EAAM0F,GAAU,GACrB,CACCC,MAAM,IAEHJ,CACX,CAGA,MAAMK,EAAoB,CAACpI,EAAKwG,EAAS6B,IAChC7B,EAAQ8B,MAAMC,QAGA,kBAARvI,GAAqBA,EAGzB,CACHuI,QAAS,KAAQ,IAAIC,EAAIC,EAAI,OAA+C,QAAvCA,GAAMD,EAAKhC,EAAQ8B,OAAOC,eAA4B,IAAPE,OAAgB,EAASA,EAAGtG,KAAKqG,EAAIH,IAAY,GAH9H7B,EAAQ8B,MAAMC,QAAQF,KAHtB7B,EAAQ8B,MAAMC,QAa7B,SAASG,EAAc/I,GACnB,GAAIgJ,EAAgBhJ,GAChB,OAAOA,EAAGiJ,MAGlB,CAKA,SAASD,EAAgBhJ,GACrB,MAAO,WAAYA,CACvB,CAEA,SAASkJ,EAAoBvM,GACzB,IAAKgE,EAAQhE,GACT,OAAOA,EAEX,MAAMwM,EAAQxM,EAAMiE,OAGpB,GAAIrB,EAAe4J,EAAM3J,OAASwJ,EAAgBG,GAC9C,OAAOJ,EAAcI,GAEzB,GAAmB,SAAfA,EAAM3J,MAAmB2J,EAAMC,MAAO,CACtC,MAAMA,EAAQjL,MAAMkL,KAAKF,EAAMC,OAC/B,OAAOD,EAAMjJ,SAAWkJ,EAAQA,EAAM,EAC1C,CACA,GAAIrJ,EAAoBoJ,GACpB,OAAOhL,MAAMkL,KAAKF,EAAM3L,SACnBgH,QAAO8E,GAAOA,EAAIC,WAAaD,EAAIE,WACnCtE,IAAI6D,GAIb,GAAI9I,EAAekJ,GAAQ,CACvB,MAAMM,EAAiBtL,MAAMkL,KAAKF,EAAM3L,SAASkM,MAAKJ,GAAOA,EAAIC,WACjE,OAAOE,EAAiBV,EAAcU,GAAkBN,EAAMxM,KAClE,CACA,OAAOwM,EAAMxM,KACjB,CAKA,SAASgN,EAAeC,GACpB,MAAMjF,EAAM,CAAC,EAOb,OANAhF,OAAOsD,eAAe0B,EAAK,kBAAmB,CAC1ChI,OAAO,EACPqG,UAAU,EACVF,YAAY,EACZC,cAAc,IAEb6G,EAID3L,EAAS2L,IAAUA,EAAMC,gBAClBD,EAEP3L,EAAS2L,GACFjK,OAAOC,KAAKgK,GAAOlF,QAAO,CAACoF,EAAMC,KACpC,MAAMC,EAASC,EAAgBL,EAAMG,IAIrC,OAHoB,IAAhBH,EAAMG,KACND,EAAKC,GAAQG,EAAYF,IAEtBF,CAAI,GACZnF,GAGc,kBAAViF,EACAjF,EAEJiF,EAAMrF,MAAM,KAAKG,QAAO,CAACoF,EAAMK,KAClC,MAAMC,EAAaC,EAAUF,GAC7B,OAAKC,EAAWxI,MAGhBkI,EAAKM,EAAWxI,MAAQsI,EAAYE,EAAWJ,QACxCF,GAHIA,CAGA,GACZnF,GA1BQA,CA2Bf,CAIA,SAASsF,EAAgBD,GACrB,OAAe,IAAXA,EACO,GAEP7L,MAAMC,QAAQ4L,IAGd/L,EAAS+L,GAFFA,EAKJ,CAACA,EACZ,CACA,SAASE,EAAYI,GACjB,MAAMC,EAAqB5N,GAEF,kBAAVA,GAAmC,MAAbA,EAAM,GAC5B6N,GAAc7N,EAAMkH,MAAM,IAE9BlH,EAEX,OAAIwB,MAAMC,QAAQkM,GACPA,EAASpF,IAAIqF,GAGpBD,aAAoBrI,OACb,CAACqI,GAEL3K,OAAOC,KAAK0K,GAAU5F,QAAO,CAACoF,EAAMrH,KACvCqH,EAAKrH,GAAO8H,EAAkBD,EAAS7H,IAChCqH,IACR,CAAC,EACR,CAIA,MAAMO,EAAaF,IACf,IAAIH,EAAS,GACb,MAAMpI,EAAOuI,EAAK5F,MAAM,KAAK,GAI7B,OAHI4F,EAAK1M,SAAS,OACduM,EAASG,EAAK5F,MAAM,KAAKV,MAAM,GAAGnG,KAAK,KAAK6G,MAAM,MAE/C,CAAE3C,OAAMoI,SAAQ,EAE3B,SAASQ,GAAc7N,GACnB,MAAM8N,EAAWC,IACb,MAAM9H,EAAMuB,EAAYuG,EAAY/N,IAAU+N,EAAW/N,GACzD,OAAOiG,CAAG,EAGd,OADA6H,EAAQrL,aAAezC,EAChB8N,CACX,CACA,SAASE,GAAgBX,GACrB,OAAI7L,MAAMC,QAAQ4L,GACPA,EAAOxF,OAAOrF,GAElBkG,EAAO2E,GACTxF,QAAO/B,GAAOtD,EAAU6K,EAAOvH,MAC/ByC,KAAIzC,GAAOuH,EAAOvH,IAC3B,CAEA,MAAMmI,GAAiB,CACnBC,gBAAiB,EAAGC,WAAY,GAAGA,kBACnCC,OAAO,EACPC,gBAAgB,EAChBC,kBAAkB,EAClBC,iBAAiB,EACjBC,uBAAuB,GAE3B,IAAIC,GAAgBzL,OAAO0L,OAAO,CAAC,EAAGT,IACtC,MAAMU,GAAY,IAAMF,GASxBnD,eAAe3I,GAAS3C,EAAOiN,EAAOpM,EAAU,CAAC,GAC7C,MAAM+N,EAAyB,OAAZ/N,QAAgC,IAAZA,OAAqB,EAASA,EAAQuN,MACvED,EAAQ,CACVlJ,MAAmB,OAAZpE,QAAgC,IAAZA,OAAqB,EAASA,EAAQoE,OAAS,UAC1EgI,QACA4B,MAAmB,OAAZhO,QAAgC,IAAZA,OAAqB,EAASA,EAAQgO,MACjET,MAAsB,OAAfQ,QAAsC,IAAfA,GAAwBA,EACtDE,UAAuB,OAAZjO,QAAgC,IAAZA,OAAqB,EAASA,EAAQkO,SAAW,CAAC,GAE/EnE,QAAeoE,GAAUb,EAAOnO,GAChCiP,EAASrE,EAAOqE,OACtB,MAAO,CACHA,SACAC,OAAQD,EAAOvO,OAEvB,CAIA4K,eAAe0D,GAAUb,EAAOnO,GAC5B,GAAI0C,EAAeyL,EAAMlB,OACrB,OAAOkC,GAAqBnP,EAAOmO,EAAMlB,MAAO,CAAEmB,MAAOD,EAAMC,QAGnE,GAAIlN,EAAWiN,EAAMlB,QAAUzL,MAAMC,QAAQ0M,EAAMlB,OAAQ,CACvD,MAAMmC,EAAM,CACRjB,MAAOA,EAAMU,OAASV,EAAMlJ,KAC5BA,KAAMkJ,EAAMlJ,KACZ4J,MAAOV,EAAMU,MACbQ,KAAMlB,EAAMW,SACZ9O,MAAOA,GAGLsP,EAAW9N,MAAMC,QAAQ0M,EAAMlB,OAASkB,EAAMlB,MAAQ,CAACkB,EAAMlB,OAC7DvM,EAAS4O,EAAS5O,OAClBuO,EAAS,GACf,IAAK,IAAIvK,EAAI,EAAGA,EAAIhE,EAAQgE,IAAK,CAC7B,MAAM8I,EAAO8B,EAAS5K,GAChBkG,QAAe4C,EAAKxN,EAAOoP,GAC3BG,EAA4B,kBAAX3E,GAAuBA,EAC9C,GAAI2E,EACA,SAEJ,MAAMtP,EAA4B,kBAAX2K,EAAsBA,EAAS4E,GAAoBJ,GAE1E,GADAH,EAAOtF,KAAK1J,GACRkO,EAAMC,MACN,MAAO,CACHa,SAGZ,CACA,MAAO,CACHA,SAER,CACA,MAAMQ,EAAoBzM,OAAO0L,OAAO1L,OAAO0L,OAAO,CAAC,EAAGP,GAAQ,CAAElB,MAAOD,EAAemB,EAAMlB,SAC1FgC,EAAS,GACTS,EAAY1M,OAAOC,KAAKwM,EAAkBxC,OAC1CvM,EAASgP,EAAUhP,OACzB,IAAK,IAAIgE,EAAI,EAAGA,EAAIhE,EAAQgE,IAAK,CAC7B,MAAM8I,EAAOkC,EAAUhL,GACjBkG,QAAe+E,GAAMF,EAAmBzP,EAAO,CACjDiF,KAAMuI,EACNH,OAAQoC,EAAkBxC,MAAMO,KAEpC,GAAI5C,EAAOgF,QACPX,EAAOtF,KAAKiB,EAAOgF,OACfzB,EAAMC,OACN,MAAO,CACHa,SAIhB,CACA,MAAO,CACHA,SAER,CAIA3D,eAAe6D,GAAqBnP,EAAO6P,EAAWC,GAClD,IAAI5D,EACJ,MAAM+C,QAAeY,EAChBlN,SAAS3C,EAAO,CACjB+P,WAAkC,QAArB7D,EAAK4D,EAAK1B,aAA0B,IAAPlC,GAAgBA,IAEzD8D,MAAK,IAAM,KACXC,OAAOC,IAGR,GAAiB,oBAAbA,EAAIjL,KACJ,OAAOiL,EAAIjB,OAGf,MAAMiB,CAAG,IAEb,MAAO,CACHjB,SAER,CAIA3D,eAAeqE,GAAMxB,EAAOnO,EAAOwN,GAC/B,MAAMqC,EAAY7N,EAAYwL,EAAKvI,MACnC,IAAK4K,EACD,MAAM,IAAIM,MAAM,sBAAsB3C,EAAKvI,iBAE/C,MAAMoI,EAAS+C,GAAiB5C,EAAKH,OAAQc,EAAMW,UAC7CM,EAAM,CACRjB,MAAOA,EAAMU,OAASV,EAAMlJ,KAC5BA,KAAMkJ,EAAMlJ,KACZ4J,MAAOV,EAAMU,MACb7O,QACAqP,KAAMlB,EAAMW,SACZtB,KAAMxK,OAAO0L,OAAO1L,OAAO0L,OAAO,CAAC,EAAGlB,GAAO,CAAEH,YAE7CzC,QAAeiF,EAAU7P,EAAOqN,EAAQ+B,GAC9C,MAAsB,kBAAXxE,EACA,CACHgF,MAAOhF,GAGR,CACHgF,MAAOhF,OAASvJ,EAAYmO,GAAoBJ,GAExD,CAIA,SAASI,GAAoBa,GACzB,MAAMpQ,EAAU0O,KAAYT,gBAC5B,OAAKjO,EAGEA,EAAQoQ,GAFJ,kBAGf,CACA,SAASD,GAAiB/C,EAAQU,GAC9B,MAAMuC,EAAatQ,GACXwC,EAAUxC,GACHA,EAAM+N,GAEV/N,EAEX,OAAIwB,MAAMC,QAAQ4L,GACPA,EAAO9E,IAAI+H,GAEftN,OAAOC,KAAKoK,GAAQtF,QAAO,CAACC,EAAKuI,KACpCvI,EAAIuI,GAASD,EAAUjD,EAAOkD,IACvBvI,IACR,CAAC,EACR,CACAsD,eAAekF,GAAkBC,EAAQ1B,GACrC,MAAM2B,QAAqBD,EACtB9N,SAASoM,EAAQ,CAAEgB,YAAY,IAC/BC,MAAK,IAAM,KACXC,OAAOC,IAGR,GAAiB,oBAAbA,EAAIjL,KACJ,MAAMiL,EAGV,OAAOA,EAAI3F,OAAS,EAAE,IAEpBoG,EAAU,CAAC,EACX1B,EAAS,CAAC,EAChB,IAAK,MAAMW,KAASc,EAAc,CAC9B,MAAME,EAAWhB,EAAMX,OACvB0B,EAAQf,EAAMzM,MAAQ,CAAE+L,OAAQ0B,EAASlQ,OAAQuO,OAAQ2B,GACrDA,EAASlQ,SACTuO,EAAOW,EAAMzM,MAAQyN,EAAS,GAEtC,CACA,MAAO,CACH1B,OAAQwB,EAAahQ,OACrBiQ,UACA1B,SAER,CACA3D,eAAeuF,GAAqBJ,EAAQ1B,EAAQe,GAChD,MAAMgB,EAAQpI,EAAO+H,GACfM,EAAcD,EAAMvI,KAAI+C,MAAOnI,IACjC,IAAI+I,EAAIC,EAAI6E,EACZ,MAAMC,EAA4E,QAAjE/E,EAAc,OAAT4D,QAA0B,IAATA,OAAkB,EAASA,EAAKoB,aAA0B,IAAPhF,OAAgB,EAASA,EAAG/I,GAChHgO,QAAoBxO,GAAS6E,EAAYuH,EAAQ5L,GAAOsN,EAAOtN,GAAO,CACxE8B,MAAmB,OAAZgM,QAAgC,IAAZA,OAAqB,EAASA,EAAQhM,OAAS9B,EAC1E0L,MAAmB,OAAZoC,QAAgC,IAAZA,OAAqB,EAASA,EAAQpC,MACjEE,OAAQA,EACRX,MAAiI,QAAzH4C,EAA0E,QAApE7E,EAAc,OAAT2D,QAA0B,IAATA,OAAkB,EAASA,EAAKsB,gBAA6B,IAAPjF,OAAgB,EAASA,EAAGhJ,UAA0B,IAAP6N,GAAgBA,IAE7J,OAAOhO,OAAO0L,OAAO1L,OAAO0L,OAAO,CAAC,EAAGyC,GAAc,CAAEhO,QAAO,IAElE,IAAIkO,GAAa,EACjB,MAAMC,QAA0BxG,QAAQyG,IAAIR,GACtCJ,EAAU,CAAC,EACX1B,EAAS,CAAC,EAChB,IAAK,MAAMrE,KAAU0G,EACjBX,EAAQ/F,EAAOzH,MAAQ,CACnB+L,MAAOtE,EAAOsE,MACdD,OAAQrE,EAAOqE,QAEdrE,EAAOsE,QACRmC,GAAa,EACbpC,EAAOrE,EAAOzH,MAAQyH,EAAOqE,OAAO,IAG5C,MAAO,CACHC,MAAOmC,EACPV,UACA1B,SAER,CAEA,IAAIuC,GAAa,EACjB,SAASC,GAActO,EAAMuO,GACzB,MAAM,MAAE1R,EAAK,aAAE2R,EAAY,gBAAEC,GAAoBC,GAAe1O,EAAMuO,EAAKI,WAAYJ,EAAKrC,OACtF,aAAE0C,EAAY,OAAE9C,EAAM,UAAE+C,GAAcC,GAAgB9O,EAAMuO,EAAKrC,MACjE6C,EAAOC,GAAcnS,EAAO2R,EAAc1C,GAC1ChN,EAAKuP,IAAc7P,OAAOyQ,iBAAmB,IAAMZ,GACzD,SAASa,EAASC,GACd,IAAIpG,EACA,UAAWoG,IACXtS,EAAMA,MAAQsS,EAAMtS,OAEpB,WAAYsS,GACZN,EAAUM,EAAMrD,QAEhB,YAAaqD,IACbJ,EAAKK,QAAmC,QAAxBrG,EAAKoG,EAAMC,eAA4B,IAAPrG,EAAgBA,EAAKgG,EAAKK,SAE1E,iBAAkBD,GAClBV,EAAgBU,EAAMX,aAE9B,CACA,MAAO,CACH1P,KACAkB,OACAnD,QACA2R,eACAO,OACAjD,SACA8C,eACAM,WAER,CAIA,SAASR,GAAe1O,EAAM2O,EAAYzC,GACtC,MAAMmD,GAAW,IAAA9G,MAAI,IAAA+G,OAAMX,IAC3B,SAASY,IACL,OAAKrD,EAGE7H,EAAY6H,EAAK6C,KAAKlS,MAAM2S,eAAe,IAAAF,OAAMtP,IAAO,IAAAsP,OAAMD,KAF1D,IAAAC,OAAMD,EAGrB,CACA,SAASZ,EAAgB5R,GAChBqP,EAILA,EAAKuD,mBAAkB,IAAAH,OAAMtP,GAAOnD,GAAO,GAHvCwS,EAASxS,MAAQA,CAIzB,CACA,MAAM2R,GAAe,IAAAkB,UAASH,GAE9B,IAAKrD,EAAM,CACP,MAAMrP,GAAQ,IAAA0L,KAAIgH,KAClB,MAAO,CACH1S,QACA2R,eACAC,kBAER,CAKA,MAAMvI,EAAeyI,GAAa,IAAAW,OAAMX,GAActK,EAAY6H,EAAKN,QAAQ,IAAA0D,OAAMtP,IAAO,IAAAsP,OAAMd,IAClGtC,EAAKuD,mBAAkB,IAAAH,OAAMtP,GAAOkG,GAAc,GAElD,MAAMrJ,GAAQ,IAAA6S,UAAS,CACnB9N,MACI,OAAOyC,EAAY6H,EAAKN,QAAQ,IAAA0D,OAAMtP,GAC1C,EACA6C,IAAIwD,GACA6F,EAAKyD,eAAc,IAAAL,OAAMtP,GAAOqG,EACpC,IAEJ,MAAO,CACHxJ,QACA2R,eACAC,kBAER,CAIA,SAASO,GAAc9I,EAAcsI,EAAc1C,GAC/C,MAAMiD,GAAO,IAAAa,UAAS,CAClBR,SAAS,EACThH,SAAS,EACT2D,OAAO,EACP8D,aAAa,IAAAP,OAAMxD,GAAQvO,OAC3BiR,cAAc,IAAAkB,WAAS,KAAM,IAAAJ,OAAMd,KACnCsB,OAAO,IAAAJ,WAAS,KACJvO,GAAQ,IAAAmO,OAAMpJ,IAAe,IAAAoJ,OAAMd,QASnD,OANA,IAAAhG,OAAMsD,GAAQjP,IACVkS,EAAKhD,OAASlP,EAAMU,MAAM,GAC3B,CACCwS,WAAW,EACXC,MAAO,SAEJjB,CACX,CAIA,SAASD,GAAgB9O,EAAMkM,GAC3B,SAAS+D,EAAgBxC,GACrB,OAAKA,EAGEpP,MAAMC,QAAQmP,GAAYA,EAAW,CAACA,GAFlC,EAGf,CACA,IAAKvB,EAAM,CACP,MAAMJ,GAAS,IAAAvD,KAAI,IACnB,MAAO,CACHuD,SACA8C,cAAc,IAAAc,WAAS,IAAM5D,EAAOjP,MAAM,KAC1CgS,UAAYpB,IACR3B,EAAOjP,MAAQoT,EAAgBxC,EAAS,EAGpD,CACA,MAAM3B,GAAS,IAAA4D,WAAS,IAAMxD,EAAKgE,SAASrT,OAAM,IAAAyS,OAAMtP,KAAU,KAClE,MAAO,CACH8L,SACA8C,cAAc,IAAAc,WAAS,IAAM5D,EAAOjP,MAAM,KAC1CgS,UAAYpB,IACRvB,EAAKiE,kBAAiB,IAAAb,OAAMtP,GAAOiQ,EAAgBxC,GAAU,EAGzE,CAgBA,IAAI2C,GACqB3J,GAAS,KAC9BQ,YAAWkB,gBACD,IAAAkI,YACE,OAARD,SAAwB,IAARA,IAA0BA,GAAIE,mBAAmBC,IACzD,OAARH,SAAwB,IAARA,IAA0BA,GAAII,kBAAkBD,GAAa,GAC9E,IAAI,GACR,KAmCH,MAAMA,GAAe,yBAmTrB,SAASE,GAAS3O,EAAMgI,EAAO6C,GAC3B,OAAIlN,EAAwB,OAATkN,QAA0B,IAATA,OAAkB,EAASA,EAAKjN,MACzDgR,GAAiB5O,EAAMgI,EAAO6C,GAElCgE,GAAU7O,EAAMgI,EAAO6C,EAClC,CACA,SAASgE,GAAU7O,EAAMgI,EAAO6C,GAC5B,MAAQ6B,aAAcG,EAAU,gBAAEiC,EAAe,MAAE3F,EAAK,KAAEvL,EAAI,aAAEyG,EAAY,MAAEuF,EAAK,sBAAEmF,EAAqB,eAAEzK,EAAc,WAAE0K,EAAU,mBAAEC,EAAkB,cAAEC,EAAa,WAAEC,EAAY/E,KAAMgF,GAAiBC,IAAiB,IAAA7B,OAAMxN,GAAO6K,GACtOyE,EAAeN,EAAarL,EAAe1G,QAAkBb,EAC7DgO,EAAOgF,GAAeE,EAE5B,IAAIC,GAAmB,EACvB,MAAM,GAAEvS,EAAE,MAAEjC,EAAK,aAAE2R,EAAY,KAAEO,EAAI,SAAEG,EAAQ,OAAEpD,EAAM,aAAE8C,GAAiBN,GAAcxM,EAAM,CAC1F6M,aACAzC,SAEA+E,GACAK,GAAU,CAAEzU,QAAOqE,KAAM8P,EAAeO,iBAK5C,MAAMC,EAAa,KACfzC,EAAKK,SAAU,CAAI,EAEjBqC,GAAkB,IAAA/B,WAAS,KAC7B,IAAIgC,GAAa,IAAApC,OAAMxF,GACvB,MAAMwD,GAAS,IAAAgC,OAAe,OAATpD,QAA0B,IAATA,OAAkB,EAASA,EAAKoB,QAItE,OAHIA,IAAW/N,EAAe+N,KAC1BoE,EAAaC,GAAsBrE,GAAQ,IAAAgC,OAAMxN,KAAU4P,GAE3DnS,EAAemS,IAAe3T,EAAW2T,IAAerT,MAAMC,QAAQoT,GAC/DA,EAEJ7H,EAAe6H,EAAW,IAErCvJ,eAAeyJ,EAAqBC,GAChC,IAAI9I,EAAIC,EACR,OAAa,OAATkD,QAA0B,IAATA,OAAkB,EAASA,EAAK4F,gBACwB,QAAjE/I,SAAYmD,EAAK4F,eAAeD,IAAOrE,SAAQ,IAAA8B,OAAMxN,WAA2B,IAAPiH,EAAgBA,EAAK,CAAEgD,OAAO,EAAMD,OAAQ,IAE1HtM,GAAS3C,EAAMA,MAAO4U,EAAgB5U,MAAO,CAChDiF,MAAM,IAAAwN,OAAMxN,GACZ4J,OAAO,IAAA4D,OAAM5D,GACbE,OAA2E,QAAlE5C,EAAc,OAATkD,QAA0B,IAATA,OAAkB,EAASA,EAAKN,cAA2B,IAAP5C,EAAgBA,EAAK,CAAC,EACzGiC,SAER,CACA,MAAM8G,EAA4B/J,GAAWG,UACzC4G,EAAK3G,SAAU,EACf2G,EAAKc,WAAY,EACV+B,EAAqB,qBAC7BnK,IACK4J,IACA5J,EAAOsE,OAAQ,EACftE,EAAOqE,OAAS,IAEpBoD,EAAS,CAAEpD,OAAQrE,EAAOqE,SAC1BiD,EAAK3G,SAAU,EACRX,KAELuK,EAAyBhK,GAAWG,SAC/ByJ,EAAqB,YAC7BnK,IACK4J,IACA5J,EAAOsE,OAAQ,GAEnBgD,EAAKhD,MAAQtE,EAAOsE,MACbtE,KAEX,SAASwK,EAAWtF,GAChB,MAAgE,YAAlD,OAATA,QAA0B,IAATA,OAAkB,EAASA,EAAKkF,MAC3CG,IAEJD,GACX,CAEA,SAASR,EAAaW,EAAGC,GAAiB,GACtC,MAAM1J,EAAWW,EAAoB8I,GACrCrV,EAAMA,MAAQ4L,GACToI,GAAyBsB,GAC1BJ,GAER,CAYA,SAASK,EAAWC,GAChBtD,EAAKK,QAAUiD,CACnB,CACA,IAAIC,GAbJ,IAAAC,YAAU,KACN,GAAI3B,EACA,OAAOmB,IAIN7F,GAASA,EAAK4F,gBACfE,GACJ,IAMJ,IAAIQ,EAAmBzP,EAAMlG,EAAMA,OACnC,SAAS4V,IACLH,GAAe,IAAA9J,OAAM3L,GAAO,CAACiG,EAAK4P,KAC9B,GAAIvR,EAAQ2B,EAAK4P,IAAWvR,EAAQ2B,EAAK0P,GACrC,OAEJ,MAAMG,EAAa9B,EAAwBkB,EAA4BC,EACvEW,IACAH,EAAmBzP,EAAMD,EAAI,GAC9B,CACC4F,MAAM,GAEd,CAEA,SAASkK,EAAWzD,GAChB,IAAIpG,EACa,OAAjBuJ,QAA0C,IAAjBA,GAAmCA,IAC5D,MAAM7J,EAAW0G,GAAS,UAAWA,EAAQA,EAAMtS,MAAQ2R,EAAa3R,MACxEqS,EAAS,CACLrS,MAAOkG,EAAM0F,GACb+F,aAAczL,EAAM0F,GACpB2G,QAAgF,QAAtErG,EAAe,OAAVoG,QAA4B,IAAVA,OAAmB,EAASA,EAAMC,eAA4B,IAAPrG,GAAgBA,EACxG+C,QAAmB,OAAVqD,QAA4B,IAAVA,OAAmB,EAASA,EAAMrD,SAAW,KAE5EiD,EAAK3G,SAAU,EACf2G,EAAKc,WAAY,EACjBmC,KAEA,IAAA3B,WAAS,KACLoC,GAAY,GAEpB,CACA,SAASI,EAASpK,GACd5L,EAAMA,MAAQ4L,CAClB,CACA,SAASoG,EAAU/C,GACfoD,EAAS,CAAEpD,OAAQzN,MAAMC,QAAQwN,GAAUA,EAAS,CAACA,IACzD,CAxBA2G,IAyBA,MAAMzH,EAAQ,CACVlM,KACAgD,OACA4J,QACA7O,QACAkS,OACAjD,SACA8C,eACAlP,OACAyG,eACAC,iBACA6E,QACA8F,qBACA6B,aACAE,YAAa,IAAMF,IACnBpT,SAAUyS,EACVV,eACAC,aACAtC,WACAkD,aACAvD,YACAgE,YAuBJ,IArBA,IAAAE,SAAQ9T,EAAiB+L,IACrB,IAAAgI,OAAMlJ,IAAkC,oBAAjB,IAAAwF,OAAMxF,KAC7B,IAAAtB,OAAMsB,GAAO,CAACjN,EAAOoW,KACb9R,EAAQtE,EAAOoW,KAGnBlE,EAAKc,UAAYkC,IAA8BC,IAAwB,GACxE,CACCtJ,MAAM,KAaTwD,EACD,OAAOlB,EAGXkB,EAAKgH,SAASlI,IACd,IAAAmI,kBAAgB,KACZ9B,GAAmB,EACnBnF,EAAKkH,WAAWpI,EAAM,IAG1B,MAAMqI,GAAe,IAAA3D,WAAS,KAC1B,MAAM4D,EAAW7B,EAAgB5U,MAEjC,OAAKyW,GAAYvV,EAAWuV,IAAa/T,EAAe+T,IAAajV,MAAMC,QAAQgV,GACxE,CAAC,EAELzT,OAAOC,KAAKwT,GAAU1O,QAAO,CAACC,EAAKwF,KACtC,MAAMkJ,EAAO1I,GAAgByI,EAASjJ,IACjCjF,KAAKoO,GAAQA,EAAIlU,eACjBsF,QAAO,CAAC6O,EAAQC,KACjB,MAAMC,EAAWtP,EAAY6H,EAAKN,OAAQ8H,IAAYxH,EAAKN,OAAO8H,GAIlE,YAHiBxV,IAAbyV,IACAF,EAAOC,GAAWC,GAEfF,CAAM,GACd,CAAC,GAEJ,OADA5T,OAAO0L,OAAO1G,EAAK0O,GACZ1O,CAAG,GACX,CAAC,EAAE,IAaV,OAVA,IAAA2D,OAAM6K,GAAc,CAACE,EAAMK,KAEvB,IAAK/T,OAAOC,KAAKyT,GAAMhW,OACnB,OAEJ,MAAM4U,GAAkBhR,EAAQoS,EAAMK,GAClCzB,IACApD,EAAKc,UAAYkC,IAA8BC,IACnD,IAEGhH,CACX,CAIA,SAASmG,GAAiBrP,EAAM6K,GAC5B,MAAMkH,EAAW,KAAM,CACnBrF,kBAActQ,EACd0S,iBAAiB,EACjB3F,OAAO,EACPS,MAAO5J,EACP+O,uBAAuB,EACvBE,wBAAoB7S,EACpB8S,cAAe,aACfC,YAAY,EACZH,YAAY,IAEhB,IAAKnE,EACD,OAAOkH,IAGX,MAAM1N,EAAe,cAAewG,EAAOA,EAAKmH,UAAYnH,EAAKxG,aAC3D2K,EAAa,eAAgBnE,GAAQA,EAAKoH,WAAapH,EAAKmE,WAClE,OAAOjR,OAAO0L,OAAO1L,OAAO0L,OAAO1L,OAAO0L,OAAO,CAAC,EAAGsI,KAAclH,GAAQ,CAAC,GAAK,CAAEmE,WAA2B,OAAfA,QAAsC,IAAfA,GAAwBA,EAAmB3K,gBACrK,CAIA,SAASwL,GAAsBrE,EAAQ0G,GAEnC,GAAK1G,EAIL,OAAOA,EAAO0G,EAClB,CACA,SAAStD,GAAiB5O,EAAMgI,EAAO6C,GACnC,MAAMT,GAAkB,OAATS,QAA0B,IAATA,OAAkB,EAASA,EAAKoH,iBAA+C7V,EAAjCuH,EAAe1G,GACvFoH,EAAwB,OAATwG,QAA0B,IAATA,OAAkB,EAASA,EAAKxG,aAChEC,EAA0B,OAATuG,QAA0B,IAATA,OAAkB,EAASA,EAAKvG,eACxE,SAAS6N,EAAiBjJ,GACtB,MAAMuG,EAAevG,EAAMuG,aACrB2C,GAAU,IAAAxE,WAAS,KACrB,MAAMxJ,GAAe,IAAAoJ,OAAMtE,EAAMnO,OAC3BsX,GAAa,IAAA7E,OAAMnJ,GACzB,OAAO9H,MAAMC,QAAQ4H,GACfA,EAAaI,WAAUC,GAAKpF,EAAQoF,EAAG4N,MAAgB,EACvDhT,EAAQgT,EAAYjO,EAAa,IAE3C,SAASkO,EAAqBlC,EAAGC,GAAiB,GAC9C,IAAIpJ,EACJ,GAAImL,EAAQrX,SAAqE,QAAzDkM,EAAW,OAANmJ,QAAoB,IAANA,OAAe,EAASA,EAAEpR,cAA2B,IAAPiI,OAAgB,EAASA,EAAGmL,SAIjH,YAHI/B,GACAnH,EAAMxL,YAId,IAAIiJ,EAAWW,EAAoB8I,GAE9BhG,IACDzD,EAAWxC,GAAyB,IAAAqJ,OAAMtE,EAAMnO,QAAQ,IAAAyS,OAAMnJ,IAAe,IAAAmJ,OAAMlJ,KAEvFmL,EAAa9I,EAAU0J,EAC3B,CACA,OAAOtS,OAAO0L,OAAO1L,OAAO0L,OAAO,CAAC,EAAGP,GAAQ,CAAEkJ,UAC7C/N,eACAC,iBAAgBmL,aAAc6C,GACtC,CACA,OAAOH,EAAiBtD,GAAU7O,EAAMgI,EAAO6C,GACnD,CACA,SAAS2E,IAAU,KAAEpQ,EAAI,MAAErE,EAAK,aAAE0U,IAC9B,MAAM3L,GAAK,IAAAC,sBAEX,IAAKD,EAID,cAEJ,MAAMyO,EAAWnT,GAAQ,aACnBoT,EAAW,UAAUD,IAErBA,KAAYzO,EAAG2O,SAGrB,IAAA/L,OAAM3L,GAAO4L,IACLtH,EAAQsH,EAAU+L,GAAqB5O,EAAIyO,KAG/CzO,EAAG6O,KAAKH,EAAU7L,EAAS,KAE/B,IAAAD,QAAM,IAAMgM,GAAqB5O,EAAIyO,KAAWK,IAC5C,GAAIA,IAAcxV,QAA6BhB,IAAhBrB,EAAMA,MACjC,OAEJ,MAAM4L,EAAWiM,IAAcxV,OAAYhB,EAAYwW,EACnDvT,EAAQsH,EAAUZ,EAAoBhL,EAAMA,MAAO+I,EAAG2O,MAAMI,kBAGhEpD,EAAa9I,EAAS,IAE9B,CACA,SAAS+L,GAAqB5O,EAAIyO,GAC9B,OAAOzO,EAAG2O,MAAMF,EACpB,CAEA,MAAMO,IAAY,IAAAC,iBAAgB,CAC9B/S,KAAM,QACNgT,cAAc,EACdP,MAAO,CACHQ,GAAI,CACArV,KAAM,CAACsV,OAAQnV,QACfiJ,aAAS5K,GAEb4D,KAAM,CACFpC,KAAMsV,OACNC,UAAU,GAEdnL,MAAO,CACHpK,KAAM,CAACG,OAAQmV,OAAQE,UACvBpM,aAAS5K,GAEb0S,gBAAiB,CACblR,KAAMiF,QACNmE,SAAS,GAEboC,eAAgB,CACZxL,KAAMiF,QACNmE,aAAS5K,GAEbiN,iBAAkB,CACdzL,KAAMiF,QACNmE,aAAS5K,GAEbkN,gBAAiB,CACb1L,KAAMiF,QACNmE,aAAS5K,GAEbmN,sBAAuB,CACnB3L,KAAMiF,QACNmE,aAAS5K,GAEb+M,MAAO,CACHvL,KAAMiF,QACNmE,QAAS,IAAM0C,KAAYP,OAE/BS,MAAO,CACHhM,KAAMsV,OACNlM,aAAS5K,GAEbkI,eAAgB,CACZ1G,KAAM,KACNoJ,aAAS5K,GAEbyQ,WAAY,CACRjP,KAAM,KACNoJ,QAAS5J,GAEbyV,eAAgB,CACZjV,KAAM,KACNoJ,QAAS,KAAM,CAAG,IAEtB,sBAAuB,CACnBpJ,KAAM,KACNoJ,aAAS5K,GAEb6V,WAAY,CACRrU,KAAMiF,QACNmE,SAAS,GAEbqM,UAAW,CACPzV,KAAMiF,QACNmE,aAAS5K,IAGjBkX,MAAMb,EAAOtI,GACT,MAAMnC,GAAQ,IAAAuL,OAAMd,EAAO,SACrBzS,GAAO,IAAAuT,OAAMd,EAAO,QACpB7I,GAAQ,IAAA2J,OAAMd,EAAO,SACrBnO,GAAiB,IAAAiP,OAAMd,EAAO,kBAC9BY,GAAY,IAAAE,OAAMd,EAAO,cACzB,OAAEzI,EAAM,MAAEjP,EAAK,aAAE+R,EAAcpP,SAAU8V,EAAa,aAAE/D,EAAY,WAAEC,EAAU,WAAEY,EAAU,WAAEQ,EAAU,YAAEE,EAAW,KAAE/D,EAAI,QAAEmF,EAAO,UAAErF,GAAe4B,GAAS3O,EAAMgI,EAAO,CAC7K8G,gBAAiB2D,EAAM3D,gBACvB3F,MAAOsJ,EAAMtJ,MACb8I,WAAYQ,EAAMR,WAClBrU,KAAMuM,EAAIzL,MAAMd,KAChB8O,aAAce,GAAoBgF,EAAOtI,GAEzC9F,aAAc8F,EAAIzL,MAAM3D,MACxBuJ,iBACAsF,QACAmF,uBAAuB,EACvBE,mBAAoBoE,IAGlBI,EAAkB,SAA+BrD,EAAGC,GAAiB,GACvEZ,EAAaW,EAAGC,GAChBlG,EAAIwI,KAAK,oBAAqB5X,EAAMA,MACxC,EACM2Y,EAAetD,IACZzS,EAAewM,EAAIzL,MAAMd,QAC1B7C,EAAMA,MAAQuM,EAAoB8I,GACtC,EAEEuD,EAAiB,SAA8BvD,GACjDsD,EAAYtD,GACZjG,EAAIwI,KAAK,oBAAqB5X,EAAMA,MACxC,EACM6Y,GAAa,IAAAhG,WAAS,KACxB,MAAM,gBAAEtE,EAAe,iBAAED,EAAgB,eAAED,EAAc,sBAAEG,GAA0BsK,GAA0BpB,GACzGqB,EAAa,CAACpE,EAAYvF,EAAIzL,MAAMqV,OAAQ3K,EAAiBoK,OAAgBpX,GAAWwG,OAAOC,SAC/FmR,EAAc,CAAE5D,GAAMqD,EAAgBrD,EAAG9G,GAAkBa,EAAIzL,MAAMuV,SAASrR,OAAOC,SACrFqR,EAAe,CAAE9D,GAAMqD,EAAgBrD,EAAG/G,GAAmBc,EAAIzL,MAAMyV,UAAUvR,OAAOC,SACxFnE,EAAQ,CACVsB,KAAMyS,EAAMzS,KACZ+T,OAAQD,EACRG,QAASD,EACTG,SAAUD,EAEdxV,sBAA+B0R,GAAKqD,EAAgBrD,EAAG7G,IACnD5L,EAAewM,EAAIzL,MAAMd,OAASwU,IAClC1T,EAAM0T,QAAUA,EAAQrX,OAE5B,MAAM0D,EAAM2V,GAAW3B,EAAOtI,GAI9B,OAHIvL,EAAuBH,EAAK0L,EAAIzL,SAChCA,EAAM3D,MAAQA,EAAMA,OAEjB2D,CAAK,IAEhB,SAASoI,IACL,MAAO,CACHoC,MAAO0K,EAAW7Y,MAClBA,MAAOA,EAAMA,MACbkS,OACAjD,OAAQA,EAAOjP,MACf+R,aAAcA,EAAa/R,MAC3B2C,SAAU8V,EACV1C,aACArB,aAAcgE,EACdC,YAAaC,EACb3C,cACAtB,aACAY,aACAvD,YAER,CAQA,OAPA5C,EAAIkK,OAAO,CACPtH,YACAuD,aACAgE,MAAOxD,EACPpT,SAAU8V,EACV/D,iBAEG,KACH,MAAMhR,GAAM,IAAA8V,yBAAwBH,GAAW3B,EAAOtI,IAChDqK,EAAW3N,EAAkBpI,EAAK0L,EAAKrD,GAC7C,OAAIrI,GACO,IAAAgW,GAAEhW,EAAKV,OAAO0L,OAAO1L,OAAO0L,OAAO,CAAC,EAAGU,EAAIzL,OAAQkV,EAAW7Y,OAAQyZ,GAE1EA,CAAQ,CAEvB,IAEJ,SAASJ,GAAW3B,EAAOtI,GACvB,IAAI1L,EAAMgU,EAAMQ,IAAM,GAItB,OAHKR,EAAMQ,IAAO9I,EAAIpD,MAAMC,UACxBvI,EAAM,SAEHA,CACX,CACA,SAASoV,GAA0BpB,GAC/B,IAAIxL,EAAIC,EAAI6E,EAAI2I,EAChB,MAAM,gBAAEpL,EAAe,iBAAED,EAAgB,eAAED,EAAc,sBAAEG,GAA0BG,KACrF,MAAO,CACHJ,gBAAkD,QAAhCrC,EAAKwL,EAAMnJ,uBAAoC,IAAPrC,EAAgBA,EAAKqC,EAC/ED,iBAAoD,QAAjCnC,EAAKuL,EAAMpJ,wBAAqC,IAAPnC,EAAgBA,EAAKmC,EACjFD,eAAgD,QAA/B2C,EAAK0G,EAAMrJ,sBAAmC,IAAP2C,EAAgBA,EAAK3C,EAC7EG,sBAA8D,QAAtCmL,EAAKjC,EAAMlJ,6BAA0C,IAAPmL,EAAgBA,EAAKnL,EAEnG,CACA,SAASkE,GAAoBgF,EAAOtI,GAGhC,OAAKxM,EAAewM,EAAIzL,MAAMd,MAGvBuB,EAAcsT,EAAO,cAAgBA,EAAM5F,gBAAazQ,EAFpD+C,EAAcsT,EAAO,cAAgBA,EAAM5F,WAAa1C,EAAIzL,MAAM3D,KAGjF,CACA,MAAM4Z,GAAQ7B,GAEd,IAAI8B,GAAe,EACnB,SAASC,GAAQhK,GACb,IAAI5D,EACJ,MAAM6N,EAASF,KACTG,EAAuB,IAAI7U,IAGjC,IAAI8U,GAAa,EAEjB,MAAMC,GAAe,IAAAxO,KAAI,CAAC,GAEpByO,GAAe,IAAAzO,MAAI,GAEnB0O,GAAc,IAAA1O,KAAI,GAElB2O,EAAc,GAEdC,GAAa,IAAAvH,UAAS7M,GAAM,IAAAuM,OAAe,OAAT3C,QAA0B,IAATA,OAAkB,EAASA,EAAK6C,gBAAkB,CAAC,KAEtG,SAAEU,EAAQ,YAAEkH,EAAW,iBAAEjH,GAAqBkH,GAAqB,OAAT1K,QAA0B,IAATA,OAAkB,EAASA,EAAK2K,eAE3GxL,GAAS,IAAA4D,WAAS,IACbnK,EAAO2K,EAASrT,OAAO+H,QAAO,CAACC,EAAKlC,KACvC,MAAM4U,EAAMrH,EAASrT,MAAM8F,GAI3B,OAHI4U,GAAOA,EAAIha,SACXsH,EAAIlC,GAAO4U,EAAI,IAEZ1S,CAAG,GACX,CAAC,KAER,SAAS2S,EAAoBxX,GACzB,MAAMyX,EAAeV,EAAala,MAAMmD,GACxC,OAAO3B,MAAMC,QAAQmZ,GAAgBA,EAAa,GAAKA,CAC3D,CACA,SAASC,EAAY1X,GACjB,QAAS+W,EAAala,MAAMmD,EAChC,CAIA,MAAM2X,GAAa,IAAAjI,WAAS,IACjBnK,EAAOwR,EAAala,OAAO+H,QAAO,CAACmJ,EAAO/N,KAC7C,MAAMgL,EAAQwM,EAAoBxX,GAIlC,OAHIgL,IACA+C,EAAM/N,GAAQ,CAAE8B,MAAM,IAAAwN,OAAMtE,EAAMlJ,OAAS,GAAI4J,OAAO,IAAA4D,OAAMtE,EAAMU,QAAU,KAEzEqC,CAAK,GACb,CAAC,KAEF6J,GAAgB,IAAAlI,WAAS,IACpBnK,EAAOwR,EAAala,OAAO+H,QAAO,CAACQ,EAAKpF,KAC3C,IAAI+I,EACJ,MAAMiC,EAAQwM,EAAoBxX,GAIlC,OAHIgL,IACA5F,EAAIpF,GAA+B,QAAtB+I,EAAKiC,EAAMC,aAA0B,IAAPlC,GAAgBA,GAExD3D,CAAG,GACX,CAAC,KAIFkS,EAAgBzX,OAAO0L,OAAO,CAAC,GAAc,OAAToB,QAA0B,IAATA,OAAkB,EAASA,EAAK2K,gBAAkB,CAAC,GACxGO,EAAsG,QAA/E9O,EAAc,OAAT4D,QAA0B,IAATA,OAAkB,EAASA,EAAKkL,2BAAwC,IAAP9O,GAAgBA,GAE9H,cAAEyG,EAAa,sBAAEsI,EAAqB,iBAAEC,GAAqBC,GAAqBjB,EAAcI,EAAqB,OAATxK,QAA0B,IAATA,OAAkB,EAASA,EAAK6C,eAE7JT,EAAOkJ,GAAYlB,EAAcI,EAAYW,EAAuBhM,GACpEoM,GAAmB,IAAAxI,WAAS,IACvB,IAAImH,KAAyBtR,EAAOwR,EAAala,QAAQ+H,QAAO,CAACC,EAAK7E,KACzE,MAAMnD,EAAQwH,EAAY8S,EAAYnX,GAEtC,OADA+E,EAAUF,EAAK7E,EAAMnD,GACdgI,CAAG,GACX,CAAC,KAEFyI,EAAkB,OAATX,QAA0B,IAATA,OAAkB,EAASA,EAAKwL,iBAK1DC,EAA4BjR,EAAckR,GAAiB,GAC3DC,EAAsBnR,EAAckR,GAAiB,GACrDvG,EAAiB9J,GAAWG,MAAO0J,GACb,iBAAVA,EAAqBuG,IAA8BE,MAClE,CAACC,GAAa1G,MAEb,MAAM2G,EAAaC,EAAQ1B,aAAala,OAAS,CAAC,EAE5C6b,EAAqBnT,EAAOkT,EAAQvI,SAASrT,OAG7C8Q,EAAQ,IACP,IAAI3L,IAAI,IAAIuD,EAAOgT,EAAW/K,YAAajI,EAAOiT,MAAgBE,KAGzE,OAAO/K,EAAM/I,QAAO,CAAC+T,EAAY3Y,KAC7B,MAAMgL,EAAQwN,EAAWxY,GACnByN,GAAY8K,EAAW/K,QAAQxN,IAAS,CAAE8L,OAAQ,KAAMA,OACxDkC,EAAc,CAChBlC,OAAQ2B,EACR1B,OAAQ0B,EAASlQ,QAOrB,GALAob,EAAWnL,QAAQxN,GAAQgO,EACtBA,EAAYjC,QACb4M,EAAW7M,OAAO9L,GAAQgO,EAAYlC,OAAO,KAG5Cd,EAED,OADA4N,EAAc5Y,EAAMyN,GACbkL,EAIX,GADAE,EAAmB7N,GAAO8N,GAAMA,EAAE/J,KAAKhD,MAAQiC,EAAYjC,QAC9C,WAAT8F,EACA,OAAO8G,EAEX,MAAMI,EAAe1a,MAAMC,QAAQ0M,GAASA,EAAMgO,MAAKF,GAAKA,EAAE/J,KAAKc,YAAa7E,EAAM+D,KAAKc,UAC3F,MAAa,mBAATgC,GAA8BkH,GAGlCF,EAAmB7N,GAAO8N,GAAKA,EAAE5J,SAAS,CAAEpD,OAAQkC,EAAYlC,WACzD6M,GAHIA,CAGM,GAClB,CAAE5M,MAAOwM,EAAWxM,MAAOyB,QAAS,CAAC,EAAG1B,OAAQ,CAAC,GAAI,IAE5D,SAASmN,EAAsBC,GAC3B,OAAO,SAA8Blb,EAAImb,GACrC,OAAO,SAA2BjH,GAY9B,OAXIA,aAAanR,QACbmR,EAAEkH,iBACFlH,EAAEmH,mBAGNjH,GAAW7M,EAAOwR,EAAala,OAAO+H,QAAO,CAACC,EAAKmG,KAC/CnG,EAAImG,IAAS,EACNnG,IACR,CAAC,IACJmS,EAAana,OAAQ,EACrBoa,EAAYpa,QACL2C,KACFqN,MAAKpF,IACN,MAAMmE,EAAS7I,EAAMoU,GACrB,GAAI1P,EAAOsE,OAAuB,oBAAP/N,EAAmB,CAC1C,MAAM8S,EAAa/N,EAAMmV,EAAiBrb,OAC1C,OAAOmB,EAAGkb,EAAiBpI,EAAalF,EAAQ,CAC5ChL,IAAKsR,EACLgG,iBAAkBpH,EAClBjC,YACA+J,gBACAxG,cACAkH,mBACAC,YACA5J,gBACA6J,aACA5G,eAER,CACKnL,EAAOsE,OAAsC,oBAAtBoN,GACxBA,EAAkB,CACdvN,SACAhL,IAAKsR,EACLpG,OAAQrE,EAAOqE,OACf0B,QAAS/F,EAAO+F,SAExB,IAECX,MAAK4M,IACNzC,EAAana,OAAQ,EACd4c,KACR1M,IAGC,MAFAiK,EAAana,OAAQ,EAEfkQ,CAAG,GAEjB,CACJ,CACJ,CACA,MAAM2M,EAAmBT,GAAsB,GACzCU,EAAeD,EACrBC,EAAaC,eAAiBX,GAAsB,GACpD,MAAMR,EAAU,CACZ7B,SACAG,eACAnL,OAAQuL,EACRe,mBACAhI,WACApE,SACAwB,SACA2J,cACAlI,OACAiI,eACAE,cACAW,sBACA/F,gBAAgB,IAAAxC,OAAMhC,GAAUwE,OAAiB5T,EACjDsB,YACA0T,SAAU2G,GACVzG,WAAY0G,GACZ3J,mBACAmF,iBACA3F,gBACA4J,YACA1K,YACA+J,gBACAU,mBACAlH,cACAoH,aACA5G,cACA+G,eACAlK,qBACAsK,qBACAC,wBACAC,kBAEJ,SAASC,EAAazC,GAClB,OAAOpZ,MAAMC,QAAQmZ,EACzB,CACA,SAASoB,EAAmBpB,EAAc0C,GACtC,OAAI9b,MAAMC,QAAQmZ,GACPA,EAAa9T,QAAQwW,GAEzBA,EAAS1C,EACpB,CACA,SAAS2C,EAAgBD,GACrBta,OAAO+L,OAAOmL,EAAala,OAAO8G,SAAQqH,IACjCA,GAIL6N,EAAmB7N,EAAOmP,EAAS,GAE3C,CAIA,SAASvB,EAAc5N,EAAOlO,GAC1BqT,EAAiBnF,EAAOlO,EAC5B,CAIA,SAAS+R,EAAUwL,GACfjD,EAAYiD,EAChB,CAIA,SAAS1K,EAAc3E,EAAOnO,GAAO,MAAEyd,GAAU,CAAEA,OAAO,IACtD,IAAIvR,EACJ,MAAMwR,EAAgBxD,EAAala,MAAMmO,GACnCwP,EAAczX,EAAMlG,GAE1B,IAAK0d,EAED,YADAxV,EAAUoS,EAAYnM,EAAOwP,GAGjC,GAAIN,EAAaK,IAA6F,cAA9C,QAA3BxR,EAAKwR,EAAc,UAAuB,IAAPxR,OAAgB,EAASA,EAAGrJ,QAAyBrB,MAAMC,QAAQzB,GAAQ,CAE/I,MAAM4L,EAAW1F,EAAMkD,EAAyB5B,EAAY8S,EAAYnM,IAAU,GAAInO,OAAOqB,IAE7F,YADA6G,EAAUoS,EAAYnM,EAAOvC,EAEjC,CACA,IAAIA,EAAW+R,EAEVN,EAAaK,IAAyC,aAAvBA,EAAc7a,MAAwB4a,GAAUxD,IAChFrO,EAAW1F,EAAMkD,EAAyB5B,EAAY8S,EAAYnM,GAAQnO,GAAO,IAAAyS,OAAMiL,EAAcnU,mBAEzGrB,EAAUoS,EAAYnM,EAAOvC,EACjC,CAIA,SAAS8Q,EAAUc,GAEf9U,EAAO4R,GAAYxT,SAAQhB,WAChBwU,EAAWxU,EAAI,IAG1B4C,EAAO8U,GAAQ1W,SAAQ3D,IACnB2P,EAAc3P,EAAMqa,EAAOra,GAAM,IAGrCkX,EAAYvT,SAAQmV,GAAKA,GAAKA,EAAE1C,SACpC,CACA,SAASqE,GAAYza,GACjB,MAAM,MAAEnD,GAAU6R,GAAe1O,OAAM9B,EAAWua,GASlD,OARA,IAAAjQ,OAAM3L,GAAO,KACJ6a,GAAY,IAAApI,OAAMtP,KACnBR,GAAS,CAAEqS,KAAM,kBACrB,GACD,CACCnJ,MAAM,IAEVmO,EAAqBjT,KAAI,IAAA0L,OAAMtP,IACxBnD,CACX,CACA,SAASod,GAAcja,GACnB,OAAK3B,MAAMC,QAAQ0B,GAGZA,EAAKoF,IAAIqV,IAFLA,GAAYza,EAG3B,CAIA,SAASsZ,GAAgBtO,EAAOqH,GAC5B,MAAMkI,EAAgBxD,EAAala,MAAMmO,GACrCuP,GACA1B,EAAmB0B,GAAezB,GAAKA,EAAE1G,WAAWC,IAE5D,CAIA,SAASD,GAAWiI,GAChB9U,EAAO8U,GAAQ1W,SAAQqH,IACnBsO,GAAgBtO,IAASqP,EAAOrP,GAAO,GAE/C,CACA,SAAS4H,GAAW5H,EAAOmE,GACvB,MAAMoL,EAAgBxD,EAAala,MAAMmO,GACrCuP,GACA1B,EAAmB0B,GAAezB,GAAKA,EAAElG,WAAWzD,IAE5D,CAIA,SAASqK,GAAUrK,GACf2H,GAAa,EAEbsD,GAAgBtB,GAAKA,EAAElG,eAEvB,MAAM8H,GAAuB,OAAVvL,QAA4B,IAAVA,OAAmB,EAASA,EAAMvD,QAAUuD,EAAMvD,OAASkM,EAAsBjb,MACtHkb,EAAiB2C,GACjBnB,EAAUmB,IACI,OAAVvL,QAA4B,IAAVA,OAAmB,EAASA,EAAMC,UACpDgD,GAAWjD,EAAMC,SAErBP,GAAqB,OAAVM,QAA4B,IAAVA,OAAmB,EAASA,EAAMrD,SAAW,CAAC,GAC3EmL,EAAYpa,OAAmB,OAAVsS,QAA4B,IAAVA,OAAmB,EAASA,EAAM8H,cAAgB,GACzF,IAAA5G,WAAS,KACLyG,GAAa,CAAK,GAE1B,CACA,SAAS6D,GAAkB3P,EAAOhL,GAC9B,MAAM4a,GAAW,IAAAC,SAAQ7P,GACnB8P,EAAY9a,EAElB,IAAK+W,EAAala,MAAMie,GAEpB,YADA/D,EAAala,MAAMie,GAAaF,GAGpC,MAAMG,EAAchE,EAAala,MAAMie,GACnCC,IAAgB1c,MAAMC,QAAQyc,KAC9BhE,EAAala,MAAMie,GAAa,CAACC,IAGrChE,EAAala,MAAMie,GAAa,IAAI/D,EAAala,MAAMie,GAAYF,EACvE,CACA,SAASI,GAAoBhQ,EAAOhL,GAChC,MAAM8a,EAAY9a,EACZ+a,EAAchE,EAAala,MAAMie,GACvC,GAAKC,EAIL,GAAKb,EAAaa,IAAgB/P,EAAMlM,KAAOic,EAAYjc,IAI3D,GAAIob,EAAaa,GAAc,CAC3B,MAAMzV,EAAMyV,EAAYzU,WAAUwS,GAAKA,EAAEha,KAAOkM,EAAMlM,KACtD,IAAa,IAATwG,EACA,OAEJyV,EAAY9V,OAAOK,EAAK,GACnByV,EAAYxd,eACNwZ,EAAala,MAAMie,EAElC,cAZW/D,EAAala,MAAMie,EAalC,CACA,SAASjB,GAAc7O,GACnB,MAAM8P,GAAY,IAAAxL,OAAMtE,EAAMlJ,MAC9B6Y,GAAkB3P,EAAO8P,IACrB,IAAA9H,OAAMhI,EAAMlJ,QAGZ,IAAA0G,OAAMwC,EAAMlJ,MAAMqG,MAAO8S,EAASC,WAExB,IAAA7K,YACN2K,GAAoBhQ,EAAOkQ,GAC3BP,GAAkB3P,EAAOiQ,IAErBnP,EAAOjP,MAAMqe,IAAYpP,EAAOjP,MAAMoe,MAEtCrC,EAAcsC,OAAShd,GACvBoX,GAAc2F,UAIZ,IAAA5K,YACDqH,EAAYwD,IACbhW,EAAUiS,EAAY+D,EAC1B,IAMR,MAAMC,GAAsB,IAAA7L,OAAMtE,EAAM4D,cACpCuM,IAA0C,OAAlB7D,QAA4C,IAAlBA,OAA2B,EAASA,EAAcwD,MAAgBK,GACpH7F,GAAcwF,UAGXxD,EAAcwD,EACzB,CACA,SAAShB,GAAgB9O,GACrB,MAAMgJ,GAAY,IAAA1E,OAAMtE,EAAMlJ,MACxByY,EAAgBxD,EAAala,MAAMmX,GACnCoH,IAAYb,GAAiBL,EAAaK,GAChDS,GAAoBhQ,EAAOgJ,IAG3B,IAAA3D,WAAS,KACL,IAAItH,EACJ,MAAMsS,EAA6D,QAA1CtS,GAAK,IAAAuG,OAAMtE,EAAM+F,2BAAwC,IAAPhI,EAAgBA,GAAK,IAAAuG,OAAMuI,GAChGyD,EAAoBjX,EAAY8S,EAAYnD,GAK5CuH,EAAcH,IAAYb,IAAkBxD,EAAala,MAAMmX,KAAe+C,EAAala,MAAMmX,IAKvG,GAAIuH,IAAgBF,EAChB,GAAIhd,MAAMC,QAAQgd,GAAoB,CAClC,MAAME,EAAWF,EAAkBhV,WAAU/E,GAAKJ,EAAQI,GAAG,IAAA+N,OAAMtE,EAAM7E,iBACzE,GAAIqV,GAAY,EAAG,CACf,MAAMnV,EAAS,IAAIiV,GACnBjV,EAAOpB,OAAOuW,EAAU,GACxB7L,EAAcqE,EAAW3N,EAAQ,CAAEiU,OAAO,GAC9C,CACJ,MACSgB,KAAsB,IAAAhM,OAAMtE,EAAM7E,eAEvCjB,EAAUiS,EAAYnD,GAK9B,IAAK0D,EAAY1D,GAAY,CAKzB,GAJA4E,EAAc5E,OAAW9V,GAIrBmd,EACA,OAGJ,GAAID,GAAW/c,MAAMC,QAAQgd,KAAuB1b,EAAiB0b,GACjE,OAEJpW,EAAUiS,EAAYnD,EAC1B,IAER,CACA7L,eAAe3I,GAASmN,GACpB,MAAMkF,GAAiB,OAATlF,QAA0B,IAATA,OAAkB,EAASA,EAAKkF,OAAS,QAIxE,GAHa,UAATA,GACAuI,GAAgBtB,GAAMA,EAAE/J,KAAKc,WAAY,IAEzC4I,EAAQ3G,eACR,OAAO2G,EAAQ3G,eAAeD,GAGlC,MAAMjE,QAAoBjG,QAAQyG,IAAIvO,OAAO+L,OAAOmL,EAAala,OAAOuI,KAAI4F,IACxE,MAAMuP,EAAgBlc,MAAMC,QAAQ0M,GAASA,EAAM,GAAKA,EACxD,OAAKuP,EAGEA,EAAc/a,SAASmN,GAAME,MAAMpF,IAC/B,CACH9E,KAAK,IAAA2M,OAAMiL,EAAczY,MACzBiK,MAAOtE,EAAOsE,MACdD,OAAQrE,EAAOqE,WANZnE,QAAQC,QAAQ,CAAEjF,IAAK,GAAIoJ,OAAO,EAAMD,OAAQ,IAQzD,KAEA0B,EAAU,CAAC,EACX1B,EAAS,CAAC,EAChB,IAAK,MAAM6M,KAAc/K,EACrBJ,EAAQmL,EAAWhW,KAAO,CACtBoJ,MAAO4M,EAAW5M,MAClBD,OAAQ6M,EAAW7M,QAEnB6M,EAAW7M,OAAOvO,SAClBuO,EAAO6M,EAAWhW,KAAOgW,EAAW7M,OAAO,IAGnD,MAAO,CACHC,MAAO6B,EAAY6N,OAAM/T,GAAKA,EAAEqE,QAChCyB,UACA1B,SAER,CACA3D,eAAemN,GAActK,GACzB,MAAMuP,EAAgBxD,EAAala,MAAMmO,GACzC,OAAKuP,EAIDlc,MAAMC,QAAQic,GACPA,EAAcnV,KAAI0T,GAAKA,EAAEtZ,aAAY,GAEzC+a,EAAc/a,aANjB,IAAAwG,MAAO,mBAAmBgF,mBACnBrD,QAAQC,QAAQ,CAAEkE,OAAQ,GAAIC,OAAO,IAMpD,CACA,SAASgO,GAAkB/Z,GACvBkF,EAAUsK,EAAc3S,MAAOmD,EACnC,CAIA,SAASyP,GAAkBzP,EAAMnD,EAAO6e,GAAiB,GACrD3W,EAAUoS,EAAYnX,EAAMnD,GAC5Bmd,GAAqBha,EAAMnD,GACvB6e,KAA6B,OAAT/O,QAA0B,IAATA,OAAkB,EAASA,EAAK6C,gBACrEzK,EAAU+S,EAAsBjb,MAAOmD,EAAM+C,EAAMlG,GAE3D,CACA,SAASmd,GAAqBha,EAAMnD,GAChCkI,EAAUyK,EAAc3S,MAAOmD,EAAM+C,EAAMlG,GAC/C,CACAsL,eAAekQ,KACX,MAAMsD,GAAc,IAAArM,OAAMhC,GAC1B,IAAKqO,EACD,MAAO,CAAE5P,OAAO,EAAMyB,QAAS,CAAC,EAAG1B,OAAQ,CAAC,GAEhD,MAAMyM,EAAahZ,EAAeoc,SACtBtO,GAAkBsO,EAAaxE,SAC/BzJ,GAAqBiO,EAAaxE,EAAY,CAClDpJ,MAAO4J,EAAW9a,MAClBoR,SAAU2J,EAAc/a,QAEhC,OAAO0b,CACX,CACA,MAAMqD,GAAajC,GAAa,CAACtU,GAAKzE,UAC9BD,EAAkBC,IAClBA,EAAIE,OAAO+a,QACf,IAmCJ,OAhCA,IAAAtJ,YAAU,MACO,OAAT5F,QAA0B,IAATA,OAAkB,EAASA,EAAK2K,gBACjDzI,EAAUlC,EAAK2K,gBAEN,OAAT3K,QAA0B,IAATA,OAAkB,EAASA,EAAKmP,iBACjD1J,GAAWzF,EAAKmP,iBAGP,OAATnP,QAA0B,IAATA,OAAkB,EAASA,EAAKiE,iBACjDpR,KAKAiZ,EAAQ3G,gBACR2G,EAAQ3G,eAAe,SAC3B,KAEA,IAAAkB,OAAM1F,KACN,IAAA9E,OAAM8E,GAAQ,KACV,IAAIvE,EAC8B,QAAjCA,EAAK0P,EAAQ3G,sBAAmC,IAAP/I,GAAyBA,EAAGrG,KAAK+V,EAAS,iBAAiB,KAI7G,IAAA1F,SAAQhU,EAAgB0Z,GAOjB5Y,OAAO0L,OAAO1L,OAAO0L,OAAO,CAAC,EAAGkN,GAAU,CAAE3F,YAAa,IAAM0G,KAAaoC,eACvF,CAIA,SAAS3D,GAAYlB,EAAcgF,EAAevM,EAAe1D,GAC7D,MAAMkQ,EAAmB,CACrB5M,QAAS,OACThH,QAAS,OACT2D,MAAO,SAELkQ,GAAU,IAAAvM,WAAS,KACbvO,EAAQ4a,GAAe,IAAAzM,OAAME,MAEzC,SAAS0M,IACL,MAAM7B,EAASxa,OAAO+L,OAAOmL,EAAala,OAAOsf,KAAK,GAAGzX,OAAOC,SAChE,OAAOY,EAAOyW,GAAkBpX,QAAO,CAACC,EAAKuX,KACzC,MAAMC,EAAcL,EAAiBI,GAErC,OADAvX,EAAIuX,GAAQ/B,EAAOgC,IAAarR,GAASA,EAAM+D,KAAKqN,KAC7CvX,CAAG,GACX,CAAC,EACR,CACA,MAAMxC,GAAQ,IAAAuN,UAASsM,KAOvB,OANA,IAAAI,cAAY,KACR,MAAMzf,EAAQqf,IACd7Z,EAAM+M,QAAUvS,EAAMuS,QACtB/M,EAAM0J,MAAQlP,EAAMkP,MACpB1J,EAAM+F,QAAUvL,EAAMuL,OAAO,KAE1B,IAAAsH,WAAS,IACL7P,OAAO0L,OAAO1L,OAAO0L,OAAO,CAAEiE,eAAe,IAAAF,OAAME,IAAkBnN,GAAQ,CAAE0J,MAAO1J,EAAM0J,QAAUxG,EAAOuG,EAAOjP,OAAOU,OAAQuS,MAAOmM,EAAQpf,SAEjK,CAIA,SAASmb,GAAqBqC,EAAQlD,EAAYoF,GAE9C,MAAM/M,GAAgB,IAAAjH,KAAIxF,GAAM,IAAAuM,OAAMiN,KAAoB,CAAC,GAMrDzE,GAAwB,IAAAvP,KAAIxF,GAAM,IAAAuM,OAAMiN,KAAoB,CAAC,GACnE,SAASxE,EAAiBnM,EAAQ4Q,GAAe,GAC7ChN,EAAc3S,MAAQkG,EAAM6I,GAC5BkM,EAAsBjb,MAAQkG,EAAM6I,GAC/B4Q,GAOLjX,EAAO8U,EAAOxd,OAAO8G,SAAQmX,IACzB,MAAM9P,EAAQqP,EAAOxd,MAAMie,GACrB2B,EAAape,MAAMC,QAAQ0M,GAASA,EAAMgO,MAAKF,GAAKA,EAAE/J,KAAKK,UAAqB,OAAVpE,QAA4B,IAAVA,OAAmB,EAASA,EAAM+D,KAAKK,QACrI,IAAKpE,GAASyR,EACV,OAEJ,MAAMhU,EAAWpE,EAAYmL,EAAc3S,MAAOie,GAClD/V,EAAUoS,EAAY2D,EAAW/X,EAAM0F,GAAU,GAEzD,CAQA,OAPI,IAAAuK,OAAMuJ,KACN,IAAA/T,OAAM+T,GAAgB1f,IAClBkb,EAAiBlb,GAAO,EAAK,GAC9B,CACC6L,MAAM,IAGP,CACH8G,gBACAsI,wBACAC,mBAER,CACA,SAASV,GAAYC,GACjB,MAAMpH,GAAW,IAAA3H,KAAI,CAAC,GACtB,SAASmU,EAAmB5f,GACxB,OAAOuB,MAAMC,QAAQxB,GAAWA,EAAUA,EAAU,CAACA,GAAW,EACpE,CAIA,SAASqT,EAAiBnF,EAAOlO,GACxBA,EAILoT,EAASrT,MAAMmO,GAAS0R,EAAmB5f,UAHhCoT,EAASrT,MAAMmO,EAI9B,CAIA,SAASoM,EAAYiD,GACjBnK,EAASrT,MAAQ0I,EAAO8U,GAAQzV,QAAO,CAACC,EAAKlC,KACzC,MAAM7F,EAAUud,EAAO1X,GAIvB,OAHI7F,IACA+H,EAAIlC,GAAO+Z,EAAmB5f,IAE3B+H,CAAG,GACX,CAAC,EACR,CAIA,OAHIyS,GACAF,EAAYE,GAET,CACHpH,WACAkH,cACAjH,mBAER,CAEA,MAAMwM,IAAW,IAAA9H,iBAAgB,CAC7B/S,KAAM,OACNgT,cAAc,EACdP,MAAO,CACHQ,GAAI,CACArV,KAAMsV,OACNlM,QAAS,QAEbqP,iBAAkB,CACdzY,KAAMG,OACNiJ,aAAS5K,GAEbsR,cAAe,CACX9P,KAAMG,OACNiJ,aAAS5K,GAEboZ,cAAe,CACX5X,KAAMG,OACNiJ,aAAS5K,GAEb4d,eAAgB,CACZpc,KAAMG,OACNiJ,aAAS5K,GAEb0S,gBAAiB,CACblR,KAAMiF,QACNmE,SAAS,GAEb8T,SAAU,CACNld,KAAMwV,SACNpM,aAAS5K,GAEb2e,gBAAiB,CACbnd,KAAMwV,SACNpM,aAAS5K,GAEb4e,WAAY,CACRpd,KAAMiF,QACNmE,SAAS,IAGjBsM,MAAMb,EAAOtI,GACT,MAAMuD,GAAgB,IAAA6F,OAAMd,EAAO,iBAC7B4D,GAAmB,IAAA9C,OAAMd,EAAO,oBAChCuI,GAAa,IAAAzH,OAAMd,EAAO,eAC1B,OAAEzI,EAAM,OAAEF,EAAM,KAAEmD,EAAI,aAAEiI,EAAY,YAAEC,EAAW,iBAAEiB,EAAgB,SAAE1Y,EAAQ,cAAE8V,EAAa,YAAExC,EAAW,UAAE0G,EAAS,aAAEG,EAAY,UAAE9K,EAAS,cAAE+J,EAAa,cAAEjJ,EAAa,UAAE4J,EAAS,gBAAED,EAAe,WAAElH,EAAU,WAAEQ,GAAgB+D,GAAQ,CAC/OwB,iBAAkBA,EAAiBtb,MAAQsb,OAAmBja,EAC9DsR,gBACA8H,cAAe/C,EAAM+C,cACrBwE,eAAgBvH,EAAMuH,eACtBlL,gBAAiB2D,EAAM3D,gBACvBiH,oBAAqBiF,IAEnBlB,EAAajC,GAAa,CAACtU,GAAKzE,UAC9BD,EAAkBC,IAClBA,EAAIE,OAAO+a,QACf,GACDtH,EAAMsI,iBACHD,EAAWrI,EAAMqI,SAAWjD,EAAapF,EAAMqI,SAAUrI,EAAMsI,iBAAmBjB,EACxF,SAASmB,EAAgB7K,GACjBrR,EAAQqR,IAERA,EAAEkH,iBAENtG,IACiC,oBAAtB7G,EAAIzL,MAAMwc,SACjB/Q,EAAIzL,MAAMwc,SAElB,CACA,SAASC,EAAuBrc,EAAKgc,GACjC,MAAMM,EAA2B,oBAARtc,GAAuBgc,EAAiBA,EAANhc,EAC3D,OAAO+Y,EAAauD,EAAW3I,EAAMsI,gBAA9BlD,CAA+C/Y,EAC1D,CACA,SAASuc,IACL,OAAOpa,EAAM6I,EACjB,CACA,SAASwR,IACL,OAAOra,EAAMgM,EAAKlS,MACtB,CACA,SAASwgB,IACL,OAAOta,EAAM+I,EAAOjP,MACxB,CACA,SAAS+L,IACL,MAAO,CACHmG,KAAMA,EAAKlS,MACXiP,OAAQA,EAAOjP,MACf+O,OAAQA,EACRoL,aAAcA,EAAana,MAC3Boa,YAAaA,EAAYpa,MACzBqb,iBAAkBA,EAAiBrb,MACnC2C,WACA8V,gBACAqE,aAAcsD,EACdnK,cACA8I,aACA/M,YACA+J,gBACAjJ,gBACA4J,YACAD,kBACAlH,aACAoH,YACA5G,aACAuK,YACAC,UACAC,YAER,CAiBA,OAfApR,EAAIkK,OAAO,CACPyC,gBACA/J,YACAc,gBACA4J,YACAD,kBACAlH,aACAoH,YACAha,WACA8V,gBACA1C,aACAuK,YACAC,UACAC,cAEG,WAEH,MAAM9c,EAAmB,SAAbgU,EAAMQ,GAAgBR,EAAMQ,IAAK,IAAAsB,yBAAwB9B,EAAMQ,IACrEuB,EAAW3N,EAAkBpI,EAAK0L,EAAKrD,GAC7C,IAAK2L,EAAMQ,GACP,OAAOuB,EAGX,MAAMgH,EAAyB,SAAb/I,EAAMQ,GAClB,CAEEwI,YAAY,GAEd,CAAC,EACP,OAAO,IAAAhH,GAAEhW,EAAKV,OAAO0L,OAAO1L,OAAO0L,OAAO1L,OAAO0L,OAAO,CAAC,EAAG+R,GAAYrR,EAAIzL,OAAQ,CAAEoc,WAAUI,QAASD,IAAoBzG,EACjI,CACJ,IAEEkH,GAAOb,GAEb,SAASc,GAAcC,GACnB,MAAMxR,EAAOzG,EAAe1G,OAAgBb,GACtCmc,GAAS,IAAA9R,KAAI,IAEboV,EAAO,OACPC,EAAU,CACZvD,SACAwD,OAAQF,EACRnX,KAAMmX,EACNG,KAAMH,EACNI,OAAQJ,EACRK,OAAQL,EACRvZ,QAASuZ,EACTM,QAASN,EACTO,KAAMP,GAEV,IAAKzR,EAED,OADAlG,EAAK,2HACE4X,EAEX,KAAK,IAAAtO,OAAMoO,GAEP,OADA1X,EAAK,4FACE4X,EAEX,MAAMO,EAAgBjS,EAAKgL,YAAYtN,MAAKxI,IAAK,IAAAkO,OAAMlO,EAAEpB,SAAU,IAAAsP,OAAMoO,KACzE,GAAIS,EACA,OAAOA,EAEX,IAAIC,EAAe,EACnB,SAASC,IACL,MAAMtC,EAAgB1X,EAAqB,OAAT6H,QAA0B,IAATA,OAAkB,EAASA,EAAKN,QAAQ,IAAA0D,OAAMoO,GAAY,KAAO,GACpHrD,EAAOxd,MAAQkf,EAAc3W,IAAIkZ,GACjCC,GACJ,CAEA,SAASA,IACL,MAAMC,EAAenE,EAAOxd,MAAMU,OAClC,IAAK,IAAIgE,EAAI,EAAGA,EAAIid,EAAcjd,IAAK,CACnC,MAAMkd,EAAQpE,EAAOxd,MAAM0E,GAC3Bkd,EAAMC,QAAgB,IAANnd,EAChBkd,EAAME,OAASpd,IAAMid,EAAe,CACxC,CACJ,CACA,SAASF,EAAYzhB,GACjB,MAAM8F,EAAMyb,IACNK,EAAQ,CACV9b,MACA9F,MAAOwL,EAAa,CAChBzG,MACI,MAAMma,EAAgB1X,EAAqB,OAAT6H,QAA0B,IAATA,OAAkB,EAASA,EAAKN,QAAQ,IAAA0D,OAAMoO,GAAY,KAAO,GAC9GpY,EAAM+U,EAAOxd,MAAMyJ,WAAU4L,GAAKA,EAAEvP,MAAQA,IAClD,OAAgB,IAAT2C,EAAazI,EAAQkf,EAAczW,EAC9C,EACAzC,IAAIhG,GACA,MAAMyI,EAAM+U,EAAOxd,MAAMyJ,WAAU4L,GAAKA,EAAEvP,MAAQA,KACrC,IAAT2C,EAIJ0Y,EAAO1Y,EAAKzI,GAHRmJ,EAAK,iDAIb,IAEJ0Y,SAAS,EACTC,QAAQ,GAEZ,OAAOF,CACX,CACA,SAASZ,EAAOvY,GACZ,MAAMsZ,GAAW,IAAAtP,OAAMoO,GACjBmB,EAAYxa,EAAqB,OAAT6H,QAA0B,IAATA,OAAkB,EAASA,EAAKN,OAAQgT,GACvF,IAAKC,IAAcxgB,MAAMC,QAAQugB,GAC7B,OAEJ,MAAMpW,EAAW,IAAIoW,GACrBpW,EAASxD,OAAOK,EAAK,GACZ,OAAT4G,QAA0B,IAATA,GAA2BA,EAAK6N,kBAAkB6E,EAAW,IAAItZ,MACzE,OAAT4G,QAA0B,IAATA,GAA2BA,EAAKyD,cAAciP,EAAUnW,GACzE4R,EAAOxd,MAAMoI,OAAOK,EAAK,GACzBiZ,GACJ,CACA,SAAS/X,EAAK3J,GACV,MAAM+hB,GAAW,IAAAtP,OAAMoO,GACjBmB,EAAYxa,EAAqB,OAAT6H,QAA0B,IAATA,OAAkB,EAASA,EAAKN,OAAQgT,GACjFE,EAAsB7gB,EAAkB4gB,GAAa,GAAKA,EAChE,IAAKxgB,MAAMC,QAAQwgB,GACf,OAEJ,MAAMrW,EAAW,IAAIqW,GACrBrW,EAASjC,KAAK3J,GACL,OAATqP,QAA0B,IAATA,GAA2BA,EAAKuD,kBAAkBmP,EAAW,IAAInW,EAASlL,OAAS,KAAMV,GACjG,OAATqP,QAA0B,IAATA,GAA2BA,EAAKyD,cAAciP,EAAUnW,GACzE4R,EAAOxd,MAAM2J,KAAK8X,EAAYzhB,IAC9B0hB,GACJ,CACA,SAAST,EAAKiB,EAAQC,GAClB,MAAMJ,GAAW,IAAAtP,OAAMoO,GACjBmB,EAAYxa,EAAqB,OAAT6H,QAA0B,IAATA,OAAkB,EAASA,EAAKN,OAAQgT,GACvF,IAAKvgB,MAAMC,QAAQugB,MAAgBE,KAAUF,MAAgBG,KAAUH,GACnE,OAEJ,MAAMpW,EAAW,IAAIoW,GACfI,EAAY,IAAI5E,EAAOxd,OAEvBqiB,EAAOzW,EAASsW,GACtBtW,EAASsW,GAAUtW,EAASuW,GAC5BvW,EAASuW,GAAUE,EACnB,MAAMC,EAAYF,EAAUF,GAC5BE,EAAUF,GAAUE,EAAUD,GAC9BC,EAAUD,GAAUG,EACX,OAATjT,QAA0B,IAATA,GAA2BA,EAAKyD,cAAciP,EAAUnW,GACzE4R,EAAOxd,MAAQoiB,EACfV,GACJ,CACA,SAASR,EAAOzY,EAAKzI,GACjB,MAAM+hB,GAAW,IAAAtP,OAAMoO,GACjBmB,EAAYxa,EAAqB,OAAT6H,QAA0B,IAATA,OAAkB,EAASA,EAAKN,OAAQgT,GACvF,IAAKvgB,MAAMC,QAAQugB,IAAcA,EAAUthB,OAAS+H,EAChD,OAEJ,MAAMmD,EAAW,IAAIoW,GACfI,EAAY,IAAI5E,EAAOxd,OAC7B4L,EAASxD,OAAOK,EAAK,EAAGzI,GACxBoiB,EAAUha,OAAOK,EAAK,EAAGgZ,EAAYzhB,IAC5B,OAATqP,QAA0B,IAATA,GAA2BA,EAAKyD,cAAciP,EAAUnW,GACzE4R,EAAOxd,MAAQoiB,EACfV,GACJ,CACA,SAASna,EAAQgb,GACb,MAAMR,GAAW,IAAAtP,OAAMoO,GACd,OAATxR,QAA0B,IAATA,GAA2BA,EAAKyD,cAAciP,EAAUQ,GACzEf,GACJ,CACA,SAASL,EAAO1Y,EAAKzI,GACjB,MAAM+hB,GAAW,IAAAtP,OAAMoO,GACjBmB,EAAYxa,EAAqB,OAAT6H,QAA0B,IAATA,OAAkB,EAASA,EAAKN,OAAQgT,IAClFvgB,MAAMC,QAAQugB,IAAcA,EAAUthB,OAAS,EAAI+H,IAG/C,OAAT4G,QAA0B,IAATA,GAA2BA,EAAKyD,cAAc,GAAGiP,KAAYtZ,KAAQzI,GAC7E,OAATqP,QAA0B,IAATA,GAA2BA,EAAK1M,SAAS,CAAEqS,KAAM,mBACtE,CACA,SAASoM,EAAQphB,GACb,MAAM+hB,GAAW,IAAAtP,OAAMoO,GACjBmB,EAAYxa,EAAqB,OAAT6H,QAA0B,IAATA,OAAkB,EAASA,EAAKN,OAAQgT,GACjFE,EAAsB7gB,EAAkB4gB,GAAa,GAAKA,EAChE,IAAKxgB,MAAMC,QAAQwgB,GACf,OAEJ,MAAMrW,EAAW,CAAC5L,KAAUiiB,GACnB,OAAT5S,QAA0B,IAATA,GAA2BA,EAAKuD,kBAAkBmP,EAAW,IAAInW,EAASlL,OAAS,KAAMV,GACjG,OAATqP,QAA0B,IAATA,GAA2BA,EAAKyD,cAAciP,EAAUnW,GACzE4R,EAAOxd,MAAMwiB,QAAQf,EAAYzhB,IACjC0hB,GACJ,CACA,SAASL,EAAKoB,EAAQC,GAClB,MAAMX,GAAW,IAAAtP,OAAMoO,GACjBmB,EAAYxa,EAAqB,OAAT6H,QAA0B,IAATA,OAAkB,EAASA,EAAKN,OAAQgT,GACjFnW,EAAWxK,EAAkB4gB,GAAa,GAAK,IAAIA,GACzD,IAAKxgB,MAAMC,QAAQugB,MAAgBS,KAAUT,MAAgBU,KAAUV,GACnE,OAEJ,MAAMI,EAAY,IAAI5E,EAAOxd,OACvB2iB,EAAYP,EAAUK,GAC5BL,EAAUha,OAAOqa,EAAQ,GACzBL,EAAUha,OAAOsa,EAAQ,EAAGC,GAC5B,MAAMC,EAAahX,EAAS6W,GAC5B7W,EAASxD,OAAOqa,EAAQ,GACxB7W,EAASxD,OAAOsa,EAAQ,EAAGE,GAClB,OAATvT,QAA0B,IAATA,GAA2BA,EAAKyD,cAAciP,EAAUnW,GACzE4R,EAAOxd,MAAQoiB,EACfV,GACJ,CAzIAF,IA0IA,MAAMqB,EAAgB,CAClBrF,SACAwD,SACArX,OACAsX,OACAC,SACAC,SACA5Z,UACA6Z,UACAC,QASJ,OAPAhS,EAAKgL,YAAY1Q,KAAK3G,OAAO0L,OAAO,CAAEvL,KAAM0d,EAAWtH,MAAOiI,GAAcqB,KAC5E,IAAAvM,kBAAgB,KACZ,MAAM7N,EAAM4G,EAAKgL,YAAY5Q,WAAU/E,IAAK,IAAA+N,OAAM/N,EAAEvB,SAAU,IAAAsP,OAAMoO,KAChEpY,GAAO,GACP4G,EAAKgL,YAAYjS,OAAOK,EAAK,EACjC,IAEGoa,CACX,EAEuB,IAAA7K,iBAAgB,CACnC/S,KAAM,aACNgT,cAAc,EACdP,MAAO,CACHzS,KAAM,CACFpC,KAAMsV,OACNC,UAAU,IAGlBG,MAAMb,EAAOtI,GACT,MAAM,KAAEzF,EAAI,OAAEqX,EAAM,KAAEC,EAAI,OAAEC,EAAM,QAAE3Z,EAAO,OAAE4Z,EAAM,QAAEC,EAAO,KAAEC,EAAI,OAAE7D,GAAWoD,IAAc,IAAApI,OAAMd,EAAO,SAC1G,SAAS3L,IACL,MAAO,CACHyR,OAAQA,EAAOxd,MACf2J,OACAqX,SACAC,OACAC,SACAC,SACA5Z,UACA6Z,UACAC,OAER,CAWA,OAVAjS,EAAIkK,OAAO,CACP3P,OACAqX,SACAC,OACAC,SACAC,SACA5Z,UACA6Z,UACAC,SAEG,KACH,MAAM5H,EAAW3N,OAAkBzK,EAAW+N,EAAKrD,GACnD,OAAO0N,CAAQ,CAEvB,IAtCJ,MA0CMqJ,IAAmB,IAAA9K,iBAAgB,CACrC/S,KAAM,eACNyS,MAAO,CACHQ,GAAI,CACArV,KAAMsV,OACNlM,aAAS5K,GAEb4D,KAAM,CACFpC,KAAMsV,OACNC,UAAU,IAGlBG,MAAMb,EAAOtI,GACT,MAAMC,GAAO,IAAAnG,QAAOhH,OAAgBb,GAC9BpB,GAAU,IAAA4S,WAAS,IACL,OAATxD,QAA0B,IAATA,OAAkB,EAASA,EAAKJ,OAAOjP,MAAM0X,EAAMzS,QAE/E,SAAS8G,IACL,MAAO,CACH9L,QAASA,EAAQD,MAEzB,CACA,MAAO,KAEH,IAAKC,EAAQD,MACT,OAEJ,MAAM0D,EAAOgU,EAAMQ,IAAK,IAAAsB,yBAAwB9B,EAAMQ,IAAMR,EAAMQ,GAC5DuB,EAAW3N,EAAkBpI,EAAK0L,EAAKrD,GACvCpI,EAAQX,OAAO0L,OAAO,CAAEqU,KAAM,SAAW3T,EAAIzL,OAGnD,OAAKD,IAAQlC,MAAMC,QAAQgY,IAAcA,KAA2B,OAAbA,QAAkC,IAAbA,OAAsB,EAASA,EAAS/Y,SAK/Gc,MAAMC,QAAQgY,IAAcA,IAA4B,OAAbA,QAAkC,IAAbA,OAAsB,EAASA,EAAS/Y,SAGtG,IAAAgZ,GAAEhW,EAAKC,EAAO8V,IAFV,IAAAC,GAAEhW,GAAO,OAAQC,EAAO1D,EAAQD,OALhCyZ,CAOmB,CAEtC,IAEEuJ,GAAeF,E","sources":["webpack://beliefnet-frontend/./src/composables/validators.composable.ts","webpack://beliefnet-frontend/./node_modules/vee-validate/dist/vee-validate.esm.js"],"sourcesContent":["export default function useValidators() {\n const isRequired = (value: string, message = 'This is required'): boolean | string => {\n return value && value.trim() ? true : message;\n }\n\n const isCheckboxRequired = (value: boolean, message = 'This is required'): boolean | string => {\n return value ? true : message;\n }\n\n const isEmail = (value: string): boolean | string => {\n return /^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,3})+$/.test(value) ? true : 'Must use a valid email';\n }\n\n const isZip = (value: string, message = 'Must use a valid zip'): boolean | string => {\n return /^[0-9]{5}(?:[+-]{0,1}[0-9]{4})?$/.test(value) ? true : message;\n }\n\n const isName = (value: string, message = 'Must use a valid name'): boolean | string => {\n return /^[a-z ,.'-]{3,}$/i.test(value) ? true : message;\n }\n\n const isPhone = (value: string, message = 'Must use a valid phone number'): boolean | string => {\n return /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/.test(value) ? true : message;\n }\n\n const isMinLen = (value: string, length = 10): boolean | string => {\n return value.length >= length ? true : `Must be at least ${length} characters`;\n }\n\n const isMaxLen = (value: string, length: number): boolean | string => {\n return value.length <= length ? true : `Must be no more than ${length} characters`;\n }\n\n const isOneOf = (value: string, options: Array): boolean | string => {\n return options.includes(value) ? true : `Must be one of these options: { ${options.join(', ')} }`;\n }\n\n const isAge = (value: string | number, message = 'Must use valid age'): boolean | string => {\n return typeof value !== 'number' || isNaN(value) || value < 0 || value > 120 ? message : true;\n }\n\n return {\n isRequired,\n isCheckboxRequired,\n isEmail,\n isZip,\n isName,\n isPhone,\n isMinLen,\n isMaxLen,\n isOneOf,\n isAge\n }\n}\n","/**\n * vee-validate v4.7.4\n * (c) 2023 Abdelrahman Awad\n * @license MIT\n */\nimport { getCurrentInstance, inject, warn as warn$1, ref, watch, unref, computed, reactive, onUnmounted, nextTick, onMounted, provide, isRef, onBeforeUnmount, defineComponent, toRef, resolveDynamicComponent, h, watchEffect, markRaw } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nfunction isCallable(fn) {\r\n return typeof fn === 'function';\r\n}\r\nfunction isNullOrUndefined(value) {\r\n return value === null || value === undefined;\r\n}\r\nconst isObject = (obj) => obj !== null && !!obj && typeof obj === 'object' && !Array.isArray(obj);\r\nfunction isIndex(value) {\r\n return Number(value) >= 0;\r\n}\r\nfunction toNumber(value) {\r\n const n = parseFloat(value);\r\n return isNaN(n) ? value : n;\r\n}\n\nconst RULES = {};\r\n/**\r\n * Adds a custom validator to the list of validation rules.\r\n */\r\nfunction defineRule(id, validator) {\r\n // makes sure new rules are properly formatted.\r\n guardExtend(id, validator);\r\n RULES[id] = validator;\r\n}\r\n/**\r\n * Gets an already defined rule\r\n */\r\nfunction resolveRule(id) {\r\n return RULES[id];\r\n}\r\n/**\r\n * Guards from extension violations.\r\n */\r\nfunction guardExtend(id, validator) {\r\n if (isCallable(validator)) {\r\n return;\r\n }\r\n throw new Error(`Extension Error: The validator '${id}' must be a function.`);\r\n}\n\nconst FormContextKey = Symbol('vee-validate-form');\r\nconst FieldContextKey = Symbol('vee-validate-field-instance');\r\nconst IS_ABSENT = Symbol('Default empty value');\n\nconst isClient = typeof window !== 'undefined';\r\nfunction isLocator(value) {\r\n return isCallable(value) && !!value.__locatorRef;\r\n}\r\nfunction isYupValidator(value) {\r\n return !!value && isCallable(value.validate);\r\n}\r\nfunction hasCheckedAttr(type) {\r\n return type === 'checkbox' || type === 'radio';\r\n}\r\nfunction isContainerValue(value) {\r\n return isObject(value) || Array.isArray(value);\r\n}\r\n/**\r\n * True if the value is an empty object or array\r\n */\r\nfunction isEmptyContainer(value) {\r\n if (Array.isArray(value)) {\r\n return value.length === 0;\r\n }\r\n return isObject(value) && Object.keys(value).length === 0;\r\n}\r\n/**\r\n * Checks if the path opted out of nested fields using `[fieldName]` syntax\r\n */\r\nfunction isNotNestedPath(path) {\r\n return /^\\[.+\\]$/i.test(path);\r\n}\r\n/**\r\n * Checks if an element is a native HTML5 multi-select input element\r\n */\r\nfunction isNativeMultiSelect(el) {\r\n return isNativeSelect(el) && el.multiple;\r\n}\r\n/**\r\n * Checks if an element is a native HTML5 select input element\r\n */\r\nfunction isNativeSelect(el) {\r\n return el.tagName === 'SELECT';\r\n}\r\n/**\r\n * Checks if a tag name with attrs object will render a native multi-select element\r\n */\r\nfunction isNativeMultiSelectNode(tag, attrs) {\r\n // The falsy value array is the values that Vue won't add the `multiple` prop if it has one of these values\r\n const hasTruthyBindingValue = ![false, null, undefined, 0].includes(attrs.multiple) && !Number.isNaN(attrs.multiple);\r\n return tag === 'select' && 'multiple' in attrs && hasTruthyBindingValue;\r\n}\r\n/**\r\n * Checks if a node should have a `:value` binding or not\r\n *\r\n * These nodes should not have a value binding\r\n * For files, because they are not reactive\r\n * For multi-selects because the value binding will reset the value\r\n */\r\nfunction shouldHaveValueBinding(tag, attrs) {\r\n return !isNativeMultiSelectNode(tag, attrs) && attrs.type !== 'file' && !hasCheckedAttr(attrs.type);\r\n}\r\nfunction isFormSubmitEvent(evt) {\r\n return isEvent(evt) && evt.target && 'submit' in evt.target;\r\n}\r\nfunction isEvent(evt) {\r\n if (!evt) {\r\n return false;\r\n }\r\n if (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) {\r\n return true;\r\n }\r\n // this is for IE and Cypress #3161\r\n /* istanbul ignore next */\r\n if (evt && evt.srcElement) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isPropPresent(obj, prop) {\r\n return prop in obj && obj[prop] !== IS_ABSENT;\r\n}\r\n/**\r\n * Compares if two values are the same borrowed from:\r\n * https://github.com/epoberezkin/fast-deep-equal\r\n * We added a case for file matching since `Object.keys` doesn't work with Files.\r\n * */\r\nfunction isEqual(a, b) {\r\n if (a === b)\r\n return true;\r\n if (a && b && typeof a === 'object' && typeof b === 'object') {\r\n if (a.constructor !== b.constructor)\r\n return false;\r\n // eslint-disable-next-line no-var\r\n var length, i, keys;\r\n if (Array.isArray(a)) {\r\n length = a.length;\r\n // eslint-disable-next-line eqeqeq\r\n if (length != b.length)\r\n return false;\r\n for (i = length; i-- !== 0;)\r\n if (!isEqual(a[i], b[i]))\r\n return false;\r\n return true;\r\n }\r\n if (a instanceof Map && b instanceof Map) {\r\n if (a.size !== b.size)\r\n return false;\r\n for (i of a.entries())\r\n if (!b.has(i[0]))\r\n return false;\r\n for (i of a.entries())\r\n if (!isEqual(i[1], b.get(i[0])))\r\n return false;\r\n return true;\r\n }\r\n // We added this part for file comparison, arguably a little naive but should work for most cases.\r\n // #3911\r\n if (isFile(a) && isFile(b)) {\r\n if (a.size !== b.size)\r\n return false;\r\n if (a.name !== b.name)\r\n return false;\r\n if (a.lastModified !== b.lastModified)\r\n return false;\r\n if (a.type !== b.type)\r\n return false;\r\n return true;\r\n }\r\n if (a instanceof Set && b instanceof Set) {\r\n if (a.size !== b.size)\r\n return false;\r\n for (i of a.entries())\r\n if (!b.has(i[0]))\r\n return false;\r\n return true;\r\n }\r\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\r\n length = a.length;\r\n // eslint-disable-next-line eqeqeq\r\n if (length != b.length)\r\n return false;\r\n for (i = length; i-- !== 0;)\r\n if (a[i] !== b[i])\r\n return false;\r\n return true;\r\n }\r\n if (a.constructor === RegExp)\r\n return a.source === b.source && a.flags === b.flags;\r\n if (a.valueOf !== Object.prototype.valueOf)\r\n return a.valueOf() === b.valueOf();\r\n if (a.toString !== Object.prototype.toString)\r\n return a.toString() === b.toString();\r\n keys = Object.keys(a);\r\n length = keys.length;\r\n if (length !== Object.keys(b).length)\r\n return false;\r\n for (i = length; i-- !== 0;)\r\n if (!Object.prototype.hasOwnProperty.call(b, keys[i]))\r\n return false;\r\n for (i = length; i-- !== 0;) {\r\n // eslint-disable-next-line no-var\r\n var key = keys[i];\r\n if (!isEqual(a[key], b[key]))\r\n return false;\r\n }\r\n return true;\r\n }\r\n // true if both NaN, false otherwise\r\n // eslint-disable-next-line no-self-compare\r\n return a !== a && b !== b;\r\n}\r\nfunction isFile(a) {\r\n if (!isClient) {\r\n return false;\r\n }\r\n return a instanceof File;\r\n}\n\nfunction set(obj, key, val) {\n\tif (typeof val.value === 'object') val.value = klona(val.value);\n\tif (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === '__proto__') {\n\t\tObject.defineProperty(obj, key, val);\n\t} else obj[key] = val.value;\n}\n\nfunction klona(x) {\n\tif (typeof x !== 'object') return x;\n\n\tvar i=0, k, list, tmp, str=Object.prototype.toString.call(x);\n\n\tif (str === '[object Object]') {\n\t\ttmp = Object.create(x.__proto__ || null);\n\t} else if (str === '[object Array]') {\n\t\ttmp = Array(x.length);\n\t} else if (str === '[object Set]') {\n\t\ttmp = new Set;\n\t\tx.forEach(function (val) {\n\t\t\ttmp.add(klona(val));\n\t\t});\n\t} else if (str === '[object Map]') {\n\t\ttmp = new Map;\n\t\tx.forEach(function (val, key) {\n\t\t\ttmp.set(klona(key), klona(val));\n\t\t});\n\t} else if (str === '[object Date]') {\n\t\ttmp = new Date(+x);\n\t} else if (str === '[object RegExp]') {\n\t\ttmp = new RegExp(x.source, x.flags);\n\t} else if (str === '[object DataView]') {\n\t\ttmp = new x.constructor( klona(x.buffer) );\n\t} else if (str === '[object ArrayBuffer]') {\n\t\ttmp = x.slice(0);\n\t} else if (str.slice(-6) === 'Array]') {\n\t\t// ArrayBuffer.isView(x)\n\t\t// ~> `new` bcuz `Buffer.slice` => ref\n\t\ttmp = new x.constructor(x);\n\t}\n\n\tif (tmp) {\n\t\tfor (list=Object.getOwnPropertySymbols(x); i < list.length; i++) {\n\t\t\tset(tmp, list[i], Object.getOwnPropertyDescriptor(x, list[i]));\n\t\t}\n\n\t\tfor (i=0, list=Object.getOwnPropertyNames(x); i < list.length; i++) {\n\t\t\tif (Object.hasOwnProperty.call(tmp, k=list[i]) && tmp[k] === x[k]) continue;\n\t\t\tset(tmp, k, Object.getOwnPropertyDescriptor(x, k));\n\t\t}\n\t}\n\n\treturn tmp || x;\n}\n\nfunction cleanupNonNestedPath(path) {\r\n if (isNotNestedPath(path)) {\r\n return path.replace(/\\[|\\]/gi, '');\r\n }\r\n return path;\r\n}\r\nfunction getFromPath(object, path, fallback) {\r\n if (!object) {\r\n return fallback;\r\n }\r\n if (isNotNestedPath(path)) {\r\n return object[cleanupNonNestedPath(path)];\r\n }\r\n const resolvedValue = (path || '')\r\n .split(/\\.|\\[(\\d+)\\]/)\r\n .filter(Boolean)\r\n .reduce((acc, propKey) => {\r\n if (isContainerValue(acc) && propKey in acc) {\r\n return acc[propKey];\r\n }\r\n return fallback;\r\n }, object);\r\n return resolvedValue;\r\n}\r\n/**\r\n * Sets a nested property value in a path, creates the path properties if it doesn't exist\r\n */\r\nfunction setInPath(object, path, value) {\r\n if (isNotNestedPath(path)) {\r\n object[cleanupNonNestedPath(path)] = value;\r\n return;\r\n }\r\n const keys = path.split(/\\.|\\[(\\d+)\\]/).filter(Boolean);\r\n let acc = object;\r\n for (let i = 0; i < keys.length; i++) {\r\n // Last key, set it\r\n if (i === keys.length - 1) {\r\n acc[keys[i]] = value;\r\n return;\r\n }\r\n // Key does not exist, create a container for it\r\n if (!(keys[i] in acc) || isNullOrUndefined(acc[keys[i]])) {\r\n // container can be either an object or an array depending on the next key if it exists\r\n acc[keys[i]] = isIndex(keys[i + 1]) ? [] : {};\r\n }\r\n acc = acc[keys[i]];\r\n }\r\n}\r\nfunction unset(object, key) {\r\n if (Array.isArray(object) && isIndex(key)) {\r\n object.splice(Number(key), 1);\r\n return;\r\n }\r\n if (isObject(object)) {\r\n delete object[key];\r\n }\r\n}\r\n/**\r\n * Removes a nested property from object\r\n */\r\nfunction unsetPath(object, path) {\r\n if (isNotNestedPath(path)) {\r\n delete object[cleanupNonNestedPath(path)];\r\n return;\r\n }\r\n const keys = path.split(/\\.|\\[(\\d+)\\]/).filter(Boolean);\r\n let acc = object;\r\n for (let i = 0; i < keys.length; i++) {\r\n // Last key, unset it\r\n if (i === keys.length - 1) {\r\n unset(acc, keys[i]);\r\n break;\r\n }\r\n // Key does not exist, exit\r\n if (!(keys[i] in acc) || isNullOrUndefined(acc[keys[i]])) {\r\n break;\r\n }\r\n acc = acc[keys[i]];\r\n }\r\n const pathValues = keys.map((_, idx) => {\r\n return getFromPath(object, keys.slice(0, idx).join('.'));\r\n });\r\n for (let i = pathValues.length - 1; i >= 0; i--) {\r\n if (!isEmptyContainer(pathValues[i])) {\r\n continue;\r\n }\r\n if (i === 0) {\r\n unset(object, keys[0]);\r\n continue;\r\n }\r\n unset(pathValues[i - 1], keys[i - 1]);\r\n }\r\n}\r\n/**\r\n * A typed version of Object.keys\r\n */\r\nfunction keysOf(record) {\r\n return Object.keys(record);\r\n}\r\n// Uses same component provide as its own injections\r\n// Due to changes in https://github.com/vuejs/vue-next/pull/2424\r\nfunction injectWithSelf(symbol, def = undefined) {\r\n const vm = getCurrentInstance();\r\n return (vm === null || vm === void 0 ? void 0 : vm.provides[symbol]) || inject(symbol, def);\r\n}\r\nfunction warn(message) {\r\n warn$1(`[vee-validate]: ${message}`);\r\n}\r\n/**\r\n * Ensures we deal with a singular field value\r\n */\r\nfunction normalizeField(field) {\r\n if (Array.isArray(field)) {\r\n return field[0];\r\n }\r\n return field;\r\n}\r\nfunction resolveNextCheckboxValue(currentValue, checkedValue, uncheckedValue) {\r\n if (Array.isArray(currentValue)) {\r\n const newVal = [...currentValue];\r\n // Use isEqual since checked object values can possibly fail the equality check #3883\r\n const idx = newVal.findIndex(v => isEqual(v, checkedValue));\r\n idx >= 0 ? newVal.splice(idx, 1) : newVal.push(checkedValue);\r\n return newVal;\r\n }\r\n return isEqual(currentValue, checkedValue) ? uncheckedValue : checkedValue;\r\n}\r\n/**\r\n * Creates a throttled function that only invokes the provided function (`func`) at most once per within a given number of milliseconds\r\n * (`limit`)\r\n */\r\nfunction throttle(func, limit) {\r\n let inThrottle;\r\n let lastResult;\r\n return function (...args) {\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n const context = this;\r\n if (!inThrottle) {\r\n inThrottle = true;\r\n setTimeout(() => (inThrottle = false), limit);\r\n lastResult = func.apply(context, args);\r\n }\r\n return lastResult;\r\n };\r\n}\r\nfunction debounceAsync(inner, ms = 0) {\r\n let timer = null;\r\n let resolves = [];\r\n return function (...args) {\r\n // Run the function after a certain amount of time\r\n if (timer) {\r\n window.clearTimeout(timer);\r\n }\r\n timer = window.setTimeout(() => {\r\n // Get the result of the inner function, then apply it to the resolve function of\r\n // each promise that has been created since the last time the inner function was run\r\n const result = inner(...args);\r\n resolves.forEach(r => r(result));\r\n resolves = [];\r\n }, ms);\r\n return new Promise(resolve => resolves.push(resolve));\r\n };\r\n}\r\nfunction applyModelModifiers(value, modifiers) {\r\n if (!isObject(modifiers)) {\r\n return value;\r\n }\r\n if (modifiers.number) {\r\n return toNumber(value);\r\n }\r\n return value;\r\n}\r\nfunction withLatest(fn, onDone) {\r\n let latestRun;\r\n return async function runLatest(...args) {\r\n const pending = fn(...args);\r\n latestRun = pending;\r\n const result = await pending;\r\n if (pending !== latestRun) {\r\n return result;\r\n }\r\n latestRun = undefined;\r\n onDone(result, args);\r\n return result;\r\n };\r\n}\r\nfunction computedDeep({ get, set }) {\r\n const baseRef = ref(klona(get()));\r\n watch(get, newValue => {\r\n if (isEqual(newValue, baseRef.value)) {\r\n return;\r\n }\r\n baseRef.value = klona(newValue);\r\n }, {\r\n deep: true,\r\n });\r\n watch(baseRef, newValue => {\r\n if (isEqual(newValue, get())) {\r\n return;\r\n }\r\n set(klona(newValue));\r\n }, {\r\n deep: true,\r\n });\r\n return baseRef;\r\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst normalizeChildren = (tag, context, slotProps) => {\r\n if (!context.slots.default) {\r\n return context.slots.default;\r\n }\r\n if (typeof tag === 'string' || !tag) {\r\n return context.slots.default(slotProps());\r\n }\r\n return {\r\n default: () => { var _a, _b; return (_b = (_a = context.slots).default) === null || _b === void 0 ? void 0 : _b.call(_a, slotProps()); },\r\n };\r\n};\r\n/**\r\n * Vue adds a `_value` prop at the moment on the input elements to store the REAL value on them, real values are different than the `value` attribute\r\n * as they do not get casted to strings unlike `el.value` which preserves user-code behavior\r\n */\r\nfunction getBoundValue(el) {\r\n if (hasValueBinding(el)) {\r\n return el._value;\r\n }\r\n return undefined;\r\n}\r\n/**\r\n * Vue adds a `_value` prop at the moment on the input elements to store the REAL value on them, real values are different than the `value` attribute\r\n * as they do not get casted to strings unlike `el.value` which preserves user-code behavior\r\n */\r\nfunction hasValueBinding(el) {\r\n return '_value' in el;\r\n}\n\nfunction normalizeEventValue(value) {\r\n if (!isEvent(value)) {\r\n return value;\r\n }\r\n const input = value.target;\r\n // Vue sets the current bound value on `_value` prop\r\n // for checkboxes it it should fetch the value binding type as is (boolean instead of string)\r\n if (hasCheckedAttr(input.type) && hasValueBinding(input)) {\r\n return getBoundValue(input);\r\n }\r\n if (input.type === 'file' && input.files) {\r\n const files = Array.from(input.files);\r\n return input.multiple ? files : files[0];\r\n }\r\n if (isNativeMultiSelect(input)) {\r\n return Array.from(input.options)\r\n .filter(opt => opt.selected && !opt.disabled)\r\n .map(getBoundValue);\r\n }\r\n // makes sure we get the actual `option` bound value\r\n // #3440\r\n if (isNativeSelect(input)) {\r\n const selectedOption = Array.from(input.options).find(opt => opt.selected);\r\n return selectedOption ? getBoundValue(selectedOption) : input.value;\r\n }\r\n return input.value;\r\n}\n\n/**\r\n * Normalizes the given rules expression.\r\n */\r\nfunction normalizeRules(rules) {\r\n const acc = {};\r\n Object.defineProperty(acc, '_$$isNormalized', {\r\n value: true,\r\n writable: false,\r\n enumerable: false,\r\n configurable: false,\r\n });\r\n if (!rules) {\r\n return acc;\r\n }\r\n // Object is already normalized, skip.\r\n if (isObject(rules) && rules._$$isNormalized) {\r\n return rules;\r\n }\r\n if (isObject(rules)) {\r\n return Object.keys(rules).reduce((prev, curr) => {\r\n const params = normalizeParams(rules[curr]);\r\n if (rules[curr] !== false) {\r\n prev[curr] = buildParams(params);\r\n }\r\n return prev;\r\n }, acc);\r\n }\r\n /* istanbul ignore if */\r\n if (typeof rules !== 'string') {\r\n return acc;\r\n }\r\n return rules.split('|').reduce((prev, rule) => {\r\n const parsedRule = parseRule(rule);\r\n if (!parsedRule.name) {\r\n return prev;\r\n }\r\n prev[parsedRule.name] = buildParams(parsedRule.params);\r\n return prev;\r\n }, acc);\r\n}\r\n/**\r\n * Normalizes a rule param.\r\n */\r\nfunction normalizeParams(params) {\r\n if (params === true) {\r\n return [];\r\n }\r\n if (Array.isArray(params)) {\r\n return params;\r\n }\r\n if (isObject(params)) {\r\n return params;\r\n }\r\n return [params];\r\n}\r\nfunction buildParams(provided) {\r\n const mapValueToLocator = (value) => {\r\n // A target param using interpolation\r\n if (typeof value === 'string' && value[0] === '@') {\r\n return createLocator(value.slice(1));\r\n }\r\n return value;\r\n };\r\n if (Array.isArray(provided)) {\r\n return provided.map(mapValueToLocator);\r\n }\r\n // #3073\r\n if (provided instanceof RegExp) {\r\n return [provided];\r\n }\r\n return Object.keys(provided).reduce((prev, key) => {\r\n prev[key] = mapValueToLocator(provided[key]);\r\n return prev;\r\n }, {});\r\n}\r\n/**\r\n * Parses a rule string expression.\r\n */\r\nconst parseRule = (rule) => {\r\n let params = [];\r\n const name = rule.split(':')[0];\r\n if (rule.includes(':')) {\r\n params = rule.split(':').slice(1).join(':').split(',');\r\n }\r\n return { name, params };\r\n};\r\nfunction createLocator(value) {\r\n const locator = (crossTable) => {\r\n const val = getFromPath(crossTable, value) || crossTable[value];\r\n return val;\r\n };\r\n locator.__locatorRef = value;\r\n return locator;\r\n}\r\nfunction extractLocators(params) {\r\n if (Array.isArray(params)) {\r\n return params.filter(isLocator);\r\n }\r\n return keysOf(params)\r\n .filter(key => isLocator(params[key]))\r\n .map(key => params[key]);\r\n}\n\nconst DEFAULT_CONFIG = {\r\n generateMessage: ({ field }) => `${field} is not valid.`,\r\n bails: true,\r\n validateOnBlur: true,\r\n validateOnChange: true,\r\n validateOnInput: false,\r\n validateOnModelUpdate: true,\r\n};\r\nlet currentConfig = Object.assign({}, DEFAULT_CONFIG);\r\nconst getConfig = () => currentConfig;\r\nconst setConfig = (newConf) => {\r\n currentConfig = Object.assign(Object.assign({}, currentConfig), newConf);\r\n};\r\nconst configure = setConfig;\n\n/**\r\n * Validates a value against the rules.\r\n */\r\nasync function validate(value, rules, options = {}) {\r\n const shouldBail = options === null || options === void 0 ? void 0 : options.bails;\r\n const field = {\r\n name: (options === null || options === void 0 ? void 0 : options.name) || '{field}',\r\n rules,\r\n label: options === null || options === void 0 ? void 0 : options.label,\r\n bails: shouldBail !== null && shouldBail !== void 0 ? shouldBail : true,\r\n formData: (options === null || options === void 0 ? void 0 : options.values) || {},\r\n };\r\n const result = await _validate(field, value);\r\n const errors = result.errors;\r\n return {\r\n errors,\r\n valid: !errors.length,\r\n };\r\n}\r\n/**\r\n * Starts the validation process.\r\n */\r\nasync function _validate(field, value) {\r\n if (isYupValidator(field.rules)) {\r\n return validateFieldWithYup(value, field.rules, { bails: field.bails });\r\n }\r\n // if a generic function or chain of generic functions\r\n if (isCallable(field.rules) || Array.isArray(field.rules)) {\r\n const ctx = {\r\n field: field.label || field.name,\r\n name: field.name,\r\n label: field.label,\r\n form: field.formData,\r\n value: value,\r\n };\r\n // Normalize the pipeline\r\n const pipeline = Array.isArray(field.rules) ? field.rules : [field.rules];\r\n const length = pipeline.length;\r\n const errors = [];\r\n for (let i = 0; i < length; i++) {\r\n const rule = pipeline[i];\r\n const result = await rule(value, ctx);\r\n const isValid = typeof result !== 'string' && result;\r\n if (isValid) {\r\n continue;\r\n }\r\n const message = typeof result === 'string' ? result : _generateFieldError(ctx);\r\n errors.push(message);\r\n if (field.bails) {\r\n return {\r\n errors,\r\n };\r\n }\r\n }\r\n return {\r\n errors,\r\n };\r\n }\r\n const normalizedContext = Object.assign(Object.assign({}, field), { rules: normalizeRules(field.rules) });\r\n const errors = [];\r\n const rulesKeys = Object.keys(normalizedContext.rules);\r\n const length = rulesKeys.length;\r\n for (let i = 0; i < length; i++) {\r\n const rule = rulesKeys[i];\r\n const result = await _test(normalizedContext, value, {\r\n name: rule,\r\n params: normalizedContext.rules[rule],\r\n });\r\n if (result.error) {\r\n errors.push(result.error);\r\n if (field.bails) {\r\n return {\r\n errors,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n errors,\r\n };\r\n}\r\n/**\r\n * Handles yup validation\r\n */\r\nasync function validateFieldWithYup(value, validator, opts) {\r\n var _a;\r\n const errors = await validator\r\n .validate(value, {\r\n abortEarly: (_a = opts.bails) !== null && _a !== void 0 ? _a : true,\r\n })\r\n .then(() => [])\r\n .catch((err) => {\r\n // Yup errors have a name prop one them.\r\n // https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\r\n if (err.name === 'ValidationError') {\r\n return err.errors;\r\n }\r\n // re-throw the error so we don't hide it\r\n throw err;\r\n });\r\n return {\r\n errors,\r\n };\r\n}\r\n/**\r\n * Tests a single input value against a rule.\r\n */\r\nasync function _test(field, value, rule) {\r\n const validator = resolveRule(rule.name);\r\n if (!validator) {\r\n throw new Error(`No such validator '${rule.name}' exists.`);\r\n }\r\n const params = fillTargetValues(rule.params, field.formData);\r\n const ctx = {\r\n field: field.label || field.name,\r\n name: field.name,\r\n label: field.label,\r\n value,\r\n form: field.formData,\r\n rule: Object.assign(Object.assign({}, rule), { params }),\r\n };\r\n const result = await validator(value, params, ctx);\r\n if (typeof result === 'string') {\r\n return {\r\n error: result,\r\n };\r\n }\r\n return {\r\n error: result ? undefined : _generateFieldError(ctx),\r\n };\r\n}\r\n/**\r\n * Generates error messages.\r\n */\r\nfunction _generateFieldError(fieldCtx) {\r\n const message = getConfig().generateMessage;\r\n if (!message) {\r\n return 'Field is invalid';\r\n }\r\n return message(fieldCtx);\r\n}\r\nfunction fillTargetValues(params, crossTable) {\r\n const normalize = (value) => {\r\n if (isLocator(value)) {\r\n return value(crossTable);\r\n }\r\n return value;\r\n };\r\n if (Array.isArray(params)) {\r\n return params.map(normalize);\r\n }\r\n return Object.keys(params).reduce((acc, param) => {\r\n acc[param] = normalize(params[param]);\r\n return acc;\r\n }, {});\r\n}\r\nasync function validateYupSchema(schema, values) {\r\n const errorObjects = await schema\r\n .validate(values, { abortEarly: false })\r\n .then(() => [])\r\n .catch((err) => {\r\n // Yup errors have a name prop one them.\r\n // https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\r\n if (err.name !== 'ValidationError') {\r\n throw err;\r\n }\r\n // list of aggregated errors\r\n return err.inner || [];\r\n });\r\n const results = {};\r\n const errors = {};\r\n for (const error of errorObjects) {\r\n const messages = error.errors;\r\n results[error.path] = { valid: !messages.length, errors: messages };\r\n if (messages.length) {\r\n errors[error.path] = messages[0];\r\n }\r\n }\r\n return {\r\n valid: !errorObjects.length,\r\n results,\r\n errors,\r\n };\r\n}\r\nasync function validateObjectSchema(schema, values, opts) {\r\n const paths = keysOf(schema);\r\n const validations = paths.map(async (path) => {\r\n var _a, _b, _c;\r\n const strings = (_a = opts === null || opts === void 0 ? void 0 : opts.names) === null || _a === void 0 ? void 0 : _a[path];\r\n const fieldResult = await validate(getFromPath(values, path), schema[path], {\r\n name: (strings === null || strings === void 0 ? void 0 : strings.name) || path,\r\n label: strings === null || strings === void 0 ? void 0 : strings.label,\r\n values: values,\r\n bails: (_c = (_b = opts === null || opts === void 0 ? void 0 : opts.bailsMap) === null || _b === void 0 ? void 0 : _b[path]) !== null && _c !== void 0 ? _c : true,\r\n });\r\n return Object.assign(Object.assign({}, fieldResult), { path });\r\n });\r\n let isAllValid = true;\r\n const validationResults = await Promise.all(validations);\r\n const results = {};\r\n const errors = {};\r\n for (const result of validationResults) {\r\n results[result.path] = {\r\n valid: result.valid,\r\n errors: result.errors,\r\n };\r\n if (!result.valid) {\r\n isAllValid = false;\r\n errors[result.path] = result.errors[0];\r\n }\r\n }\r\n return {\r\n valid: isAllValid,\r\n results,\r\n errors,\r\n };\r\n}\n\nlet ID_COUNTER = 0;\r\nfunction useFieldState(path, init) {\r\n const { value, initialValue, setInitialValue } = _useFieldValue(path, init.modelValue, init.form);\r\n const { errorMessage, errors, setErrors } = _useFieldErrors(path, init.form);\r\n const meta = _useFieldMeta(value, initialValue, errors);\r\n const id = ID_COUNTER >= Number.MAX_SAFE_INTEGER ? 0 : ++ID_COUNTER;\r\n function setState(state) {\r\n var _a;\r\n if ('value' in state) {\r\n value.value = state.value;\r\n }\r\n if ('errors' in state) {\r\n setErrors(state.errors);\r\n }\r\n if ('touched' in state) {\r\n meta.touched = (_a = state.touched) !== null && _a !== void 0 ? _a : meta.touched;\r\n }\r\n if ('initialValue' in state) {\r\n setInitialValue(state.initialValue);\r\n }\r\n }\r\n return {\r\n id,\r\n path,\r\n value,\r\n initialValue,\r\n meta,\r\n errors,\r\n errorMessage,\r\n setState,\r\n };\r\n}\r\n/**\r\n * Creates the field value and resolves the initial value\r\n */\r\nfunction _useFieldValue(path, modelValue, form) {\r\n const modelRef = ref(unref(modelValue));\r\n function resolveInitialValue() {\r\n if (!form) {\r\n return unref(modelRef);\r\n }\r\n return getFromPath(form.meta.value.initialValues, unref(path), unref(modelRef));\r\n }\r\n function setInitialValue(value) {\r\n if (!form) {\r\n modelRef.value = value;\r\n return;\r\n }\r\n form.stageInitialValue(unref(path), value, true);\r\n }\r\n const initialValue = computed(resolveInitialValue);\r\n // if no form is associated, use a regular ref.\r\n if (!form) {\r\n const value = ref(resolveInitialValue());\r\n return {\r\n value,\r\n initialValue,\r\n setInitialValue,\r\n };\r\n }\r\n // to set the initial value, first check if there is a current value, if there is then use it.\r\n // otherwise use the configured initial value if it exists.\r\n // prioritize model value over form values\r\n // #3429\r\n const currentValue = modelValue ? unref(modelValue) : getFromPath(form.values, unref(path), unref(initialValue));\r\n form.stageInitialValue(unref(path), currentValue, true);\r\n // otherwise use a computed setter that triggers the `setFieldValue`\r\n const value = computed({\r\n get() {\r\n return getFromPath(form.values, unref(path));\r\n },\r\n set(newVal) {\r\n form.setFieldValue(unref(path), newVal);\r\n },\r\n });\r\n return {\r\n value,\r\n initialValue,\r\n setInitialValue,\r\n };\r\n}\r\n/**\r\n * Creates meta flags state and some associated effects with them\r\n */\r\nfunction _useFieldMeta(currentValue, initialValue, errors) {\r\n const meta = reactive({\r\n touched: false,\r\n pending: false,\r\n valid: true,\r\n validated: !!unref(errors).length,\r\n initialValue: computed(() => unref(initialValue)),\r\n dirty: computed(() => {\r\n return !isEqual(unref(currentValue), unref(initialValue));\r\n }),\r\n });\r\n watch(errors, value => {\r\n meta.valid = !value.length;\r\n }, {\r\n immediate: true,\r\n flush: 'sync',\r\n });\r\n return meta;\r\n}\r\n/**\r\n * Creates the error message state for the field state\r\n */\r\nfunction _useFieldErrors(path, form) {\r\n function normalizeErrors(messages) {\r\n if (!messages) {\r\n return [];\r\n }\r\n return Array.isArray(messages) ? messages : [messages];\r\n }\r\n if (!form) {\r\n const errors = ref([]);\r\n return {\r\n errors,\r\n errorMessage: computed(() => errors.value[0]),\r\n setErrors: (messages) => {\r\n errors.value = normalizeErrors(messages);\r\n },\r\n };\r\n }\r\n const errors = computed(() => form.errorBag.value[unref(path)] || []);\r\n return {\r\n errors,\r\n errorMessage: computed(() => errors.value[0]),\r\n setErrors: (messages) => {\r\n form.setFieldErrorBag(unref(path), normalizeErrors(messages));\r\n },\r\n };\r\n}\n\nfunction installDevtoolsPlugin(app) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n setupDevtoolsPlugin({\r\n id: 'vee-validate-devtools-plugin',\r\n label: 'VeeValidate Plugin',\r\n packageName: 'vee-validate',\r\n homepage: 'https://vee-validate.logaretm.com/v4',\r\n app,\r\n logo: 'https://vee-validate.logaretm.com/v4/logo.png',\r\n }, setupApiHooks);\r\n }\r\n}\r\nconst DEVTOOLS_FORMS = {};\r\nconst DEVTOOLS_FIELDS = {};\r\nlet API;\r\nconst refreshInspector = throttle(() => {\r\n setTimeout(async () => {\r\n await nextTick();\r\n API === null || API === void 0 ? void 0 : API.sendInspectorState(INSPECTOR_ID);\r\n API === null || API === void 0 ? void 0 : API.sendInspectorTree(INSPECTOR_ID);\r\n }, 100);\r\n}, 100);\r\nfunction registerFormWithDevTools(form) {\r\n const vm = getCurrentInstance();\r\n if (!API) {\r\n const app = vm === null || vm === void 0 ? void 0 : vm.appContext.app;\r\n if (!app) {\r\n return;\r\n }\r\n installDevtoolsPlugin(app);\r\n }\r\n DEVTOOLS_FORMS[form.formId] = Object.assign({}, form);\r\n DEVTOOLS_FORMS[form.formId]._vm = vm;\r\n onUnmounted(() => {\r\n delete DEVTOOLS_FORMS[form.formId];\r\n refreshInspector();\r\n });\r\n refreshInspector();\r\n}\r\nfunction registerSingleFieldWithDevtools(field) {\r\n const vm = getCurrentInstance();\r\n if (!API) {\r\n const app = vm === null || vm === void 0 ? void 0 : vm.appContext.app;\r\n if (!app) {\r\n return;\r\n }\r\n installDevtoolsPlugin(app);\r\n }\r\n DEVTOOLS_FIELDS[field.id] = Object.assign({}, field);\r\n DEVTOOLS_FIELDS[field.id]._vm = vm;\r\n onUnmounted(() => {\r\n delete DEVTOOLS_FIELDS[field.id];\r\n refreshInspector();\r\n });\r\n refreshInspector();\r\n}\r\nconst INSPECTOR_ID = 'vee-validate-inspector';\r\nconst COLORS = {\r\n error: 0xbd4b4b,\r\n success: 0x06d77b,\r\n unknown: 0x54436b,\r\n white: 0xffffff,\r\n black: 0x000000,\r\n blue: 0x035397,\r\n purple: 0xb980f0,\r\n orange: 0xf5a962,\r\n gray: 0xbbbfca,\r\n};\r\nlet SELECTED_NODE = null;\r\nfunction setupApiHooks(api) {\r\n API = api;\r\n api.addInspector({\r\n id: INSPECTOR_ID,\r\n icon: 'rule',\r\n label: 'vee-validate',\r\n noSelectionText: 'Select a vee-validate node to inspect',\r\n actions: [\r\n {\r\n icon: 'done_outline',\r\n tooltip: 'Validate selected item',\r\n action: async () => {\r\n if (!SELECTED_NODE) {\r\n console.error('There is not a valid selected vee-validate node or component');\r\n return;\r\n }\r\n const result = await SELECTED_NODE.validate();\r\n console.log(result);\r\n },\r\n },\r\n {\r\n icon: 'delete_sweep',\r\n tooltip: 'Clear validation state of the selected item',\r\n action: () => {\r\n if (!SELECTED_NODE) {\r\n console.error('There is not a valid selected vee-validate node or component');\r\n return;\r\n }\r\n if ('id' in SELECTED_NODE) {\r\n SELECTED_NODE.resetField();\r\n return;\r\n }\r\n SELECTED_NODE.resetForm();\r\n },\r\n },\r\n ],\r\n });\r\n api.on.getInspectorTree(payload => {\r\n if (payload.inspectorId !== INSPECTOR_ID) {\r\n return;\r\n }\r\n const forms = Object.values(DEVTOOLS_FORMS);\r\n const fields = Object.values(DEVTOOLS_FIELDS);\r\n payload.rootNodes = [\r\n ...forms.map(mapFormForDevtoolsInspector),\r\n ...fields.map(field => mapFieldForDevtoolsInspector(field)),\r\n ];\r\n });\r\n api.on.getInspectorState((payload, ctx) => {\r\n if (payload.inspectorId !== INSPECTOR_ID || ctx.currentTab !== `custom-inspector:${INSPECTOR_ID}`) {\r\n return;\r\n }\r\n const { form, field, type } = decodeNodeId(payload.nodeId);\r\n if (form && type === 'form') {\r\n payload.state = buildFormState(form);\r\n SELECTED_NODE = form;\r\n return;\r\n }\r\n if (field && type === 'field') {\r\n payload.state = buildFieldState(field);\r\n SELECTED_NODE = field;\r\n return;\r\n }\r\n SELECTED_NODE = null;\r\n });\r\n}\r\nfunction mapFormForDevtoolsInspector(form) {\r\n const { textColor, bgColor } = getTagTheme(form);\r\n const formTreeNodes = {};\r\n Object.values(form.fieldsByPath.value).forEach(field => {\r\n const fieldInstance = Array.isArray(field) ? field[0] : field;\r\n if (!fieldInstance) {\r\n return;\r\n }\r\n setInPath(formTreeNodes, unref(fieldInstance.name), mapFieldForDevtoolsInspector(fieldInstance, form));\r\n });\r\n function buildFormTree(tree, path = []) {\r\n const key = [...path].pop();\r\n if ('id' in tree) {\r\n return Object.assign(Object.assign({}, tree), { label: key || tree.label });\r\n }\r\n if (isObject(tree)) {\r\n return {\r\n id: `${path.join('.')}`,\r\n label: key || '',\r\n children: Object.keys(tree).map(key => buildFormTree(tree[key], [...path, key])),\r\n };\r\n }\r\n if (Array.isArray(tree)) {\r\n return {\r\n id: `${path.join('.')}`,\r\n label: `${key}[]`,\r\n children: tree.map((c, idx) => buildFormTree(c, [...path, String(idx)])),\r\n };\r\n }\r\n return { id: '', label: '', children: [] };\r\n }\r\n const { children } = buildFormTree(formTreeNodes);\r\n return {\r\n id: encodeNodeId(form),\r\n label: 'Form',\r\n children,\r\n tags: [\r\n {\r\n label: 'Form',\r\n textColor,\r\n backgroundColor: bgColor,\r\n },\r\n {\r\n label: `${Object.keys(form.fieldsByPath.value).length} fields`,\r\n textColor: COLORS.white,\r\n backgroundColor: COLORS.unknown,\r\n },\r\n ],\r\n };\r\n}\r\nfunction mapFieldForDevtoolsInspector(field, form) {\r\n const fieldInstance = normalizeField(field);\r\n const { textColor, bgColor } = getTagTheme(fieldInstance);\r\n const isGroup = Array.isArray(field) && field.length > 1;\r\n return {\r\n id: encodeNodeId(form, fieldInstance, !isGroup),\r\n label: unref(fieldInstance.name),\r\n children: Array.isArray(field) ? field.map(fieldItem => mapFieldForDevtoolsInspector(fieldItem, form)) : undefined,\r\n tags: [\r\n isGroup\r\n ? undefined\r\n : {\r\n label: 'Field',\r\n textColor,\r\n backgroundColor: bgColor,\r\n },\r\n !form\r\n ? {\r\n label: 'Standalone',\r\n textColor: COLORS.black,\r\n backgroundColor: COLORS.gray,\r\n }\r\n : undefined,\r\n !isGroup && fieldInstance.type === 'checkbox'\r\n ? {\r\n label: 'Checkbox',\r\n textColor: COLORS.white,\r\n backgroundColor: COLORS.blue,\r\n }\r\n : undefined,\r\n !isGroup && fieldInstance.type === 'radio'\r\n ? {\r\n label: 'Radio',\r\n textColor: COLORS.white,\r\n backgroundColor: COLORS.purple,\r\n }\r\n : undefined,\r\n isGroup\r\n ? {\r\n label: 'Group',\r\n textColor: COLORS.black,\r\n backgroundColor: COLORS.orange,\r\n }\r\n : undefined,\r\n ].filter(Boolean),\r\n };\r\n}\r\nfunction encodeNodeId(form, field, encodeIndex = true) {\r\n const fieldPath = form ? unref(field === null || field === void 0 ? void 0 : field.name) : field === null || field === void 0 ? void 0 : field.id;\r\n const fieldGroup = fieldPath ? form === null || form === void 0 ? void 0 : form.fieldsByPath.value[fieldPath] : undefined;\r\n let idx;\r\n if (encodeIndex && field && Array.isArray(fieldGroup)) {\r\n idx = fieldGroup.indexOf(field);\r\n }\r\n const idObject = { f: form === null || form === void 0 ? void 0 : form.formId, ff: fieldPath, idx, type: field ? 'field' : 'form' };\r\n return btoa(JSON.stringify(idObject));\r\n}\r\nfunction decodeNodeId(nodeId) {\r\n try {\r\n const idObject = JSON.parse(atob(nodeId));\r\n const form = DEVTOOLS_FORMS[idObject.f];\r\n if (!form && idObject.ff) {\r\n const field = DEVTOOLS_FIELDS[idObject.ff];\r\n if (!field) {\r\n return {};\r\n }\r\n return {\r\n type: idObject.type,\r\n field,\r\n };\r\n }\r\n if (!form) {\r\n return {};\r\n }\r\n const fieldGroup = form.fieldsByPath.value[idObject.ff];\r\n return {\r\n type: idObject.type,\r\n form,\r\n field: Array.isArray(fieldGroup) ? fieldGroup[idObject.idx || 0] : fieldGroup,\r\n };\r\n }\r\n catch (err) {\r\n // console.error(`Devtools: [vee-validate] Failed to parse node id ${nodeId}`);\r\n }\r\n return {};\r\n}\r\nfunction buildFieldState(field) {\r\n const { errors, meta, value } = field;\r\n return {\r\n 'Field state': [\r\n { key: 'errors', value: errors.value },\r\n {\r\n key: 'initialValue',\r\n value: meta.initialValue,\r\n },\r\n {\r\n key: 'currentValue',\r\n value: value.value,\r\n },\r\n {\r\n key: 'touched',\r\n value: meta.touched,\r\n },\r\n {\r\n key: 'dirty',\r\n value: meta.dirty,\r\n },\r\n {\r\n key: 'valid',\r\n value: meta.valid,\r\n },\r\n ],\r\n };\r\n}\r\nfunction buildFormState(form) {\r\n const { errorBag, meta, values, isSubmitting, submitCount } = form;\r\n return {\r\n 'Form state': [\r\n {\r\n key: 'submitCount',\r\n value: submitCount.value,\r\n },\r\n {\r\n key: 'isSubmitting',\r\n value: isSubmitting.value,\r\n },\r\n {\r\n key: 'touched',\r\n value: meta.value.touched,\r\n },\r\n {\r\n key: 'dirty',\r\n value: meta.value.dirty,\r\n },\r\n {\r\n key: 'valid',\r\n value: meta.value.valid,\r\n },\r\n {\r\n key: 'initialValues',\r\n value: meta.value.initialValues,\r\n },\r\n {\r\n key: 'currentValues',\r\n value: values,\r\n },\r\n {\r\n key: 'errors',\r\n value: keysOf(errorBag.value).reduce((acc, key) => {\r\n var _a;\r\n const message = (_a = errorBag.value[key]) === null || _a === void 0 ? void 0 : _a[0];\r\n if (message) {\r\n acc[key] = message;\r\n }\r\n return acc;\r\n }, {}),\r\n },\r\n ],\r\n };\r\n}\r\n/**\r\n * Resolves the tag color based on the form state\r\n */\r\nfunction getTagTheme(fieldOrForm) {\r\n // const fallbackColors = {\r\n // bgColor: COLORS.unknown,\r\n // textColor: COLORS.white,\r\n // };\r\n const isValid = 'id' in fieldOrForm ? fieldOrForm.meta.valid : fieldOrForm.meta.value.valid;\r\n return {\r\n bgColor: isValid ? COLORS.success : COLORS.error,\r\n textColor: isValid ? COLORS.black : COLORS.white,\r\n };\r\n}\n\n/**\r\n * Creates a field composite.\r\n */\r\nfunction useField(name, rules, opts) {\r\n if (hasCheckedAttr(opts === null || opts === void 0 ? void 0 : opts.type)) {\r\n return useCheckboxField(name, rules, opts);\r\n }\r\n return _useField(name, rules, opts);\r\n}\r\nfunction _useField(name, rules, opts) {\r\n const { initialValue: modelValue, validateOnMount, bails, type, checkedValue, label, validateOnValueUpdate, uncheckedValue, controlled, keepValueOnUnmount, modelPropName, syncVModel, form: controlForm, } = normalizeOptions(unref(name), opts);\r\n const injectedForm = controlled ? injectWithSelf(FormContextKey) : undefined;\r\n const form = controlForm || injectedForm;\r\n // a flag indicating if the field is about to be removed/unmounted.\r\n let markedForRemoval = false;\r\n const { id, value, initialValue, meta, setState, errors, errorMessage } = useFieldState(name, {\r\n modelValue,\r\n form,\r\n });\r\n if (syncVModel) {\r\n useVModel({ value, prop: modelPropName, handleChange });\r\n }\r\n /**\r\n * Handles common onBlur meta update\r\n */\r\n const handleBlur = () => {\r\n meta.touched = true;\r\n };\r\n const normalizedRules = computed(() => {\r\n let rulesValue = unref(rules);\r\n const schema = unref(form === null || form === void 0 ? void 0 : form.schema);\r\n if (schema && !isYupValidator(schema)) {\r\n rulesValue = extractRuleFromSchema(schema, unref(name)) || rulesValue;\r\n }\r\n if (isYupValidator(rulesValue) || isCallable(rulesValue) || Array.isArray(rulesValue)) {\r\n return rulesValue;\r\n }\r\n return normalizeRules(rulesValue);\r\n });\r\n async function validateCurrentValue(mode) {\r\n var _a, _b;\r\n if (form === null || form === void 0 ? void 0 : form.validateSchema) {\r\n return (_a = (await form.validateSchema(mode)).results[unref(name)]) !== null && _a !== void 0 ? _a : { valid: true, errors: [] };\r\n }\r\n return validate(value.value, normalizedRules.value, {\r\n name: unref(name),\r\n label: unref(label),\r\n values: (_b = form === null || form === void 0 ? void 0 : form.values) !== null && _b !== void 0 ? _b : {},\r\n bails,\r\n });\r\n }\r\n const validateWithStateMutation = withLatest(async () => {\r\n meta.pending = true;\r\n meta.validated = true;\r\n return validateCurrentValue('validated-only');\r\n }, result => {\r\n if (markedForRemoval) {\r\n result.valid = true;\r\n result.errors = [];\r\n }\r\n setState({ errors: result.errors });\r\n meta.pending = false;\r\n return result;\r\n });\r\n const validateValidStateOnly = withLatest(async () => {\r\n return validateCurrentValue('silent');\r\n }, result => {\r\n if (markedForRemoval) {\r\n result.valid = true;\r\n }\r\n meta.valid = result.valid;\r\n return result;\r\n });\r\n function validate$1(opts) {\r\n if ((opts === null || opts === void 0 ? void 0 : opts.mode) === 'silent') {\r\n return validateValidStateOnly();\r\n }\r\n return validateWithStateMutation();\r\n }\r\n // Common input/change event handler\r\n function handleChange(e, shouldValidate = true) {\r\n const newValue = normalizeEventValue(e);\r\n value.value = newValue;\r\n if (!validateOnValueUpdate && shouldValidate) {\r\n validateWithStateMutation();\r\n }\r\n }\r\n // Runs the initial validation\r\n onMounted(() => {\r\n if (validateOnMount) {\r\n return validateWithStateMutation();\r\n }\r\n // validate self initially if no form was handling this\r\n // forms should have their own initial silent validation run to make things more efficient\r\n if (!form || !form.validateSchema) {\r\n validateValidStateOnly();\r\n }\r\n });\r\n function setTouched(isTouched) {\r\n meta.touched = isTouched;\r\n }\r\n let unwatchValue;\r\n let lastWatchedValue = klona(value.value);\r\n function watchValue() {\r\n unwatchValue = watch(value, (val, oldVal) => {\r\n if (isEqual(val, oldVal) && isEqual(val, lastWatchedValue)) {\r\n return;\r\n }\r\n const validateFn = validateOnValueUpdate ? validateWithStateMutation : validateValidStateOnly;\r\n validateFn();\r\n lastWatchedValue = klona(val);\r\n }, {\r\n deep: true,\r\n });\r\n }\r\n watchValue();\r\n function resetField(state) {\r\n var _a;\r\n unwatchValue === null || unwatchValue === void 0 ? void 0 : unwatchValue();\r\n const newValue = state && 'value' in state ? state.value : initialValue.value;\r\n setState({\r\n value: klona(newValue),\r\n initialValue: klona(newValue),\r\n touched: (_a = state === null || state === void 0 ? void 0 : state.touched) !== null && _a !== void 0 ? _a : false,\r\n errors: (state === null || state === void 0 ? void 0 : state.errors) || [],\r\n });\r\n meta.pending = false;\r\n meta.validated = false;\r\n validateValidStateOnly();\r\n // need to watch at next tick to avoid triggering the value watcher\r\n nextTick(() => {\r\n watchValue();\r\n });\r\n }\r\n function setValue(newValue) {\r\n value.value = newValue;\r\n }\r\n function setErrors(errors) {\r\n setState({ errors: Array.isArray(errors) ? errors : [errors] });\r\n }\r\n const field = {\r\n id,\r\n name,\r\n label,\r\n value,\r\n meta,\r\n errors,\r\n errorMessage,\r\n type,\r\n checkedValue,\r\n uncheckedValue,\r\n bails,\r\n keepValueOnUnmount,\r\n resetField,\r\n handleReset: () => resetField(),\r\n validate: validate$1,\r\n handleChange,\r\n handleBlur,\r\n setState,\r\n setTouched,\r\n setErrors,\r\n setValue,\r\n };\r\n provide(FieldContextKey, field);\r\n if (isRef(rules) && typeof unref(rules) !== 'function') {\r\n watch(rules, (value, oldValue) => {\r\n if (isEqual(value, oldValue)) {\r\n return;\r\n }\r\n meta.validated ? validateWithStateMutation() : validateValidStateOnly();\r\n }, {\r\n deep: true,\r\n });\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n field._vm = getCurrentInstance();\r\n watch(() => (Object.assign(Object.assign({ errors: errors.value }, meta), { value: value.value })), refreshInspector, {\r\n deep: true,\r\n });\r\n if (!form) {\r\n registerSingleFieldWithDevtools(field);\r\n }\r\n }\r\n // if no associated form return the field API immediately\r\n if (!form) {\r\n return field;\r\n }\r\n // associate the field with the given form\r\n form.register(field);\r\n onBeforeUnmount(() => {\r\n markedForRemoval = true;\r\n form.unregister(field);\r\n });\r\n // extract cross-field dependencies in a computed prop\r\n const dependencies = computed(() => {\r\n const rulesVal = normalizedRules.value;\r\n // is falsy, a function schema or a yup schema\r\n if (!rulesVal || isCallable(rulesVal) || isYupValidator(rulesVal) || Array.isArray(rulesVal)) {\r\n return {};\r\n }\r\n return Object.keys(rulesVal).reduce((acc, rule) => {\r\n const deps = extractLocators(rulesVal[rule])\r\n .map((dep) => dep.__locatorRef)\r\n .reduce((depAcc, depName) => {\r\n const depValue = getFromPath(form.values, depName) || form.values[depName];\r\n if (depValue !== undefined) {\r\n depAcc[depName] = depValue;\r\n }\r\n return depAcc;\r\n }, {});\r\n Object.assign(acc, deps);\r\n return acc;\r\n }, {});\r\n });\r\n // Adds a watcher that runs the validation whenever field dependencies change\r\n watch(dependencies, (deps, oldDeps) => {\r\n // Skip if no dependencies or if the field wasn't manipulated\r\n if (!Object.keys(deps).length) {\r\n return;\r\n }\r\n const shouldValidate = !isEqual(deps, oldDeps);\r\n if (shouldValidate) {\r\n meta.validated ? validateWithStateMutation() : validateValidStateOnly();\r\n }\r\n });\r\n return field;\r\n}\r\n/**\r\n * Normalizes partial field options to include the full options\r\n */\r\nfunction normalizeOptions(name, opts) {\r\n const defaults = () => ({\r\n initialValue: undefined,\r\n validateOnMount: false,\r\n bails: true,\r\n label: name,\r\n validateOnValueUpdate: true,\r\n keepValueOnUnmount: undefined,\r\n modelPropName: 'modelValue',\r\n syncVModel: true,\r\n controlled: true,\r\n });\r\n if (!opts) {\r\n return defaults();\r\n }\r\n // TODO: Deprecate this in next major release\r\n const checkedValue = 'valueProp' in opts ? opts.valueProp : opts.checkedValue;\r\n const controlled = 'standalone' in opts ? !opts.standalone : opts.controlled;\r\n return Object.assign(Object.assign(Object.assign({}, defaults()), (opts || {})), { controlled: controlled !== null && controlled !== void 0 ? controlled : true, checkedValue });\r\n}\r\n/**\r\n * Extracts the validation rules from a schema\r\n */\r\nfunction extractRuleFromSchema(schema, fieldName) {\r\n // no schema at all\r\n if (!schema) {\r\n return undefined;\r\n }\r\n // there is a key on the schema object for this field\r\n return schema[fieldName];\r\n}\r\nfunction useCheckboxField(name, rules, opts) {\r\n const form = !(opts === null || opts === void 0 ? void 0 : opts.standalone) ? injectWithSelf(FormContextKey) : undefined;\r\n const checkedValue = opts === null || opts === void 0 ? void 0 : opts.checkedValue;\r\n const uncheckedValue = opts === null || opts === void 0 ? void 0 : opts.uncheckedValue;\r\n function patchCheckboxApi(field) {\r\n const handleChange = field.handleChange;\r\n const checked = computed(() => {\r\n const currentValue = unref(field.value);\r\n const checkedVal = unref(checkedValue);\r\n return Array.isArray(currentValue)\r\n ? currentValue.findIndex(v => isEqual(v, checkedVal)) >= 0\r\n : isEqual(checkedVal, currentValue);\r\n });\r\n function handleCheckboxChange(e, shouldValidate = true) {\r\n var _a;\r\n if (checked.value === ((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.checked)) {\r\n if (shouldValidate) {\r\n field.validate();\r\n }\r\n return;\r\n }\r\n let newValue = normalizeEventValue(e);\r\n // Single checkbox field without a form to toggle it's value\r\n if (!form) {\r\n newValue = resolveNextCheckboxValue(unref(field.value), unref(checkedValue), unref(uncheckedValue));\r\n }\r\n handleChange(newValue, shouldValidate);\r\n }\r\n return Object.assign(Object.assign({}, field), { checked,\r\n checkedValue,\r\n uncheckedValue, handleChange: handleCheckboxChange });\r\n }\r\n return patchCheckboxApi(_useField(name, rules, opts));\r\n}\r\nfunction useVModel({ prop, value, handleChange }) {\r\n const vm = getCurrentInstance();\r\n /* istanbul ignore next */\r\n if (!vm) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n console.warn('Failed to setup model events because `useField` was not called in setup.');\r\n }\r\n return;\r\n }\r\n const propName = prop || 'modelValue';\r\n const emitName = `update:${propName}`;\r\n // Component doesn't have a model prop setup (must be defined on the props)\r\n if (!(propName in vm.props)) {\r\n return;\r\n }\r\n watch(value, newValue => {\r\n if (isEqual(newValue, getCurrentModelValue(vm, propName))) {\r\n return;\r\n }\r\n vm.emit(emitName, newValue);\r\n });\r\n watch(() => getCurrentModelValue(vm, propName), propValue => {\r\n if (propValue === IS_ABSENT && value.value === undefined) {\r\n return;\r\n }\r\n const newValue = propValue === IS_ABSENT ? undefined : propValue;\r\n if (isEqual(newValue, applyModelModifiers(value.value, vm.props.modelModifiers))) {\r\n return;\r\n }\r\n handleChange(newValue);\r\n });\r\n}\r\nfunction getCurrentModelValue(vm, propName) {\r\n return vm.props[propName];\r\n}\n\nconst FieldImpl = defineComponent({\r\n name: 'Field',\r\n inheritAttrs: false,\r\n props: {\r\n as: {\r\n type: [String, Object],\r\n default: undefined,\r\n },\r\n name: {\r\n type: String,\r\n required: true,\r\n },\r\n rules: {\r\n type: [Object, String, Function],\r\n default: undefined,\r\n },\r\n validateOnMount: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n validateOnBlur: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n validateOnChange: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n validateOnInput: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n validateOnModelUpdate: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n bails: {\r\n type: Boolean,\r\n default: () => getConfig().bails,\r\n },\r\n label: {\r\n type: String,\r\n default: undefined,\r\n },\r\n uncheckedValue: {\r\n type: null,\r\n default: undefined,\r\n },\r\n modelValue: {\r\n type: null,\r\n default: IS_ABSENT,\r\n },\r\n modelModifiers: {\r\n type: null,\r\n default: () => ({}),\r\n },\r\n 'onUpdate:modelValue': {\r\n type: null,\r\n default: undefined,\r\n },\r\n standalone: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n keepValue: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n },\r\n setup(props, ctx) {\r\n const rules = toRef(props, 'rules');\r\n const name = toRef(props, 'name');\r\n const label = toRef(props, 'label');\r\n const uncheckedValue = toRef(props, 'uncheckedValue');\r\n const keepValue = toRef(props, 'keepValue');\r\n const { errors, value, errorMessage, validate: validateField, handleChange, handleBlur, setTouched, resetField, handleReset, meta, checked, setErrors, } = useField(name, rules, {\r\n validateOnMount: props.validateOnMount,\r\n bails: props.bails,\r\n standalone: props.standalone,\r\n type: ctx.attrs.type,\r\n initialValue: resolveInitialValue(props, ctx),\r\n // Only for checkboxes and radio buttons\r\n checkedValue: ctx.attrs.value,\r\n uncheckedValue,\r\n label,\r\n validateOnValueUpdate: false,\r\n keepValueOnUnmount: keepValue,\r\n });\r\n // If there is a v-model applied on the component we need to emit the `update:modelValue` whenever the value binding changes\r\n const onChangeHandler = function handleChangeWithModel(e, shouldValidate = true) {\r\n handleChange(e, shouldValidate);\r\n ctx.emit('update:modelValue', value.value);\r\n };\r\n const handleInput = (e) => {\r\n if (!hasCheckedAttr(ctx.attrs.type)) {\r\n value.value = normalizeEventValue(e);\r\n }\r\n };\r\n const onInputHandler = function handleInputWithModel(e) {\r\n handleInput(e);\r\n ctx.emit('update:modelValue', value.value);\r\n };\r\n const fieldProps = computed(() => {\r\n const { validateOnInput, validateOnChange, validateOnBlur, validateOnModelUpdate } = resolveValidationTriggers(props);\r\n const baseOnBlur = [handleBlur, ctx.attrs.onBlur, validateOnBlur ? validateField : undefined].filter(Boolean);\r\n const baseOnInput = [(e) => onChangeHandler(e, validateOnInput), ctx.attrs.onInput].filter(Boolean);\r\n const baseOnChange = [(e) => onChangeHandler(e, validateOnChange), ctx.attrs.onChange].filter(Boolean);\r\n const attrs = {\r\n name: props.name,\r\n onBlur: baseOnBlur,\r\n onInput: baseOnInput,\r\n onChange: baseOnChange,\r\n };\r\n attrs['onUpdate:modelValue'] = e => onChangeHandler(e, validateOnModelUpdate);\r\n if (hasCheckedAttr(ctx.attrs.type) && checked) {\r\n attrs.checked = checked.value;\r\n }\r\n const tag = resolveTag(props, ctx);\r\n if (shouldHaveValueBinding(tag, ctx.attrs)) {\r\n attrs.value = value.value;\r\n }\r\n return attrs;\r\n });\r\n function slotProps() {\r\n return {\r\n field: fieldProps.value,\r\n value: value.value,\r\n meta,\r\n errors: errors.value,\r\n errorMessage: errorMessage.value,\r\n validate: validateField,\r\n resetField,\r\n handleChange: onChangeHandler,\r\n handleInput: onInputHandler,\r\n handleReset,\r\n handleBlur,\r\n setTouched,\r\n setErrors,\r\n };\r\n }\r\n ctx.expose({\r\n setErrors,\r\n setTouched,\r\n reset: resetField,\r\n validate: validateField,\r\n handleChange,\r\n });\r\n return () => {\r\n const tag = resolveDynamicComponent(resolveTag(props, ctx));\r\n const children = normalizeChildren(tag, ctx, slotProps);\r\n if (tag) {\r\n return h(tag, Object.assign(Object.assign({}, ctx.attrs), fieldProps.value), children);\r\n }\r\n return children;\r\n };\r\n },\r\n});\r\nfunction resolveTag(props, ctx) {\r\n let tag = props.as || '';\r\n if (!props.as && !ctx.slots.default) {\r\n tag = 'input';\r\n }\r\n return tag;\r\n}\r\nfunction resolveValidationTriggers(props) {\r\n var _a, _b, _c, _d;\r\n const { validateOnInput, validateOnChange, validateOnBlur, validateOnModelUpdate } = getConfig();\r\n return {\r\n validateOnInput: (_a = props.validateOnInput) !== null && _a !== void 0 ? _a : validateOnInput,\r\n validateOnChange: (_b = props.validateOnChange) !== null && _b !== void 0 ? _b : validateOnChange,\r\n validateOnBlur: (_c = props.validateOnBlur) !== null && _c !== void 0 ? _c : validateOnBlur,\r\n validateOnModelUpdate: (_d = props.validateOnModelUpdate) !== null && _d !== void 0 ? _d : validateOnModelUpdate,\r\n };\r\n}\r\nfunction resolveInitialValue(props, ctx) {\r\n // Gets the initial value either from `value` prop/attr or `v-model` binding (modelValue)\r\n // For checkboxes and radio buttons it will always be the model value not the `value` attribute\r\n if (!hasCheckedAttr(ctx.attrs.type)) {\r\n return isPropPresent(props, 'modelValue') ? props.modelValue : ctx.attrs.value;\r\n }\r\n return isPropPresent(props, 'modelValue') ? props.modelValue : undefined;\r\n}\r\nconst Field = FieldImpl;\n\nlet FORM_COUNTER = 0;\r\nfunction useForm(opts) {\r\n var _a;\r\n const formId = FORM_COUNTER++;\r\n const controlledModelPaths = new Set();\r\n // Prevents fields from double resetting their values, which causes checkboxes to toggle their initial value\r\n // TODO: This won't be needed if we centralize all the state inside the `form` for form inputs\r\n let RESET_LOCK = false;\r\n // A lookup containing fields or field groups\r\n const fieldsByPath = ref({});\r\n // If the form is currently submitting\r\n const isSubmitting = ref(false);\r\n // The number of times the user tried to submit the form\r\n const submitCount = ref(0);\r\n // field arrays managed by this form\r\n const fieldArrays = [];\r\n // a private ref for all form values\r\n const formValues = reactive(klona(unref(opts === null || opts === void 0 ? void 0 : opts.initialValues) || {}));\r\n // the source of errors for the form fields\r\n const { errorBag, setErrorBag, setFieldErrorBag } = useErrorBag(opts === null || opts === void 0 ? void 0 : opts.initialErrors);\r\n // Gets the first error of each field\r\n const errors = computed(() => {\r\n return keysOf(errorBag.value).reduce((acc, key) => {\r\n const bag = errorBag.value[key];\r\n if (bag && bag.length) {\r\n acc[key] = bag[0];\r\n }\r\n return acc;\r\n }, {});\r\n });\r\n function getFirstFieldAtPath(path) {\r\n const fieldOrGroup = fieldsByPath.value[path];\r\n return Array.isArray(fieldOrGroup) ? fieldOrGroup[0] : fieldOrGroup;\r\n }\r\n function fieldExists(path) {\r\n return !!fieldsByPath.value[path];\r\n }\r\n /**\r\n * Holds a computed reference to all fields names and labels\r\n */\r\n const fieldNames = computed(() => {\r\n return keysOf(fieldsByPath.value).reduce((names, path) => {\r\n const field = getFirstFieldAtPath(path);\r\n if (field) {\r\n names[path] = { name: unref(field.name) || '', label: unref(field.label) || '' };\r\n }\r\n return names;\r\n }, {});\r\n });\r\n const fieldBailsMap = computed(() => {\r\n return keysOf(fieldsByPath.value).reduce((map, path) => {\r\n var _a;\r\n const field = getFirstFieldAtPath(path);\r\n if (field) {\r\n map[path] = (_a = field.bails) !== null && _a !== void 0 ? _a : true;\r\n }\r\n return map;\r\n }, {});\r\n });\r\n // mutable non-reactive reference to initial errors\r\n // we need this to process initial errors then unset them\r\n const initialErrors = Object.assign({}, ((opts === null || opts === void 0 ? void 0 : opts.initialErrors) || {}));\r\n const keepValuesOnUnmount = (_a = opts === null || opts === void 0 ? void 0 : opts.keepValuesOnUnmount) !== null && _a !== void 0 ? _a : false;\r\n // initial form values\r\n const { initialValues, originalInitialValues, setInitialValues } = useFormInitialValues(fieldsByPath, formValues, opts === null || opts === void 0 ? void 0 : opts.initialValues);\r\n // form meta aggregations\r\n const meta = useFormMeta(fieldsByPath, formValues, originalInitialValues, errors);\r\n const controlledValues = computed(() => {\r\n return [...controlledModelPaths, ...keysOf(fieldsByPath.value)].reduce((acc, path) => {\r\n const value = getFromPath(formValues, path);\r\n setInPath(acc, path, value);\r\n return acc;\r\n }, {});\r\n });\r\n const schema = opts === null || opts === void 0 ? void 0 : opts.validationSchema;\r\n /**\r\n * Batches validation runs in 5ms batches\r\n * Must have two distinct batch queues to make sure they don't override each other settings #3783\r\n */\r\n const debouncedSilentValidation = debounceAsync(_validateSchema, 5);\r\n const debouncedValidation = debounceAsync(_validateSchema, 5);\r\n const validateSchema = withLatest(async (mode) => {\r\n return (await mode) === 'silent' ? debouncedSilentValidation() : debouncedValidation();\r\n }, (formResult, [mode]) => {\r\n // fields by id lookup\r\n const fieldsById = formCtx.fieldsByPath.value || {};\r\n // errors fields names, we need it to also check if custom errors are updated\r\n const currentErrorsPaths = keysOf(formCtx.errorBag.value);\r\n // collect all the keys from the schema and all fields\r\n // this ensures we have a complete keymap of all the fields\r\n const paths = [\r\n ...new Set([...keysOf(formResult.results), ...keysOf(fieldsById), ...currentErrorsPaths]),\r\n ];\r\n // aggregates the paths into a single result object while applying the results on the fields\r\n return paths.reduce((validation, path) => {\r\n const field = fieldsById[path];\r\n const messages = (formResult.results[path] || { errors: [] }).errors;\r\n const fieldResult = {\r\n errors: messages,\r\n valid: !messages.length,\r\n };\r\n validation.results[path] = fieldResult;\r\n if (!fieldResult.valid) {\r\n validation.errors[path] = fieldResult.errors[0];\r\n }\r\n // field not rendered\r\n if (!field) {\r\n setFieldError(path, messages);\r\n return validation;\r\n }\r\n // always update the valid flag regardless of the mode\r\n applyFieldMutation(field, f => (f.meta.valid = fieldResult.valid));\r\n if (mode === 'silent') {\r\n return validation;\r\n }\r\n const wasValidated = Array.isArray(field) ? field.some(f => f.meta.validated) : field.meta.validated;\r\n if (mode === 'validated-only' && !wasValidated) {\r\n return validation;\r\n }\r\n applyFieldMutation(field, f => f.setState({ errors: fieldResult.errors }));\r\n return validation;\r\n }, { valid: formResult.valid, results: {}, errors: {} });\r\n });\r\n function makeSubmissionFactory(onlyControlled) {\r\n return function submitHandlerFactory(fn, onValidationError) {\r\n return function submissionHandler(e) {\r\n if (e instanceof Event) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n // Touch all fields\r\n setTouched(keysOf(fieldsByPath.value).reduce((acc, field) => {\r\n acc[field] = true;\r\n return acc;\r\n }, {}));\r\n isSubmitting.value = true;\r\n submitCount.value++;\r\n return validate()\r\n .then(result => {\r\n const values = klona(formValues);\r\n if (result.valid && typeof fn === 'function') {\r\n const controlled = klona(controlledValues.value);\r\n return fn(onlyControlled ? controlled : values, {\r\n evt: e,\r\n controlledValues: controlled,\r\n setErrors,\r\n setFieldError,\r\n setTouched,\r\n setFieldTouched,\r\n setValues,\r\n setFieldValue,\r\n resetForm,\r\n resetField,\r\n });\r\n }\r\n if (!result.valid && typeof onValidationError === 'function') {\r\n onValidationError({\r\n values,\r\n evt: e,\r\n errors: result.errors,\r\n results: result.results,\r\n });\r\n }\r\n })\r\n .then(returnVal => {\r\n isSubmitting.value = false;\r\n return returnVal;\r\n }, err => {\r\n isSubmitting.value = false;\r\n // re-throw the err so it doesn't go silent\r\n throw err;\r\n });\r\n };\r\n };\r\n }\r\n const handleSubmitImpl = makeSubmissionFactory(false);\r\n const handleSubmit = handleSubmitImpl;\r\n handleSubmit.withControlled = makeSubmissionFactory(true);\r\n const formCtx = {\r\n formId,\r\n fieldsByPath,\r\n values: formValues,\r\n controlledValues,\r\n errorBag,\r\n errors,\r\n schema,\r\n submitCount,\r\n meta,\r\n isSubmitting,\r\n fieldArrays,\r\n keepValuesOnUnmount,\r\n validateSchema: unref(schema) ? validateSchema : undefined,\r\n validate,\r\n register: registerField,\r\n unregister: unregisterField,\r\n setFieldErrorBag,\r\n validateField,\r\n setFieldValue,\r\n setValues,\r\n setErrors,\r\n setFieldError,\r\n setFieldTouched,\r\n setTouched,\r\n resetForm,\r\n resetField,\r\n handleSubmit,\r\n stageInitialValue,\r\n unsetInitialValue,\r\n setFieldInitialValue,\r\n useFieldModel,\r\n };\r\n function isFieldGroup(fieldOrGroup) {\r\n return Array.isArray(fieldOrGroup);\r\n }\r\n function applyFieldMutation(fieldOrGroup, mutation) {\r\n if (Array.isArray(fieldOrGroup)) {\r\n return fieldOrGroup.forEach(mutation);\r\n }\r\n return mutation(fieldOrGroup);\r\n }\r\n function mutateAllFields(mutation) {\r\n Object.values(fieldsByPath.value).forEach(field => {\r\n if (!field) {\r\n return;\r\n }\r\n // avoid resetting the field values, because they should've been reset already.\r\n applyFieldMutation(field, mutation);\r\n });\r\n }\r\n /**\r\n * Manually sets an error message on a specific field\r\n */\r\n function setFieldError(field, message) {\r\n setFieldErrorBag(field, message);\r\n }\r\n /**\r\n * Sets errors for the fields specified in the object\r\n */\r\n function setErrors(fields) {\r\n setErrorBag(fields);\r\n }\r\n /**\r\n * Sets a single field value\r\n */\r\n function setFieldValue(field, value, { force } = { force: false }) {\r\n var _a;\r\n const fieldInstance = fieldsByPath.value[field];\r\n const clonedValue = klona(value);\r\n // field wasn't found, create a virtual field as a placeholder\r\n if (!fieldInstance) {\r\n setInPath(formValues, field, clonedValue);\r\n return;\r\n }\r\n if (isFieldGroup(fieldInstance) && ((_a = fieldInstance[0]) === null || _a === void 0 ? void 0 : _a.type) === 'checkbox' && !Array.isArray(value)) {\r\n // Multiple checkboxes, and only one of them got updated\r\n const newValue = klona(resolveNextCheckboxValue(getFromPath(formValues, field) || [], value, undefined));\r\n setInPath(formValues, field, newValue);\r\n return;\r\n }\r\n let newValue = clonedValue;\r\n // Single Checkbox: toggles the field value unless the field is being reset then force it\r\n if (!isFieldGroup(fieldInstance) && fieldInstance.type === 'checkbox' && !force && !RESET_LOCK) {\r\n newValue = klona(resolveNextCheckboxValue(getFromPath(formValues, field), value, unref(fieldInstance.uncheckedValue)));\r\n }\r\n setInPath(formValues, field, newValue);\r\n }\r\n /**\r\n * Sets multiple fields values\r\n */\r\n function setValues(fields) {\r\n // clean up old values\r\n keysOf(formValues).forEach(key => {\r\n delete formValues[key];\r\n });\r\n // set up new values\r\n keysOf(fields).forEach(path => {\r\n setFieldValue(path, fields[path]);\r\n });\r\n // regenerate the arrays when the form values change\r\n fieldArrays.forEach(f => f && f.reset());\r\n }\r\n function createModel(path) {\r\n const { value } = _useFieldValue(path, undefined, formCtx);\r\n watch(value, () => {\r\n if (!fieldExists(unref(path))) {\r\n validate({ mode: 'validated-only' });\r\n }\r\n }, {\r\n deep: true,\r\n });\r\n controlledModelPaths.add(unref(path));\r\n return value;\r\n }\r\n function useFieldModel(path) {\r\n if (!Array.isArray(path)) {\r\n return createModel(path);\r\n }\r\n return path.map(createModel);\r\n }\r\n /**\r\n * Sets the touched meta state on a field\r\n */\r\n function setFieldTouched(field, isTouched) {\r\n const fieldInstance = fieldsByPath.value[field];\r\n if (fieldInstance) {\r\n applyFieldMutation(fieldInstance, f => f.setTouched(isTouched));\r\n }\r\n }\r\n /**\r\n * Sets the touched meta state on multiple fields\r\n */\r\n function setTouched(fields) {\r\n keysOf(fields).forEach(field => {\r\n setFieldTouched(field, !!fields[field]);\r\n });\r\n }\r\n function resetField(field, state) {\r\n const fieldInstance = fieldsByPath.value[field];\r\n if (fieldInstance) {\r\n applyFieldMutation(fieldInstance, f => f.resetField(state));\r\n }\r\n }\r\n /**\r\n * Resets all fields\r\n */\r\n function resetForm(state) {\r\n RESET_LOCK = true;\r\n // Reset all field states first\r\n mutateAllFields(f => f.resetField());\r\n // reset values\r\n const newValues = (state === null || state === void 0 ? void 0 : state.values) ? state.values : originalInitialValues.value;\r\n setInitialValues(newValues);\r\n setValues(newValues);\r\n if (state === null || state === void 0 ? void 0 : state.touched) {\r\n setTouched(state.touched);\r\n }\r\n setErrors((state === null || state === void 0 ? void 0 : state.errors) || {});\r\n submitCount.value = (state === null || state === void 0 ? void 0 : state.submitCount) || 0;\r\n nextTick(() => {\r\n RESET_LOCK = false;\r\n });\r\n }\r\n function insertFieldAtPath(field, path) {\r\n const rawField = markRaw(field);\r\n const fieldPath = path;\r\n // first field at that path\r\n if (!fieldsByPath.value[fieldPath]) {\r\n fieldsByPath.value[fieldPath] = rawField;\r\n return;\r\n }\r\n const fieldAtPath = fieldsByPath.value[fieldPath];\r\n if (fieldAtPath && !Array.isArray(fieldAtPath)) {\r\n fieldsByPath.value[fieldPath] = [fieldAtPath];\r\n }\r\n // add the new array to that path\r\n fieldsByPath.value[fieldPath] = [...fieldsByPath.value[fieldPath], rawField];\r\n }\r\n function removeFieldFromPath(field, path) {\r\n const fieldPath = path;\r\n const fieldAtPath = fieldsByPath.value[fieldPath];\r\n if (!fieldAtPath) {\r\n return;\r\n }\r\n // same field at path\r\n if (!isFieldGroup(fieldAtPath) && field.id === fieldAtPath.id) {\r\n delete fieldsByPath.value[fieldPath];\r\n return;\r\n }\r\n if (isFieldGroup(fieldAtPath)) {\r\n const idx = fieldAtPath.findIndex(f => f.id === field.id);\r\n if (idx === -1) {\r\n return;\r\n }\r\n fieldAtPath.splice(idx, 1);\r\n if (!fieldAtPath.length) {\r\n delete fieldsByPath.value[fieldPath];\r\n }\r\n }\r\n }\r\n function registerField(field) {\r\n const fieldPath = unref(field.name);\r\n insertFieldAtPath(field, fieldPath);\r\n if (isRef(field.name)) {\r\n // ensures when a field's name was already taken that it preserves its same value\r\n // necessary for fields generated by loops\r\n watch(field.name, async (newPath, oldPath) => {\r\n // cache the value\r\n await nextTick();\r\n removeFieldFromPath(field, oldPath);\r\n insertFieldAtPath(field, newPath);\r\n // re-validate if either path had errors before\r\n if (errors.value[oldPath] || errors.value[newPath]) {\r\n // clear up both paths errors\r\n setFieldError(oldPath, undefined);\r\n validateField(newPath);\r\n }\r\n // clean up the old path if no other field is sharing that name\r\n // #3325\r\n await nextTick();\r\n if (!fieldExists(oldPath)) {\r\n unsetPath(formValues, oldPath);\r\n }\r\n });\r\n }\r\n // if field already had errors (initial errors) that's not user-set, validate it again to ensure state is correct\r\n // the difference being that `initialErrors` will contain the error message while other errors (pre-validated schema) won't have them as initial errors\r\n // #3342\r\n const initialErrorMessage = unref(field.errorMessage);\r\n if (initialErrorMessage && (initialErrors === null || initialErrors === void 0 ? void 0 : initialErrors[fieldPath]) !== initialErrorMessage) {\r\n validateField(fieldPath);\r\n }\r\n // marks the initial error as \"consumed\" so it won't be matched later with same non-initial error\r\n delete initialErrors[fieldPath];\r\n }\r\n function unregisterField(field) {\r\n const fieldName = unref(field.name);\r\n const fieldInstance = fieldsByPath.value[fieldName];\r\n const isGroup = !!fieldInstance && isFieldGroup(fieldInstance);\r\n removeFieldFromPath(field, fieldName);\r\n // clears a field error on unmounted\r\n // we wait till next tick to make sure if the field is completely removed and doesn't have any siblings like checkboxes\r\n nextTick(() => {\r\n var _a;\r\n const shouldKeepValue = (_a = unref(field.keepValueOnUnmount)) !== null && _a !== void 0 ? _a : unref(keepValuesOnUnmount);\r\n const currentGroupValue = getFromPath(formValues, fieldName);\r\n // The boolean here is we check if the field still belongs to the same control group with that name\r\n // if another group claimed the name, we should avoid handling it since it is no longer the same group\r\n // this happens with `v-for` over some checkboxes and field arrays.\r\n // also if the group no longer exist we can assume this group was the last one that controlled it\r\n const isSameGroup = isGroup && (fieldInstance === fieldsByPath.value[fieldName] || !fieldsByPath.value[fieldName]);\r\n // group field that still has a dangling value, the field may exist or not after it was removed.\r\n // This used to be handled in the useField composable but the form has better context on when it should/not happen.\r\n // if it does belong to it that means the group still exists\r\n // #3844\r\n if (isSameGroup && !shouldKeepValue) {\r\n if (Array.isArray(currentGroupValue)) {\r\n const valueIdx = currentGroupValue.findIndex(i => isEqual(i, unref(field.checkedValue)));\r\n if (valueIdx > -1) {\r\n const newVal = [...currentGroupValue];\r\n newVal.splice(valueIdx, 1);\r\n setFieldValue(fieldName, newVal, { force: true });\r\n }\r\n }\r\n else if (currentGroupValue === unref(field.checkedValue)) {\r\n // Remove field if it is a group but does not have an array value, like for radio inputs #3963\r\n unsetPath(formValues, fieldName);\r\n }\r\n }\r\n // Field was removed entirely, we should unset its path\r\n // #3384\r\n if (!fieldExists(fieldName)) {\r\n setFieldError(fieldName, undefined);\r\n // Checks if the field was configured to be unset during unmount or not\r\n // Checks both the form-level config and field-level one\r\n // Field has the priority if it is set, otherwise it goes to the form settings\r\n if (shouldKeepValue) {\r\n return;\r\n }\r\n // Don't apply emptyContainer check unless the current group value is an array\r\n if (isGroup && Array.isArray(currentGroupValue) && !isEmptyContainer(currentGroupValue)) {\r\n return;\r\n }\r\n unsetPath(formValues, fieldName);\r\n }\r\n });\r\n }\r\n async function validate(opts) {\r\n const mode = (opts === null || opts === void 0 ? void 0 : opts.mode) || 'force';\r\n if (mode === 'force') {\r\n mutateAllFields(f => (f.meta.validated = true));\r\n }\r\n if (formCtx.validateSchema) {\r\n return formCtx.validateSchema(mode);\r\n }\r\n // No schema, each field is responsible to validate itself\r\n const validations = await Promise.all(Object.values(fieldsByPath.value).map(field => {\r\n const fieldInstance = Array.isArray(field) ? field[0] : field;\r\n if (!fieldInstance) {\r\n return Promise.resolve({ key: '', valid: true, errors: [] });\r\n }\r\n return fieldInstance.validate(opts).then((result) => {\r\n return {\r\n key: unref(fieldInstance.name),\r\n valid: result.valid,\r\n errors: result.errors,\r\n };\r\n });\r\n }));\r\n const results = {};\r\n const errors = {};\r\n for (const validation of validations) {\r\n results[validation.key] = {\r\n valid: validation.valid,\r\n errors: validation.errors,\r\n };\r\n if (validation.errors.length) {\r\n errors[validation.key] = validation.errors[0];\r\n }\r\n }\r\n return {\r\n valid: validations.every(r => r.valid),\r\n results,\r\n errors,\r\n };\r\n }\r\n async function validateField(field) {\r\n const fieldInstance = fieldsByPath.value[field];\r\n if (!fieldInstance) {\r\n warn$1(`field with name ${field} was not found`);\r\n return Promise.resolve({ errors: [], valid: true });\r\n }\r\n if (Array.isArray(fieldInstance)) {\r\n return fieldInstance.map(f => f.validate())[0];\r\n }\r\n return fieldInstance.validate();\r\n }\r\n function unsetInitialValue(path) {\r\n unsetPath(initialValues.value, path);\r\n }\r\n /**\r\n * Sneaky function to set initial field values\r\n */\r\n function stageInitialValue(path, value, updateOriginal = false) {\r\n setInPath(formValues, path, value);\r\n setFieldInitialValue(path, value);\r\n if (updateOriginal && !(opts === null || opts === void 0 ? void 0 : opts.initialValues)) {\r\n setInPath(originalInitialValues.value, path, klona(value));\r\n }\r\n }\r\n function setFieldInitialValue(path, value) {\r\n setInPath(initialValues.value, path, klona(value));\r\n }\r\n async function _validateSchema() {\r\n const schemaValue = unref(schema);\r\n if (!schemaValue) {\r\n return { valid: true, results: {}, errors: {} };\r\n }\r\n const formResult = isYupValidator(schemaValue)\r\n ? await validateYupSchema(schemaValue, formValues)\r\n : await validateObjectSchema(schemaValue, formValues, {\r\n names: fieldNames.value,\r\n bailsMap: fieldBailsMap.value,\r\n });\r\n return formResult;\r\n }\r\n const submitForm = handleSubmit((_, { evt }) => {\r\n if (isFormSubmitEvent(evt)) {\r\n evt.target.submit();\r\n }\r\n });\r\n // Trigger initial validation\r\n onMounted(() => {\r\n if (opts === null || opts === void 0 ? void 0 : opts.initialErrors) {\r\n setErrors(opts.initialErrors);\r\n }\r\n if (opts === null || opts === void 0 ? void 0 : opts.initialTouched) {\r\n setTouched(opts.initialTouched);\r\n }\r\n // if validate on mount was enabled\r\n if (opts === null || opts === void 0 ? void 0 : opts.validateOnMount) {\r\n validate();\r\n return;\r\n }\r\n // otherwise run initial silent validation through schema if available\r\n // the useField should skip their own silent validation if a yup schema is present\r\n if (formCtx.validateSchema) {\r\n formCtx.validateSchema('silent');\r\n }\r\n });\r\n if (isRef(schema)) {\r\n watch(schema, () => {\r\n var _a;\r\n (_a = formCtx.validateSchema) === null || _a === void 0 ? void 0 : _a.call(formCtx, 'validated-only');\r\n });\r\n }\r\n // Provide injections\r\n provide(FormContextKey, formCtx);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n registerFormWithDevTools(formCtx);\r\n watch(() => (Object.assign(Object.assign({ errors: errorBag.value }, meta.value), { values: formValues, isSubmitting: isSubmitting.value, submitCount: submitCount.value })), refreshInspector, {\r\n deep: true,\r\n });\r\n }\r\n return Object.assign(Object.assign({}, formCtx), { handleReset: () => resetForm(), submitForm });\r\n}\r\n/**\r\n * Manages form meta aggregation\r\n */\r\nfunction useFormMeta(fieldsByPath, currentValues, initialValues, errors) {\r\n const MERGE_STRATEGIES = {\r\n touched: 'some',\r\n pending: 'some',\r\n valid: 'every',\r\n };\r\n const isDirty = computed(() => {\r\n return !isEqual(currentValues, unref(initialValues));\r\n });\r\n function calculateFlags() {\r\n const fields = Object.values(fieldsByPath.value).flat(1).filter(Boolean);\r\n return keysOf(MERGE_STRATEGIES).reduce((acc, flag) => {\r\n const mergeMethod = MERGE_STRATEGIES[flag];\r\n acc[flag] = fields[mergeMethod](field => field.meta[flag]);\r\n return acc;\r\n }, {});\r\n }\r\n const flags = reactive(calculateFlags());\r\n watchEffect(() => {\r\n const value = calculateFlags();\r\n flags.touched = value.touched;\r\n flags.valid = value.valid;\r\n flags.pending = value.pending;\r\n });\r\n return computed(() => {\r\n return Object.assign(Object.assign({ initialValues: unref(initialValues) }, flags), { valid: flags.valid && !keysOf(errors.value).length, dirty: isDirty.value });\r\n });\r\n}\r\n/**\r\n * Manages the initial values prop\r\n */\r\nfunction useFormInitialValues(fields, formValues, providedValues) {\r\n // these are the mutable initial values as the fields are mounted/unmounted\r\n const initialValues = ref(klona(unref(providedValues)) || {});\r\n // these are the original initial value as provided by the user initially, they don't keep track of conditional fields\r\n // this is important because some conditional fields will overwrite the initial values for other fields who had the same name\r\n // like array fields, any push/insert operation will overwrite the initial values because they \"create new fields\"\r\n // so these are the values that the reset function should use\r\n // these only change when the user explicitly chanegs the initial values or when the user resets them with new values.\r\n const originalInitialValues = ref(klona(unref(providedValues)) || {});\r\n function setInitialValues(values, updateFields = false) {\r\n initialValues.value = klona(values);\r\n originalInitialValues.value = klona(values);\r\n if (!updateFields) {\r\n return;\r\n }\r\n // update the pristine non-touched fields\r\n // those are excluded because it's unlikely you want to change the form values using initial values\r\n // we mostly watch them for API population or newly inserted fields\r\n // if the user API is taking too much time before user interaction they should consider disabling or hiding their inputs until the values are ready\r\n keysOf(fields.value).forEach(fieldPath => {\r\n const field = fields.value[fieldPath];\r\n const wasTouched = Array.isArray(field) ? field.some(f => f.meta.touched) : field === null || field === void 0 ? void 0 : field.meta.touched;\r\n if (!field || wasTouched) {\r\n return;\r\n }\r\n const newValue = getFromPath(initialValues.value, fieldPath);\r\n setInPath(formValues, fieldPath, klona(newValue));\r\n });\r\n }\r\n if (isRef(providedValues)) {\r\n watch(providedValues, value => {\r\n setInitialValues(value, true);\r\n }, {\r\n deep: true,\r\n });\r\n }\r\n return {\r\n initialValues,\r\n originalInitialValues,\r\n setInitialValues,\r\n };\r\n}\r\nfunction useErrorBag(initialErrors) {\r\n const errorBag = ref({});\r\n function normalizeErrorItem(message) {\r\n return Array.isArray(message) ? message : message ? [message] : [];\r\n }\r\n /**\r\n * Manually sets an error message on a specific field\r\n */\r\n function setFieldErrorBag(field, message) {\r\n if (!message) {\r\n delete errorBag.value[field];\r\n return;\r\n }\r\n errorBag.value[field] = normalizeErrorItem(message);\r\n }\r\n /**\r\n * Sets errors for the fields specified in the object\r\n */\r\n function setErrorBag(fields) {\r\n errorBag.value = keysOf(fields).reduce((acc, key) => {\r\n const message = fields[key];\r\n if (message) {\r\n acc[key] = normalizeErrorItem(message);\r\n }\r\n return acc;\r\n }, {});\r\n }\r\n if (initialErrors) {\r\n setErrorBag(initialErrors);\r\n }\r\n return {\r\n errorBag,\r\n setErrorBag,\r\n setFieldErrorBag,\r\n };\r\n}\n\nconst FormImpl = defineComponent({\r\n name: 'Form',\r\n inheritAttrs: false,\r\n props: {\r\n as: {\r\n type: String,\r\n default: 'form',\r\n },\r\n validationSchema: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n initialValues: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n initialErrors: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n initialTouched: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n validateOnMount: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n onSubmit: {\r\n type: Function,\r\n default: undefined,\r\n },\r\n onInvalidSubmit: {\r\n type: Function,\r\n default: undefined,\r\n },\r\n keepValues: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n setup(props, ctx) {\r\n const initialValues = toRef(props, 'initialValues');\r\n const validationSchema = toRef(props, 'validationSchema');\r\n const keepValues = toRef(props, 'keepValues');\r\n const { errors, values, meta, isSubmitting, submitCount, controlledValues, validate, validateField, handleReset, resetForm, handleSubmit, setErrors, setFieldError, setFieldValue, setValues, setFieldTouched, setTouched, resetField, } = useForm({\r\n validationSchema: validationSchema.value ? validationSchema : undefined,\r\n initialValues,\r\n initialErrors: props.initialErrors,\r\n initialTouched: props.initialTouched,\r\n validateOnMount: props.validateOnMount,\r\n keepValuesOnUnmount: keepValues,\r\n });\r\n const submitForm = handleSubmit((_, { evt }) => {\r\n if (isFormSubmitEvent(evt)) {\r\n evt.target.submit();\r\n }\r\n }, props.onInvalidSubmit);\r\n const onSubmit = props.onSubmit ? handleSubmit(props.onSubmit, props.onInvalidSubmit) : submitForm;\r\n function handleFormReset(e) {\r\n if (isEvent(e)) {\r\n // Prevent default form reset behavior\r\n e.preventDefault();\r\n }\r\n handleReset();\r\n if (typeof ctx.attrs.onReset === 'function') {\r\n ctx.attrs.onReset();\r\n }\r\n }\r\n function handleScopedSlotSubmit(evt, onSubmit) {\r\n const onSuccess = typeof evt === 'function' && !onSubmit ? evt : onSubmit;\r\n return handleSubmit(onSuccess, props.onInvalidSubmit)(evt);\r\n }\r\n function getValues() {\r\n return klona(values);\r\n }\r\n function getMeta() {\r\n return klona(meta.value);\r\n }\r\n function getErrors() {\r\n return klona(errors.value);\r\n }\r\n function slotProps() {\r\n return {\r\n meta: meta.value,\r\n errors: errors.value,\r\n values: values,\r\n isSubmitting: isSubmitting.value,\r\n submitCount: submitCount.value,\r\n controlledValues: controlledValues.value,\r\n validate,\r\n validateField,\r\n handleSubmit: handleScopedSlotSubmit,\r\n handleReset,\r\n submitForm,\r\n setErrors,\r\n setFieldError,\r\n setFieldValue,\r\n setValues,\r\n setFieldTouched,\r\n setTouched,\r\n resetForm,\r\n resetField,\r\n getValues,\r\n getMeta,\r\n getErrors,\r\n };\r\n }\r\n // expose these functions and methods as part of public API\r\n ctx.expose({\r\n setFieldError,\r\n setErrors,\r\n setFieldValue,\r\n setValues,\r\n setFieldTouched,\r\n setTouched,\r\n resetForm,\r\n validate,\r\n validateField,\r\n resetField,\r\n getValues,\r\n getMeta,\r\n getErrors,\r\n });\r\n return function renderForm() {\r\n // avoid resolving the form component as itself\r\n const tag = props.as === 'form' ? props.as : resolveDynamicComponent(props.as);\r\n const children = normalizeChildren(tag, ctx, slotProps);\r\n if (!props.as) {\r\n return children;\r\n }\r\n // Attributes to add on a native `form` tag\r\n const formAttrs = props.as === 'form'\r\n ? {\r\n // Disables native validation as vee-validate will handle it.\r\n novalidate: true,\r\n }\r\n : {};\r\n return h(tag, Object.assign(Object.assign(Object.assign({}, formAttrs), ctx.attrs), { onSubmit, onReset: handleFormReset }), children);\r\n };\r\n },\r\n});\r\nconst Form = FormImpl;\n\nfunction useFieldArray(arrayPath) {\r\n const form = injectWithSelf(FormContextKey, undefined);\r\n const fields = ref([]);\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n const noOp = () => { };\r\n const noOpApi = {\r\n fields,\r\n remove: noOp,\r\n push: noOp,\r\n swap: noOp,\r\n insert: noOp,\r\n update: noOp,\r\n replace: noOp,\r\n prepend: noOp,\r\n move: noOp,\r\n };\r\n if (!form) {\r\n warn('FieldArray requires being a child of `
` or `useForm` being called before it. Array fields may not work correctly');\r\n return noOpApi;\r\n }\r\n if (!unref(arrayPath)) {\r\n warn('FieldArray requires a field path to be provided, did you forget to pass the `name` prop?');\r\n return noOpApi;\r\n }\r\n const alreadyExists = form.fieldArrays.find(a => unref(a.path) === unref(arrayPath));\r\n if (alreadyExists) {\r\n return alreadyExists;\r\n }\r\n let entryCounter = 0;\r\n function initFields() {\r\n const currentValues = getFromPath(form === null || form === void 0 ? void 0 : form.values, unref(arrayPath), []) || [];\r\n fields.value = currentValues.map(createEntry);\r\n updateEntryFlags();\r\n }\r\n initFields();\r\n function updateEntryFlags() {\r\n const fieldsLength = fields.value.length;\r\n for (let i = 0; i < fieldsLength; i++) {\r\n const entry = fields.value[i];\r\n entry.isFirst = i === 0;\r\n entry.isLast = i === fieldsLength - 1;\r\n }\r\n }\r\n function createEntry(value) {\r\n const key = entryCounter++;\r\n const entry = {\r\n key,\r\n value: computedDeep({\r\n get() {\r\n const currentValues = getFromPath(form === null || form === void 0 ? void 0 : form.values, unref(arrayPath), []) || [];\r\n const idx = fields.value.findIndex(e => e.key === key);\r\n return idx === -1 ? value : currentValues[idx];\r\n },\r\n set(value) {\r\n const idx = fields.value.findIndex(e => e.key === key);\r\n if (idx === -1) {\r\n warn(`Attempting to update a non-existent array item`);\r\n return;\r\n }\r\n update(idx, value);\r\n },\r\n }),\r\n isFirst: false,\r\n isLast: false,\r\n };\r\n return entry;\r\n }\r\n function remove(idx) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n if (!pathValue || !Array.isArray(pathValue)) {\r\n return;\r\n }\r\n const newValue = [...pathValue];\r\n newValue.splice(idx, 1);\r\n form === null || form === void 0 ? void 0 : form.unsetInitialValue(pathName + `[${idx}]`);\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, newValue);\r\n fields.value.splice(idx, 1);\r\n updateEntryFlags();\r\n }\r\n function push(value) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n const normalizedPathValue = isNullOrUndefined(pathValue) ? [] : pathValue;\r\n if (!Array.isArray(normalizedPathValue)) {\r\n return;\r\n }\r\n const newValue = [...normalizedPathValue];\r\n newValue.push(value);\r\n form === null || form === void 0 ? void 0 : form.stageInitialValue(pathName + `[${newValue.length - 1}]`, value);\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, newValue);\r\n fields.value.push(createEntry(value));\r\n updateEntryFlags();\r\n }\r\n function swap(indexA, indexB) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n if (!Array.isArray(pathValue) || !(indexA in pathValue) || !(indexB in pathValue)) {\r\n return;\r\n }\r\n const newValue = [...pathValue];\r\n const newFields = [...fields.value];\r\n // the old switcheroo\r\n const temp = newValue[indexA];\r\n newValue[indexA] = newValue[indexB];\r\n newValue[indexB] = temp;\r\n const tempEntry = newFields[indexA];\r\n newFields[indexA] = newFields[indexB];\r\n newFields[indexB] = tempEntry;\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, newValue);\r\n fields.value = newFields;\r\n updateEntryFlags();\r\n }\r\n function insert(idx, value) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n if (!Array.isArray(pathValue) || pathValue.length < idx) {\r\n return;\r\n }\r\n const newValue = [...pathValue];\r\n const newFields = [...fields.value];\r\n newValue.splice(idx, 0, value);\r\n newFields.splice(idx, 0, createEntry(value));\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, newValue);\r\n fields.value = newFields;\r\n updateEntryFlags();\r\n }\r\n function replace(arr) {\r\n const pathName = unref(arrayPath);\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, arr);\r\n initFields();\r\n }\r\n function update(idx, value) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n if (!Array.isArray(pathValue) || pathValue.length - 1 < idx) {\r\n return;\r\n }\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(`${pathName}[${idx}]`, value);\r\n form === null || form === void 0 ? void 0 : form.validate({ mode: 'validated-only' });\r\n }\r\n function prepend(value) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n const normalizedPathValue = isNullOrUndefined(pathValue) ? [] : pathValue;\r\n if (!Array.isArray(normalizedPathValue)) {\r\n return;\r\n }\r\n const newValue = [value, ...normalizedPathValue];\r\n form === null || form === void 0 ? void 0 : form.stageInitialValue(pathName + `[${newValue.length - 1}]`, value);\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, newValue);\r\n fields.value.unshift(createEntry(value));\r\n updateEntryFlags();\r\n }\r\n function move(oldIdx, newIdx) {\r\n const pathName = unref(arrayPath);\r\n const pathValue = getFromPath(form === null || form === void 0 ? void 0 : form.values, pathName);\r\n const newValue = isNullOrUndefined(pathValue) ? [] : [...pathValue];\r\n if (!Array.isArray(pathValue) || !(oldIdx in pathValue) || !(newIdx in pathValue)) {\r\n return;\r\n }\r\n const newFields = [...fields.value];\r\n const movedItem = newFields[oldIdx];\r\n newFields.splice(oldIdx, 1);\r\n newFields.splice(newIdx, 0, movedItem);\r\n const movedValue = newValue[oldIdx];\r\n newValue.splice(oldIdx, 1);\r\n newValue.splice(newIdx, 0, movedValue);\r\n form === null || form === void 0 ? void 0 : form.setFieldValue(pathName, newValue);\r\n fields.value = newFields;\r\n updateEntryFlags();\r\n }\r\n const fieldArrayCtx = {\r\n fields,\r\n remove,\r\n push,\r\n swap,\r\n insert,\r\n update,\r\n replace,\r\n prepend,\r\n move,\r\n };\r\n form.fieldArrays.push(Object.assign({ path: arrayPath, reset: initFields }, fieldArrayCtx));\r\n onBeforeUnmount(() => {\r\n const idx = form.fieldArrays.findIndex(i => unref(i.path) === unref(arrayPath));\r\n if (idx >= 0) {\r\n form.fieldArrays.splice(idx, 1);\r\n }\r\n });\r\n return fieldArrayCtx;\r\n}\n\nconst FieldArrayImpl = defineComponent({\r\n name: 'FieldArray',\r\n inheritAttrs: false,\r\n props: {\r\n name: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n setup(props, ctx) {\r\n const { push, remove, swap, insert, replace, update, prepend, move, fields } = useFieldArray(toRef(props, 'name'));\r\n function slotProps() {\r\n return {\r\n fields: fields.value,\r\n push,\r\n remove,\r\n swap,\r\n insert,\r\n update,\r\n replace,\r\n prepend,\r\n move,\r\n };\r\n }\r\n ctx.expose({\r\n push,\r\n remove,\r\n swap,\r\n insert,\r\n update,\r\n replace,\r\n prepend,\r\n move,\r\n });\r\n return () => {\r\n const children = normalizeChildren(undefined, ctx, slotProps);\r\n return children;\r\n };\r\n },\r\n});\r\nconst FieldArray = FieldArrayImpl;\n\nconst ErrorMessageImpl = defineComponent({\r\n name: 'ErrorMessage',\r\n props: {\r\n as: {\r\n type: String,\r\n default: undefined,\r\n },\r\n name: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n setup(props, ctx) {\r\n const form = inject(FormContextKey, undefined);\r\n const message = computed(() => {\r\n return form === null || form === void 0 ? void 0 : form.errors.value[props.name];\r\n });\r\n function slotProps() {\r\n return {\r\n message: message.value,\r\n };\r\n }\r\n return () => {\r\n // Renders nothing if there are no messages\r\n if (!message.value) {\r\n return undefined;\r\n }\r\n const tag = (props.as ? resolveDynamicComponent(props.as) : props.as);\r\n const children = normalizeChildren(tag, ctx, slotProps);\r\n const attrs = Object.assign({ role: 'alert' }, ctx.attrs);\r\n // If no tag was specified and there are children\r\n // render the slot as is without wrapping it\r\n if (!tag && (Array.isArray(children) || !children) && (children === null || children === void 0 ? void 0 : children.length)) {\r\n return children;\r\n }\r\n // If no children in slot\r\n // render whatever specified and fallback to a with the message in it's contents\r\n if ((Array.isArray(children) || !children) && !(children === null || children === void 0 ? void 0 : children.length)) {\r\n return h(tag || 'span', attrs, message.value);\r\n }\r\n return h(tag, attrs, children);\r\n };\r\n },\r\n});\r\nconst ErrorMessage = ErrorMessageImpl;\n\nfunction useResetForm() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return function resetForm(state) {\r\n if (!form) {\r\n return;\r\n }\r\n return form.resetForm(state);\r\n };\r\n}\n\n/**\r\n * If a field is dirty or not\r\n */\r\nfunction useIsFieldDirty(path) {\r\n const form = injectWithSelf(FormContextKey);\r\n let field = path ? undefined : inject(FieldContextKey);\r\n return computed(() => {\r\n if (path) {\r\n field = normalizeField(form === null || form === void 0 ? void 0 : form.fieldsByPath.value[unref(path)]);\r\n }\r\n if (!field) {\r\n warn(`field with name ${unref(path)} was not found`);\r\n return false;\r\n }\r\n return field.meta.dirty;\r\n });\r\n}\n\n/**\r\n * If a field is touched or not\r\n */\r\nfunction useIsFieldTouched(path) {\r\n const form = injectWithSelf(FormContextKey);\r\n let field = path ? undefined : inject(FieldContextKey);\r\n return computed(() => {\r\n if (path) {\r\n field = normalizeField(form === null || form === void 0 ? void 0 : form.fieldsByPath.value[unref(path)]);\r\n }\r\n if (!field) {\r\n warn(`field with name ${unref(path)} was not found`);\r\n return false;\r\n }\r\n return field.meta.touched;\r\n });\r\n}\n\n/**\r\n * If a field is validated and is valid\r\n */\r\nfunction useIsFieldValid(path) {\r\n const form = injectWithSelf(FormContextKey);\r\n let field = path ? undefined : inject(FieldContextKey);\r\n return computed(() => {\r\n if (path) {\r\n field = normalizeField(form === null || form === void 0 ? void 0 : form.fieldsByPath.value[unref(path)]);\r\n }\r\n if (!field) {\r\n warn(`field with name ${unref(path)} was not found`);\r\n return false;\r\n }\r\n return field.meta.valid;\r\n });\r\n}\n\n/**\r\n * If the form is submitting or not\r\n */\r\nfunction useIsSubmitting() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n var _a;\r\n return (_a = form === null || form === void 0 ? void 0 : form.isSubmitting.value) !== null && _a !== void 0 ? _a : false;\r\n });\r\n}\n\n/**\r\n * Validates a single field\r\n */\r\nfunction useValidateField(path) {\r\n const form = injectWithSelf(FormContextKey);\r\n let field = path ? undefined : inject(FieldContextKey);\r\n return function validateField() {\r\n if (path) {\r\n field = normalizeField(form === null || form === void 0 ? void 0 : form.fieldsByPath.value[unref(path)]);\r\n }\r\n if (!field) {\r\n warn(`field with name ${unref(path)} was not found`);\r\n return Promise.resolve({\r\n errors: [],\r\n valid: true,\r\n });\r\n }\r\n return field.validate();\r\n };\r\n}\n\n/**\r\n * If the form is dirty or not\r\n */\r\nfunction useIsFormDirty() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n var _a;\r\n return (_a = form === null || form === void 0 ? void 0 : form.meta.value.dirty) !== null && _a !== void 0 ? _a : false;\r\n });\r\n}\n\n/**\r\n * If the form is touched or not\r\n */\r\nfunction useIsFormTouched() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n var _a;\r\n return (_a = form === null || form === void 0 ? void 0 : form.meta.value.touched) !== null && _a !== void 0 ? _a : false;\r\n });\r\n}\n\n/**\r\n * If the form has been validated and is valid\r\n */\r\nfunction useIsFormValid() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n var _a;\r\n return (_a = form === null || form === void 0 ? void 0 : form.meta.value.valid) !== null && _a !== void 0 ? _a : false;\r\n });\r\n}\n\n/**\r\n * Validate multiple fields\r\n */\r\nfunction useValidateForm() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return function validateField() {\r\n if (!form) {\r\n return Promise.resolve({ results: {}, errors: {}, valid: true });\r\n }\r\n return form.validate();\r\n };\r\n}\n\n/**\r\n * The number of form's submission count\r\n */\r\nfunction useSubmitCount() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n var _a;\r\n return (_a = form === null || form === void 0 ? void 0 : form.submitCount.value) !== null && _a !== void 0 ? _a : 0;\r\n });\r\n}\n\n/**\r\n * Gives access to a field's current value\r\n */\r\nfunction useFieldValue(path) {\r\n const form = injectWithSelf(FormContextKey);\r\n // We don't want to use self injected context as it doesn't make sense\r\n const field = path ? undefined : inject(FieldContextKey);\r\n return computed(() => {\r\n if (path) {\r\n return getFromPath(form === null || form === void 0 ? void 0 : form.values, unref(path));\r\n }\r\n return unref(field === null || field === void 0 ? void 0 : field.value);\r\n });\r\n}\n\n/**\r\n * Gives access to a form's values\r\n */\r\nfunction useFormValues() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n return (form === null || form === void 0 ? void 0 : form.values) || {};\r\n });\r\n}\n\n/**\r\n * Gives access to all form errors\r\n */\r\nfunction useFormErrors() {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n return computed(() => {\r\n return ((form === null || form === void 0 ? void 0 : form.errors.value) || {});\r\n });\r\n}\n\n/**\r\n * Gives access to a single field error\r\n */\r\nfunction useFieldError(path) {\r\n const form = injectWithSelf(FormContextKey);\r\n // We don't want to use self injected context as it doesn't make sense\r\n const field = path ? undefined : inject(FieldContextKey);\r\n return computed(() => {\r\n if (path) {\r\n return form === null || form === void 0 ? void 0 : form.errors.value[unref(path)];\r\n }\r\n return field === null || field === void 0 ? void 0 : field.errorMessage.value;\r\n });\r\n}\n\nfunction useSubmitForm(cb) {\r\n const form = injectWithSelf(FormContextKey);\r\n if (!form) {\r\n warn('No vee-validate or `useForm` was detected in the component tree');\r\n }\r\n const onSubmit = form ? form.handleSubmit(cb) : undefined;\r\n return function submitForm(e) {\r\n if (!onSubmit) {\r\n return;\r\n }\r\n return onSubmit(e);\r\n };\r\n}\n\nexport { ErrorMessage, Field, FieldArray, FieldContextKey, Form, FormContextKey, IS_ABSENT, configure, defineRule, useField, useFieldArray, useFieldError, useFieldValue, useForm, useFormErrors, useFormValues, useIsFieldDirty, useIsFieldTouched, useIsFieldValid, useIsFormDirty, useIsFormTouched, useIsFormValid, useIsSubmitting, useResetForm, useSubmitCount, useSubmitForm, useValidateField, useValidateForm, validate };\n"],"names":["useValidators","isRequired","value","message","trim","isCheckboxRequired","isEmail","test","isZip","isName","isPhone","isMinLen","length","isMaxLen","isOneOf","options","includes","join","isAge","isNaN","isCallable","fn","isNullOrUndefined","undefined","isObject","obj","Array","isArray","isIndex","Number","toNumber","n","parseFloat","RULES","resolveRule","id","FormContextKey","Symbol","FieldContextKey","IS_ABSENT","isClient","window","isLocator","__locatorRef","isYupValidator","validate","hasCheckedAttr","type","isContainerValue","isEmptyContainer","Object","keys","isNotNestedPath","path","isNativeMultiSelect","el","isNativeSelect","multiple","tagName","isNativeMultiSelectNode","tag","attrs","hasTruthyBindingValue","shouldHaveValueBinding","isFormSubmitEvent","evt","isEvent","target","Event","srcElement","isPropPresent","prop","isEqual","a","b","constructor","i","Map","size","entries","has","get","isFile","name","lastModified","Set","ArrayBuffer","isView","RegExp","source","flags","valueOf","prototype","toString","hasOwnProperty","call","key","File","set","val","klona","enumerable","configurable","writable","defineProperty","x","k","list","tmp","str","create","__proto__","forEach","add","Date","buffer","slice","getOwnPropertySymbols","getOwnPropertyDescriptor","getOwnPropertyNames","cleanupNonNestedPath","replace","getFromPath","object","fallback","resolvedValue","split","filter","Boolean","reduce","acc","propKey","setInPath","unset","splice","unsetPath","pathValues","map","_","idx","keysOf","record","injectWithSelf","symbol","def","vm","getCurrentInstance","provides","inject","warn","resolveNextCheckboxValue","currentValue","checkedValue","uncheckedValue","newVal","findIndex","v","push","throttle","func","limit","inThrottle","lastResult","args","context","this","setTimeout","apply","debounceAsync","inner","ms","timer","resolves","clearTimeout","result","r","Promise","resolve","applyModelModifiers","modifiers","number","withLatest","onDone","latestRun","async","pending","computedDeep","baseRef","ref","watch","newValue","deep","normalizeChildren","slotProps","slots","default","_a","_b","getBoundValue","hasValueBinding","_value","normalizeEventValue","input","files","from","opt","selected","disabled","selectedOption","find","normalizeRules","rules","_$$isNormalized","prev","curr","params","normalizeParams","buildParams","rule","parsedRule","parseRule","provided","mapValueToLocator","createLocator","locator","crossTable","extractLocators","DEFAULT_CONFIG","generateMessage","field","bails","validateOnBlur","validateOnChange","validateOnInput","validateOnModelUpdate","currentConfig","assign","getConfig","shouldBail","label","formData","values","_validate","errors","valid","validateFieldWithYup","ctx","form","pipeline","isValid","_generateFieldError","normalizedContext","rulesKeys","_test","error","validator","opts","abortEarly","then","catch","err","Error","fillTargetValues","fieldCtx","normalize","param","validateYupSchema","schema","errorObjects","results","messages","validateObjectSchema","paths","validations","_c","strings","names","fieldResult","bailsMap","isAllValid","validationResults","all","ID_COUNTER","useFieldState","init","initialValue","setInitialValue","_useFieldValue","modelValue","errorMessage","setErrors","_useFieldErrors","meta","_useFieldMeta","MAX_SAFE_INTEGER","setState","state","touched","modelRef","unref","resolveInitialValue","initialValues","stageInitialValue","computed","setFieldValue","reactive","validated","dirty","immediate","flush","normalizeErrors","errorBag","setFieldErrorBag","API","nextTick","sendInspectorState","INSPECTOR_ID","sendInspectorTree","useField","useCheckboxField","_useField","validateOnMount","validateOnValueUpdate","controlled","keepValueOnUnmount","modelPropName","syncVModel","controlForm","normalizeOptions","injectedForm","markedForRemoval","useVModel","handleChange","handleBlur","normalizedRules","rulesValue","extractRuleFromSchema","validateCurrentValue","mode","validateSchema","validateWithStateMutation","validateValidStateOnly","validate$1","e","shouldValidate","setTouched","isTouched","unwatchValue","onMounted","lastWatchedValue","watchValue","oldVal","validateFn","resetField","setValue","handleReset","provide","isRef","oldValue","register","onBeforeUnmount","unregister","dependencies","rulesVal","deps","dep","depAcc","depName","depValue","oldDeps","defaults","valueProp","standalone","fieldName","patchCheckboxApi","checked","checkedVal","handleCheckboxChange","propName","emitName","props","getCurrentModelValue","emit","propValue","modelModifiers","FieldImpl","defineComponent","inheritAttrs","as","String","required","Function","keepValue","setup","toRef","validateField","onChangeHandler","handleInput","onInputHandler","fieldProps","resolveValidationTriggers","baseOnBlur","onBlur","baseOnInput","onInput","baseOnChange","onChange","resolveTag","expose","reset","resolveDynamicComponent","children","h","_d","Field","FORM_COUNTER","useForm","formId","controlledModelPaths","RESET_LOCK","fieldsByPath","isSubmitting","submitCount","fieldArrays","formValues","setErrorBag","useErrorBag","initialErrors","bag","getFirstFieldAtPath","fieldOrGroup","fieldExists","fieldNames","fieldBailsMap","keepValuesOnUnmount","originalInitialValues","setInitialValues","useFormInitialValues","useFormMeta","controlledValues","validationSchema","debouncedSilentValidation","_validateSchema","debouncedValidation","formResult","fieldsById","formCtx","currentErrorsPaths","validation","setFieldError","applyFieldMutation","f","wasValidated","some","makeSubmissionFactory","onlyControlled","onValidationError","preventDefault","stopPropagation","setFieldTouched","setValues","resetForm","returnVal","handleSubmitImpl","handleSubmit","withControlled","registerField","unregisterField","unsetInitialValue","setFieldInitialValue","useFieldModel","isFieldGroup","mutation","mutateAllFields","fields","force","fieldInstance","clonedValue","createModel","newValues","insertFieldAtPath","rawField","markRaw","fieldPath","fieldAtPath","removeFieldFromPath","newPath","oldPath","initialErrorMessage","isGroup","shouldKeepValue","currentGroupValue","isSameGroup","valueIdx","every","updateOriginal","schemaValue","submitForm","submit","initialTouched","currentValues","MERGE_STRATEGIES","isDirty","calculateFlags","flat","flag","mergeMethod","watchEffect","providedValues","updateFields","wasTouched","normalizeErrorItem","FormImpl","onSubmit","onInvalidSubmit","keepValues","handleFormReset","onReset","handleScopedSlotSubmit","onSuccess","getValues","getMeta","getErrors","formAttrs","novalidate","Form","useFieldArray","arrayPath","noOp","noOpApi","remove","swap","insert","update","prepend","move","alreadyExists","entryCounter","initFields","createEntry","updateEntryFlags","fieldsLength","entry","isFirst","isLast","pathName","pathValue","normalizedPathValue","indexA","indexB","newFields","temp","tempEntry","arr","unshift","oldIdx","newIdx","movedItem","movedValue","fieldArrayCtx","ErrorMessageImpl","role","ErrorMessage"],"sourceRoot":""}