{"version":3,"file":"component---src-templates-form-form-tsx-c576276952ff5c68851e.js","mappings":";iKAGWA,EAMPC,iFACG,SAASC,EAAcC,GAC5B,IAAIC,EACJ,OAAQD,GACN,KAAKH,EAAaK,MAChBD,EAAO,QACP,MACF,KAAKJ,EAAaM,SAChBF,EAAO,WACP,MACF,KAAKJ,EAAaO,aAChBH,EAAO,eAGX,OAAOA,CACT,CAEO,SAASI,EAAOC,GAChBR,IACHA,EAAQ,IAAI,EAAAS,EAAqB,IAAWF,QAAU,MAGxD,IAEIG,EAAWR,EAFXS,EAASX,EAAMY,IAAIJ,GACvB,GAAIG,EAAQ,OAAOA,GAEnB,UAAYH,KAAcA,EAASK,KAAM,GAAIL,GAK7C,IAJA,IAAIM,EAAY,GACZC,EAAU,GACVC,EAAY,GACZC,EAAgB,GACXC,EAAK,EAAGC,EAAKX,EAASY,YAAaF,EAAKC,EAAGE,OAAQH,IAAM,CAChE,IAAII,EAAIH,EAAGD,GACX,GAAe,uBAAXI,EAAET,MAIN,GAAe,wBAAXS,EAAET,KACJ,OAAQS,EAAEC,WACR,IAAK,QACHR,EAAQS,KAAKF,GACb,MACF,IAAK,WACHN,EAAUQ,KAAKF,GACf,MACF,IAAK,eACHL,EAAcO,KAAKF,SAZvBR,EAAUU,KAAKF,EAgBnB,EACA,SAAWR,EAAUO,QAAUN,EAAQM,QAAUL,EAAUK,QAAUJ,EAAcI,OAAQ,KAC3F,QAAUN,EAAQM,OAASL,EAAUK,OAASJ,EAAcI,QAAU,EAAG,GAAIb,EAAUO,EAAQM,OAAQJ,EAAcI,OAAQL,EAAUK,QACvInB,EAAOa,EAAQM,OAAStB,EAAaK,MAAQL,EAAaM,SACrDU,EAAQM,QAAWL,EAAUK,SAAQnB,EAAOH,EAAaO,cAC9D,IAAIc,EAAcL,EAAQM,OAASN,EAAUC,EAAUK,OAASL,EAAYC,GAC5E,QAAiC,IAAvBG,EAAYC,OAAc,GAAIb,EAAUY,EAAYC,QAC9D,IAAII,EAAaL,EAAY,GAC7BV,EAAYe,EAAWC,qBAAuB,GAO9C,IAAIC,EAAU,CACZxB,KAPEsB,EAAWtB,MAAiC,SAAzBsB,EAAWtB,KAAKU,KAC9BY,EAAWtB,KAAKyB,MAEhB,OAKP1B,KAAMA,EACNQ,UAAWA,GAGb,OADAV,EAAM6B,IAAIrB,EAAUmB,GACbA,CACT,EA5EA,SAAW5B,GACTA,EAAaA,EAAoB,MAAI,GAAK,QAC1CA,EAAaA,EAAuB,SAAI,GAAK,WAC7CA,EAAaA,EAA2B,aAAI,GAAK,cAClD,CAJD,CAIGA,IAAiBA,EAAe,CAAC,IAyEpCQ,EAAOuB,WAAa,WAClB9B,OAAQ+B,CACV,GAC2B,IAAvBC,WAAWC,UACb,QAAoB,UAAU,WAC5B,OAAOjC,EAAQA,EAAMkC,KAAO,CAC9B,gCChFSC,SAA4B,GAAY,kBAAwB,YCgDpE,SAASC,EAAYC,EAAUC,GACpC,IAAIC,ECtCC,SAAyBC,GAC9B,IAAIC,EAAU,cAAiB,UAC3BF,EAASC,GAAYC,EAAQF,OAEjC,OADA,UAAYA,EAAQ,IACbA,CACT,CDiCeG,CAAgBJ,aAAyC,EAASA,EAAQC,SFiClF,SAA4B/B,EAAUN,GAC3C,IAAIqB,EAAYhB,EAAOC,GACnBmC,EAAwB1C,EAAcC,GACtC0C,EAAoB3C,EAAcsB,EAAUrB,OAChD,QAAUqB,EAAUrB,OAASA,EAAM,GAAIyC,EAAuBA,EAAuBC,EACvF,CErCEC,CAAmBR,EAAUtC,EAAaM,UAC1C,IAAIc,EAAK,WAAe,CACpB2B,QAAQ,EACRC,SAAS,EACTR,OAAQA,IAEVS,EAAS7B,EAAG,GACZ8B,EAAY9B,EAAG,GACb+B,EAAM,SAAa,CACrBF,OAAQA,EACRG,WAAY,EACZC,WAAW,EACXb,OAAQA,EACRF,SAAUA,EACVC,QAASA,IAEXH,GAA0B,WACxBkB,OAAOC,OAAOJ,EAAIK,QAAS,CACzBhB,OAAQA,EACRD,QAASA,EACTD,SAAUA,GAEd,IACA,IAAImB,EAAU,eAAkB,SAAUC,QACjB,IAAnBA,IACFA,EAAiB,CAAC,GAEpB,IAAItC,EAAK+B,EAAIK,QACXjB,EAAUnB,EAAGmB,QACbD,EAAWlB,EAAGkB,SACZqB,GAAc,SAAS,QAAS,CAAC,EAAGpB,GAAU,CAChDD,SAAUA,IAERE,EAASkB,EAAelB,QAAUW,EAAIK,QAAQhB,OAC7CW,EAAIK,QAAQP,OAAOD,SAAYW,EAAYC,gBAAiBT,EAAIK,QAAQH,WAC3EH,EAAUC,EAAIK,QAAQP,OAAS,CAC7BD,SAAS,EACTa,WAAO,EACPC,UAAM,EACNf,QAAQ,EACRP,OAAQA,IAGZ,IAAIY,IAAeD,EAAIK,QAAQJ,WAC3BW,GAAgB,EAAAC,EAAA,GAAaL,EAAaD,GAC9C,OAAOlB,EAAOyB,OAAOF,GAAeG,MAAK,SAAUC,GACjD,IAAI/C,EAAIgD,EACJN,EAAOK,EAASL,KAClBO,EAASF,EAASE,OAChBR,EAAQQ,GAAUA,EAAO/C,OAAS,EAAI,IAAI,KAAY,CACxDgD,cAAeD,SACZ,EACDE,EAAUb,EAAea,UAA2C,QAA9BnD,EAAK+B,EAAIK,QAAQjB,eAA4B,IAAPnB,OAAgB,EAASA,EAAGmD,SAI5G,GAHIV,GAASU,GACXA,EAAQV,EAAOE,GAEbX,IAAeD,EAAIK,QAAQJ,aAAeW,EAAcH,cAAe,CACzE,IAAIY,EAAW,CACbzB,QAAQ,EACRC,SAAS,EACTc,KAAMA,EACND,MAAOA,EACPrB,OAAQA,GAENW,EAAIK,QAAQH,aAAc,OAAMF,EAAIK,QAAQP,OAAQuB,IACtDtB,EAAUC,EAAIK,QAAQP,OAASuB,EAEnC,CACA,IAAIC,EAAcf,EAAee,cAA+C,QAA9BL,EAAKjB,EAAIK,QAAQjB,eAA4B,IAAP6B,OAAgB,EAASA,EAAGK,aAIpH,OAHKZ,GACHY,SAA0DA,EAAYN,EAASL,KAAMC,GAEhFI,CACT,IAAGO,OAAM,SAAUb,GACjB,IAAIzC,EACJ,GAAIgC,IAAeD,EAAIK,QAAQJ,YAAcD,EAAIK,QAAQH,UAAW,CAClE,IAAIsB,EAAW,CACb3B,SAAS,EACTa,MAAOA,EACPC,UAAM,EACNf,QAAQ,EACRP,OAAQA,IAEL,OAAMW,EAAIK,QAAQP,OAAQ0B,IAC7BzB,EAAUC,EAAIK,QAAQP,OAAS0B,EAEnC,CACA,IAAIJ,EAAUb,EAAea,UAA2C,QAA9BnD,EAAK+B,EAAIK,QAAQjB,eAA4B,IAAPnB,OAAgB,EAASA,EAAGmD,SAC5G,GAAIA,EAGF,OAFAA,EAAQV,EAAOE,GAER,CACLD,UAAM,EACNO,OAAQR,GAGZ,MAAMA,CACR,GACF,GAAG,IACCe,EAAQ,eAAkB,WAC5B,GAAIzB,EAAIK,QAAQH,UAAW,CACzB,IAAIwB,EAAW,CACb9B,QAAQ,EACRC,SAAS,EACTR,OAAQW,EAAIK,QAAQhB,QAEtBc,OAAOC,OAAOJ,EAAIK,QAAS,CACzBJ,WAAY,EACZH,OAAQ4B,IAEV3B,EAAU2B,EACZ,CACF,GAAG,IAQH,OAPA,aAAgB,WACd,IAAIrB,EAAUL,EAAIK,QAElB,OADAA,EAAQH,WAAY,EACb,WACLG,EAAQH,WAAY,CACtB,CACF,GAAG,IACI,CAACI,GAAS,QAAS,CACxBmB,MAAOA,GACN3B,GACL,iCElLA,IAAI6B,EAAQ,eACRC,EAAgB,IAAIC,OAAO,IAAMF,EAAQ,aAAc,MACvDG,EAAe,IAAID,OAAO,IAAMF,EAAQ,KAAM,MAClD,SAASI,EAAiBC,EAAYC,GACpC,IAEE,MAAO,CAACC,mBAAmBF,EAAWG,KAAK,KAC7C,CAAE,MAAOC,GAET,CACA,GAA0B,IAAtBJ,EAAW7D,OACb,OAAO6D,EAETC,EAAQA,GAAS,EAGjB,IAAII,EAAOL,EAAWM,MAAM,EAAGL,GAC3BM,EAAQP,EAAWM,MAAML,GAC7B,OAAOO,MAAMC,UAAUC,OAAOC,KAAK,GAAIZ,EAAiBM,GAAON,EAAiBQ,GAClF,CACA,SAASK,EAAOC,GACd,IACE,OAAOX,mBAAmBW,EAC5B,CAAE,MAAOT,GAEP,IADA,IAAIU,EAASD,EAAME,MAAMnB,IAAkB,GAClCoB,EAAI,EAAGA,EAAIF,EAAO3E,OAAQ6E,IAEjCF,GADAD,EAAQd,EAAiBe,EAAQE,GAAGb,KAAK,KAC1BY,MAAMnB,IAAkB,GAEzC,OAAOiB,CACT,CACF,CA+BAI,EAAOC,QAAU,SAAUC,GACzB,GAA0B,iBAAfA,EACT,MAAM,IAAIC,UAAU,6DAA+DD,EAAa,KAElG,IAIE,OAHAA,EAAaA,EAAWE,QAAQ,MAAO,KAGhCnB,mBAAmBiB,EAC5B,CAAE,MAAOf,GAEP,OAzCJ,SAAkCS,GAOhC,IALA,IAAIS,EAAa,CACf,SAAU,KACV,SAAU,MAERP,EAAQjB,EAAayB,KAAKV,GACvBE,GAAO,CACZ,IAEEO,EAAWP,EAAM,IAAMb,mBAAmBa,EAAM,GAClD,CAAE,MAAOX,GACP,IAAItC,EAAS8C,EAAOG,EAAM,IACtBjD,IAAWiD,EAAM,KACnBO,EAAWP,EAAM,IAAMjD,EAE3B,CACAiD,EAAQjB,EAAayB,KAAKV,EAC5B,CAGAS,EAAW,OAAS,IAEpB,IADA,IAAIE,EAAUrD,OAAOsD,KAAKH,GACjBN,EAAI,EAAGA,EAAIQ,EAAQrF,OAAQ6E,IAAK,CAEvC,IAAIU,EAAMF,EAAQR,GAClBH,EAAQA,EAAMQ,QAAQ,IAAIxB,OAAO6B,EAAK,KAAMJ,EAAWI,GACzD,CACA,OAAOb,CACT,CAYWc,CAAyBR,EAClC,CACF,iCC3EAF,EAAOC,QAAU,SAAUU,EAAKC,GAI9B,IAHA,IAAIC,EAAM,CAAC,EACPL,EAAOtD,OAAOsD,KAAKG,GACnBG,EAAQvB,MAAMwB,QAAQH,GACjBb,EAAI,EAAGA,EAAIS,EAAKtF,OAAQ6E,IAAK,CACpC,IAAIU,EAAMD,EAAKT,GACXiB,EAAML,EAAIF,IACVK,GAAoC,IAA5BF,EAAUK,QAAQR,GAAcG,EAAUH,EAAKO,EAAKL,MAC9DE,EAAIJ,GAAOO,EAEf,CACA,OAAOH,CACT,qCCNwEZ,QAC/D,WACP,aAEA,IAAIiB,EAgGAC,EA/FJ,SAASC,IACP,OAAOF,EAAaG,MAAM,KAAMC,UAClC,CAIA,SAASC,EAAgBC,GACvBN,EAAeM,CACjB,CACA,SAAST,EAAQnB,GACf,OAAOA,aAAiBL,OAAmD,mBAA1CrC,OAAOsC,UAAUiC,SAAS/B,KAAKE,EAClE,CACA,SAAS8B,EAAS9B,GAGhB,OAAgB,MAATA,GAA2D,oBAA1C1C,OAAOsC,UAAUiC,SAAS/B,KAAKE,EACzD,CACA,SAAS+B,EAAWC,EAAGC,GACrB,OAAO3E,OAAOsC,UAAUsC,eAAepC,KAAKkC,EAAGC,EACjD,CACA,SAASE,EAAcpB,GACrB,GAAIzD,OAAO8E,oBACT,OAAkD,IAA3C9E,OAAO8E,oBAAoBrB,GAAKzF,OAEvC,IAAI+G,EACJ,IAAKA,KAAKtB,EACR,GAAIgB,EAAWhB,EAAKsB,GAClB,OAAO,EAGX,OAAO,CAEX,CACA,SAASC,EAAYtC,GACnB,YAAiB,IAAVA,CACT,CACA,SAASuC,EAASvC,GAChB,MAAwB,iBAAVA,GAAgE,oBAA1C1C,OAAOsC,UAAUiC,SAAS/B,KAAKE,EACrE,CACA,SAASwC,EAAOxC,GACd,OAAOA,aAAiByC,MAAkD,kBAA1CnF,OAAOsC,UAAUiC,SAAS/B,KAAKE,EACjE,CACA,SAAS0C,EAAIC,EAAKC,GAChB,IACEzC,EADE0C,EAAM,GAERC,EAASH,EAAIrH,OACf,IAAK6E,EAAI,EAAGA,EAAI2C,IAAU3C,EACxB0C,EAAIpH,KAAKmH,EAAGD,EAAIxC,GAAIA,IAEtB,OAAO0C,CACT,CACA,SAASE,EAAOf,EAAGC,GACjB,IAAK,IAAI9B,KAAK8B,EACRF,EAAWE,EAAG9B,KAChB6B,EAAE7B,GAAK8B,EAAE9B,IASb,OANI4B,EAAWE,EAAG,cAChBD,EAAEH,SAAWI,EAAEJ,UAEbE,EAAWE,EAAG,aAChBD,EAAEgB,QAAUf,EAAEe,SAEThB,CACT,CACA,SAASiB,EAAUjD,EAAOkD,EAAQC,EAAQC,GACxC,OAAOC,GAAiBrD,EAAOkD,EAAQC,EAAQC,GAAQ,GAAME,KAC/D,CACA,SAASC,IAEP,MAAO,CACLC,OAAO,EACPC,aAAc,GACdC,YAAa,GACbC,UAAW,EACXC,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjBC,IAAK,KACLC,SAAU,KACVC,SAAS,EACTC,iBAAiB,EAErB,CACA,SAASC,EAAgBC,GAIvB,OAHa,MAATA,EAAEC,MACJD,EAAEC,IAAMnB,KAEHkB,EAAEC,GACX,CAiBA,SAASC,EAAQF,GACf,IAAIG,EAAQ,KACVC,GAAc,EACdC,EAAaL,EAAEM,KAAOC,MAAMP,EAAEM,GAAGE,WAWnC,OAVIH,IACFF,EAAQJ,EAAgBC,GACxBI,EAActD,EAAKzB,KAAK8E,EAAMT,iBAAiB,SAAUhE,GACvD,OAAY,MAALA,CACT,IACA2E,EAAaF,EAAMjB,SAAW,IAAMiB,EAAMpB,QAAUoB,EAAMd,aAAec,EAAMb,eAAiBa,EAAMM,iBAAmBN,EAAML,kBAAoBK,EAAMf,YAAce,EAAMZ,gBAAkBY,EAAMX,mBAAqBW,EAAMP,UAAYO,EAAMP,UAAYQ,GAC1PJ,EAAEU,UACJL,EAAaA,GAAsC,IAAxBF,EAAMhB,eAAqD,IAA9BgB,EAAMnB,aAAanI,aAAkCU,IAAlB4I,EAAMQ,UAG9E,MAAnB9H,OAAO+H,UAAqB/H,OAAO+H,SAASZ,GAGvCK,GAFPL,EAAEa,SAAWR,EAIRL,EAAEa,SACX,CACA,SAASC,EAAcX,GACrB,IAAIH,EAAIxB,EAAUuC,KAMlB,OALa,MAATZ,EACF7B,EAAOyB,EAAgBC,GAAIG,GAE3BJ,EAAgBC,GAAGR,iBAAkB,EAEhCQ,CACT,CA3CElD,EADE5B,MAAMC,UAAU2B,KACX5B,MAAMC,UAAU2B,KAEhB,SAAUkE,GACf,IAEEtF,EAFEuF,EAAIpI,OAAOqI,MACbC,EAAMF,EAAEpK,SAAW,EAErB,IAAK6E,EAAI,EAAGA,EAAIyF,EAAKzF,IACnB,GAAIA,KAAKuF,GAAKD,EAAI3F,KAAK6F,KAAMD,EAAEvF,GAAIA,EAAGuF,GACpC,OAAO,EAGX,OAAO,CACT,EAmCF,IAAIG,EAAmBrE,EAAMqE,iBAAmB,GAC9CC,GAAmB,EACrB,SAASC,EAAWC,EAAIC,GACtB,IAAI9F,EACF+F,EACA9E,EACA+E,EAAsBN,EAAiBvK,OA+BzC,GA9BKgH,EAAY2D,EAAKG,oBACpBJ,EAAGI,iBAAmBH,EAAKG,kBAExB9D,EAAY2D,EAAK9K,MACpB6K,EAAG7K,GAAK8K,EAAK9K,IAEVmH,EAAY2D,EAAKI,MACpBL,EAAGK,GAAKJ,EAAKI,IAEV/D,EAAY2D,EAAKK,MACpBN,EAAGM,GAAKL,EAAKK,IAEVhE,EAAY2D,EAAKd,WACpBa,EAAGb,QAAUc,EAAKd,SAEf7C,EAAY2D,EAAKM,QACpBP,EAAGO,KAAON,EAAKM,MAEZjE,EAAY2D,EAAKO,UACpBR,EAAGQ,OAASP,EAAKO,QAEdlE,EAAY2D,EAAKQ,WACpBT,EAAGS,QAAUR,EAAKQ,SAEfnE,EAAY2D,EAAKvB,OACpBsB,EAAGtB,IAAMF,EAAgByB,IAEtB3D,EAAY2D,EAAKS,WACpBV,EAAGU,QAAUT,EAAKS,SAEhBP,EAAsB,EACxB,IAAKhG,EAAI,EAAGA,EAAIgG,EAAqBhG,IAG9BmC,EADLlB,EAAM6E,EADNC,EAAOL,EAAiB1F,OAGtB6F,EAAGE,GAAQ9E,GAIjB,OAAO4E,CACT,CAGA,SAASW,EAAOC,GACdb,EAAWJ,KAAMiB,GACjBjB,KAAKZ,GAAK,IAAItC,KAAkB,MAAbmE,EAAO7B,GAAa6B,EAAO7B,GAAGE,UAAYO,KACxDG,KAAKhB,YACRgB,KAAKZ,GAAK,IAAItC,KAAK+C,OAII,IAArBM,IACFA,GAAmB,EACnBtE,EAAMqF,aAAalB,MACnBG,GAAmB,EAEvB,CACA,SAASgB,EAAS/F,GAChB,OAAOA,aAAe4F,GAAiB,MAAP5F,GAAuC,MAAxBA,EAAIqF,gBACrD,CACA,SAASW,EAAKC,IAC8B,IAAtCxF,EAAMyF,6BAA4D,oBAAZC,SAA2BA,QAAQH,MAC3FG,QAAQH,KAAK,wBAA0BC,EAE3C,CACA,SAASG,EAAUH,EAAKpE,GACtB,IAAIwE,GAAY,EAChB,OAAOrE,GAAO,WAIZ,GAHgC,MAA5BvB,EAAM6F,oBACR7F,EAAM6F,mBAAmB,KAAML,GAE7BI,EAAW,CACb,IACEE,EACAnH,EACAU,EAHE0G,EAAO,GAITC,EAAS9F,UAAUpG,OACrB,IAAK6E,EAAI,EAAGA,EAAIqH,EAAQrH,IAAK,CAE3B,GADAmH,EAAM,GACsB,iBAAjB5F,UAAUvB,GAAiB,CAEpC,IAAKU,KADLyG,GAAO,MAAQnH,EAAI,KACPuB,UAAU,GAChBK,EAAWL,UAAU,GAAIb,KAC3ByG,GAAOzG,EAAM,KAAOa,UAAU,GAAGb,GAAO,MAG5CyG,EAAMA,EAAI7H,MAAM,GAAI,EACtB,MACE6H,EAAM5F,UAAUvB,GAElBoH,EAAK9L,KAAK6L,EACZ,CACAP,EAAKC,EAAM,gBAAkBrH,MAAMC,UAAUH,MAAMK,KAAKyH,GAAMjI,KAAK,IAAM,MAAO,IAAImI,OAAQC,OAC5FN,GAAY,CACd,CACA,OAAOxE,EAAGnB,MAAMkE,KAAMjE,UACxB,GAAGkB,EACL,CACA,IA8DIhC,EA9DA+G,EAAe,CAAC,EACpB,SAASC,EAAgBxN,EAAM4M,GACG,MAA5BxF,EAAM6F,oBACR7F,EAAM6F,mBAAmBjN,EAAM4M,GAE5BW,EAAavN,KAChB2M,EAAKC,GACLW,EAAavN,IAAQ,EAEzB,CAGA,SAASyN,EAAW7H,GAClB,MAA2B,oBAAb8H,UAA4B9H,aAAiB8H,UAAsD,sBAA1CxK,OAAOsC,UAAUiC,SAAS/B,KAAKE,EACxG,CACA,SAASlE,EAAI8K,GACX,IAAIV,EAAM/F,EACV,IAAKA,KAAKyG,EACJ7E,EAAW6E,EAAQzG,KAEjB0H,EADJ3B,EAAOU,EAAOzG,IAEZwF,KAAKxF,GAAK+F,EAEVP,KAAK,IAAMxF,GAAK+F,GAItBP,KAAKoC,QAAUnB,EAIfjB,KAAKqC,+BAAiC,IAAIhJ,QAAQ2G,KAAKsC,wBAAwBC,QAAUvC,KAAKwC,cAAcD,QAAU,IAAM,UAAUA,OACxI,CACA,SAASE,EAAaC,EAAcC,GAClC,IACEpC,EADErD,EAAME,EAAO,CAAC,EAAGsF,GAErB,IAAKnC,KAAQoC,EACPvG,EAAWuG,EAAapC,KACtBpE,EAASuG,EAAanC,KAAUpE,EAASwG,EAAYpC,KACvDrD,EAAIqD,GAAQ,CAAC,EACbnD,EAAOF,EAAIqD,GAAOmC,EAAanC,IAC/BnD,EAAOF,EAAIqD,GAAOoC,EAAYpC,KACA,MAArBoC,EAAYpC,GACrBrD,EAAIqD,GAAQoC,EAAYpC,UAEjBrD,EAAIqD,IAIjB,IAAKA,KAAQmC,EACPtG,EAAWsG,EAAcnC,KAAUnE,EAAWuG,EAAapC,IAASpE,EAASuG,EAAanC,MAE5FrD,EAAIqD,GAAQnD,EAAO,CAAC,EAAGF,EAAIqD,KAG/B,OAAOrD,CACT,CACA,SAAS0F,EAAO3B,GACA,MAAVA,GACFjB,KAAK7J,IAAI8K,EAEb,CAnDApF,EAAMyF,6BAA8B,EACpCzF,EAAM6F,mBAAqB,KAqDzBzG,EADEtD,OAAOsD,KACFtD,OAAOsD,KAEP,SAAUG,GACf,IAAIZ,EACF0C,EAAM,GACR,IAAK1C,KAAKY,EACJgB,EAAWhB,EAAKZ,IAClB0C,EAAIpH,KAAK0E,GAGb,OAAO0C,CACT,EAEF,IAAI2F,EAAkB,CACpBC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZ,SAASC,EAASlI,EAAKmI,EAAKC,GAC1B,IAAIC,EAASvD,KAAKwD,UAAUtI,IAAQ8E,KAAKwD,UAAoB,SAC7D,OAAOtB,EAAWqB,GAAUA,EAAOpJ,KAAKkJ,EAAKC,GAAOC,CACtD,CACA,SAASE,EAASC,EAAQC,EAAcC,GACtC,IAAIC,EAAY,GAAKC,KAAKC,IAAIL,GAC5BM,EAAcL,EAAeE,EAAUlO,OAEzC,OADS+N,GAAU,EACJE,EAAY,IAAM,GAAK,KAAOE,KAAKG,IAAI,GAAIH,KAAKI,IAAI,EAAGF,IAAc9H,WAAWiI,OAAO,GAAKN,CAC7G,CACA,IAAIO,EAAmB,yMACrBC,EAAwB,6CACxBC,EAAkB,CAAC,EACnBC,EAAuB,CAAC,EAM1B,SAASC,EAAerL,EAAOsL,EAAQC,EAASzI,GAC9C,IAAI0I,EAAO1I,EACa,iBAAbA,IACT0I,EAAO,WACL,OAAO3E,KAAK/D,IACd,GAEE9C,IACFoL,EAAqBpL,GAASwL,GAE5BF,IACFF,EAAqBE,EAAO,IAAM,WAChC,OAAOhB,EAASkB,EAAK7I,MAAMkE,KAAMjE,WAAY0I,EAAO,GAAIA,EAAO,GACjE,GAEEC,IACFH,EAAqBG,GAAW,WAC9B,OAAO1E,KAAK4E,aAAaF,QAAQC,EAAK7I,MAAMkE,KAAMjE,WAAY5C,EAChE,EAEJ,CACA,SAAS0L,EAAuBxK,GAC9B,OAAIA,EAAME,MAAM,YACPF,EAAMQ,QAAQ,WAAY,IAE5BR,EAAMQ,QAAQ,MAAO,GAC9B,CACA,SAASiK,EAAmBvH,GAC1B,IACE/C,EACA7E,EAFEoP,EAAQxH,EAAOhD,MAAM6J,GAGzB,IAAK5J,EAAI,EAAG7E,EAASoP,EAAMpP,OAAQ6E,EAAI7E,EAAQ6E,IACzC+J,EAAqBQ,EAAMvK,IAC7BuK,EAAMvK,GAAK+J,EAAqBQ,EAAMvK,IAEtCuK,EAAMvK,GAAKqK,EAAuBE,EAAMvK,IAG5C,OAAO,SAAU6I,GACf,IACE7I,EADE+I,EAAS,GAEb,IAAK/I,EAAI,EAAGA,EAAI7E,EAAQ6E,IACtB+I,GAAUrB,EAAW6C,EAAMvK,IAAMuK,EAAMvK,GAAGL,KAAKkJ,EAAK9F,GAAUwH,EAAMvK,GAEtE,OAAO+I,CACT,CACF,CAGA,SAASyB,EAAalG,EAAGvB,GACvB,OAAKuB,EAAEE,WAGPzB,EAAS0H,EAAa1H,EAAQuB,EAAE8F,cAChCN,EAAgB/G,GAAU+G,EAAgB/G,IAAWuH,EAAmBvH,GACjE+G,EAAgB/G,GAAQuB,IAJtBA,EAAE8F,aAAaM,aAK1B,CACA,SAASD,EAAa1H,EAAQC,GAC5B,IAAIhD,EAAI,EACR,SAAS2K,EAA4B9K,GACnC,OAAOmD,EAAO4H,eAAe/K,IAAUA,CACzC,CAEA,IADAgK,EAAsBgB,UAAY,EAC3B7K,GAAK,GAAK6J,EAAsBiB,KAAK/H,IAC1CA,EAASA,EAAO1C,QAAQwJ,EAAuBc,GAC/Cd,EAAsBgB,UAAY,EAClC7K,GAAK,EAEP,OAAO+C,CACT,CACA,IAAIgI,EAAwB,CAC1BC,IAAK,YACLC,GAAI,SACJC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAER,SAAST,EAAelK,GACtB,IAAIqC,EAASyC,KAAK8F,gBAAgB5K,GAChC6K,EAAc/F,KAAK8F,gBAAgB5K,EAAI8K,eACzC,OAAIzI,IAAWwI,EACNxI,GAETyC,KAAK8F,gBAAgB5K,GAAO6K,EAAYxL,MAAM6J,GAAkBrH,KAAI,SAAUkJ,GAC5E,MAAY,SAARA,GAA0B,OAARA,GAAwB,OAARA,GAAwB,SAARA,EAC7CA,EAAInM,MAAM,GAEZmM,CACT,IAAGtM,KAAK,IACDqG,KAAK8F,gBAAgB5K,GAC9B,CACA,IAAIgL,EAAqB,eACzB,SAAShB,IACP,OAAOlF,KAAKmG,YACd,CACA,IAAIC,EAAiB,KACnBC,EAAgC,UAClC,SAAS3B,EAAQhB,GACf,OAAO1D,KAAKsG,SAASzL,QAAQ,KAAM6I,EACrC,CACA,IAAI6C,EAAsB,CACxBC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJ7H,EAAG,WACH8H,GAAI,aACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAEN,SAASC,EAAa7D,EAAQ8D,EAAeC,EAAQC,GACnD,IAAInE,EAASvD,KAAK2H,cAAcF,GAChC,OAAOvF,EAAWqB,GAAUA,EAAOG,EAAQ8D,EAAeC,EAAQC,GAAYnE,EAAO1I,QAAQ,MAAO6I,EACtG,CACA,SAASkE,GAAWC,EAAMtE,GACxB,IAAIhG,EAASyC,KAAK2H,cAAcE,EAAO,EAAI,SAAW,QACtD,OAAO3F,EAAW3E,GAAUA,EAAOgG,GAAUhG,EAAO1C,QAAQ,MAAO0I,EACrE,CACA,IAAIuE,GAAU,CACZC,EAAG,OACHC,MAAO,OACPC,KAAM,OACNlB,EAAG,MACHmB,KAAM,MACNC,IAAK,MACLC,EAAG,UACHC,SAAU,UACVC,QAAS,UACTC,EAAG,aACHC,YAAa,aACbC,WAAY,aACZC,IAAK,YACLC,WAAY,YACZC,UAAW,YACX/B,EAAG,OACHgC,MAAO,OACPC,KAAM,OACNC,GAAI,cACJC,aAAc,cACdC,YAAa,cACbnK,EAAG,SACHoK,QAAS,SACTC,OAAQ,SACRhC,EAAG,QACHiC,OAAQ,QACRC,MAAO,QACPC,EAAG,UACHC,SAAU,UACVC,QAAS,UACT9C,EAAG,SACH+C,QAAS,SACTC,OAAQ,SACRC,GAAI,WACJC,UAAW,WACXC,SAAU,WACVC,GAAI,cACJC,aAAc,cACdC,YAAa,cACb/C,EAAG,OACHgD,MAAO,OACPC,KAAM,OACNC,EAAG,UACHC,SAAU,UACVC,QAAS,UACThD,EAAG,OACHiD,MAAO,OACPC,KAAM,QAER,SAASC,GAAeC,GACtB,MAAwB,iBAAVA,EAAqB3C,GAAQ2C,IAAU3C,GAAQ2C,EAAMC,oBAAiBrU,CACtF,CACA,SAASsU,GAAqBC,GAC5B,IACEC,EACAtK,EAFEuK,EAAkB,CAAC,EAGvB,IAAKvK,KAAQqK,EACPxO,EAAWwO,EAAarK,KAC1BsK,EAAiBL,GAAejK,MAE9BuK,EAAgBD,GAAkBD,EAAYrK,IAIpD,OAAOuK,CACT,CACA,IAAIC,GAAa,CACf9C,KAAM,EACNE,IAAK,GACLG,QAAS,GACT0C,WAAY,GACZC,UAAW,EACXnC,KAAM,GACNG,YAAa,GACbE,OAAQ,GACRE,MAAO,EACPG,QAAS,EACTE,OAAQ,GACRwB,SAAU,EACVC,YAAa,EACbjB,KAAM,EACNkB,QAAS,EACTb,KAAM,GAER,SAASc,GAAoBC,GAC3B,IACEC,EADEd,EAAQ,GAEZ,IAAKc,KAAKD,EACJlP,EAAWkP,EAAUC,IACvBd,EAAM3U,KAAK,CACT0V,KAAMD,EACNE,SAAUV,GAAWQ,KAO3B,OAHAd,EAAMiB,MAAK,SAAUrP,EAAGC,GACtB,OAAOD,EAAEoP,SAAWnP,EAAEmP,QACxB,IACOhB,CACT,CACA,IAuCEkB,GAvCEC,GAAS,KAEXC,GAAS,OAETC,GAAS,QAETC,GAAS,QAETC,GAAS,aAETC,GAAY,QAEZC,GAAY,YAEZC,GAAY,gBAEZC,GAAY,UAEZC,GAAY,UAEZC,GAAY,eAEZC,GAAgB,MAEhBC,GAAc,WAEdC,GAAc,qBAEdC,GAAmB,0BAEnBC,GAAiB,uBAIjBC,GAAY,wJACZC,GAAyB,YAEzBC,GAAmB,gBAIrB,SAASC,GAAc5T,EAAO6T,EAAOC,GACnCtB,GAAQxS,GAAS+I,EAAW8K,GAASA,EAAQ,SAAUE,EAAUtI,GAC/D,OAAOsI,GAAYD,EAAcA,EAAcD,CACjD,CACF,CACA,SAASG,GAAsBhU,EAAO8H,GACpC,OAAK7E,EAAWuP,GAASxS,GAGlBwS,GAAQxS,GAAO8H,EAAOzB,QAASyB,EAAOF,SAFpC,IAAI1H,OAAO+T,GAAejU,GAGrC,CAGA,SAASiU,GAAe1G,GACtB,OAAO2G,GAAY3G,EAAE7L,QAAQ,KAAM,IAAIA,QAAQ,uCAAuC,SAAUyS,EAASC,EAAIC,EAAIC,EAAIC,GACnH,OAAOH,GAAMC,GAAMC,GAAMC,CAC3B,IACF,CACA,SAASL,GAAY3G,GACnB,OAAOA,EAAE7L,QAAQ,yBAA0B,OAC7C,CACA,SAAS8S,GAASjK,GAChB,OAAIA,EAAS,EAEJI,KAAK8J,KAAKlK,IAAW,EAErBI,KAAK+J,MAAMnK,EAEtB,CACA,SAASoK,GAAMC,GACb,IAAIC,GAAiBD,EACnB7X,EAAQ,EAIV,OAHsB,IAAlB8X,GAAuBC,SAASD,KAClC9X,EAAQyX,GAASK,IAEZ9X,CACT,CArCAyV,GAAU,CAAC,EAsCX,IAAIrR,GAAS,CAAC,EACd,SAAS4T,GAAc/U,EAAO8C,GAC5B,IAAIzB,EAEF2T,EADAxJ,EAAO1I,EAWT,IATqB,iBAAV9C,IACTA,EAAQ,CAACA,IAEPyD,EAASX,KACX0I,EAAO,SAAUtK,EAAO0K,GACtBA,EAAM9I,GAAY6R,GAAMzT,EAC1B,GAEF8T,EAAWhV,EAAMxD,OACZ6E,EAAI,EAAGA,EAAI2T,EAAU3T,IACxBF,GAAOnB,EAAMqB,IAAMmK,CAEvB,CACA,SAASyJ,GAAkBjV,EAAO8C,GAChCiS,GAAc/U,GAAO,SAAUkB,EAAO0K,EAAO9D,EAAQ9H,GACnD8H,EAAOoN,GAAKpN,EAAOoN,IAAM,CAAC,EAC1BpS,EAAS5B,EAAO4G,EAAOoN,GAAIpN,EAAQ9H,EACrC,GACF,CACA,SAASmV,GAAwBnV,EAAOkB,EAAO4G,GAChC,MAAT5G,GAAiB+B,EAAW9B,GAAQnB,IACtCmB,GAAOnB,GAAOkB,EAAO4G,EAAOxL,GAAIwL,EAAQ9H,EAE5C,CACA,SAASoV,GAAWhE,GAClB,OAAOA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAKA,EAAO,KAAQ,CAC9D,CACA,IAAIiE,GAAO,EACTC,GAAQ,EACRC,GAAO,EACPC,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EACdC,GAAO,EACPC,GAAU,EAmCZ,SAASC,GAAW1E,GAClB,OAAOgE,GAAWhE,GAAQ,IAAM,GAClC,CAjCA/F,EAAe,IAAK,EAAG,GAAG,WACxB,IAAI6C,EAAIrH,KAAKuK,OACb,OAAOlD,GAAK,KAAO5D,EAAS4D,EAAG,GAAK,IAAMA,CAC5C,IACA7C,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,OAAOxE,KAAKuK,OAAS,GACvB,IACA/F,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAI1CuI,GAAc,IAAKP,IACnBO,GAAc,KAAMd,GAAWJ,IAC/BkB,GAAc,OAAQV,GAAWN,IACjCgB,GAAc,QAAST,GAAWN,IAClCe,GAAc,SAAUT,GAAWN,IACnCkC,GAAc,CAAC,QAAS,UAAWM,IACnCN,GAAc,QAAQ,SAAU7T,EAAO0K,GACrCA,EAAMyJ,IAAyB,IAAjBnU,EAAM1E,OAAekG,EAAMqT,kBAAkB7U,GAASyT,GAAMzT,EAC5E,IACA6T,GAAc,MAAM,SAAU7T,EAAO0K,GACnCA,EAAMyJ,IAAQ3S,EAAMqT,kBAAkB7U,EACxC,IACA6T,GAAc,KAAK,SAAU7T,EAAO0K,GAClCA,EAAMyJ,IAAQW,SAAS9U,EAAO,GAChC,IAUAwB,EAAMqT,kBAAoB,SAAU7U,GAClC,OAAOyT,GAAMzT,IAAUyT,GAAMzT,GAAS,GAAK,KAAO,IACpD,EAIA,IA8GIqB,GA9GA0T,GAAaC,GAAW,YAAY,GACxC,SAASC,KACP,OAAOf,GAAWvO,KAAKuK,OACzB,CACA,SAAS8E,GAAW7D,EAAM+D,GACxB,OAAO,SAAUrZ,GACf,OAAa,MAATA,GACFsZ,GAAMxP,KAAMwL,EAAMtV,GAClB2F,EAAMqF,aAAalB,KAAMuP,GAClBvP,MAEA9K,GAAI8K,KAAMwL,EAErB,CACF,CACA,SAAStW,GAAImO,EAAKmI,GAChB,IAAKnI,EAAIrE,UACP,OAAOa,IAET,IAAIkH,EAAI1D,EAAIjE,GACVqQ,EAAQpM,EAAIxC,OACd,OAAQ2K,GACN,IAAK,eACH,OAAOiE,EAAQ1I,EAAE2I,qBAAuB3I,EAAE4I,kBAC5C,IAAK,UACH,OAAOF,EAAQ1I,EAAE6I,gBAAkB7I,EAAE8I,aACvC,IAAK,UACH,OAAOJ,EAAQ1I,EAAE+I,gBAAkB/I,EAAEgJ,aACvC,IAAK,QACH,OAAON,EAAQ1I,EAAEiJ,cAAgBjJ,EAAEkJ,WACrC,IAAK,OACH,OAAOR,EAAQ1I,EAAEmJ,aAAenJ,EAAEoJ,UACpC,IAAK,MACH,OAAOV,EAAQ1I,EAAEqJ,YAAcrJ,EAAEsJ,SACnC,IAAK,QACH,OAAOZ,EAAQ1I,EAAEuJ,cAAgBvJ,EAAEwJ,WACrC,IAAK,WACH,OAAOd,EAAQ1I,EAAEyJ,iBAAmBzJ,EAAE0J,cACxC,QACE,OAAO5Q,IAGb,CAEA,SAAS2P,GAAMnM,EAAKmI,EAAMtV,GACxB,IAAI6Q,EAAG0I,EAAOlF,EAAMlB,EAAOpB,EAC3B,GAAK5E,EAAIrE,YAAaK,MAAMnJ,GAA5B,CAKA,OAFA6Q,EAAI1D,EAAIjE,GACRqQ,EAAQpM,EAAIxC,OACJ2K,GACN,IAAK,eACH,YAAaiE,EAAQ1I,EAAE2J,mBAAmBxa,GAAS6Q,EAAE4J,gBAAgBza,IACvE,IAAK,UACH,YAAauZ,EAAQ1I,EAAE6J,cAAc1a,GAAS6Q,EAAE8J,WAAW3a,IAC7D,IAAK,UACH,YAAauZ,EAAQ1I,EAAE+J,cAAc5a,GAAS6Q,EAAEgK,WAAW7a,IAC7D,IAAK,QACH,YAAauZ,EAAQ1I,EAAEiK,YAAY9a,GAAS6Q,EAAEkK,SAAS/a,IACzD,IAAK,OACH,YAAauZ,EAAQ1I,EAAEmK,WAAWhb,GAAS6Q,EAAEoK,QAAQjb,IAKvD,IAAK,WACH,MAEF,QACE,OAIJqU,EAAOrU,EACPmT,EAAQhG,EAAIgG,QAEZpB,EAAgB,MADhBA,EAAO5E,EAAI4E,SACqB,IAAVoB,GAAgBkF,GAAWhE,GAAatC,EAAL,GACnDwH,EAAQ1I,EAAEqK,eAAe7G,EAAMlB,EAAOpB,GAAQlB,EAAEsK,YAAY9G,EAAMlB,EAAOpB,EA9B/E,CA+BF,CAIA,SAASqJ,GAAU7G,GAEjB,OAAIvI,EAAWlC,KADfyK,EAAQD,GAAeC,KAEdzK,KAAKyK,KAEPzK,IACT,CACA,SAASuR,GAAU9G,EAAOvU,GACxB,GAAqB,iBAAVuU,EAAoB,CAE7B,IACEjQ,EADEgX,EAAcnG,GADlBZ,EAAQE,GAAqBF,IAG3BgH,EAAiBD,EAAY7b,OAC/B,IAAK6E,EAAI,EAAGA,EAAIiX,EAAgBjX,IAC9BwF,KAAKwR,EAAYhX,GAAGgR,MAAMf,EAAM+G,EAAYhX,GAAGgR,MAEnD,MAEE,GAAItJ,EAAWlC,KADfyK,EAAQD,GAAeC,KAErB,OAAOzK,KAAKyK,GAAOvU,GAGvB,OAAO8J,IACT,CACA,SAAS0R,GAAIC,EAAG/b,GACd,OAAQ+b,EAAI/b,EAAIA,GAAKA,CACvB,CAgBA,SAASgc,GAAYrH,EAAMlB,GACzB,GAAIhK,MAAMkL,IAASlL,MAAMgK,GACvB,OAAOxJ,IAET,IAAIgS,EAAWH,GAAIrI,EAAO,IAE1B,OADAkB,IAASlB,EAAQwI,GAAY,GACT,IAAbA,EAAiBtD,GAAWhE,GAAQ,GAAK,GAAK,GAAKsH,EAAW,EAAI,CAC3E,CApBEnW,GADE1B,MAAMC,UAAUyB,QACR1B,MAAMC,UAAUyB,QAEhB,SAAUoW,GAElB,IAAItX,EACJ,IAAKA,EAAI,EAAGA,EAAIwF,KAAKrK,SAAU6E,EAC7B,GAAIwF,KAAKxF,KAAOsX,EACd,OAAOtX,EAGX,OAAQ,CACV,EAaFgK,EAAe,IAAK,CAAC,KAAM,GAAI,MAAM,WACnC,OAAOxE,KAAKqJ,QAAU,CACxB,IACA7E,EAAe,MAAO,EAAG,GAAG,SAAUjH,GACpC,OAAOyC,KAAK4E,aAAamN,YAAY/R,KAAMzC,EAC7C,IACAiH,EAAe,OAAQ,EAAG,GAAG,SAAUjH,GACrC,OAAOyC,KAAK4E,aAAawE,OAAOpJ,KAAMzC,EACxC,IAIAwP,GAAc,IAAKd,GAAWY,IAC9BE,GAAc,KAAMd,GAAWJ,IAC/BkB,GAAc,OAAO,SAAUG,EAAU1P,GACvC,OAAOA,EAAOwU,iBAAiB9E,EACjC,IACAH,GAAc,QAAQ,SAAUG,EAAU1P,GACxC,OAAOA,EAAOyU,YAAY/E,EAC5B,IACAgB,GAAc,CAAC,IAAK,OAAO,SAAU7T,EAAO0K,GAC1CA,EAAM0J,IAASX,GAAMzT,GAAS,CAChC,IACA6T,GAAc,CAAC,MAAO,SAAS,SAAU7T,EAAO0K,EAAO9D,EAAQ9H,GAC7D,IAAIkQ,EAAQpI,EAAOF,QAAQmR,YAAY7X,EAAOlB,EAAO8H,EAAOzB,SAE/C,MAAT6J,EACFtE,EAAM0J,IAASpF,EAEfxK,EAAgBoC,GAAQ7C,aAAe/D,CAE3C,IAIA,IAAI8X,GAAsB,wFAAwF1Y,MAAM,KACtH2Y,GAA2B,kDAAkD3Y,MAAM,KACnF4Y,GAAmB,gCACnBC,GAA0B1F,GAC1B2F,GAAqB3F,GACvB,SAAS4F,GAAa1T,EAAGvB,GACvB,OAAKuB,EAGEtD,EAAQwE,KAAKyS,SAAWzS,KAAKyS,QAAQ3T,EAAEuK,SAAWrJ,KAAKyS,SAASzS,KAAKyS,QAAQC,UAAYL,IAAkB/M,KAAK/H,GAAU,SAAW,cAAcuB,EAAEuK,SAFnJ7N,EAAQwE,KAAKyS,SAAWzS,KAAKyS,QAAUzS,KAAKyS,QAAoB,UAG3E,CACA,SAASE,GAAkB7T,EAAGvB,GAC5B,OAAKuB,EAGEtD,EAAQwE,KAAK4S,cAAgB5S,KAAK4S,aAAa9T,EAAEuK,SAAWrJ,KAAK4S,aAAaP,GAAiB/M,KAAK/H,GAAU,SAAW,cAAcuB,EAAEuK,SAFvI7N,EAAQwE,KAAK4S,cAAgB5S,KAAK4S,aAAe5S,KAAK4S,aAAyB,UAG1F,CACA,SAASC,GAAkBC,EAAWvV,EAAQE,GAC5C,IAAIjD,EACFuY,EACA1P,EACA2P,EAAMF,EAAUG,oBAClB,IAAKjT,KAAKkT,aAKR,IAHAlT,KAAKkT,aAAe,GACpBlT,KAAKmT,iBAAmB,GACxBnT,KAAKoT,kBAAoB,GACpB5Y,EAAI,EAAGA,EAAI,KAAMA,EACpB6I,EAAM/F,EAAU,CAAC,IAAM9C,IACvBwF,KAAKoT,kBAAkB5Y,GAAKwF,KAAK+R,YAAY1O,EAAK,IAAI4P,oBACtDjT,KAAKmT,iBAAiB3Y,GAAKwF,KAAKoJ,OAAO/F,EAAK,IAAI4P,oBAGpD,OAAIxV,EACa,QAAXF,GAEa,KADfwV,EAAKrX,GAAQvB,KAAK6F,KAAKoT,kBAAmBJ,IACvBD,EAAK,MAGT,KADfA,EAAKrX,GAAQvB,KAAK6F,KAAKmT,iBAAkBH,IACtBD,EAAK,KAGX,QAAXxV,GAEU,KADZwV,EAAKrX,GAAQvB,KAAK6F,KAAKoT,kBAAmBJ,MAK3B,KADfD,EAAKrX,GAAQvB,KAAK6F,KAAKmT,iBAAkBH,IAFhCD,EAGe,MAGZ,KADZA,EAAKrX,GAAQvB,KAAK6F,KAAKmT,iBAAkBH,MAK1B,KADfD,EAAKrX,GAAQvB,KAAK6F,KAAKoT,kBAAmBJ,IAFjCD,EAGe,IAG9B,CACA,SAASM,GAAkBP,EAAWvV,EAAQE,GAC5C,IAAIjD,EAAG6I,EAAK2J,EACZ,GAAIhN,KAAKsT,kBACP,OAAOT,GAAkB1Y,KAAK6F,KAAM8S,EAAWvV,EAAQE,GAWzD,IATKuC,KAAKkT,eACRlT,KAAKkT,aAAe,GACpBlT,KAAKmT,iBAAmB,GACxBnT,KAAKoT,kBAAoB,IAMtB5Y,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAYvB,GAVA6I,EAAM/F,EAAU,CAAC,IAAM9C,IACnBiD,IAAWuC,KAAKmT,iBAAiB3Y,KACnCwF,KAAKmT,iBAAiB3Y,GAAK,IAAInB,OAAO,IAAM2G,KAAKoJ,OAAO/F,EAAK,IAAIxI,QAAQ,IAAK,IAAM,IAAK,KACzFmF,KAAKoT,kBAAkB5Y,GAAK,IAAInB,OAAO,IAAM2G,KAAK+R,YAAY1O,EAAK,IAAIxI,QAAQ,IAAK,IAAM,IAAK,MAE5F4C,GAAWuC,KAAKkT,aAAa1Y,KAChCwS,EAAQ,IAAMhN,KAAKoJ,OAAO/F,EAAK,IAAM,KAAOrD,KAAK+R,YAAY1O,EAAK,IAClErD,KAAKkT,aAAa1Y,GAAK,IAAInB,OAAO2T,EAAMnS,QAAQ,IAAK,IAAK,MAGxD4C,GAAqB,SAAXF,GAAqByC,KAAKmT,iBAAiB3Y,GAAG8K,KAAKwN,GAC/D,OAAOtY,EACF,GAAIiD,GAAqB,QAAXF,GAAoByC,KAAKoT,kBAAkB5Y,GAAG8K,KAAKwN,GACtE,OAAOtY,EACF,IAAKiD,GAAUuC,KAAKkT,aAAa1Y,GAAG8K,KAAKwN,GAC9C,OAAOtY,CAEX,CACF,CAIA,SAAS+Y,GAASlQ,EAAKnN,GACrB,IAAKmN,EAAIrE,UAEP,OAAOqE,EAET,GAAqB,iBAAVnN,EACT,GAAI,QAAQoP,KAAKpP,GACfA,EAAQ4X,GAAM5X,QAId,IAAK0G,EAFL1G,EAAQmN,EAAIuB,aAAasN,YAAYhc,IAGnC,OAAOmN,EAIb,IAAIgG,EAAQnT,EACV+R,EAAO5E,EAAI4E,OAGb,OAFAA,EAAOA,EAAO,GAAKA,EAAOnE,KAAK0P,IAAIvL,EAAM2J,GAAYvO,EAAIkH,OAAQlB,IAC3DhG,EAAIxC,OAASwC,EAAIjE,GAAGqU,YAAYpK,EAAOpB,GAAQ5E,EAAIjE,GAAGmU,SAASlK,EAAOpB,GACrE5E,CACT,CACA,SAASqQ,GAAYxd,GACnB,OAAa,MAATA,GACFqd,GAASvT,KAAM9J,GACf2F,EAAMqF,aAAalB,MAAM,GAClBA,MAEA9K,GAAI8K,KAAM,QAErB,CACA,SAAS2T,KACP,OAAO/B,GAAY5R,KAAKuK,OAAQvK,KAAKqJ,QACvC,CACA,SAAS2I,GAAiB9E,GACxB,OAAIlN,KAAKsT,mBACFlX,EAAW4D,KAAM,iBACpB4T,GAAmBzZ,KAAK6F,MAEtBkN,EACKlN,KAAK6T,wBAEL7T,KAAK8T,oBAGT1X,EAAW4D,KAAM,uBACpBA,KAAK8T,kBAAoBxB,IAEpBtS,KAAK6T,yBAA2B3G,EAAWlN,KAAK6T,wBAA0B7T,KAAK8T,kBAE1F,CACA,SAAS7B,GAAY/E,GACnB,OAAIlN,KAAKsT,mBACFlX,EAAW4D,KAAM,iBACpB4T,GAAmBzZ,KAAK6F,MAEtBkN,EACKlN,KAAK+T,mBAEL/T,KAAKgU,eAGT5X,EAAW4D,KAAM,kBACpBA,KAAKgU,aAAezB,IAEfvS,KAAK+T,oBAAsB7G,EAAWlN,KAAK+T,mBAAqB/T,KAAKgU,aAEhF,CACA,SAASJ,KACP,SAASK,EAAU5X,EAAGC,GACpB,OAAOA,EAAE3G,OAAS0G,EAAE1G,MACtB,CACA,IAGE6E,EACA6I,EACA6Q,EACAC,EANEC,EAAc,GAChBC,EAAa,GACbC,EAAc,GAKhB,IAAK9Z,EAAI,EAAGA,EAAI,GAAIA,IAElB6I,EAAM/F,EAAU,CAAC,IAAM9C,IACvB0Z,EAAS7G,GAAYrN,KAAK+R,YAAY1O,EAAK,KAC3C8Q,EAAQ9G,GAAYrN,KAAKoJ,OAAO/F,EAAK,KACrC+Q,EAAYte,KAAKoe,GACjBG,EAAWve,KAAKqe,GAChBG,EAAYxe,KAAKqe,GACjBG,EAAYxe,KAAKoe,GAInBE,EAAY1I,KAAKuI,GACjBI,EAAW3I,KAAKuI,GAChBK,EAAY5I,KAAKuI,GACjBjU,KAAKgU,aAAe,IAAI3a,OAAO,KAAOib,EAAY3a,KAAK,KAAO,IAAK,KACnEqG,KAAK8T,kBAAoB9T,KAAKgU,aAC9BhU,KAAK+T,mBAAqB,IAAI1a,OAAO,KAAOgb,EAAW1a,KAAK,KAAO,IAAK,KACxEqG,KAAK6T,wBAA0B,IAAIxa,OAAO,KAAO+a,EAAYza,KAAK,KAAO,IAAK,IAChF,CACA,SAAS4a,GAAWlN,EAAGvI,EAAGiI,EAAGF,EAAGM,EAAGT,EAAGqC,GAGpC,IAAId,EAWJ,OATIZ,EAAI,KAAOA,GAAK,GAElBY,EAAO,IAAInL,KAAKuK,EAAI,IAAKvI,EAAGiI,EAAGF,EAAGM,EAAGT,EAAGqC,GACpCkF,SAAShG,EAAKwI,gBAChBxI,EAAKoJ,YAAYhK,IAGnBY,EAAO,IAAInL,KAAKuK,EAAGvI,EAAGiI,EAAGF,EAAGM,EAAGT,EAAGqC,GAE7Bd,CACT,CACA,SAASuM,GAAcnN,GACrB,IAAIY,EAAMrG,EAaV,OAXIyF,EAAI,KAAOA,GAAK,IAClBzF,EAAO5H,MAAMC,UAAUH,MAAMK,KAAK4B,YAE7B,GAAKsL,EAAI,IACdY,EAAO,IAAInL,KAAKA,KAAK2X,IAAI3Y,MAAM,KAAM8F,IACjCqM,SAAShG,EAAKuI,mBAChBvI,EAAKmJ,eAAe/J,IAGtBY,EAAO,IAAInL,KAAKA,KAAK2X,IAAI3Y,MAAM,KAAMC,YAEhCkM,CACT,CAGA,SAASyM,GAAgBnK,EAAMoK,EAAKC,GAClC,IAEEC,EAAM,EAAIF,EAAMC,EAGlB,QADW,EAAIJ,GAAcjK,EAAM,EAAGsK,GAAKzE,YAAcuE,GAAO,EAChDE,EAAM,CACxB,CAGA,SAASC,GAAmBvK,EAAML,EAAM5B,EAASqM,EAAKC,GACpD,IAGEG,EACAC,EAFA/J,EAAY,EAAI,GAAKf,EAAO,IAFV,EAAI5B,EAAUqM,GAAO,EAC1BD,GAAgBnK,EAAMoK,EAAKC,GAc1C,OAVI3J,GAAa,EAEf+J,EAAe/F,GADf8F,EAAUxK,EAAO,GACoBU,EAC5BA,EAAYgE,GAAW1E,IAChCwK,EAAUxK,EAAO,EACjByK,EAAe/J,EAAYgE,GAAW1E,KAEtCwK,EAAUxK,EACVyK,EAAe/J,GAEV,CACLV,KAAMwK,EACN9J,UAAW+J,EAEf,CACA,SAASC,GAAW5R,EAAKsR,EAAKC,GAC5B,IAEEM,EACAH,EAHEI,EAAaT,GAAgBrR,EAAIkH,OAAQoK,EAAKC,GAChD1K,EAAOpG,KAAK+J,OAAOxK,EAAI4H,YAAckK,EAAa,GAAK,GAAK,EAa9D,OAVIjL,EAAO,EAETgL,EAAUhL,EAAOkL,GADjBL,EAAU1R,EAAIkH,OAAS,EACeoK,EAAKC,GAClC1K,EAAOkL,GAAY/R,EAAIkH,OAAQoK,EAAKC,IAC7CM,EAAUhL,EAAOkL,GAAY/R,EAAIkH,OAAQoK,EAAKC,GAC9CG,EAAU1R,EAAIkH,OAAS,IAEvBwK,EAAU1R,EAAIkH,OACd2K,EAAUhL,GAEL,CACLA,KAAMgL,EACN3K,KAAMwK,EAEV,CACA,SAASK,GAAY7K,EAAMoK,EAAKC,GAC9B,IAAIO,EAAaT,GAAgBnK,EAAMoK,EAAKC,GAC1CS,EAAiBX,GAAgBnK,EAAO,EAAGoK,EAAKC,GAClD,OAAQ3F,GAAW1E,GAAQ4K,EAAaE,GAAkB,CAC5D,CAqBA,SAASC,GAAWjS,GAClB,OAAO4R,GAAW5R,EAAKrD,KAAKuV,MAAMZ,IAAK3U,KAAKuV,MAAMX,KAAK1K,IACzD,CAnBA1F,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAIrCuI,GAAc,IAAKd,GAAWY,IAC9BE,GAAc,KAAMd,GAAWJ,IAC/BkB,GAAc,IAAKd,GAAWY,IAC9BE,GAAc,KAAMd,GAAWJ,IAC/BuC,GAAkB,CAAC,IAAK,KAAM,IAAK,OAAO,SAAU/T,EAAO6P,EAAMjJ,EAAQ9H,GACvE+Q,EAAK/Q,EAAMgL,OAAO,EAAG,IAAM2J,GAAMzT,EACnC,IASA,IAAImb,GAAoB,CACtBb,IAAK,EAELC,IAAK,GAGP,SAASa,KACP,OAAOzV,KAAKuV,MAAMZ,GACpB,CACA,SAASe,KACP,OAAO1V,KAAKuV,MAAMX,GACpB,CAIA,SAASe,GAAWtb,GAClB,IAAI6P,EAAOlK,KAAK4E,aAAasF,KAAKlK,MAClC,OAAgB,MAAT3F,EAAgB6P,EAAOlK,KAAK4V,IAAqB,GAAhBvb,EAAQ6P,GAAW,IAC7D,CACA,SAAS2L,GAAcxb,GACrB,IAAI6P,EAAO+K,GAAWjV,KAAM,EAAG,GAAGkK,KAClC,OAAgB,MAAT7P,EAAgB6P,EAAOlK,KAAK4V,IAAqB,GAAhBvb,EAAQ6P,GAAW,IAC7D,CA8CA,SAAS4L,GAAazb,EAAOmD,GAC3B,MAAqB,iBAAVnD,EACFA,EAEJgF,MAAMhF,GAIU,iBADrBA,EAAQmD,EAAOuY,cAAc1b,IAEpBA,EAEF,KANE8U,SAAS9U,EAAO,GAO3B,CACA,SAAS2b,GAAgB3b,EAAOmD,GAC9B,MAAqB,iBAAVnD,EACFmD,EAAOuY,cAAc1b,GAAS,GAAK,EAErCgF,MAAMhF,GAAS,KAAOA,CAC/B,CAGA,SAAS4b,GAAcC,EAAIvE,GACzB,OAAOuE,EAAGpc,MAAM6X,EAAG,GAAGzX,OAAOgc,EAAGpc,MAAM,EAAG6X,GAC3C,CAjEAnN,EAAe,IAAK,EAAG,KAAM,OAC7BA,EAAe,KAAM,EAAG,GAAG,SAAUjH,GACnC,OAAOyC,KAAK4E,aAAauR,YAAYnW,KAAMzC,EAC7C,IACAiH,EAAe,MAAO,EAAG,GAAG,SAAUjH,GACpC,OAAOyC,KAAK4E,aAAawR,cAAcpW,KAAMzC,EAC/C,IACAiH,EAAe,OAAQ,EAAG,GAAG,SAAUjH,GACrC,OAAOyC,KAAK4E,aAAayD,SAASrI,KAAMzC,EAC1C,IACAiH,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1BuI,GAAc,IAAKd,IACnBc,GAAc,IAAKd,IACnBc,GAAc,IAAKd,IACnBc,GAAc,MAAM,SAAUG,EAAU1P,GACtC,OAAOA,EAAO6Y,iBAAiBnJ,EACjC,IACAH,GAAc,OAAO,SAAUG,EAAU1P,GACvC,OAAOA,EAAO8Y,mBAAmBpJ,EACnC,IACAH,GAAc,QAAQ,SAAUG,EAAU1P,GACxC,OAAOA,EAAO+Y,cAAcrJ,EAC9B,IACAkB,GAAkB,CAAC,KAAM,MAAO,SAAS,SAAU/T,EAAO6P,EAAMjJ,EAAQ9H,GACtE,IAAImP,EAAUrH,EAAOF,QAAQgV,cAAc1b,EAAOlB,EAAO8H,EAAOzB,SAEjD,MAAX8I,EACF4B,EAAKnD,EAAIuB,EAETzJ,EAAgBoC,GAAQ1B,eAAiBlF,CAE7C,IACA+T,GAAkB,CAAC,IAAK,IAAK,MAAM,SAAU/T,EAAO6P,EAAMjJ,EAAQ9H,GAChE+Q,EAAK/Q,GAAS2U,GAAMzT,EACtB,IA4BA,IAAImc,GAAwB,2DAA2D/c,MAAM,KAC3Fgd,GAA6B,8BAA8Bhd,MAAM,KACjEid,GAA2B,uBAAuBjd,MAAM,KACxDkd,GAAuB/J,GACvBgK,GAA4BhK,GAC5BiK,GAA0BjK,GAC5B,SAASkK,GAAehY,EAAGvB,GACzB,IAAI8K,EAAW7M,EAAQwE,KAAK+W,WAAa/W,KAAK+W,UAAY/W,KAAK+W,UAAUjY,IAAW,IAANA,GAAckB,KAAK+W,UAAUrE,SAASpN,KAAK/H,GAAU,SAAW,cAC9I,OAAa,IAANuB,EAAamX,GAAc5N,EAAUrI,KAAKuV,MAAMZ,KAAO7V,EAAIuJ,EAASvJ,EAAEqJ,OAASE,CACxF,CACA,SAAS2O,GAAoBlY,GAC3B,OAAa,IAANA,EAAamX,GAAcjW,KAAKiX,eAAgBjX,KAAKuV,MAAMZ,KAAO7V,EAAIkB,KAAKiX,eAAenY,EAAEqJ,OAASnI,KAAKiX,cACnH,CACA,SAASC,GAAkBpY,GACzB,OAAa,IAANA,EAAamX,GAAcjW,KAAKmX,aAAcnX,KAAKuV,MAAMZ,KAAO7V,EAAIkB,KAAKmX,aAAarY,EAAEqJ,OAASnI,KAAKmX,YAC/G,CACA,SAASC,GAAoBC,EAAa9Z,EAAQE,GAChD,IAAIjD,EACFuY,EACA1P,EACA2P,EAAMqE,EAAYpE,oBACpB,IAAKjT,KAAKsX,eAIR,IAHAtX,KAAKsX,eAAiB,GACtBtX,KAAKuX,oBAAsB,GAC3BvX,KAAKwX,kBAAoB,GACpBhd,EAAI,EAAGA,EAAI,IAAKA,EACnB6I,EAAM/F,EAAU,CAAC,IAAM,IAAI6K,IAAI3N,GAC/BwF,KAAKwX,kBAAkBhd,GAAKwF,KAAKmW,YAAY9S,EAAK,IAAI4P,oBACtDjT,KAAKuX,oBAAoB/c,GAAKwF,KAAKoW,cAAc/S,EAAK,IAAI4P,oBAC1DjT,KAAKsX,eAAe9c,GAAKwF,KAAKqI,SAAShF,EAAK,IAAI4P,oBAGpD,OAAIxV,EACa,SAAXF,GAEa,KADfwV,EAAKrX,GAAQvB,KAAK6F,KAAKsX,eAAgBtE,IACpBD,EAAK,KACJ,QAAXxV,GAEM,KADfwV,EAAKrX,GAAQvB,KAAK6F,KAAKuX,oBAAqBvE,IACzBD,EAAK,MAGT,KADfA,EAAKrX,GAAQvB,KAAK6F,KAAKwX,kBAAmBxE,IACvBD,EAAK,KAGX,SAAXxV,GAEU,KADZwV,EAAKrX,GAAQvB,KAAK6F,KAAKsX,eAAgBtE,MAK3B,KADZD,EAAKrX,GAAQvB,KAAK6F,KAAKuX,oBAAqBvE,MAK7B,KADfD,EAAKrX,GAAQvB,KAAK6F,KAAKwX,kBAAmBxE,IANjCD,EAOe,KACJ,QAAXxV,GAEG,KADZwV,EAAKrX,GAAQvB,KAAK6F,KAAKuX,oBAAqBvE,MAKhC,KADZD,EAAKrX,GAAQvB,KAAK6F,KAAKsX,eAAgBtE,MAKxB,KADfD,EAAKrX,GAAQvB,KAAK6F,KAAKwX,kBAAmBxE,IANjCD,EAOe,MAGZ,KADZA,EAAKrX,GAAQvB,KAAK6F,KAAKwX,kBAAmBxE,MAK9B,KADZD,EAAKrX,GAAQvB,KAAK6F,KAAKsX,eAAgBtE,MAKxB,KADfD,EAAKrX,GAAQvB,KAAK6F,KAAKuX,oBAAqBvE,IANnCD,EAOe,IAG9B,CACA,SAAS0E,GAAoBJ,EAAa9Z,EAAQE,GAChD,IAAIjD,EAAG6I,EAAK2J,EACZ,GAAIhN,KAAK0X,oBACP,OAAON,GAAoBjd,KAAK6F,KAAMqX,EAAa9Z,EAAQE,GAQ7D,IANKuC,KAAKsX,iBACRtX,KAAKsX,eAAiB,GACtBtX,KAAKwX,kBAAoB,GACzBxX,KAAKuX,oBAAsB,GAC3BvX,KAAK2X,mBAAqB,IAEvBnd,EAAI,EAAGA,EAAI,EAAGA,IAAK,CActB,GAXA6I,EAAM/F,EAAU,CAAC,IAAM,IAAI6K,IAAI3N,GAC3BiD,IAAWuC,KAAK2X,mBAAmBnd,KACrCwF,KAAK2X,mBAAmBnd,GAAK,IAAInB,OAAO,IAAM2G,KAAKqI,SAAShF,EAAK,IAAIxI,QAAQ,IAAK,QAAU,IAAK,KACjGmF,KAAKuX,oBAAoB/c,GAAK,IAAInB,OAAO,IAAM2G,KAAKoW,cAAc/S,EAAK,IAAIxI,QAAQ,IAAK,QAAU,IAAK,KACvGmF,KAAKwX,kBAAkBhd,GAAK,IAAInB,OAAO,IAAM2G,KAAKmW,YAAY9S,EAAK,IAAIxI,QAAQ,IAAK,QAAU,IAAK,MAEhGmF,KAAKsX,eAAe9c,KACvBwS,EAAQ,IAAMhN,KAAKqI,SAAShF,EAAK,IAAM,KAAOrD,KAAKoW,cAAc/S,EAAK,IAAM,KAAOrD,KAAKmW,YAAY9S,EAAK,IACzGrD,KAAKsX,eAAe9c,GAAK,IAAInB,OAAO2T,EAAMnS,QAAQ,IAAK,IAAK,MAG1D4C,GAAqB,SAAXF,GAAqByC,KAAK2X,mBAAmBnd,GAAG8K,KAAK+R,GACjE,OAAO7c,EACF,GAAIiD,GAAqB,QAAXF,GAAoByC,KAAKuX,oBAAoB/c,GAAG8K,KAAK+R,GACxE,OAAO7c,EACF,GAAIiD,GAAqB,OAAXF,GAAmByC,KAAKwX,kBAAkBhd,GAAG8K,KAAK+R,GACrE,OAAO7c,EACF,IAAKiD,GAAUuC,KAAKsX,eAAe9c,GAAG8K,KAAK+R,GAChD,OAAO7c,CAEX,CACF,CAIA,SAASod,GAAgBvd,GACvB,IAAK2F,KAAKhB,UACR,OAAgB,MAAT3E,EAAgB2F,KAAOH,IAEhC,IAAIsI,EAAMjT,GAAI8K,KAAM,OACpB,OAAa,MAAT3F,GACFA,EAAQyb,GAAazb,EAAO2F,KAAK4E,cAC1B5E,KAAK4V,IAAIvb,EAAQ8N,EAAK,MAEtBA,CAEX,CACA,SAAS0P,GAAsBxd,GAC7B,IAAK2F,KAAKhB,UACR,OAAgB,MAAT3E,EAAgB2F,KAAOH,IAEhC,IAAIyI,GAAWtI,KAAKmI,MAAQ,EAAInI,KAAK4E,aAAa2Q,MAAMZ,KAAO,EAC/D,OAAgB,MAATta,EAAgBiO,EAAUtI,KAAK4V,IAAIvb,EAAQiO,EAAS,IAC7D,CACA,SAASwP,GAAmBzd,GAC1B,IAAK2F,KAAKhB,UACR,OAAgB,MAAT3E,EAAgB2F,KAAOH,IAOhC,GAAa,MAATxF,EAAe,CACjB,IAAIiO,EAAU0N,GAAgB3b,EAAO2F,KAAK4E,cAC1C,OAAO5E,KAAKmI,IAAInI,KAAKmI,MAAQ,EAAIG,EAAUA,EAAU,EACvD,CACE,OAAOtI,KAAKmI,OAAS,CAEzB,CACA,SAASoO,GAAcrJ,GACrB,OAAIlN,KAAK0X,qBACFtb,EAAW4D,KAAM,mBACpB+X,GAAqB5d,KAAK6F,MAExBkN,EACKlN,KAAKgY,qBAELhY,KAAKiY,iBAGT7b,EAAW4D,KAAM,oBACpBA,KAAKiY,eAAiBtB,IAEjB3W,KAAKgY,sBAAwB9K,EAAWlN,KAAKgY,qBAAuBhY,KAAKiY,eAEpF,CACA,SAAS3B,GAAmBpJ,GAC1B,OAAIlN,KAAK0X,qBACFtb,EAAW4D,KAAM,mBACpB+X,GAAqB5d,KAAK6F,MAExBkN,EACKlN,KAAKkY,0BAELlY,KAAKmY,sBAGT/b,EAAW4D,KAAM,yBACpBA,KAAKmY,oBAAsBvB,IAEtB5W,KAAKkY,2BAA6BhL,EAAWlN,KAAKkY,0BAA4BlY,KAAKmY,oBAE9F,CACA,SAAS9B,GAAiBnJ,GACxB,OAAIlN,KAAK0X,qBACFtb,EAAW4D,KAAM,mBACpB+X,GAAqB5d,KAAK6F,MAExBkN,EACKlN,KAAKoY,wBAELpY,KAAKqY,oBAGTjc,EAAW4D,KAAM,uBACpBA,KAAKqY,kBAAoBxB,IAEpB7W,KAAKoY,yBAA2BlL,EAAWlN,KAAKoY,wBAA0BpY,KAAKqY,kBAE1F,CACA,SAASN,KACP,SAAS9D,EAAU5X,EAAGC,GACpB,OAAOA,EAAE3G,OAAS0G,EAAE1G,MACtB,CACA,IAIE6E,EACA6I,EACAiV,EACAC,EACAC,EAREC,EAAY,GACdrE,EAAc,GACdC,EAAa,GACbC,EAAc,GAMhB,IAAK9Z,EAAI,EAAGA,EAAI,EAAGA,IAEjB6I,EAAM/F,EAAU,CAAC,IAAM,IAAI6K,IAAI3N,GAC/B8d,EAAOjL,GAAYrN,KAAKmW,YAAY9S,EAAK,KACzCkV,EAASlL,GAAYrN,KAAKoW,cAAc/S,EAAK,KAC7CmV,EAAQnL,GAAYrN,KAAKqI,SAAShF,EAAK,KACvCoV,EAAU3iB,KAAKwiB,GACflE,EAAYte,KAAKyiB,GACjBlE,EAAWve,KAAK0iB,GAChBlE,EAAYxe,KAAKwiB,GACjBhE,EAAYxe,KAAKyiB,GACjBjE,EAAYxe,KAAK0iB,GAInBC,EAAU/M,KAAKuI,GACfG,EAAY1I,KAAKuI,GACjBI,EAAW3I,KAAKuI,GAChBK,EAAY5I,KAAKuI,GACjBjU,KAAKiY,eAAiB,IAAI5e,OAAO,KAAOib,EAAY3a,KAAK,KAAO,IAAK,KACrEqG,KAAKmY,oBAAsBnY,KAAKiY,eAChCjY,KAAKqY,kBAAoBrY,KAAKiY,eAC9BjY,KAAKgY,qBAAuB,IAAI3e,OAAO,KAAOgb,EAAW1a,KAAK,KAAO,IAAK,KAC1EqG,KAAKkY,0BAA4B,IAAI7e,OAAO,KAAO+a,EAAYza,KAAK,KAAO,IAAK,KAChFqG,KAAKoY,wBAA0B,IAAI/e,OAAO,KAAOof,EAAU9e,KAAK,KAAO,IAAK,IAC9E,CAIA,SAAS+e,KACP,OAAO1Y,KAAK6I,QAAU,IAAM,EAC9B,CACA,SAAS8P,KACP,OAAO3Y,KAAK6I,SAAW,EACzB,CAgBA,SAASnK,GAASvF,EAAOyf,GACvBpU,EAAerL,EAAO,EAAG,GAAG,WAC1B,OAAO6G,KAAK4E,aAAalG,SAASsB,KAAK6I,QAAS7I,KAAKkJ,UAAW0P,EAClE,GACF,CAMA,SAASC,GAAc3L,EAAU1P,GAC/B,OAAOA,EAAOsb,cAChB,CAuDA,SAASC,GAAW1e,GAGlB,MAAgD,OAAxCA,EAAQ,IAAIqQ,cAAcsO,OAAO,EAC3C,CAtFAxU,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGkU,IAClClU,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGmU,IAClCnU,EAAe,MAAO,EAAG,GAAG,WAC1B,MAAO,GAAKkU,GAAQ5c,MAAMkE,MAAQyD,EAASzD,KAAKkJ,UAAW,EAC7D,IACA1E,EAAe,QAAS,EAAG,GAAG,WAC5B,MAAO,GAAKkU,GAAQ5c,MAAMkE,MAAQyD,EAASzD,KAAKkJ,UAAW,GAAKzF,EAASzD,KAAKyJ,UAAW,EAC3F,IACAjF,EAAe,MAAO,EAAG,GAAG,WAC1B,MAAO,GAAKxE,KAAK6I,QAAUpF,EAASzD,KAAKkJ,UAAW,EACtD,IACA1E,EAAe,QAAS,EAAG,GAAG,WAC5B,MAAO,GAAKxE,KAAK6I,QAAUpF,EAASzD,KAAKkJ,UAAW,GAAKzF,EAASzD,KAAKyJ,UAAW,EACpF,IAMA/K,GAAS,KAAK,GACdA,GAAS,KAAK,GAOdqO,GAAc,IAAK8L,IACnB9L,GAAc,IAAK8L,IACnB9L,GAAc,IAAKd,GAAWa,IAC9BC,GAAc,IAAKd,GAAWY,IAC9BE,GAAc,IAAKd,GAAWY,IAC9BE,GAAc,KAAMd,GAAWJ,IAC/BkB,GAAc,KAAMd,GAAWJ,IAC/BkB,GAAc,KAAMd,GAAWJ,IAC/BkB,GAAc,MAAOb,IACrBa,GAAc,QAASZ,IACvBY,GAAc,MAAOb,IACrBa,GAAc,QAASZ,IACvB+B,GAAc,CAAC,IAAK,MAAOS,IAC3BT,GAAc,CAAC,IAAK,OAAO,SAAU7T,EAAO0K,EAAO9D,GACjD,IAAIgY,EAASnL,GAAMzT,GACnB0K,EAAM4J,IAAmB,KAAXsK,EAAgB,EAAIA,CACpC,IACA/K,GAAc,CAAC,IAAK,MAAM,SAAU7T,EAAO0K,EAAO9D,GAChDA,EAAOiY,MAAQjY,EAAOF,QAAQoY,KAAK9e,GACnC4G,EAAOmY,UAAY/e,CACrB,IACA6T,GAAc,CAAC,IAAK,OAAO,SAAU7T,EAAO0K,EAAO9D,GACjD8D,EAAM4J,IAAQb,GAAMzT,GACpBwE,EAAgBoC,GAAQxB,SAAU,CACpC,IACAyO,GAAc,OAAO,SAAU7T,EAAO0K,EAAO9D,GAC3C,IAAIoY,EAAMhf,EAAM1E,OAAS,EACzBoP,EAAM4J,IAAQb,GAAMzT,EAAM8J,OAAO,EAAGkV,IACpCtU,EAAM6J,IAAUd,GAAMzT,EAAM8J,OAAOkV,IACnCxa,EAAgBoC,GAAQxB,SAAU,CACpC,IACAyO,GAAc,SAAS,SAAU7T,EAAO0K,EAAO9D,GAC7C,IAAIqY,EAAOjf,EAAM1E,OAAS,EACxB4jB,EAAOlf,EAAM1E,OAAS,EACxBoP,EAAM4J,IAAQb,GAAMzT,EAAM8J,OAAO,EAAGmV,IACpCvU,EAAM6J,IAAUd,GAAMzT,EAAM8J,OAAOmV,EAAM,IACzCvU,EAAM8J,IAAUf,GAAMzT,EAAM8J,OAAOoV,IACnC1a,EAAgBoC,GAAQxB,SAAU,CACpC,IACAyO,GAAc,OAAO,SAAU7T,EAAO0K,EAAO9D,GAC3C,IAAIoY,EAAMhf,EAAM1E,OAAS,EACzBoP,EAAM4J,IAAQb,GAAMzT,EAAM8J,OAAO,EAAGkV,IACpCtU,EAAM6J,IAAUd,GAAMzT,EAAM8J,OAAOkV,GACrC,IACAnL,GAAc,SAAS,SAAU7T,EAAO0K,EAAO9D,GAC7C,IAAIqY,EAAOjf,EAAM1E,OAAS,EACxB4jB,EAAOlf,EAAM1E,OAAS,EACxBoP,EAAM4J,IAAQb,GAAMzT,EAAM8J,OAAO,EAAGmV,IACpCvU,EAAM6J,IAAUd,GAAMzT,EAAM8J,OAAOmV,EAAM,IACzCvU,EAAM8J,IAAUf,GAAMzT,EAAM8J,OAAOoV,GACrC,IASA,IAAIC,GAA6B,gBAK/BC,GAAapK,GAAW,SAAS,GACnC,SAASqK,GAAe7Q,EAAOK,EAASyQ,GACtC,OAAI9Q,EAAQ,GACH8Q,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAE5B,CACA,IAmBEC,GAnBEC,GAAa,CACfzW,SAAUP,EACVuC,eAAgBG,EAChBL,YAAagB,EACbxB,QAAS0B,EACT0T,uBAAwBzT,EACxBkB,aAAchB,EACd6C,OAAQ+I,GACRJ,YAAaK,GACblI,KAAMsL,GACNnN,SAAUmO,GACVL,YAAaO,GACbN,cAAeK,GACfsD,cAAeP,IAIbQ,GAAU,CAAC,EACbC,GAAiB,CAAC,EAEpB,SAASC,GAAaC,EAAMC,GAC1B,IAAI5f,EACF6f,EAAOvW,KAAK0P,IAAI2G,EAAKxkB,OAAQykB,EAAKzkB,QACpC,IAAK6E,EAAI,EAAGA,EAAI6f,EAAM7f,GAAK,EACzB,GAAI2f,EAAK3f,KAAO4f,EAAK5f,GACnB,OAAOA,EAGX,OAAO6f,CACT,CACA,SAASC,GAAgBpf,GACvB,OAAOA,EAAMA,EAAIwP,cAAc7P,QAAQ,IAAK,KAAOK,CACrD,CAKA,SAASqf,GAAaC,GAMpB,IALA,IACEC,EACAC,EACAld,EACA/D,EAJEe,EAAI,EAKDA,EAAIggB,EAAM7kB,QAAQ,CAKvB,IAHA8kB,GADAhhB,EAAQ6gB,GAAgBE,EAAMhgB,IAAIf,MAAM,MAC9B9D,OAEV+kB,GADAA,EAAOJ,GAAgBE,EAAMhgB,EAAI,KACnBkgB,EAAKjhB,MAAM,KAAO,KACzBghB,EAAI,GAAG,CAEZ,GADAjd,EAASmd,GAAWlhB,EAAMK,MAAM,EAAG2gB,GAAG9gB,KAAK,MAEzC,OAAO6D,EAET,GAAIkd,GAAQA,EAAK/kB,QAAU8kB,GAAKP,GAAazgB,EAAOihB,IAASD,EAAI,EAE/D,MAEFA,GACF,CACAjgB,GACF,CACA,OAAOof,EACT,CACA,SAASgB,GAAiBnmB,GAGxB,SAAUA,IAAQA,EAAK8F,MAAM,eAC/B,CACA,SAASogB,GAAWlmB,GAClB,IAAIomB,EAAY,KAGhB,QAAsBxkB,IAAlB2jB,GAAQvlB,IAAwDgG,GAAUA,EAAOC,SAAWkgB,GAAiBnmB,GAC/G,IACEomB,EAAYjB,GAAakB,MAEzB,0GACAC,GAAmBF,EACrB,CAAE,MAAOzS,GAGP4R,GAAQvlB,GAAQ,IAClB,CAGF,OAAOulB,GAAQvlB,EACjB,CAKA,SAASsmB,GAAmB7f,EAAK8f,GAC/B,IAAI7iB,EAiBJ,OAhBI+C,KAEA/C,EADEwE,EAAYqe,GACPC,GAAU/f,GAEVggB,GAAahgB,EAAK8f,IAIzBpB,GAAezhB,EAEQ,oBAAZoJ,SAA2BA,QAAQH,MAE5CG,QAAQH,KAAK,UAAYlG,EAAM,2CAI9B0e,GAAakB,KACtB,CACA,SAASI,GAAazmB,EAAMwM,GAC1B,GAAe,OAAXA,EAAiB,CACnB,IAAIzD,EACFkF,EAAemX,GAEjB,GADA5Y,EAAOka,KAAO1mB,EACO,MAAjBulB,GAAQvlB,GACVwN,EAAgB,uBAAwB,2OACxCS,EAAesX,GAAQvlB,GAAM2N,aACxB,GAA2B,MAAvBnB,EAAOma,aAChB,GAAoC,MAAhCpB,GAAQ/Y,EAAOma,cACjB1Y,EAAesX,GAAQ/Y,EAAOma,cAAchZ,YACvC,CAEL,GAAc,OADd5E,EAASmd,GAAW1Z,EAAOma,eAWzB,OAPKnB,GAAehZ,EAAOma,gBACzBnB,GAAehZ,EAAOma,cAAgB,IAExCnB,GAAehZ,EAAOma,cAActlB,KAAK,CACvCrB,KAAMA,EACNwM,OAAQA,IAEH,KATPyB,EAAelF,EAAO4E,OAW1B,CAaF,OAXA4X,GAAQvlB,GAAQ,IAAImO,EAAOH,EAAaC,EAAczB,IAClDgZ,GAAexlB,IACjBwlB,GAAexlB,GAAM4mB,SAAQ,SAAUzlB,GACrCslB,GAAatlB,EAAEnB,KAAMmB,EAAEqL,OACzB,IAMF8Z,GAAmBtmB,GACZulB,GAAQvlB,EACjB,CAGE,cADOulB,GAAQvlB,GACR,IAEX,CACA,SAAS6mB,GAAa7mB,EAAMwM,GAC1B,GAAc,MAAVA,EAAgB,CAClB,IAAIzD,EACF+d,EACA7Y,EAAemX,GACI,MAAjBG,GAAQvlB,IAA+C,MAA9BulB,GAAQvlB,GAAM2mB,aAEzCpB,GAAQvlB,GAAM0B,IAAIsM,EAAauX,GAAQvlB,GAAM2N,QAASnB,KAIrC,OADjBsa,EAAYZ,GAAWlmB,MAErBiO,EAAe6Y,EAAUnZ,SAE3BnB,EAASwB,EAAaC,EAAczB,GACnB,MAAbsa,IAIFta,EAAOka,KAAO1mB,IAEhB+I,EAAS,IAAIoF,EAAO3B,IACbma,aAAepB,GAAQvlB,GAC9BulB,GAAQvlB,GAAQ+I,GAIlBud,GAAmBtmB,EACrB,MAEuB,MAAjBulB,GAAQvlB,KACwB,MAA9BulB,GAAQvlB,GAAM2mB,cAChBpB,GAAQvlB,GAAQulB,GAAQvlB,GAAM2mB,aAC1B3mB,IAASsmB,MACXA,GAAmBtmB,IAEK,MAAjBulB,GAAQvlB,WACVulB,GAAQvlB,IAIrB,OAAOulB,GAAQvlB,EACjB,CAGA,SAASwmB,GAAU/f,GACjB,IAAIsC,EAIJ,GAHItC,GAAOA,EAAI6F,SAAW7F,EAAI6F,QAAQ+Z,QACpC5f,EAAMA,EAAI6F,QAAQ+Z,QAEf5f,EACH,OAAO0e,GAET,IAAKpe,EAAQN,GAAM,CAGjB,GADAsC,EAASmd,GAAWzf,GAElB,OAAOsC,EAETtC,EAAM,CAACA,EACT,CACA,OAAOqf,GAAarf,EACtB,CACA,SAASsgB,KACP,OAAOvgB,EAAK+e,GACd,CACA,SAASyB,GAAc3c,GACrB,IAAId,EACF3B,EAAIyC,EAAErJ,GAcR,OAbI4G,IAAsC,IAAjCwC,EAAgBC,GAAGd,WAC1BA,EAAW3B,EAAEoS,IAAS,GAAKpS,EAAEoS,IAAS,GAAKA,GAAQpS,EAAEqS,IAAQ,GAAKrS,EAAEqS,IAAQkD,GAAYvV,EAAEmS,IAAOnS,EAAEoS,KAAUC,GAAOrS,EAAEsS,IAAQ,GAAKtS,EAAEsS,IAAQ,IAAkB,KAAZtS,EAAEsS,MAA+B,IAAdtS,EAAEuS,KAA+B,IAAdvS,EAAEwS,KAAoC,IAAnBxS,EAAEyS,KAAsBH,GAAOtS,EAAEuS,IAAU,GAAKvS,EAAEuS,IAAU,GAAKA,GAASvS,EAAEwS,IAAU,GAAKxS,EAAEwS,IAAU,GAAKA,GAASxS,EAAEyS,IAAe,GAAKzS,EAAEyS,IAAe,IAAMA,IAAe,EACzXjQ,EAAgBC,GAAG4c,qBAAuB1d,EAAWwQ,IAAQxQ,EAAW0Q,MAC1E1Q,EAAW0Q,IAET7P,EAAgBC,GAAG6c,iBAAgC,IAAd3d,IACvCA,EAAW+Q,IAETlQ,EAAgBC,GAAG8c,mBAAkC,IAAd5d,IACzCA,EAAWgR,IAEbnQ,EAAgBC,GAAGd,SAAWA,GAEzBc,CACT,CAIA,IAAI+c,GAAmB,iJACrBC,GAAgB,6IAChBC,GAAU,wBACVC,GAAW,CAAC,CAAC,eAAgB,uBAAwB,CAAC,aAAc,mBAAoB,CAAC,eAAgB,kBAAmB,CAAC,aAAc,eAAe,GAAQ,CAAC,WAAY,eAAgB,CAAC,UAAW,cAAc,GAAQ,CAAC,aAAc,cAAe,CAAC,WAAY,SAAU,CAAC,aAAc,eAAgB,CAAC,YAAa,eAAe,GAAQ,CAAC,UAAW,SAAU,CAAC,SAAU,SAAS,GAAQ,CAAC,OAAQ,SAAS,IAE9ZC,GAAW,CAAC,CAAC,gBAAiB,uBAAwB,CAAC,gBAAiB,sBAAuB,CAAC,WAAY,kBAAmB,CAAC,QAAS,aAAc,CAAC,cAAe,qBAAsB,CAAC,cAAe,oBAAqB,CAAC,SAAU,gBAAiB,CAAC,OAAQ,YAAa,CAAC,KAAM,SAC3RC,GAAkB,qBAElBvd,GAAU,0LACVwd,GAAa,CACXC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAIT,SAASC,GAAc7b,GACrB,IAAIzG,EACFuiB,EAGAC,EACAC,EACAC,EACAC,EALA1V,EAASxG,EAAOzL,GAChB+E,EAAQshB,GAAiB9gB,KAAK0M,IAAWqU,GAAc/gB,KAAK0M,GAK5D2V,EAAcpB,GAASrmB,OACvB0nB,EAAcpB,GAAStmB,OACzB,GAAI4E,EAAO,CAET,IADAsE,EAAgBoC,GAAQ1C,KAAM,EACzB/D,EAAI,EAAGuiB,EAAIK,EAAa5iB,EAAIuiB,EAAGviB,IAClC,GAAIwhB,GAASxhB,GAAG,GAAGO,KAAKR,EAAM,IAAK,CACjC0iB,EAAajB,GAASxhB,GAAG,GACzBwiB,GAA+B,IAAnBhB,GAASxhB,GAAG,GACxB,KACF,CAEF,GAAkB,MAAdyiB,EAEF,YADAhc,EAAOtB,UAAW,GAGpB,GAAIpF,EAAM,GAAI,CACZ,IAAKC,EAAI,EAAGuiB,EAAIM,EAAa7iB,EAAIuiB,EAAGviB,IAClC,GAAIyhB,GAASzhB,GAAG,GAAGO,KAAKR,EAAM,IAAK,CAEjC2iB,GAAc3iB,EAAM,IAAM,KAAO0hB,GAASzhB,GAAG,GAC7C,KACF,CAEF,GAAkB,MAAd0iB,EAEF,YADAjc,EAAOtB,UAAW,EAGtB,CACA,IAAKqd,GAA2B,MAAdE,EAEhB,YADAjc,EAAOtB,UAAW,GAGpB,GAAIpF,EAAM,GAAI,CACZ,IAAIwhB,GAAQhhB,KAAKR,EAAM,IAIrB,YADA0G,EAAOtB,UAAW,GAFlBwd,EAAW,GAKf,CACAlc,EAAOP,GAAKuc,GAAcC,GAAc,KAAOC,GAAY,IAC3DG,GAA0Brc,EAC5B,MACEA,EAAOtB,UAAW,CAEtB,CACA,SAAS4d,GAA0BC,EAASC,EAAUC,EAAQC,EAASC,EAAWC,GAChF,IAAIvmB,EAAS,CAACwmB,GAAeN,GAAUpL,GAAyB1W,QAAQ+hB,GAAWtO,SAASuO,EAAQ,IAAKvO,SAASwO,EAAS,IAAKxO,SAASyO,EAAW,KAIpJ,OAHIC,GACFvmB,EAAOxB,KAAKqZ,SAAS0O,EAAW,KAE3BvmB,CACT,CACA,SAASwmB,GAAeN,GACtB,IAAIjT,EAAO4E,SAASqO,EAAS,IAC7B,OAAIjT,GAAQ,GACH,IAAOA,EACLA,GAAQ,IACV,KAAOA,EAETA,CACT,CACA,SAASwT,GAAkBrX,GAEzB,OAAOA,EAAE7L,QAAQ,qBAAsB,KAAKA,QAAQ,WAAY,KAAKA,QAAQ,SAAU,IAAIA,QAAQ,SAAU,GAC/G,CACA,SAASmjB,GAAaC,EAAYC,EAAajd,GAC7C,OAAIgd,GAEoBxH,GAA2B/a,QAAQuiB,KACvC,IAAInhB,KAAKohB,EAAY,GAAIA,EAAY,GAAIA,EAAY,IAAI7N,WAEzExR,EAAgBoC,GAAQrC,iBAAkB,EAC1CqC,EAAOtB,UAAW,GACX,EAIb,CACA,SAASwe,GAAgBC,EAAWC,EAAgBC,GAClD,GAAIF,EACF,OAAOjC,GAAWiC,GACb,GAAIC,EAET,OAAO,EAEP,IAAIE,EAAKpP,SAASmP,EAAW,IAC3Bxf,EAAIyf,EAAK,IAEX,OADOA,EAAKzf,GAAK,IACN,GAAKA,CAEpB,CAGA,SAAS0f,GAAkBvd,GACzB,IACEwd,EADElkB,EAAQoE,GAAQ5D,KAAKgjB,GAAkB9c,EAAOzL,KAElD,GAAI+E,EAAO,CAET,GADAkkB,EAAclB,GAA0BhjB,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAC3FyjB,GAAazjB,EAAM,GAAIkkB,EAAaxd,GACvC,OAEFA,EAAOxL,GAAKgpB,EACZxd,EAAOL,KAAOud,GAAgB5jB,EAAM,GAAIA,EAAM,GAAIA,EAAM,KACxD0G,EAAO7B,GAAKoV,GAAc1Y,MAAM,KAAMmF,EAAOxL,IAC7CwL,EAAO7B,GAAG0R,cAAc7P,EAAO7B,GAAG0Q,gBAAkB7O,EAAOL,MAC3D/B,EAAgBoC,GAAQtC,SAAU,CACpC,MACEsC,EAAOtB,UAAW,CAEtB,CAGA,SAAS+e,GAAiBzd,GACxB,IAAIqM,EAAU4O,GAAgBnhB,KAAKkG,EAAOzL,IAC1B,OAAZ8X,GAIJwP,GAAc7b,IACU,IAApBA,EAAOtB,kBACFsB,EAAOtB,SAIhB6e,GAAkBvd,IACM,IAApBA,EAAOtB,kBACFsB,EAAOtB,SAIZsB,EAAOzB,QACTyB,EAAOtB,UAAW,EAGlB9D,EAAM8iB,wBAAwB1d,MAnB9BA,EAAO7B,GAAK,IAAItC,MAAMwQ,EAAQ,GAqBlC,CAMA,SAASsR,GAASviB,EAAGC,EAAGuiB,GACtB,OAAS,MAALxiB,EACKA,EAEA,MAALC,EACKA,EAEFuiB,CACT,CACA,SAASC,GAAiB7d,GAExB,IAAI8d,EAAW,IAAIjiB,KAAKjB,EAAMyH,OAC9B,OAAIrC,EAAO+d,QACF,CAACD,EAASvO,iBAAkBuO,EAASzO,cAAeyO,EAAS7O,cAE/D,CAAC6O,EAAStO,cAAesO,EAASxO,WAAYwO,EAAS5O,UAChE,CAMA,SAAS8O,GAAgBhe,GACvB,IAAIzG,EACFyN,EAEAiX,EACAC,EACAC,EAHA/kB,EAAQ,GAIV,IAAI4G,EAAO7B,GAAX,CA0BA,IAvBA8f,EAAcJ,GAAiB7d,GAG3BA,EAAOoN,IAAyB,MAAnBpN,EAAOxL,GAAGiZ,KAAqC,MAApBzN,EAAOxL,GAAGgZ,KACpD4Q,GAAsBpe,GAIC,MAArBA,EAAOqe,aACTF,EAAYR,GAAS3d,EAAOxL,GAAG+Y,IAAO0Q,EAAY1Q,MAC9CvN,EAAOqe,WAAarQ,GAAWmQ,IAAoC,IAAtBne,EAAOqe,cACtDzgB,EAAgBoC,GAAQya,oBAAqB,GAE/CzT,EAAOuM,GAAc4K,EAAW,EAAGne,EAAOqe,YAC1Cre,EAAOxL,GAAGgZ,IAASxG,EAAKqI,cACxBrP,EAAOxL,GAAGiZ,IAAQzG,EAAKiI,cAQpB1V,EAAI,EAAGA,EAAI,GAAqB,MAAhByG,EAAOxL,GAAG+E,KAAcA,EAC3CyG,EAAOxL,GAAG+E,GAAKH,EAAMG,GAAK0kB,EAAY1kB,GAIxC,KAAOA,EAAI,EAAGA,IACZyG,EAAOxL,GAAG+E,GAAKH,EAAMG,GAAqB,MAAhByG,EAAOxL,GAAG+E,GAAmB,IAANA,EAAU,EAAI,EAAIyG,EAAOxL,GAAG+E,GAIvD,KAApByG,EAAOxL,GAAGkZ,KAAsC,IAAtB1N,EAAOxL,GAAGmZ,KAAuC,IAAtB3N,EAAOxL,GAAGoZ,KAA4C,IAA3B5N,EAAOxL,GAAGqZ,MAC5F7N,EAAOse,UAAW,EAClBte,EAAOxL,GAAGkZ,IAAQ,GAEpB1N,EAAO7B,IAAM6B,EAAO+d,QAAUxK,GAAgBD,IAAYzY,MAAM,KAAMzB,GACtE8kB,EAAkBle,EAAO+d,QAAU/d,EAAO7B,GAAGgR,YAAcnP,EAAO7B,GAAGiR,SAIlD,MAAfpP,EAAOL,MACTK,EAAO7B,GAAG0R,cAAc7P,EAAO7B,GAAG0Q,gBAAkB7O,EAAOL,MAEzDK,EAAOse,WACTte,EAAOxL,GAAGkZ,IAAQ,IAIhB1N,EAAOoN,SAA6B,IAAhBpN,EAAOoN,GAAGtH,GAAqB9F,EAAOoN,GAAGtH,IAAMoY,IACrEtgB,EAAgBoC,GAAQrC,iBAAkB,EApD5C,CAsDF,CACA,SAASygB,GAAsBpe,GAC7B,IAAIgG,EAAGiE,EAAUhB,EAAM5B,EAASqM,EAAKC,EAAK4K,EAAMC,EAAiBC,EAErD,OADZzY,EAAIhG,EAAOoN,IACLvE,IAAqB,MAAP7C,EAAEkD,GAAoB,MAAPlD,EAAEsB,GACnCoM,EAAM,EACNC,EAAM,EAMN1J,EAAW0T,GAAS3X,EAAE6C,GAAI7I,EAAOxL,GAAG+Y,IAAOyG,GAAW0K,KAAe,EAAG,GAAGpV,MAC3EL,EAAO0U,GAAS3X,EAAEkD,EAAG,KACrB7B,EAAUsW,GAAS3X,EAAEsB,EAAG,IACV,GAAKD,EAAU,KAC3BmX,GAAkB,KAGpB9K,EAAM1T,EAAOF,QAAQwU,MAAMZ,IAC3BC,EAAM3T,EAAOF,QAAQwU,MAAMX,IAC3B8K,EAAUzK,GAAW0K,KAAehL,EAAKC,GACzC1J,EAAW0T,GAAS3X,EAAE0C,GAAI1I,EAAOxL,GAAG+Y,IAAOkR,EAAQnV,MAGnDL,EAAO0U,GAAS3X,EAAEA,EAAGyY,EAAQxV,MAClB,MAAPjD,EAAEF,IAEJuB,EAAUrB,EAAEF,GACE,GAAKuB,EAAU,KAC3BmX,GAAkB,GAEJ,MAAPxY,EAAEmB,GAEXE,EAAUrB,EAAEmB,EAAIuM,GACZ1N,EAAEmB,EAAI,GAAKnB,EAAEmB,EAAI,KACnBqX,GAAkB,IAIpBnX,EAAUqM,GAGVzK,EAAO,GAAKA,EAAOkL,GAAYlK,EAAUyJ,EAAKC,GAChD/V,EAAgBoC,GAAQ0a,gBAAiB,EACb,MAAnB8D,EACT5gB,EAAgBoC,GAAQ2a,kBAAmB,GAE3C4D,EAAO1K,GAAmB5J,EAAUhB,EAAM5B,EAASqM,EAAKC,GACxD3T,EAAOxL,GAAG+Y,IAAQgR,EAAKjV,KACvBtJ,EAAOqe,WAAaE,EAAKvU,UAE7B,CASA,SAASqS,GAA0Brc,GAEjC,GAAIA,EAAOP,KAAO7E,EAAM+jB,SAIxB,GAAI3e,EAAOP,KAAO7E,EAAMgkB,SAAxB,CAIA5e,EAAOxL,GAAK,GACZoJ,EAAgBoC,GAAQpD,OAAQ,EAGhC,IACErD,EACA0jB,EACA5jB,EACAnB,EACA2mB,EAGArhB,EACA0P,EATE1G,EAAS,GAAKxG,EAAOzL,GAMvBuqB,EAAetY,EAAO9R,OACtBqqB,EAAyB,EAK3B,IADA7R,GADA7T,EAAS2K,EAAahE,EAAOP,GAAIO,EAAOF,SAASxG,MAAM6J,IAAqB,IAC1DzO,OACb6E,EAAI,EAAGA,EAAI2T,EAAU3T,IACxBrB,EAAQmB,EAAOE,IACf0jB,GAAezW,EAAOlN,MAAM4S,GAAsBhU,EAAO8H,KAAY,IAAI,OAEvE6e,EAAUrY,EAAOtD,OAAO,EAAGsD,EAAO/L,QAAQwiB,KAC9BvoB,OAAS,GACnBkJ,EAAgBoC,GAAQlD,YAAYjI,KAAKgqB,GAE3CrY,EAASA,EAAO3N,MAAM2N,EAAO/L,QAAQwiB,GAAeA,EAAYvoB,QAChEqqB,GAA0B9B,EAAYvoB,QAGpC4O,EAAqBpL,IACnB+kB,EACFrf,EAAgBoC,GAAQpD,OAAQ,EAEhCgB,EAAgBoC,GAAQnD,aAAahI,KAAKqD,GAE5CmV,GAAwBnV,EAAO+kB,EAAajd,IACnCA,EAAOzB,UAAY0e,GAC5Brf,EAAgBoC,GAAQnD,aAAahI,KAAKqD,GAK9C0F,EAAgBoC,GAAQhD,cAAgB8hB,EAAeC,EACnDvY,EAAO9R,OAAS,GAClBkJ,EAAgBoC,GAAQlD,YAAYjI,KAAK2R,GAIvCxG,EAAOxL,GAAGkZ,KAAS,KAA0C,IAApC9P,EAAgBoC,GAAQxB,SAAoBwB,EAAOxL,GAAGkZ,IAAQ,IACzF9P,EAAgBoC,GAAQxB,aAAUpJ,GAEpCwI,EAAgBoC,GAAQzC,gBAAkByC,EAAOxL,GAAGqE,MAAM,GAC1D+E,EAAgBoC,GAAQvC,SAAWuC,EAAOmY,UAE1CnY,EAAOxL,GAAGkZ,IAAQsR,GAAgBhf,EAAOF,QAASE,EAAOxL,GAAGkZ,IAAO1N,EAAOmY,WAI9D,QADZ3a,EAAMI,EAAgBoC,GAAQxC,OAE5BwC,EAAOxL,GAAG+Y,IAAQvN,EAAOF,QAAQmf,gBAAgBzhB,EAAKwC,EAAOxL,GAAG+Y,MAElEyQ,GAAgBhe,GAChBwa,GAAcxa,EA9Dd,MAFEud,GAAkBvd,QAJlB6b,GAAc7b,EAqElB,CACA,SAASgf,GAAgBziB,EAAQsL,EAAMpK,GACrC,IAAIyhB,EACJ,OAAgB,MAAZzhB,EAEKoK,EAEkB,MAAvBtL,EAAO4iB,aACF5iB,EAAO4iB,aAAatX,EAAMpK,GACT,MAAflB,EAAO2b,OAEhBgH,EAAO3iB,EAAO2b,KAAKza,KACPoK,EAAO,KACjBA,GAAQ,IAELqX,GAAiB,KAATrX,IACXA,EAAO,GAEFA,GAGAA,CAEX,CAGA,SAASuX,GAAyBpf,GAChC,IAAIqf,EACFC,EACAC,EACAhmB,EACAimB,EACAC,EACAC,GAAoB,EACpBC,EAAa3f,EAAOP,GAAG/K,OACzB,GAAmB,IAAfirB,EAGF,OAFA/hB,EAAgBoC,GAAQ5C,eAAgB,OACxC4C,EAAO7B,GAAK,IAAItC,KAAK+C,MAGvB,IAAKrF,EAAI,EAAGA,EAAIomB,EAAYpmB,IAC1BimB,EAAe,EACfC,GAAmB,EACnBJ,EAAalgB,EAAW,CAAC,EAAGa,GACN,MAAlBA,EAAO+d,UACTsB,EAAWtB,QAAU/d,EAAO+d,SAE9BsB,EAAW5f,GAAKO,EAAOP,GAAGlG,GAC1B8iB,GAA0BgD,GACtBthB,EAAQshB,KACVI,GAAmB,GAIrBD,GAAgB5hB,EAAgByhB,GAAYriB,cAG5CwiB,GAAkE,GAAlD5hB,EAAgByhB,GAAYxiB,aAAanI,OACzDkJ,EAAgByhB,GAAYO,MAAQJ,EAC/BE,EASCF,EAAeD,IACjBA,EAAcC,EACdF,EAAaD,IAVI,MAAfE,GAAuBC,EAAeD,GAAeE,KACvDF,EAAcC,EACdF,EAAaD,EACTI,IACFC,GAAoB,IAU5BvjB,EAAO6D,EAAQsf,GAAcD,EAC/B,CACA,SAASQ,GAAiB7f,GACxB,IAAIA,EAAO7B,GAAX,CAGA,IAAI5E,EAAImQ,GAAqB1J,EAAOzL,IAClCurB,OAAsB1qB,IAAVmE,EAAE2N,IAAoB3N,EAAEyN,KAAOzN,EAAE2N,IAC/ClH,EAAOxL,GAAKsH,EAAI,CAACvC,EAAE+P,KAAM/P,EAAE6O,MAAO0X,EAAWvmB,EAAEsO,KAAMtO,EAAE2O,OAAQ3O,EAAEkP,OAAQlP,EAAEyO,cAAc,SAAU7N,GACjG,OAAOA,GAAO+T,SAAS/T,EAAK,GAC9B,IACA6jB,GAAgBhe,EANhB,CAOF,CACA,SAAS+f,GAAiB/f,GACxB,IAAI/D,EAAM,IAAI8D,EAAOya,GAAcwF,GAAchgB,KAMjD,OALI/D,EAAIqiB,WAENriB,EAAI0Y,IAAI,EAAG,KACX1Y,EAAIqiB,cAAWlpB,GAEV6G,CACT,CACA,SAAS+jB,GAAchgB,GACrB,IAAI5G,EAAQ4G,EAAOzL,GACjB+H,EAAS0D,EAAOP,GAElB,OADAO,EAAOF,QAAUE,EAAOF,SAAWka,GAAUha,EAAON,IACtC,OAAVtG,QAA6BhE,IAAXkH,GAAkC,KAAVlD,EACrCuF,EAAc,CACnB1B,WAAW,KAGM,iBAAV7D,IACT4G,EAAOzL,GAAK6E,EAAQ4G,EAAOF,QAAQmgB,SAAS7mB,IAE1C8G,EAAS9G,GACJ,IAAI2G,EAAOya,GAAcphB,KACvBwC,EAAOxC,GAChB4G,EAAO7B,GAAK/E,EACHmB,EAAQ+B,GACjB8iB,GAAyBpf,GAChB1D,EACT+f,GAA0Brc,GAE1BkgB,GAAgBlgB,GAEbjC,EAAQiC,KACXA,EAAO7B,GAAK,MAEP6B,GACT,CACA,SAASkgB,GAAgBlgB,GACvB,IAAI5G,EAAQ4G,EAAOzL,GACfmH,EAAYtC,GACd4G,EAAO7B,GAAK,IAAItC,KAAKjB,EAAMyH,OAClBzG,EAAOxC,GAChB4G,EAAO7B,GAAK,IAAItC,KAAKzC,EAAMgD,WACD,iBAAVhD,EAChBqkB,GAAiBzd,GACRzF,EAAQnB,IACjB4G,EAAOxL,GAAKsH,EAAI1C,EAAMP,MAAM,IAAI,SAAUsB,GACxC,OAAO+T,SAAS/T,EAAK,GACvB,IACA6jB,GAAgBhe,IACP9E,EAAS9B,GAClBymB,GAAiB7f,GACRrE,EAASvC,GAElB4G,EAAO7B,GAAK,IAAItC,KAAKzC,GAErBwB,EAAM8iB,wBAAwB1d,EAElC,CACA,SAASvD,GAAiBrD,EAAOkD,EAAQC,EAAQC,EAAQgS,GACvD,IAAIoP,EAAI,CAAC,EAoBT,OAnBe,IAAXthB,IAA8B,IAAXA,IACrBE,EAASF,EACTA,OAASlH,IAEI,IAAXmH,IAA8B,IAAXA,IACrBC,EAASD,EACTA,OAASnH,IAEP8F,EAAS9B,IAAUmC,EAAcnC,IAAUmB,EAAQnB,IAA2B,IAAjBA,EAAM1E,UACrE0E,OAAQhE,GAIVwoB,EAAEpe,kBAAmB,EACrBoe,EAAEG,QAAUH,EAAEhe,OAAS4O,EACvBoP,EAAEle,GAAKnD,EACPqhB,EAAErpB,GAAK6E,EACPwkB,EAAEne,GAAKnD,EACPshB,EAAErf,QAAU/B,EACLujB,GAAiBnC,EAC1B,CACA,SAASc,GAAYtlB,EAAOkD,EAAQC,EAAQC,GAC1C,OAAOC,GAAiBrD,EAAOkD,EAAQC,EAAQC,GAAQ,EACzD,CA1YA5B,EAAM8iB,wBAA0Bnd,EAAU,iSAA2S,SAAUP,GAC7VA,EAAO7B,GAAK,IAAItC,KAAKmE,EAAOzL,IAAMyL,EAAO+d,QAAU,OAAS,IAC9D,IA+IAnjB,EAAM+jB,SAAW,WAAa,EAG9B/jB,EAAMgkB,SAAW,WAAa,EAuP9B,IAAIuB,GAAe5f,EAAU,sGAAsG,WAC/H,IAAI6f,EAAQ1B,GAAY7jB,MAAM,KAAMC,WACpC,OAAIiE,KAAKhB,WAAaqiB,EAAMriB,UACnBqiB,EAAQrhB,KAAOA,KAAOqhB,EAEtBzhB,GAEX,IACA0hB,GAAe9f,EAAU,sGAAsG,WAC7H,IAAI6f,EAAQ1B,GAAY7jB,MAAM,KAAMC,WACpC,OAAIiE,KAAKhB,WAAaqiB,EAAMriB,UACnBqiB,EAAQrhB,KAAOA,KAAOqhB,EAEtBzhB,GAEX,IAOF,SAAS2hB,GAAOtkB,EAAIukB,GAClB,IAAItkB,EAAK1C,EAIT,GAHuB,IAAnBgnB,EAAQ7rB,QAAgB6F,EAAQgmB,EAAQ,MAC1CA,EAAUA,EAAQ,KAEfA,EAAQ7rB,OACX,OAAOgqB,KAGT,IADAziB,EAAMskB,EAAQ,GACThnB,EAAI,EAAGA,EAAIgnB,EAAQ7rB,SAAU6E,EAC3BgnB,EAAQhnB,GAAGwE,YAAawiB,EAAQhnB,GAAGyC,GAAIC,KAC1CA,EAAMskB,EAAQhnB,IAGlB,OAAO0C,CACT,CAGA,SAASsW,KAEP,OAAO+N,GAAO,WADH,GAAGznB,MAAMK,KAAK4B,UAAW,GAEtC,CACA,SAASmI,KAEP,OAAOqd,GAAO,UADH,GAAGznB,MAAMK,KAAK4B,UAAW,GAEtC,CACA,IAAIuH,GAAM,WACR,OAAOxG,KAAKwG,IAAMxG,KAAKwG,OAAS,IAAIxG,IACtC,EACI2kB,GAAW,CAAC,OAAQ,UAAW,QAAS,OAAQ,MAAO,OAAQ,SAAU,SAAU,eACvF,SAASC,GAAgB5iB,GACvB,IAAI5D,EAEFV,EADAmnB,GAAiB,EAEjBC,EAAWH,GAAS9rB,OACtB,IAAKuF,KAAO4D,EACV,GAAI1C,EAAW0C,EAAG5D,MAA2C,IAAjCQ,GAAQvB,KAAKsnB,GAAUvmB,IAA0B,MAAV4D,EAAE5D,IAAiBmE,MAAMP,EAAE5D,KAC5F,OAAO,EAGX,IAAKV,EAAI,EAAGA,EAAIonB,IAAYpnB,EAC1B,GAAIsE,EAAE2iB,GAASjnB,IAAK,CAClB,GAAImnB,EACF,OAAO,EAGLE,WAAW/iB,EAAE2iB,GAASjnB,OAASsT,GAAMhP,EAAE2iB,GAASjnB,OAClDmnB,GAAiB,EAErB,CAEF,OAAO,CACT,CACA,SAASG,KACP,OAAO9hB,KAAKL,QACd,CACA,SAASoiB,KACP,OAAOC,GAAeniB,IACxB,CACA,SAASoiB,GAASC,GAChB,IAAIpX,EAAkBH,GAAqBuX,GACzC5X,EAAQQ,EAAgBP,MAAQ,EAChChB,EAAWuB,EAAgBtB,SAAW,EACtCJ,EAAS0B,EAAgBzB,OAAS,EAClCY,EAAQa,EAAgBZ,MAAQY,EAAgBM,SAAW,EAC3DlD,EAAO4C,EAAgB3C,KAAO,EAC9BU,EAAQiC,EAAgBhC,MAAQ,EAChCI,EAAU4B,EAAgB3B,QAAU,EACpCM,EAAUqB,EAAgBpB,QAAU,EACpCV,EAAe8B,EAAgB7B,aAAe,EAChDjJ,KAAKL,SAAW+hB,GAAgB5W,GAGhC9K,KAAKmiB,eAAiBnZ,EAAyB,IAAVS,EAE3B,IAAVP,EAEQ,IAARL,EAAe,GAAK,GAGpB7I,KAAKoiB,OAASla,EAAe,EAAR+B,EAIrBjK,KAAKyS,SAAWrJ,EAAoB,EAAXG,EAAuB,GAARe,EACxCtK,KAAKqiB,MAAQ,CAAC,EACdriB,KAAKe,QAAUka,KACfjb,KAAKsiB,SACP,CACA,SAASC,GAAWnnB,GAClB,OAAOA,aAAe6mB,EACxB,CACA,SAASO,GAAS9e,GAChB,OAAIA,EAAS,GACuB,EAA3BI,KAAK2e,OAAO,EAAI/e,GAEhBI,KAAK2e,MAAM/e,EAEtB,CAGA,SAASgf,GAAcC,EAAQC,EAAQC,GACrC,IAGEroB,EAHEyF,EAAM6D,KAAK0P,IAAImP,EAAOhtB,OAAQitB,EAAOjtB,QACvCmtB,EAAahf,KAAKC,IAAI4e,EAAOhtB,OAASitB,EAAOjtB,QAC7CotB,EAAQ,EAEV,IAAKvoB,EAAI,EAAGA,EAAIyF,EAAKzF,KACfqoB,GAAeF,EAAOnoB,KAAOooB,EAAOpoB,KAAOqoB,GAAe/U,GAAM6U,EAAOnoB,MAAQsT,GAAM8U,EAAOpoB,MAC9FuoB,IAGJ,OAAOA,EAAQD,CACjB,CAIA,SAASE,GAAO7pB,EAAO8pB,GACrBze,EAAerL,EAAO,EAAG,GAAG,WAC1B,IAAI6pB,EAAShjB,KAAKkjB,YAChBC,EAAO,IAKT,OAJIH,EAAS,IACXA,GAAUA,EACVG,EAAO,KAEFA,EAAO1f,KAAYuf,EAAS,IAAK,GAAKC,EAAYxf,IAAWuf,EAAS,GAAI,EACnF,GACF,CACAA,GAAO,IAAK,KACZA,GAAO,KAAM,IAIbjW,GAAc,IAAKL,IACnBK,GAAc,KAAML,IACpBwB,GAAc,CAAC,IAAK,OAAO,SAAU7T,EAAO0K,EAAO9D,GACjDA,EAAO+d,SAAU,EACjB/d,EAAOL,KAAOwiB,GAAiB1W,GAAkBrS,EACnD,IAOA,IAAIgpB,GAAc,kBAClB,SAASD,GAAiBE,EAAS7b,GACjC,IAEE8b,EACAra,EAHEsa,GAAW/b,GAAU,IAAIlN,MAAM+oB,GAInC,OAAgB,OAAZE,EACK,KAKU,KADnBta,EAAuB,IADvBqa,IADQC,EAAQA,EAAQ7tB,OAAS,IAAM,IACtB,IAAI4E,MAAM8oB,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAWvV,GAAMyV,EAAM,KAClB,EAAiB,MAAbA,EAAM,GAAara,GAAWA,CAC3D,CAGA,SAASua,GAAgBppB,EAAOqpB,GAC9B,IAAIxmB,EAAK2K,EACT,OAAI6b,EAAM7iB,QACR3D,EAAMwmB,EAAMC,QACZ9b,GAAQ1G,EAAS9G,IAAUwC,EAAOxC,GAASA,EAAMgD,UAAYsiB,GAAYtlB,GAAOgD,WAAaH,EAAIG,UAEjGH,EAAIkC,GAAGwkB,QAAQ1mB,EAAIkC,GAAG/B,UAAYwK,GAClChM,EAAMqF,aAAahE,GAAK,GACjBA,GAEAyiB,GAAYtlB,GAAOwpB,OAE9B,CACA,SAASC,GAAchlB,GAGrB,OAAQgF,KAAK2e,MAAM3jB,EAAEM,GAAG2kB,oBAC1B,CAoBA,SAASC,GAAa3pB,EAAO4pB,EAAeC,GAC1C,IACEC,EADEnB,EAAShjB,KAAKc,SAAW,EAE7B,IAAKd,KAAKhB,UACR,OAAgB,MAAT3E,EAAgB2F,KAAOH,IAEhC,GAAa,MAATxF,EAAe,CACjB,GAAqB,iBAAVA,GAET,GAAc,QADdA,EAAQ+oB,GAAiB1W,GAAkBrS,IAEzC,OAAO2F,UAEA8D,KAAKC,IAAI1J,GAAS,KAAO6pB,IAClC7pB,GAAgB,IAmBlB,OAjBK2F,KAAKa,QAAUojB,IAClBE,EAAcL,GAAc9jB,OAE9BA,KAAKc,QAAUzG,EACf2F,KAAKa,QAAS,EACK,MAAfsjB,GACFnkB,KAAK4V,IAAIuO,EAAa,KAEpBnB,IAAW3oB,KACR4pB,GAAiBjkB,KAAKokB,kBACzBC,GAAYrkB,KAAMgiB,GAAe3nB,EAAQ2oB,EAAQ,KAAM,GAAG,GAChDhjB,KAAKokB,oBACfpkB,KAAKokB,mBAAoB,EACzBvoB,EAAMqF,aAAalB,MAAM,GACzBA,KAAKokB,kBAAoB,OAGtBpkB,IACT,CACE,OAAOA,KAAKa,OAASmiB,EAASc,GAAc9jB,KAEhD,CACA,SAASskB,GAAWjqB,EAAO4pB,GACzB,OAAa,MAAT5pB,GACmB,iBAAVA,IACTA,GAASA,GAEX2F,KAAKkjB,UAAU7oB,EAAO4pB,GACfjkB,OAECA,KAAKkjB,WAEjB,CACA,SAASqB,GAAeN,GACtB,OAAOjkB,KAAKkjB,UAAU,EAAGe,EAC3B,CACA,SAASO,GAAiBP,GAQxB,OAPIjkB,KAAKa,SACPb,KAAKkjB,UAAU,EAAGe,GAClBjkB,KAAKa,QAAS,EACVojB,GACFjkB,KAAKykB,SAASX,GAAc9jB,MAAO,MAGhCA,IACT,CACA,SAAS0kB,KACP,GAAiB,MAAb1kB,KAAKY,KACPZ,KAAKkjB,UAAUljB,KAAKY,MAAM,GAAO,QAC5B,GAAuB,iBAAZZ,KAAKxK,GAAiB,CACtC,IAAImvB,EAAQvB,GAAiB3W,GAAazM,KAAKxK,IAClC,MAATmvB,EACF3kB,KAAKkjB,UAAUyB,GAEf3kB,KAAKkjB,UAAU,GAAG,EAEtB,CACA,OAAOljB,IACT,CACA,SAAS4kB,GAAqBvqB,GAC5B,QAAK2F,KAAKhB,YAGV3E,EAAQA,EAAQslB,GAAYtlB,GAAO6oB,YAAc,GACzCljB,KAAKkjB,YAAc7oB,GAAS,IAAO,EAC7C,CACA,SAASwqB,KACP,OAAO7kB,KAAKkjB,YAAcljB,KAAK2jB,QAAQta,MAAM,GAAG6Z,aAAeljB,KAAKkjB,YAAcljB,KAAK2jB,QAAQta,MAAM,GAAG6Z,WAC1G,CACA,SAAS4B,KACP,IAAKnoB,EAAYqD,KAAK+kB,eACpB,OAAO/kB,KAAK+kB,cAEd,IACE1D,EADExC,EAAI,CAAC,EAUT,OARAze,EAAWye,EAAG7e,OACd6e,EAAIoC,GAAcpC,IACZppB,IACJ4rB,EAAQxC,EAAEhe,OAASvD,EAAUuhB,EAAEppB,IAAMkqB,GAAYd,EAAEppB,IACnDuK,KAAK+kB,cAAgB/kB,KAAKhB,WAAa0jB,GAAc7D,EAAEppB,GAAI4rB,EAAM2D,WAAa,GAE9EhlB,KAAK+kB,eAAgB,EAEhB/kB,KAAK+kB,aACd,CACA,SAASE,KACP,QAAOjlB,KAAKhB,YAAagB,KAAKa,MAChC,CACA,SAASqkB,KACP,QAAOllB,KAAKhB,WAAYgB,KAAKa,MAC/B,CACA,SAASskB,KACP,QAAOnlB,KAAKhB,WAAYgB,KAAKa,QAA2B,IAAjBb,KAAKc,OAC9C,CA1HAjF,EAAMqF,aAAe,WAAa,EA6HlC,IAAIkkB,GAAc,wDAIhBC,GAAW,sKACb,SAASrD,GAAe3nB,EAAOa,GAC7B,IAGEioB,EACA7nB,EACAgqB,EALEpD,EAAW7nB,EAEbE,EAAQ,KAsDV,OAlDIgoB,GAAWloB,GACb6nB,EAAW,CACTnZ,GAAI1O,EAAM8nB,cACVpb,EAAG1M,EAAM+nB,MACTjb,EAAG9M,EAAMoY,SAEF7V,EAASvC,KAAWgF,OAAOhF,IACpC6nB,EAAW,CAAC,EACRhnB,EACFgnB,EAAShnB,IAAQb,EAEjB6nB,EAASlZ,cAAgB3O,IAElBE,EAAQ6qB,GAAYrqB,KAAKV,KAClC8oB,EAAoB,MAAb5oB,EAAM,IAAc,EAAI,EAC/B2nB,EAAW,CACT7a,EAAG,EACHN,EAAG+G,GAAMvT,EAAMmU,KAASyU,EACxBtc,EAAGiH,GAAMvT,EAAMoU,KAASwU,EACxBrkB,EAAGgP,GAAMvT,EAAMqU,KAAWuU,EAC1Bzc,EAAGoH,GAAMvT,EAAMsU,KAAWsU,EAC1Bpa,GAAI+E,GAAM0U,GAA8B,IAArBjoB,EAAMuU,MAAwBqU,KAE1C5oB,EAAQ8qB,GAAStqB,KAAKV,KAC/B8oB,EAAoB,MAAb5oB,EAAM,IAAc,EAAI,EAC/B2nB,EAAW,CACT7a,EAAGke,GAAShrB,EAAM,GAAI4oB,GACtBhc,EAAGoe,GAAShrB,EAAM,GAAI4oB,GACtBlc,EAAGse,GAAShrB,EAAM,GAAI4oB,GACtBpc,EAAGwe,GAAShrB,EAAM,GAAI4oB,GACtBtc,EAAG0e,GAAShrB,EAAM,GAAI4oB,GACtBrkB,EAAGymB,GAAShrB,EAAM,GAAI4oB,GACtBzc,EAAG6e,GAAShrB,EAAM,GAAI4oB,KAEH,MAAZjB,EAETA,EAAW,CAAC,EACiB,iBAAbA,IAA0B,SAAUA,GAAY,OAAQA,KACxEoD,EAAUE,GAAkB7F,GAAYuC,EAAS5hB,MAAOqf,GAAYuC,EAAS7hB,MAC7E6hB,EAAW,CAAC,GACHnZ,GAAKuc,EAAQtc,aACtBkZ,EAAS/a,EAAIme,EAAQlc,QAEvB9N,EAAM,IAAI2mB,GAASC,GACfK,GAAWloB,IAAU+B,EAAW/B,EAAO,aACzCiB,EAAIyF,QAAU1G,EAAM0G,SAElBwhB,GAAWloB,IAAU+B,EAAW/B,EAAO,cACzCiB,EAAIqE,SAAWtF,EAAMsF,UAEhBrE,CACT,CAGA,SAASiqB,GAASE,EAAKtC,GAIrB,IAAIjmB,EAAMuoB,GAAO5D,WAAW4D,EAAI5qB,QAAQ,IAAK,MAE7C,OAAQwE,MAAMnC,GAAO,EAAIA,GAAOimB,CAClC,CACA,SAASuC,GAA0BC,EAAMtE,GACvC,IAAInkB,EAAM,CAAC,EAMX,OALAA,EAAIkM,OAASiY,EAAMhY,QAAUsc,EAAKtc,QAAyC,IAA9BgY,EAAM9W,OAASob,EAAKpb,QAC7Dob,EAAKhC,QAAQ/N,IAAI1Y,EAAIkM,OAAQ,KAAKwc,QAAQvE,MAC1CnkB,EAAIkM,OAERlM,EAAI8L,cAAgBqY,GAASsE,EAAKhC,QAAQ/N,IAAI1Y,EAAIkM,OAAQ,KACnDlM,CACT,CACA,SAASsoB,GAAkBG,EAAMtE,GAC/B,IAAInkB,EACJ,OAAMyoB,EAAK3mB,WAAaqiB,EAAMriB,WAM9BqiB,EAAQoC,GAAgBpC,EAAOsE,GAC3BA,EAAKE,SAASxE,GAChBnkB,EAAMwoB,GAA0BC,EAAMtE,KAEtCnkB,EAAMwoB,GAA0BrE,EAAOsE,IACnC3c,cAAgB9L,EAAI8L,aACxB9L,EAAIkM,QAAUlM,EAAIkM,QAEblM,GAbE,CACL8L,aAAc,EACdI,OAAQ,EAYd,CAGA,SAAS0c,GAAYC,EAAWtxB,GAC9B,OAAO,SAAUgH,EAAKuqB,GACpB,IAASC,EAUT,OARe,OAAXD,GAAoB3mB,OAAO2mB,KAC7B/jB,EAAgBxN,EAAM,YAAcA,EAAO,uDAAyDA,EAA9E,kGACtBwxB,EAAMxqB,EACNA,EAAMuqB,EACNA,EAASC,GAGX5B,GAAYrkB,KADNgiB,GAAevmB,EAAKuqB,GACHD,GAChB/lB,IACT,CACF,CACA,SAASqkB,GAAYhhB,EAAK6e,EAAUgE,EAAUhlB,GAC5C,IAAI8H,EAAekZ,EAASC,cAC1Bja,EAAOsa,GAASN,EAASE,OACzBhZ,EAASoZ,GAASN,EAASzP,SACxBpP,EAAIrE,YAITkC,EAA+B,MAAhBA,GAA8BA,EACzCkI,GACFmK,GAASlQ,EAAKnO,GAAImO,EAAK,SAAW+F,EAAS8c,GAEzChe,GACFsH,GAAMnM,EAAK,OAAQnO,GAAImO,EAAK,QAAU6E,EAAOge,GAE3Cld,GACF3F,EAAIjE,GAAGwkB,QAAQvgB,EAAIjE,GAAG/B,UAAY2L,EAAekd,GAE/ChlB,GACFrF,EAAMqF,aAAamC,EAAK6E,GAAQkB,GAEpC,CA3EA4Y,GAAe/kB,GAAKglB,GAAShoB,UAC7B+nB,GAAemE,QAAUpE,GA2EzB,IAAInM,GAAMkQ,GAAY,EAAG,OACvBrB,GAAWqB,IAAa,EAAG,YAC7B,SAASM,GAAS/rB,GAChB,MAAwB,iBAAVA,GAAsBA,aAAiBgsB,MACvD,CAGA,SAASC,GAAcjsB,GACrB,OAAO8G,EAAS9G,IAAUwC,EAAOxC,IAAU+rB,GAAS/rB,IAAUuC,EAASvC,IAAUksB,GAAsBlsB,IAAUmsB,GAAoBnsB,IAA9H8G,MAAwI9G,CACjJ,CACA,SAASmsB,GAAoBnsB,GAC3B,IAGEG,EACAisB,EAJEC,EAAavqB,EAAS9B,KAAWmC,EAAcnC,GACjDssB,GAAe,EACfC,EAAa,CAAC,QAAS,OAAQ,IAAK,SAAU,QAAS,IAAK,OAAQ,MAAO,IAAK,QAAS,OAAQ,IAAK,QAAS,OAAQ,IAAK,UAAW,SAAU,IAAK,UAAW,SAAU,IAAK,eAAgB,cAAe,MAG/MC,EAAcD,EAAWjxB,OAC3B,IAAK6E,EAAI,EAAGA,EAAIqsB,EAAarsB,GAAK,EAChCisB,EAAWG,EAAWpsB,GACtBmsB,EAAeA,GAAgBvqB,EAAW/B,EAAOosB,GAEnD,OAAOC,GAAcC,CACvB,CACA,SAASJ,GAAsBlsB,GAC7B,IAAIysB,EAAYtrB,EAAQnB,GACtB0sB,GAAe,EAMjB,OALID,IACFC,EAEc,IAFC1sB,EAAM2sB,QAAO,SAAUC,GACpC,OAAQrqB,EAASqqB,IAASb,GAAS/rB,EACrC,IAAG1E,QAEEmxB,GAAaC,CACtB,CACA,SAASG,GAAe7sB,GACtB,IAGEG,EACAisB,EAJEC,EAAavqB,EAAS9B,KAAWmC,EAAcnC,GACjDssB,GAAe,EACfC,EAAa,CAAC,UAAW,UAAW,UAAW,WAAY,WAAY,YAGzE,IAAKpsB,EAAI,EAAGA,EAAIosB,EAAWjxB,OAAQ6E,GAAK,EACtCisB,EAAWG,EAAWpsB,GACtBmsB,EAAeA,GAAgBvqB,EAAW/B,EAAOosB,GAEnD,OAAOC,GAAcC,CACvB,CACA,SAASQ,GAAkBC,EAAU9jB,GACnC,IAAIuE,EAAOuf,EAASvf,KAAKvE,EAAK,QAAQ,GACtC,OAAOuE,GAAQ,EAAI,WAAaA,GAAQ,EAAI,WAAaA,EAAO,EAAI,UAAYA,EAAO,EAAI,UAAYA,EAAO,EAAI,UAAYA,EAAO,EAAI,WAAa,UACxJ,CACA,SAASwf,GAAWC,EAAMC,GAEC,IAArBxrB,UAAUpG,SACPoG,UAAU,GAGJuqB,GAAcvqB,UAAU,KACjCurB,EAAOvrB,UAAU,GACjBwrB,OAAUlxB,GACD6wB,GAAenrB,UAAU,MAClCwrB,EAAUxrB,UAAU,GACpBurB,OAAOjxB,IAPPixB,OAAOjxB,EACPkxB,OAAUlxB,IAWd,IAAIiN,EAAMgkB,GAAQ3H,KAChB6H,EAAM/D,GAAgBngB,EAAKtD,MAAMynB,QAAQ,OACzClqB,EAAS1B,EAAM6rB,eAAe1nB,KAAMwnB,IAAQ,WAC5CjkB,EAASgkB,IAAYrlB,EAAWqlB,EAAQhqB,IAAWgqB,EAAQhqB,GAAQpD,KAAK6F,KAAMsD,GAAOikB,EAAQhqB,IAC/F,OAAOyC,KAAKzC,OAAOgG,GAAUvD,KAAK4E,aAAaxB,SAAS7F,EAAQyC,KAAM2f,GAAYrc,IACpF,CACA,SAASqgB,KACP,OAAO,IAAI3iB,EAAOhB,KACpB,CACA,SAAS4lB,GAAQvrB,EAAOoQ,GACtB,IAAIkd,EAAaxmB,EAAS9G,GAASA,EAAQslB,GAAYtlB,GACvD,SAAM2F,KAAKhB,YAAa2oB,EAAW3oB,aAIrB,iBADdyL,EAAQD,GAAeC,IAAU,eAExBzK,KAAK3C,UAAYsqB,EAAWtqB,UAE5BsqB,EAAWtqB,UAAY2C,KAAK2jB,QAAQ8D,QAAQhd,GAAOpN,UAE9D,CACA,SAASwoB,GAASxrB,EAAOoQ,GACvB,IAAIkd,EAAaxmB,EAAS9G,GAASA,EAAQslB,GAAYtlB,GACvD,SAAM2F,KAAKhB,YAAa2oB,EAAW3oB,aAIrB,iBADdyL,EAAQD,GAAeC,IAAU,eAExBzK,KAAK3C,UAAYsqB,EAAWtqB,UAE5B2C,KAAK2jB,QAAQiE,MAAMnd,GAAOpN,UAAYsqB,EAAWtqB,UAE5D,CACA,SAASwqB,GAAUvnB,EAAMD,EAAIoK,EAAOqd,GAClC,IAAIC,EAAY5mB,EAASb,GAAQA,EAAOqf,GAAYrf,GAClD0nB,EAAU7mB,EAASd,GAAMA,EAAKsf,GAAYtf,GAC5C,SAAML,KAAKhB,WAAa+oB,EAAU/oB,WAAagpB,EAAQhpB,aAI5B,OAD3B8oB,EAAcA,GAAe,MACT,GAAa9nB,KAAK4lB,QAAQmC,EAAWtd,IAAUzK,KAAK6lB,SAASkC,EAAWtd,MAA+B,MAAnBqd,EAAY,GAAa9nB,KAAK6lB,SAASmC,EAASvd,IAAUzK,KAAK4lB,QAAQoC,EAASvd,GAC1L,CACA,SAASwd,GAAO5tB,EAAOoQ,GACrB,IACEyd,EADEP,EAAaxmB,EAAS9G,GAASA,EAAQslB,GAAYtlB,GAEvD,SAAM2F,KAAKhB,YAAa2oB,EAAW3oB,aAIrB,iBADdyL,EAAQD,GAAeC,IAAU,eAExBzK,KAAK3C,YAAcsqB,EAAWtqB,WAErC6qB,EAAUP,EAAWtqB,UACd2C,KAAK2jB,QAAQ8D,QAAQhd,GAAOpN,WAAa6qB,GAAWA,GAAWloB,KAAK2jB,QAAQiE,MAAMnd,GAAOpN,WAEpG,CACA,SAAS8qB,GAAc9tB,EAAOoQ,GAC5B,OAAOzK,KAAKioB,OAAO5tB,EAAOoQ,IAAUzK,KAAK4lB,QAAQvrB,EAAOoQ,EAC1D,CACA,SAAS2d,GAAe/tB,EAAOoQ,GAC7B,OAAOzK,KAAKioB,OAAO5tB,EAAOoQ,IAAUzK,KAAK6lB,SAASxrB,EAAOoQ,EAC3D,CACA,SAAS5C,GAAKxN,EAAOoQ,EAAO4d,GAC1B,IAAIC,EAAMC,EAAWhlB,EACrB,IAAKvD,KAAKhB,UACR,OAAOa,IAGT,KADAyoB,EAAO7E,GAAgBppB,EAAO2F,OACpBhB,UACR,OAAOa,IAIT,OAFA0oB,EAAoD,KAAvCD,EAAKpF,YAAcljB,KAAKkjB,aACrCzY,EAAQD,GAAeC,IAErB,IAAK,OACHlH,EAASilB,GAAUxoB,KAAMsoB,GAAQ,GACjC,MACF,IAAK,QACH/kB,EAASilB,GAAUxoB,KAAMsoB,GACzB,MACF,IAAK,UACH/kB,EAASilB,GAAUxoB,KAAMsoB,GAAQ,EACjC,MACF,IAAK,SACH/kB,GAAUvD,KAAOsoB,GAAQ,IACzB,MAEF,IAAK,SACH/kB,GAAUvD,KAAOsoB,GAAQ,IACzB,MAEF,IAAK,OACH/kB,GAAUvD,KAAOsoB,GAAQ,KACzB,MAEF,IAAK,MACH/kB,GAAUvD,KAAOsoB,EAAOC,GAAa,MACrC,MAEF,IAAK,OACHhlB,GAAUvD,KAAOsoB,EAAOC,GAAa,OACrC,MAEF,QACEhlB,EAASvD,KAAOsoB,EAEpB,OAAOD,EAAU9kB,EAASoK,GAASpK,EACrC,CACA,SAASilB,GAAUnsB,EAAGC,GACpB,GAAID,EAAE4L,OAAS3L,EAAE2L,OAGf,OAAQugB,GAAUlsB,EAAGD,GAGvB,IAAIosB,EAAyC,IAAvBnsB,EAAEiO,OAASlO,EAAEkO,SAAgBjO,EAAE+M,QAAUhN,EAAEgN,SAE/Dqf,EAASrsB,EAAEsnB,QAAQ/N,IAAI6S,EAAgB,UAczC,QAASA,GAXLnsB,EAAIosB,EAAS,GAGLpsB,EAAIosB,IAAWA,EAFfrsB,EAAEsnB,QAAQ/N,IAAI6S,EAAiB,EAAG,YAMlCnsB,EAAIosB,IAFJrsB,EAAEsnB,QAAQ/N,IAAI6S,EAAiB,EAAG,UAETC,MAIA,CACvC,CAGA,SAASxsB,KACP,OAAO8D,KAAK2jB,QAAQnmB,OAAO,MAAMD,OAAO,mCAC1C,CACA,SAASorB,GAAYC,GACnB,IAAK5oB,KAAKhB,UACR,OAAO,KAET,IAAIrB,GAAqB,IAAfirB,EACR9pB,EAAInB,EAAMqC,KAAK2jB,QAAQhmB,MAAQqC,KACjC,OAAIlB,EAAEyL,OAAS,GAAKzL,EAAEyL,OAAS,KACtBvF,EAAalG,EAAGnB,EAAM,iCAAmC,gCAE9DuE,EAAWpF,KAAK7C,UAAU0uB,aAExBhrB,EACKqC,KAAK6oB,SAASF,cAEd,IAAI7rB,KAAKkD,KAAK3C,UAA+B,GAAnB2C,KAAKkjB,YAAmB,KAAMyF,cAAc9tB,QAAQ,IAAKmK,EAAalG,EAAG,MAGvGkG,EAAalG,EAAGnB,EAAM,+BAAiC,6BAChE,CAQA,SAASmrB,KACP,IAAK9oB,KAAKhB,UACR,MAAO,qBAAuBgB,KAAKxK,GAAK,OAE1C,IAEEuzB,EACAxe,EACAye,EACAC,EALEtkB,EAAO,SACTukB,EAAO,GAaT,OARKlpB,KAAKilB,YACRtgB,EAA4B,IAArB3E,KAAKkjB,YAAoB,aAAe,mBAC/CgG,EAAO,KAETH,EAAS,IAAMpkB,EAAO,MACtB4F,EAAO,GAAKvK,KAAKuK,QAAUvK,KAAKuK,QAAU,KAAO,OAAS,SAC1Dye,EAAW,wBACXC,EAASC,EAAO,OACTlpB,KAAKzC,OAAOwrB,EAASxe,EAAOye,EAAWC,EAChD,CACA,SAAS1rB,GAAO4rB,GACTA,IACHA,EAAcnpB,KAAKmlB,QAAUtpB,EAAMutB,iBAAmBvtB,EAAMwtB,eAE9D,IAAI9lB,EAASyB,EAAahF,KAAMmpB,GAChC,OAAOnpB,KAAK4E,aAAa0kB,WAAW/lB,EACtC,CACA,SAASjD,GAAKgnB,EAAM9f,GAClB,OAAIxH,KAAKhB,YAAcmC,EAASmmB,IAASA,EAAKtoB,WAAa2gB,GAAY2H,GAAMtoB,WACpEgjB,GAAe,CACpB3hB,GAAIL,KACJM,KAAMgnB,IACL9pB,OAAOwC,KAAKxC,UAAU+rB,UAAU/hB,GAE5BxH,KAAK4E,aAAaM,aAE7B,CACA,SAASskB,GAAQhiB,GACf,OAAOxH,KAAKM,KAAKqf,KAAenY,EAClC,CACA,SAASnH,GAAGinB,EAAM9f,GAChB,OAAIxH,KAAKhB,YAAcmC,EAASmmB,IAASA,EAAKtoB,WAAa2gB,GAAY2H,GAAMtoB,WACpEgjB,GAAe,CACpB1hB,KAAMN,KACNK,GAAIinB,IACH9pB,OAAOwC,KAAKxC,UAAU+rB,UAAU/hB,GAE5BxH,KAAK4E,aAAaM,aAE7B,CACA,SAASukB,GAAMjiB,GACb,OAAOxH,KAAKK,GAAGsf,KAAenY,EAChC,CAKA,SAAShK,GAAOtC,GACd,IAAIwuB,EACJ,YAAYrzB,IAAR6E,EACK8E,KAAKe,QAAQ+Z,OAGC,OADrB4O,EAAgBzO,GAAU/f,MAExB8E,KAAKe,QAAU2oB,GAEV1pB,KAEX,CAnGAnE,EAAMwtB,cAAgB,uBACtBxtB,EAAMutB,iBAAmB,yBAmGzB,IAAIO,GAAOnoB,EAAU,mJAAmJ,SAAUtG,GAChL,YAAY7E,IAAR6E,EACK8E,KAAK4E,aAEL5E,KAAKxC,OAAOtC,EAEvB,IACA,SAAS0J,KACP,OAAO5E,KAAKe,OACd,CACA,IAAI6oB,GAAgB,IAClBC,GAAgB,GAAKD,GACrBE,GAAc,GAAKD,GACnBE,GAAmB,QAAwBD,GAG7C,SAASE,GAAMC,EAAUC,GACvB,OAAQD,EAAWC,EAAUA,GAAWA,CAC1C,CACA,SAASC,GAAiB9iB,EAAGvI,EAAGiI,GAE9B,OAAIM,EAAI,KAAOA,GAAK,EAEX,IAAIvK,KAAKuK,EAAI,IAAKvI,EAAGiI,GAAKgjB,GAE1B,IAAIjtB,KAAKuK,EAAGvI,EAAGiI,GAAG1J,SAE7B,CACA,SAAS+sB,GAAe/iB,EAAGvI,EAAGiI,GAE5B,OAAIM,EAAI,KAAOA,GAAK,EAEXvK,KAAK2X,IAAIpN,EAAI,IAAKvI,EAAGiI,GAAKgjB,GAE1BjtB,KAAK2X,IAAIpN,EAAGvI,EAAGiI,EAE1B,CACA,SAAS0gB,GAAQhd,GACf,IAAI6c,EAAM+C,EAEV,QAAch0B,KADdoU,EAAQD,GAAeC,KACc,gBAAVA,IAA4BzK,KAAKhB,UAC1D,OAAOgB,KAGT,OADAqqB,EAAcrqB,KAAKa,OAASupB,GAAiBD,GACrC1f,GACN,IAAK,OACH6c,EAAO+C,EAAYrqB,KAAKuK,OAAQ,EAAG,GACnC,MACF,IAAK,UACH+c,EAAO+C,EAAYrqB,KAAKuK,OAAQvK,KAAKqJ,QAAUrJ,KAAKqJ,QAAU,EAAG,GACjE,MACF,IAAK,QACHie,EAAO+C,EAAYrqB,KAAKuK,OAAQvK,KAAKqJ,QAAS,GAC9C,MACF,IAAK,OACHie,EAAO+C,EAAYrqB,KAAKuK,OAAQvK,KAAKqJ,QAASrJ,KAAKiI,OAASjI,KAAKsI,WACjE,MACF,IAAK,UACHgf,EAAO+C,EAAYrqB,KAAKuK,OAAQvK,KAAKqJ,QAASrJ,KAAKiI,QAAUjI,KAAKgL,aAAe,IACjF,MACF,IAAK,MACL,IAAK,OACHsc,EAAO+C,EAAYrqB,KAAKuK,OAAQvK,KAAKqJ,QAASrJ,KAAKiI,QACnD,MACF,IAAK,OACHqf,EAAOtnB,KAAKZ,GAAG/B,UACfiqB,GAAQ0C,GAAM1C,GAAQtnB,KAAKa,OAAS,EAAIb,KAAKkjB,YAAc2G,IAAgBC,IAC3E,MACF,IAAK,SACHxC,EAAOtnB,KAAKZ,GAAG/B,UACfiqB,GAAQ0C,GAAM1C,EAAMuC,IACpB,MACF,IAAK,SACHvC,EAAOtnB,KAAKZ,GAAG/B,UACfiqB,GAAQ0C,GAAM1C,EAAMsC,IAKxB,OAFA5pB,KAAKZ,GAAGwkB,QAAQ0D,GAChBzrB,EAAMqF,aAAalB,MAAM,GAClBA,IACT,CACA,SAAS4nB,GAAMnd,GACb,IAAI6c,EAAM+C,EAEV,QAAch0B,KADdoU,EAAQD,GAAeC,KACc,gBAAVA,IAA4BzK,KAAKhB,UAC1D,OAAOgB,KAGT,OADAqqB,EAAcrqB,KAAKa,OAASupB,GAAiBD,GACrC1f,GACN,IAAK,OACH6c,EAAO+C,EAAYrqB,KAAKuK,OAAS,EAAG,EAAG,GAAK,EAC5C,MACF,IAAK,UACH+c,EAAO+C,EAAYrqB,KAAKuK,OAAQvK,KAAKqJ,QAAUrJ,KAAKqJ,QAAU,EAAI,EAAG,GAAK,EAC1E,MACF,IAAK,QACHie,EAAO+C,EAAYrqB,KAAKuK,OAAQvK,KAAKqJ,QAAU,EAAG,GAAK,EACvD,MACF,IAAK,OACHie,EAAO+C,EAAYrqB,KAAKuK,OAAQvK,KAAKqJ,QAASrJ,KAAKiI,OAASjI,KAAKsI,UAAY,GAAK,EAClF,MACF,IAAK,UACHgf,EAAO+C,EAAYrqB,KAAKuK,OAAQvK,KAAKqJ,QAASrJ,KAAKiI,QAAUjI,KAAKgL,aAAe,GAAK,GAAK,EAC3F,MACF,IAAK,MACL,IAAK,OACHsc,EAAO+C,EAAYrqB,KAAKuK,OAAQvK,KAAKqJ,QAASrJ,KAAKiI,OAAS,GAAK,EACjE,MACF,IAAK,OACHqf,EAAOtnB,KAAKZ,GAAG/B,UACfiqB,GAAQwC,GAAcE,GAAM1C,GAAQtnB,KAAKa,OAAS,EAAIb,KAAKkjB,YAAc2G,IAAgBC,IAAe,EACxG,MACF,IAAK,SACHxC,EAAOtnB,KAAKZ,GAAG/B,UACfiqB,GAAQuC,GAAgBG,GAAM1C,EAAMuC,IAAiB,EACrD,MACF,IAAK,SACHvC,EAAOtnB,KAAKZ,GAAG/B,UACfiqB,GAAQsC,GAAgBI,GAAM1C,EAAMsC,IAAiB,EAKzD,OAFA5pB,KAAKZ,GAAGwkB,QAAQ0D,GAChBzrB,EAAMqF,aAAalB,MAAM,GAClBA,IACT,CACA,SAAS3C,KACP,OAAO2C,KAAKZ,GAAG/B,UAAkC,KAArB2C,KAAKc,SAAW,EAC9C,CACA,SAASwpB,KACP,OAAOxmB,KAAK+J,MAAM7N,KAAK3C,UAAY,IACrC,CACA,SAASwrB,KACP,OAAO,IAAI/rB,KAAKkD,KAAK3C,UACvB,CACA,SAAS2nB,KACP,IAAIlmB,EAAIkB,KACR,MAAO,CAAClB,EAAEyL,OAAQzL,EAAEuK,QAASvK,EAAEmJ,OAAQnJ,EAAEgK,OAAQhK,EAAEqK,SAAUrK,EAAE4K,SAAU5K,EAAEmK,cAC7E,CACA,SAASshB,KACP,IAAIzrB,EAAIkB,KACR,MAAO,CACLsK,MAAOxL,EAAEyL,OACTnB,OAAQtK,EAAEuK,QACVpB,KAAMnJ,EAAEmJ,OACRY,MAAO/J,EAAE+J,QACTK,QAASpK,EAAEoK,UACXO,QAAS3K,EAAE2K,UACXT,aAAclK,EAAEkK,eAEpB,CACA,SAASwhB,KAEP,OAAOxqB,KAAKhB,UAAYgB,KAAK2oB,cAAgB,IAC/C,CACA,SAAS8B,KACP,OAAOzrB,EAAQgB,KACjB,CACA,SAAS0qB,KACP,OAAOttB,EAAO,CAAC,EAAGyB,EAAgBmB,MACpC,CACA,SAAS2qB,KACP,OAAO9rB,EAAgBmB,MAAMhC,QAC/B,CACA,SAAS4sB,KACP,MAAO,CACLvwB,MAAO2F,KAAKxK,GACZ+H,OAAQyC,KAAKU,GACblD,OAAQwC,KAAKe,QACb0O,MAAOzP,KAAKa,OACZpD,OAAQuC,KAAKR,QAEjB,CAwCA,SAASqrB,GAAW/rB,EAAGvB,GACrB,IAAI/C,EACFuiB,EACA9U,EACA6iB,EAAO9qB,KAAK+qB,OAAS9P,GAAU,MAAM8P,MACvC,IAAKvwB,EAAI,EAAGuiB,EAAI+N,EAAKn1B,OAAQ6E,EAAIuiB,IAAKviB,EAQpC,OANO,iBADQswB,EAAKtwB,GAAGwwB,QAGnB/iB,EAAOpM,EAAMivB,EAAKtwB,GAAGwwB,OAAOvD,QAAQ,OACpCqD,EAAKtwB,GAAGwwB,MAAQ/iB,EAAK5K,kBAGVytB,EAAKtwB,GAAGywB,OACrB,IAAK,YACHH,EAAKtwB,GAAGywB,MAAQ,IAChB,MACF,IAAK,SAEHhjB,EAAOpM,EAAMivB,EAAKtwB,GAAGywB,OAAOxD,QAAQ,OAAOpqB,UAC3CytB,EAAKtwB,GAAGywB,MAAQhjB,EAAK5K,UAI3B,OAAOytB,CACT,CACA,SAASI,GAAgBC,EAAS5tB,EAAQE,GACxC,IAAIjD,EACFuiB,EAEAtoB,EACA0mB,EACAiQ,EAHAN,EAAO9qB,KAAK8qB,OAKd,IADAK,EAAUA,EAAQnlB,cACbxL,EAAI,EAAGuiB,EAAI+N,EAAKn1B,OAAQ6E,EAAIuiB,IAAKviB,EAIpC,GAHA/F,EAAOq2B,EAAKtwB,GAAG/F,KAAKuR,cACpBmV,EAAO2P,EAAKtwB,GAAG2gB,KAAKnV,cACpBolB,EAASN,EAAKtwB,GAAG4wB,OAAOplB,cACpBvI,EACF,OAAQF,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,GAAI4d,IAASgQ,EACX,OAAOL,EAAKtwB,GAEd,MACF,IAAK,OACH,GAAI/F,IAAS02B,EACX,OAAOL,EAAKtwB,GAEd,MACF,IAAK,QACH,GAAI4wB,IAAWD,EACb,OAAOL,EAAKtwB,QAIb,GAAI,CAAC/F,EAAM0mB,EAAMiQ,GAAQ1vB,QAAQyvB,IAAY,EAClD,OAAOL,EAAKtwB,EAGlB,CACA,SAAS6wB,GAAsB5sB,EAAK8L,GAClC,IAAI+gB,EAAM7sB,EAAIusB,OAASvsB,EAAIwsB,MAAQ,GAAM,EACzC,YAAa50B,IAATkU,EACK1O,EAAM4C,EAAIusB,OAAOzgB,OAEjB1O,EAAM4C,EAAIusB,OAAOzgB,QAAUA,EAAO9L,EAAIukB,QAAUsI,CAE3D,CACA,SAASC,KACP,IAAI/wB,EACFuiB,EACAthB,EACAqvB,EAAO9qB,KAAK4E,aAAakmB,OAC3B,IAAKtwB,EAAI,EAAGuiB,EAAI+N,EAAKn1B,OAAQ6E,EAAIuiB,IAAKviB,EAAG,CAGvC,GADAiB,EAAMuE,KAAK2jB,QAAQ8D,QAAQ,OAAOpqB,UAC9BytB,EAAKtwB,GAAGwwB,OAASvvB,GAAOA,GAAOqvB,EAAKtwB,GAAGywB,MACzC,OAAOH,EAAKtwB,GAAG/F,KAEjB,GAAIq2B,EAAKtwB,GAAGywB,OAASxvB,GAAOA,GAAOqvB,EAAKtwB,GAAGwwB,MACzC,OAAOF,EAAKtwB,GAAG/F,IAEnB,CACA,MAAO,EACT,CACA,SAAS+2B,KACP,IAAIhxB,EACFuiB,EACAthB,EACAqvB,EAAO9qB,KAAK4E,aAAakmB,OAC3B,IAAKtwB,EAAI,EAAGuiB,EAAI+N,EAAKn1B,OAAQ6E,EAAIuiB,IAAKviB,EAAG,CAGvC,GADAiB,EAAMuE,KAAK2jB,QAAQ8D,QAAQ,OAAOpqB,UAC9BytB,EAAKtwB,GAAGwwB,OAASvvB,GAAOA,GAAOqvB,EAAKtwB,GAAGywB,MACzC,OAAOH,EAAKtwB,GAAG4wB,OAEjB,GAAIN,EAAKtwB,GAAGywB,OAASxvB,GAAOA,GAAOqvB,EAAKtwB,GAAGwwB,MACzC,OAAOF,EAAKtwB,GAAG4wB,MAEnB,CACA,MAAO,EACT,CACA,SAASK,KACP,IAAIjxB,EACFuiB,EACAthB,EACAqvB,EAAO9qB,KAAK4E,aAAakmB,OAC3B,IAAKtwB,EAAI,EAAGuiB,EAAI+N,EAAKn1B,OAAQ6E,EAAIuiB,IAAKviB,EAAG,CAGvC,GADAiB,EAAMuE,KAAK2jB,QAAQ8D,QAAQ,OAAOpqB,UAC9BytB,EAAKtwB,GAAGwwB,OAASvvB,GAAOA,GAAOqvB,EAAKtwB,GAAGywB,MACzC,OAAOH,EAAKtwB,GAAG2gB,KAEjB,GAAI2P,EAAKtwB,GAAGywB,OAASxvB,GAAOA,GAAOqvB,EAAKtwB,GAAGwwB,MACzC,OAAOF,EAAKtwB,GAAG2gB,IAEnB,CACA,MAAO,EACT,CACA,SAASuQ,KACP,IAAIlxB,EACFuiB,EACAuO,EACA7vB,EACAqvB,EAAO9qB,KAAK4E,aAAakmB,OAC3B,IAAKtwB,EAAI,EAAGuiB,EAAI+N,EAAKn1B,OAAQ6E,EAAIuiB,IAAKviB,EAKpC,GAJA8wB,EAAMR,EAAKtwB,GAAGwwB,OAASF,EAAKtwB,GAAGywB,MAAQ,GAAM,EAG7CxvB,EAAMuE,KAAK2jB,QAAQ8D,QAAQ,OAAOpqB,UAC9BytB,EAAKtwB,GAAGwwB,OAASvvB,GAAOA,GAAOqvB,EAAKtwB,GAAGywB,OAASH,EAAKtwB,GAAGywB,OAASxvB,GAAOA,GAAOqvB,EAAKtwB,GAAGwwB,MACzF,OAAQhrB,KAAKuK,OAAS1O,EAAMivB,EAAKtwB,GAAGwwB,OAAOzgB,QAAU+gB,EAAMR,EAAKtwB,GAAGwoB,OAGvE,OAAOhjB,KAAKuK,MACd,CACA,SAASohB,GAAcze,GAIrB,OAHK9Q,EAAW4D,KAAM,mBACpB4rB,GAAiBzxB,KAAK6F,MAEjBkN,EAAWlN,KAAK6rB,eAAiB7rB,KAAK8rB,UAC/C,CACA,SAASC,GAAc7e,GAIrB,OAHK9Q,EAAW4D,KAAM,mBACpB4rB,GAAiBzxB,KAAK6F,MAEjBkN,EAAWlN,KAAKgsB,eAAiBhsB,KAAK8rB,UAC/C,CACA,SAASG,GAAgB/e,GAIvB,OAHK9Q,EAAW4D,KAAM,qBACpB4rB,GAAiBzxB,KAAK6F,MAEjBkN,EAAWlN,KAAKksB,iBAAmBlsB,KAAK8rB,UACjD,CACA,SAASK,GAAajf,EAAU1P,GAC9B,OAAOA,EAAOuuB,cAAc7e,EAC9B,CACA,SAASkf,GAAalf,EAAU1P,GAC9B,OAAOA,EAAOmuB,cAAcze,EAC9B,CACA,SAASmf,GAAenf,EAAU1P,GAChC,OAAOA,EAAOyuB,gBAAgB/e,EAChC,CACA,SAASof,GAAoBpf,EAAU1P,GACrC,OAAOA,EAAO+uB,sBAAwBhgB,EACxC,CACA,SAASqf,KACP,IAIEpxB,EACAuiB,EACAyP,EACAC,EACAC,EAREC,EAAa,GACfC,EAAa,GACbC,EAAe,GACfvY,EAAc,GAMdwW,EAAO9qB,KAAK8qB,OACd,IAAKtwB,EAAI,EAAGuiB,EAAI+N,EAAKn1B,OAAQ6E,EAAIuiB,IAAKviB,EACpCgyB,EAAWnf,GAAYyd,EAAKtwB,GAAG/F,MAC/Bg4B,EAAWpf,GAAYyd,EAAKtwB,GAAG2gB,MAC/BuR,EAAarf,GAAYyd,EAAKtwB,GAAG4wB,QACjCwB,EAAW92B,KAAK02B,GAChBG,EAAW72B,KAAK22B,GAChBI,EAAa/2B,KAAK42B,GAClBpY,EAAYxe,KAAK02B,GACjBlY,EAAYxe,KAAK22B,GACjBnY,EAAYxe,KAAK42B,GAEnB1sB,KAAK8rB,WAAa,IAAIzyB,OAAO,KAAOib,EAAY3a,KAAK,KAAO,IAAK,KACjEqG,KAAK6rB,eAAiB,IAAIxyB,OAAO,KAAOuzB,EAAWjzB,KAAK,KAAO,IAAK,KACpEqG,KAAKgsB,eAAiB,IAAI3yB,OAAO,KAAOszB,EAAWhzB,KAAK,KAAO,IAAK,KACpEqG,KAAKksB,iBAAmB,IAAI7yB,OAAO,KAAOwzB,EAAalzB,KAAK,KAAO,IAAK,IAC1E,CAUA,SAASmzB,GAAuB3zB,EAAO4zB,GACrCvoB,EAAe,EAAG,CAACrL,EAAOA,EAAMxD,QAAS,EAAGo3B,EAC9C,CA2BA,SAASC,GAAe3yB,GACtB,OAAO4yB,GAAqB9yB,KAAK6F,KAAM3F,EAAO2F,KAAKkK,OAAQlK,KAAKsI,UAAYtI,KAAK4E,aAAa2Q,MAAMZ,IAAK3U,KAAK4E,aAAa2Q,MAAMZ,IAAK3U,KAAK4E,aAAa2Q,MAAMX,IAChK,CACA,SAASsY,GAAkB7yB,GACzB,OAAO4yB,GAAqB9yB,KAAK6F,KAAM3F,EAAO2F,KAAKoL,UAAWpL,KAAKgL,aAAc,EAAG,EACtF,CACA,SAASmiB,KACP,OAAO/X,GAAYpV,KAAKuK,OAAQ,EAAG,EACrC,CACA,SAAS6iB,KACP,OAAOhY,GAAYpV,KAAKmL,cAAe,EAAG,EAC5C,CACA,SAASkiB,KACP,IAAIC,EAAWttB,KAAK4E,aAAa2Q,MACjC,OAAOH,GAAYpV,KAAKuK,OAAQ+iB,EAAS3Y,IAAK2Y,EAAS1Y,IACzD,CACA,SAAS2Y,KACP,IAAID,EAAWttB,KAAK4E,aAAa2Q,MACjC,OAAOH,GAAYpV,KAAKkL,WAAYoiB,EAAS3Y,IAAK2Y,EAAS1Y,IAC7D,CACA,SAASqY,GAAqB5yB,EAAO6P,EAAM5B,EAASqM,EAAKC,GACvD,IAAI4Y,EACJ,OAAa,MAATnzB,EACK4a,GAAWjV,KAAM2U,EAAKC,GAAKrK,MAG9BL,GADJsjB,EAAcpY,GAAY/a,EAAOsa,EAAKC,MAEpC1K,EAAOsjB,GAEFC,GAAWtzB,KAAK6F,KAAM3F,EAAO6P,EAAM5B,EAASqM,EAAKC,GAE5D,CACA,SAAS6Y,GAAWviB,EAAUhB,EAAM5B,EAASqM,EAAKC,GAChD,IAAI8Y,EAAgB5Y,GAAmB5J,EAAUhB,EAAM5B,EAASqM,EAAKC,GACnE3M,EAAOuM,GAAckZ,EAAcnjB,KAAM,EAAGmjB,EAAcziB,WAI5D,OAHAjL,KAAKuK,KAAKtC,EAAKuI,kBACfxQ,KAAKqJ,MAAMpB,EAAKqI,eAChBtQ,KAAKiI,KAAKA,EAAKiI,cACRlQ,IACT,CAeA,SAAS2tB,GAActzB,GACrB,OAAgB,MAATA,EAAgByJ,KAAK8J,MAAM5N,KAAKqJ,QAAU,GAAK,GAAKrJ,KAAKqJ,MAAoB,GAAbhP,EAAQ,GAAS2F,KAAKqJ,QAAU,EACzG,CAzUA7E,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAC9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WACpCuI,GAAc,IAAKof,IACnBpf,GAAc,KAAMof,IACpBpf,GAAc,MAAOof,IACrBpf,GAAc,OAAQqf,IACtBrf,GAAc,QAASsf,IACvBne,GAAc,CAAC,IAAK,KAAM,MAAO,OAAQ,UAAU,SAAU7T,EAAO0K,EAAO9D,EAAQ9H,GACjF,IAAIsF,EAAMwC,EAAOF,QAAQ6sB,UAAUvzB,EAAOlB,EAAO8H,EAAOzB,SACpDf,EACFI,EAAgBoC,GAAQxC,IAAMA,EAE9BI,EAAgBoC,GAAQ9C,WAAa9D,CAEzC,IACA0S,GAAc,IAAKR,IACnBQ,GAAc,KAAMR,IACpBQ,GAAc,MAAOR,IACrBQ,GAAc,OAAQR,IACtBQ,GAAc,KAAMuf,IACpBpe,GAAc,CAAC,IAAK,KAAM,MAAO,QAASM,IAC1CN,GAAc,CAAC,OAAO,SAAU7T,EAAO0K,EAAO9D,EAAQ9H,GACpD,IAAIoB,EACA0G,EAAOF,QAAQwrB,uBACjBhyB,EAAQF,EAAME,MAAM0G,EAAOF,QAAQwrB,uBAEjCtrB,EAAOF,QAAQ8sB,oBACjB9oB,EAAMyJ,IAAQvN,EAAOF,QAAQ8sB,oBAAoBxzB,EAAOE,GAExDwK,EAAMyJ,IAAQW,SAAS9U,EAAO,GAElC,IAwMAmK,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,OAAOxE,KAAKkL,WAAa,GAC3B,IACA1G,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,OAAOxE,KAAKmL,cAAgB,GAC9B,IAIA2hB,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAMhC/f,GAAc,IAAKP,IACnBO,GAAc,IAAKP,IACnBO,GAAc,KAAMd,GAAWJ,IAC/BkB,GAAc,KAAMd,GAAWJ,IAC/BkB,GAAc,OAAQV,GAAWN,IACjCgB,GAAc,OAAQV,GAAWN,IACjCgB,GAAc,QAAST,GAAWN,IAClCe,GAAc,QAAST,GAAWN,IAClCoC,GAAkB,CAAC,OAAQ,QAAS,OAAQ,UAAU,SAAU/T,EAAO6P,EAAMjJ,EAAQ9H,GACnF+Q,EAAK/Q,EAAMgL,OAAO,EAAG,IAAM2J,GAAMzT,EACnC,IACA+T,GAAkB,CAAC,KAAM,OAAO,SAAU/T,EAAO6P,EAAMjJ,EAAQ9H,GAC7D+Q,EAAK/Q,GAAS0C,EAAMqT,kBAAkB7U,EACxC,IA+CAmK,EAAe,IAAK,EAAG,KAAM,WAI7BuI,GAAc,IAAKnB,IACnBsC,GAAc,KAAK,SAAU7T,EAAO0K,GAClCA,EAAM0J,IAA8B,GAApBX,GAAMzT,GAAS,EACjC,IAUAmK,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAIrCuI,GAAc,IAAKd,GAAWY,IAC9BE,GAAc,KAAMd,GAAWJ,IAC/BkB,GAAc,MAAM,SAAUG,EAAU1P,GAEtC,OAAO0P,EAAW1P,EAAO8E,yBAA2B9E,EAAOgF,cAAgBhF,EAAO6E,8BACpF,IACA6L,GAAc,CAAC,IAAK,MAAOQ,IAC3BR,GAAc,MAAM,SAAU7T,EAAO0K,GACnCA,EAAM2J,IAAQZ,GAAMzT,EAAME,MAAM0R,IAAW,GAC7C,IAIA,IAAI6hB,GAAmBze,GAAW,QAAQ,GAkB1C,SAAS0e,GAAgB1zB,GACvB,IAAI4Q,EAAYnH,KAAK2e,OAAOziB,KAAK2jB,QAAQ8D,QAAQ,OAASznB,KAAK2jB,QAAQ8D,QAAQ,SAAW,OAAS,EACnG,OAAgB,MAATptB,EAAgB4Q,EAAYjL,KAAK4V,IAAIvb,EAAQ4Q,EAAW,IACjE,CAjBAzG,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAI3CuI,GAAc,MAAOX,IACrBW,GAAc,OAAQjB,IACtBoC,GAAc,CAAC,MAAO,SAAS,SAAU7T,EAAO0K,EAAO9D,GACrDA,EAAOqe,WAAaxR,GAAMzT,EAC5B,IAaAmK,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCuI,GAAc,IAAKd,GAAWa,IAC9BC,GAAc,KAAMd,GAAWJ,IAC/BqC,GAAc,CAAC,IAAK,MAAOU,IAI3B,IAAIof,GAAe3e,GAAW,WAAW,GAIzC7K,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCuI,GAAc,IAAKd,GAAWa,IAC9BC,GAAc,KAAMd,GAAWJ,IAC/BqC,GAAc,CAAC,IAAK,MAAOW,IAI3B,IAmCI1V,GAAO80B,GAnCPC,GAAe7e,GAAW,WAAW,GAoCzC,IAhCA7K,EAAe,IAAK,EAAG,GAAG,WACxB,SAAUxE,KAAKiJ,cAAgB,IACjC,IACAzE,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,SAAUxE,KAAKiJ,cAAgB,GACjC,IACAzE,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,GAAG,WAChC,OAA4B,GAArBxE,KAAKiJ,aACd,IACAzE,EAAe,EAAG,CAAC,QAAS,GAAI,GAAG,WACjC,OAA4B,IAArBxE,KAAKiJ,aACd,IACAzE,EAAe,EAAG,CAAC,SAAU,GAAI,GAAG,WAClC,OAA4B,IAArBxE,KAAKiJ,aACd,IACAzE,EAAe,EAAG,CAAC,UAAW,GAAI,GAAG,WACnC,OAA4B,IAArBxE,KAAKiJ,aACd,IACAzE,EAAe,EAAG,CAAC,WAAY,GAAI,GAAG,WACpC,OAA4B,IAArBxE,KAAKiJ,aACd,IACAzE,EAAe,EAAG,CAAC,YAAa,GAAI,GAAG,WACrC,OAA4B,IAArBxE,KAAKiJ,aACd,IAIA8D,GAAc,IAAKX,GAAWR,IAC9BmB,GAAc,KAAMX,GAAWP,IAC/BkB,GAAc,MAAOX,GAAWN,IAE3B3S,GAAQ,OAAQA,GAAMxD,QAAU,EAAGwD,IAAS,IAC/C4T,GAAc5T,GAAOoT,IAEvB,SAAS4hB,GAAQ9zB,EAAO0K,GACtBA,EAAM+J,IAAehB,GAAuB,KAAhB,KAAOzT,GACrC,CACA,IAAKlB,GAAQ,IAAKA,GAAMxD,QAAU,EAAGwD,IAAS,IAC5C+U,GAAc/U,GAAOg1B,IAWvB,SAASC,KACP,OAAOpuB,KAAKa,OAAS,MAAQ,EAC/B,CACA,SAASwtB,KACP,OAAOruB,KAAKa,OAAS,6BAA+B,EACtD,CAdAotB,GAAoB5e,GAAW,gBAAgB,GAI/C7K,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAU3B,IAAI8pB,GAAQttB,EAAO/G,UAuFnB,SAASs0B,GAAWl0B,GAClB,OAAOslB,GAAoB,IAARtlB,EACrB,CACA,SAASm0B,KACP,OAAO7O,GAAY7jB,MAAM,KAAMC,WAAW0yB,WAC5C,CACA,SAASC,GAAmBjnB,GAC1B,OAAOA,CACT,CA9FA6mB,GAAM1Y,IAAMA,GACZ0Y,GAAMlrB,SAAWikB,GACjBiH,GAAM3K,MAAQA,GACd2K,GAAMzmB,KAAOA,GACbymB,GAAM1G,MAAQA,GACd0G,GAAM/wB,OAASA,GACf+wB,GAAMhuB,KAAOA,GACbguB,GAAM9E,QAAUA,GAChB8E,GAAMjuB,GAAKA,GACXiuB,GAAM7E,MAAQA,GACd6E,GAAMp5B,IAAMoc,GACZgd,GAAM3D,UAAYA,GAClB2D,GAAM1I,QAAUA,GAChB0I,GAAMzI,SAAWA,GACjByI,GAAMzG,UAAYA,GAClByG,GAAMrG,OAASA,GACfqG,GAAMnG,cAAgBA,GACtBmG,GAAMlG,eAAiBA,GACvBkG,GAAMtvB,QAAUyrB,GAChB6D,GAAM3E,KAAOA,GACb2E,GAAM9wB,OAASA,GACf8wB,GAAM1pB,WAAaA,GACnB0pB,GAAMpqB,IAAMod,GACZgN,GAAM9a,IAAM4N,GACZkN,GAAM5D,aAAeA,GACrB4D,GAAMn4B,IAAMob,GACZ+c,GAAM7G,QAAUA,GAChB6G,GAAM7J,SAAWA,GACjB6J,GAAMtJ,QAAUA,GAChBsJ,GAAM/D,SAAWA,GACjB+D,GAAMzF,OAASA,GACfyF,GAAM3F,YAAcA,GACpB2F,GAAMxF,QAAUA,GACM,oBAAX6F,QAAwC,MAAdA,OAAOC,MAC1CN,GAAMK,OAAOC,IAAI,+BAAiC,WAChD,MAAO,UAAY5uB,KAAKzC,SAAW,GACrC,GAEF+wB,GAAM9D,OAASA,GACf8D,GAAMpyB,SAAWA,GACjBoyB,GAAMhE,KAAOA,GACbgE,GAAMjxB,QAAUA,GAChBixB,GAAM1D,aAAeA,GACrB0D,GAAMnD,QAAUI,GAChB+C,GAAMO,UAAYrD,GAClB8C,GAAMQ,QAAUrD,GAChB6C,GAAMS,QAAUrD,GAChB4C,GAAM/jB,KAAO6E,GACbkf,GAAM/f,WAAae,GACnBgf,GAAMpjB,SAAW8hB,GACjBsB,GAAMnjB,YAAc+hB,GACpBoB,GAAM9kB,QAAU8kB,GAAM/kB,SAAWokB,GACjCW,GAAMjlB,MAAQqK,GACd4a,GAAM1c,YAAc+B,GACpB2a,GAAMpkB,KAAOokB,GAAMrkB,MAAQ0L,GAC3B2Y,GAAMljB,QAAUkjB,GAAMU,SAAWnZ,GACjCyY,GAAMlZ,YAAciY,GACpBiB,GAAMW,gBAAkB1B,GACxBe,GAAMY,eAAiB/B,GACvBmB,GAAMa,sBAAwB/B,GAC9BkB,GAAMrmB,KAAO6lB,GACbQ,GAAMnmB,IAAMmmB,GAAMpmB,KAAO0P,GACzB0W,GAAMhmB,QAAUuP,GAChByW,GAAMtjB,WAAa8M,GACnBwW,GAAMrjB,UAAY8iB,GAClBO,GAAMxlB,KAAOwlB,GAAMzlB,MAAQ4Q,GAC3B6U,GAAMnlB,OAASmlB,GAAMplB,QAAU8kB,GAC/BM,GAAM5kB,OAAS4kB,GAAM7kB,QAAUykB,GAC/BI,GAAMrlB,YAAcqlB,GAAMtlB,aAAeilB,GACzCK,GAAMpL,UAAYc,GAClBsK,GAAM3wB,IAAM4mB,GACZ+J,GAAMzK,MAAQW,GACd8J,GAAMG,UAAY/J,GAClB4J,GAAM1J,qBAAuBA,GAC7B0J,GAAMc,MAAQvK,GACdyJ,GAAMrJ,QAAUA,GAChBqJ,GAAMpJ,YAAcA,GACpBoJ,GAAMnJ,MAAQA,GACdmJ,GAAM7e,MAAQ0V,GACdmJ,GAAMe,SAAWjB,GACjBE,GAAMgB,SAAWjB,GACjBC,GAAMtmB,MAAQxG,EAAU,kDAAmDssB,IAC3EQ,GAAMllB,OAAS5H,EAAU,mDAAoDkS,IAC7E4a,GAAMhkB,MAAQ9I,EAAU,iDAAkD4N,IAC1Ekf,GAAMpF,KAAO1nB,EAAU,2GAA4G8iB,IACnIgK,GAAMiB,aAAe/tB,EAAU,0GAA2GsjB,IAU1I,IAAI0K,GAAU5sB,EAAO3I,UAiCrB,SAASw1B,GAAMlyB,EAAQmyB,EAAOC,EAAOC,GACnC,IAAIpyB,EAASyd,KACXtd,EAAML,IAAYnH,IAAIy5B,EAAQF,GAChC,OAAOlyB,EAAOmyB,GAAOhyB,EAAKJ,EAC5B,CACA,SAASsyB,GAAetyB,EAAQmyB,EAAOC,GAMrC,GALI/yB,EAASW,KACXmyB,EAAQnyB,EACRA,OAASlH,GAEXkH,EAASA,GAAU,GACN,MAATmyB,EACF,OAAOD,GAAMlyB,EAAQmyB,EAAOC,EAAO,SAErC,IAAIn1B,EACFs1B,EAAM,GACR,IAAKt1B,EAAI,EAAGA,EAAI,GAAIA,IAClBs1B,EAAIt1B,GAAKi1B,GAAMlyB,EAAQ/C,EAAGm1B,EAAO,SAEnC,OAAOG,CACT,CAUA,SAASC,GAAiBC,EAAczyB,EAAQmyB,EAAOC,GACzB,kBAAjBK,GACLpzB,EAASW,KACXmyB,EAAQnyB,EACRA,OAASlH,GAEXkH,EAASA,GAAU,KAGnBmyB,EADAnyB,EAASyyB,EAETA,GAAe,EACXpzB,EAASW,KACXmyB,EAAQnyB,EACRA,OAASlH,GAEXkH,EAASA,GAAU,IAErB,IAEE/C,EAFEgD,EAASyd,KACXgV,EAAQD,EAAexyB,EAAO+X,MAAMZ,IAAM,EAE1Cmb,EAAM,GACR,GAAa,MAATJ,EACF,OAAOD,GAAMlyB,GAASmyB,EAAQO,GAAS,EAAGN,EAAO,OAEnD,IAAKn1B,EAAI,EAAGA,EAAI,EAAGA,IACjBs1B,EAAIt1B,GAAKi1B,GAAMlyB,GAAS/C,EAAIy1B,GAAS,EAAGN,EAAO,OAEjD,OAAOG,CACT,CACA,SAASI,GAAW3yB,EAAQmyB,GAC1B,OAAOG,GAAetyB,EAAQmyB,EAAO,SACvC,CACA,SAASS,GAAgB5yB,EAAQmyB,GAC/B,OAAOG,GAAetyB,EAAQmyB,EAAO,cACvC,CACA,SAASU,GAAaJ,EAAczyB,EAAQmyB,GAC1C,OAAOK,GAAiBC,EAAczyB,EAAQmyB,EAAO,WACvD,CACA,SAASW,GAAkBL,EAAczyB,EAAQmyB,GAC/C,OAAOK,GAAiBC,EAAczyB,EAAQmyB,EAAO,gBACvD,CACA,SAASY,GAAgBN,EAAczyB,EAAQmyB,GAC7C,OAAOK,GAAiBC,EAAczyB,EAAQmyB,EAAO,cACvD,CAzGAF,GAAQpsB,SAAWA,EACnBosB,GAAQpqB,eAAiBA,EACzBoqB,GAAQtqB,YAAcA,EACtBsqB,GAAQ9qB,QAAUA,EAClB8qB,GAAQtO,SAAWwN,GACnBc,GAAQlG,WAAaoF,GACrBc,GAAQjoB,aAAeA,EACvBioB,GAAQ5nB,WAAaA,GACrB4nB,GAAQr5B,IAAMA,EACdq5B,GAAQ1E,KAAOD,GACf2E,GAAQ5B,UAAY1C,GACpBsE,GAAQtP,gBAAkBmL,GAC1BmE,GAAQzD,cAAgBA,GACxByD,GAAQ7D,cAAgBA,GACxB6D,GAAQvD,gBAAkBA,GAC1BuD,GAAQpmB,OAASoJ,GACjBgd,GAAQzd,YAAcY,GACtB6c,GAAQtd,YAAcmB,GACtBmc,GAAQvd,YAAcA,GACtBud,GAAQxd,iBAAmBA,GAC3Bwd,GAAQtlB,KAAOoL,GACfka,GAAQe,eAAiB7a,GACzB8Z,GAAQgB,eAAiB/a,GACzB+Z,GAAQnnB,SAAWyO,GACnB0Y,GAAQrZ,YAAce,GACtBsY,GAAQpZ,cAAgBY,GACxBwY,GAAQzZ,cAAgB0B,GACxB+X,GAAQjZ,cAAgBA,GACxBiZ,GAAQlZ,mBAAqBA,GAC7BkZ,GAAQnZ,iBAAmBA,GAC3BmZ,GAAQrW,KAAOJ,GACfyW,GAAQ9wB,SAAWgb,GA2EnBqB,GAAmB,KAAM,CACvB+P,KAAM,CAAC,CACLE,MAAO,aACPC,MAAO,IACPjI,OAAQ,EACRvuB,KAAM,cACN22B,OAAQ,KACRjQ,KAAM,MACL,CACD6P,MAAO,aACPC,OAAO,IACPjI,OAAQ,EACRvuB,KAAM,gBACN22B,OAAQ,KACRjQ,KAAM,OAERrB,uBAAwB,uBACxBpV,QAAS,SAAUhB,GACjB,IAAIpH,EAAIoH,EAAS,GAEjB,OAAOA,GADiC,IAA7BoK,GAAMpK,EAAS,IAAM,IAAY,KAAa,IAANpH,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,KAExG,IAKFT,EAAM8tB,KAAOnoB,EAAU,wDAAyDuZ,IAChFlf,EAAM40B,SAAWjvB,EAAU,gEAAiEyZ,IAC5F,IAAIyV,GAAU5sB,KAAKC,IACnB,SAASA,KACP,IAAI5L,EAAO6H,KAAKqiB,MAUhB,OATAriB,KAAKmiB,cAAgBuO,GAAQ1wB,KAAKmiB,eAClCniB,KAAKoiB,MAAQsO,GAAQ1wB,KAAKoiB,OAC1BpiB,KAAKyS,QAAUie,GAAQ1wB,KAAKyS,SAC5Bta,EAAK6Q,aAAe0nB,GAAQv4B,EAAK6Q,cACjC7Q,EAAKsR,QAAUinB,GAAQv4B,EAAKsR,SAC5BtR,EAAK+Q,QAAUwnB,GAAQv4B,EAAK+Q,SAC5B/Q,EAAK0Q,MAAQ6nB,GAAQv4B,EAAK0Q,OAC1B1Q,EAAKiR,OAASsnB,GAAQv4B,EAAKiR,QAC3BjR,EAAKmS,MAAQomB,GAAQv4B,EAAKmS,OACnBtK,IACT,CACA,SAAS2wB,GAAczO,EAAU7nB,EAAOnE,EAAO6vB,GAC7C,IAAI1E,EAAQW,GAAe3nB,EAAOnE,GAIlC,OAHAgsB,EAASC,eAAiB4D,EAAY1E,EAAMc,cAC5CD,EAASE,OAAS2D,EAAY1E,EAAMe,MACpCF,EAASzP,SAAWsT,EAAY1E,EAAM5O,QAC/ByP,EAASI,SAClB,CAGA,SAASsO,GAAMv2B,EAAOnE,GACpB,OAAOy6B,GAAc3wB,KAAM3F,EAAOnE,EAAO,EAC3C,CAGA,SAAS26B,GAAWx2B,EAAOnE,GACzB,OAAOy6B,GAAc3wB,KAAM3F,EAAOnE,GAAQ,EAC5C,CACA,SAAS46B,GAAQptB,GACf,OAAIA,EAAS,EACJI,KAAK+J,MAAMnK,GAEXI,KAAK8J,KAAKlK,EAErB,CACA,SAASqtB,KACP,IAIEtnB,EACAP,EACAL,EACAyB,EACA0mB,EAREhoB,EAAehJ,KAAKmiB,cACtBja,EAAOlI,KAAKoiB,MACZhZ,EAASpJ,KAAKyS,QACdta,EAAO6H,KAAKqiB,MAqCd,OA5BMrZ,GAAgB,GAAKd,GAAQ,GAAKkB,GAAU,GAAKJ,GAAgB,GAAKd,GAAQ,GAAKkB,GAAU,IACjGJ,GAAuD,MAAvC8nB,GAAQG,GAAa7nB,GAAUlB,GAC/CA,EAAO,EACPkB,EAAS,GAKXjR,EAAK6Q,aAAeA,EAAe,IACnCS,EAAUkE,GAAS3E,EAAe,KAClC7Q,EAAKsR,QAAUA,EAAU,GACzBP,EAAUyE,GAASlE,EAAU,IAC7BtR,EAAK+Q,QAAUA,EAAU,GACzBL,EAAQ8E,GAASzE,EAAU,IAC3B/Q,EAAK0Q,MAAQA,EAAQ,GACrBX,GAAQyF,GAAS9E,EAAQ,IAIzBO,GADA4nB,EAAiBrjB,GAASujB,GAAahpB,IAEvCA,GAAQ4oB,GAAQG,GAAaD,IAG7B1mB,EAAQqD,GAASvE,EAAS,IAC1BA,GAAU,GACVjR,EAAK+P,KAAOA,EACZ/P,EAAKiR,OAASA,EACdjR,EAAKmS,MAAQA,EACNtK,IACT,CACA,SAASkxB,GAAahpB,GAGpB,OAAc,KAAPA,EAAc,MACvB,CACA,SAAS+oB,GAAa7nB,GAEpB,OAAgB,OAATA,EAAkB,IAC3B,CACA,SAAS+nB,GAAG1mB,GACV,IAAKzK,KAAKhB,UACR,OAAOa,IAET,IAAIqI,EACFkB,EACAJ,EAAehJ,KAAKmiB,cAEtB,GAAc,WADd1X,EAAQD,GAAeC,KACY,YAAVA,GAAiC,SAAVA,EAG9C,OAFAvC,EAAOlI,KAAKoiB,MAAQpZ,EAAe,MACnCI,EAASpJ,KAAKyS,QAAUye,GAAahpB,GAC7BuC,GACN,IAAK,QACH,OAAOrB,EACT,IAAK,UACH,OAAOA,EAAS,EAClB,IAAK,OACH,OAAOA,EAAS,QAKpB,OADAlB,EAAOlI,KAAKoiB,MAAQte,KAAK2e,MAAMwO,GAAajxB,KAAKyS,UACzChI,GACN,IAAK,OACH,OAAOvC,EAAO,EAAIc,EAAe,OACnC,IAAK,MACH,OAAOd,EAAOc,EAAe,MAC/B,IAAK,OACH,OAAc,GAAPd,EAAYc,EAAe,KACpC,IAAK,SACH,OAAc,KAAPd,EAAcc,EAAe,IACtC,IAAK,SACH,OAAc,MAAPd,EAAec,EAAe,IAEvC,IAAK,cACH,OAAOlF,KAAK+J,MAAa,MAAP3F,GAAgBc,EACpC,QACE,MAAM,IAAIlH,MAAM,gBAAkB2I,GAG1C,CACA,SAAS2mB,GAAOC,GACd,OAAO,WACL,OAAOrxB,KAAKmxB,GAAGE,EACjB,CACF,CACA,IAAIC,GAAiBF,GAAO,MAC1BG,GAAYH,GAAO,KACnBI,GAAYJ,GAAO,KACnBK,GAAUL,GAAO,KACjBM,GAASN,GAAO,KAChBO,GAAUP,GAAO,KACjBQ,GAAWR,GAAO,KAClBS,GAAaT,GAAO,KACpBU,GAAUV,GAAO,KACjBW,GAAYT,GACd,SAASU,KACP,OAAOhQ,GAAehiB,KACxB,CACA,SAASiyB,GAAMxnB,GAEb,OADAA,EAAQD,GAAeC,GAChBzK,KAAKhB,UAAYgB,KAAKyK,EAAQ,OAAS5K,GAChD,CACA,SAASqyB,GAAWz9B,GAClB,OAAO,WACL,OAAOuL,KAAKhB,UAAYgB,KAAKqiB,MAAM5tB,GAAQoL,GAC7C,CACF,CACA,IAAImJ,GAAekpB,GAAW,gBAC5BzoB,GAAUyoB,GAAW,WACrBhpB,GAAUgpB,GAAW,WACrBrpB,GAAQqpB,GAAW,SACnBhqB,GAAOgqB,GAAW,QAClB9oB,GAAS8oB,GAAW,UACpB5nB,GAAQ4nB,GAAW,SACrB,SAASjoB,KACP,OAAO0D,GAAS3N,KAAKkI,OAAS,EAChC,CACA,IAAIua,GAAQ3e,KAAK2e,MACf0P,GAAa,CACXxrB,GAAI,GAEJD,EAAG,GAEH5H,EAAG,GAEH+H,EAAG,GAEHE,EAAG,GAEHE,EAAG,KAEHE,EAAG,IAIP,SAASirB,GAAkB3qB,EAAQ/D,EAAQ8D,EAAeE,EAAUlK,GAClE,OAAOA,EAAO+J,aAAa7D,GAAU,IAAK8D,EAAeC,EAAQC,EACnE,CACA,SAAS2qB,GAAeC,EAAgB9qB,EAAe2qB,EAAY30B,GACjE,IAAI0kB,EAAWF,GAAesQ,GAAgBvuB,MAC5C0F,EAAUgZ,GAAMP,EAASiP,GAAG,MAC5BjoB,EAAUuZ,GAAMP,EAASiP,GAAG,MAC5BtoB,EAAQ4Z,GAAMP,EAASiP,GAAG,MAC1BjpB,EAAOua,GAAMP,EAASiP,GAAG,MACzB/nB,EAASqZ,GAAMP,EAASiP,GAAG,MAC3BlnB,EAAQwY,GAAMP,EAASiP,GAAG,MAC1B7mB,EAAQmY,GAAMP,EAASiP,GAAG,MAC1B90B,EAAIoN,GAAW0oB,EAAWxrB,IAAM,CAAC,IAAK8C,IAAYA,EAAU0oB,EAAWzrB,GAAK,CAAC,KAAM+C,IAAYP,GAAW,GAAK,CAAC,MAAQA,EAAUipB,EAAWrzB,GAAK,CAAC,KAAMoK,IAAYL,GAAS,GAAK,CAAC,MAAQA,EAAQspB,EAAWtrB,GAAK,CAAC,KAAMgC,IAAUX,GAAQ,GAAK,CAAC,MAAQA,EAAOiqB,EAAWprB,GAAK,CAAC,KAAMmB,GAQ3R,OAPoB,MAAhBiqB,EAAWlrB,IACb5K,EAAIA,GAAK4N,GAAS,GAAK,CAAC,MAAQA,EAAQkoB,EAAWlrB,GAAK,CAAC,KAAMgD,KAEjE5N,EAAIA,GAAK+M,GAAU,GAAK,CAAC,MAAQA,EAAS+oB,EAAWhrB,GAAK,CAAC,KAAMiC,IAAWkB,GAAS,GAAK,CAAC,MAAQ,CAAC,KAAMA,IACxG,GAAK9C,EACPnL,EAAE,IAAMi2B,EAAiB,EACzBj2B,EAAE,GAAKmB,EACA40B,GAAkBt2B,MAAM,KAAMO,EACvC,CAGA,SAASk2B,GAA2BC,GAClC,YAAyBn8B,IAArBm8B,EACK/P,GAEuB,mBAArB+P,IACT/P,GAAQ+P,GACD,EAGX,CAGA,SAASC,GAA4BC,EAAWC,GAC9C,YAA8Bt8B,IAA1B87B,GAAWO,UAGDr8B,IAAVs8B,EACKR,GAAWO,IAEpBP,GAAWO,GAAaC,EACN,MAAdD,IACFP,GAAWxrB,GAAKgsB,EAAQ,IAEnB,GACT,CACA,SAASpJ,GAASqJ,EAAeC,GAC/B,IAAK7yB,KAAKhB,UACR,OAAOgB,KAAK4E,aAAaM,cAE3B,IAEE1H,EACA+F,EAHEuvB,GAAa,EACfC,EAAKZ,GAqBP,MAlB6B,iBAAlBS,IACTC,EAAgBD,EAChBA,GAAgB,GAEW,kBAAlBA,IACTE,EAAaF,GAEc,iBAAlBC,IACTE,EAAKp7B,OAAOC,OAAO,CAAC,EAAGu6B,GAAYU,GACZ,MAAnBA,EAAcnsB,GAAiC,MAApBmsB,EAAclsB,KAC3CosB,EAAGpsB,GAAKksB,EAAcnsB,EAAI,IAI9BnD,EAAS8uB,GAAeryB,MAAO8yB,EAAYC,EAD3Cv1B,EAASwC,KAAK4E,cAEVkuB,IACFvvB,EAAS/F,EAAOoK,YAAY5H,KAAMuD,IAE7B/F,EAAO8rB,WAAW/lB,EAC3B,CACA,IAAIyvB,GAAQlvB,KAAKC,IACjB,SAASof,GAAKvtB,GACZ,OAAQA,EAAI,IAAMA,EAAI,KAAOA,CAC/B,CACA,SAASq9B,KAQP,IAAKjzB,KAAKhB,UACR,OAAOgB,KAAK4E,aAAaM,cAE3B,IAGEgE,EACAL,EACAyB,EACA5D,EAEAwsB,EACAC,EACAC,EACAC,EAXE5pB,EAAUupB,GAAMhzB,KAAKmiB,eAAiB,IACxCja,EAAO8qB,GAAMhzB,KAAKoiB,OAClBhZ,EAAS4pB,GAAMhzB,KAAKyS,SAKpB6gB,EAAQtzB,KAAKuxB,YAKf,OAAK+B,GAOLpqB,EAAUyE,GAASlE,EAAU,IAC7BZ,EAAQ8E,GAASzE,EAAU,IAC3BO,GAAW,GACXP,GAAW,GAGXoB,EAAQqD,GAASvE,EAAS,IAC1BA,GAAU,GAGV1C,EAAI+C,EAAUA,EAAQ8pB,QAAQ,GAAG14B,QAAQ,SAAU,IAAM,GACzDq4B,EAAYI,EAAQ,EAAI,IAAM,GAC9BH,EAAShQ,GAAKnjB,KAAKyS,WAAa0Q,GAAKmQ,GAAS,IAAM,GACpDF,EAAWjQ,GAAKnjB,KAAKoiB,SAAWe,GAAKmQ,GAAS,IAAM,GACpDD,EAAUlQ,GAAKnjB,KAAKmiB,iBAAmBgB,GAAKmQ,GAAS,IAAM,GACpDJ,EAAY,KAAO5oB,EAAQ6oB,EAAS7oB,EAAQ,IAAM,KAAOlB,EAAS+pB,EAAS/pB,EAAS,IAAM,KAAOlB,EAAOkrB,EAAWlrB,EAAO,IAAM,KAAOW,GAASK,GAAWO,EAAU,IAAM,KAAOZ,EAAQwqB,EAAUxqB,EAAQ,IAAM,KAAOK,EAAUmqB,EAAUnqB,EAAU,IAAM,KAAOO,EAAU4pB,EAAU3sB,EAAI,IAAM,KAnBhS,KAoBX,CACA,IAAI8sB,GAAUvR,GAAShoB,UAyGvB,OAxGAu5B,GAAQx0B,QAAU8iB,GAClB0R,GAAQzvB,IAAMA,GACdyvB,GAAQ5d,IAAMgb,GACd4C,GAAQ/O,SAAWoM,GACnB2C,GAAQrC,GAAKA,GACbqC,GAAQlC,eAAiBA,GACzBkC,GAAQjC,UAAYA,GACpBiC,GAAQhC,UAAYA,GACpBgC,GAAQ/B,QAAUA,GAClB+B,GAAQ9B,OAASA,GACjB8B,GAAQ7B,QAAUA,GAClB6B,GAAQ5B,SAAWA,GACnB4B,GAAQ3B,WAAaA,GACrB2B,GAAQ1B,QAAUA,GAClB0B,GAAQn2B,QAAU00B,GAClByB,GAAQlR,QAAUyO,GAClByC,GAAQ7P,MAAQqO,GAChBwB,GAAQt+B,IAAM+8B,GACduB,GAAQxqB,aAAeA,GACvBwqB,GAAQ/pB,QAAUA,GAClB+pB,GAAQtqB,QAAUA,GAClBsqB,GAAQ3qB,MAAQA,GAChB2qB,GAAQtrB,KAAOA,GACfsrB,GAAQvpB,MAAQA,GAChBupB,GAAQpqB,OAASA,GACjBoqB,GAAQlpB,MAAQA,GAChBkpB,GAAQjK,SAAWA,GACnBiK,GAAQ7K,YAAcsK,GACtBO,GAAQt3B,SAAW+2B,GACnBO,GAAQhJ,OAASyI,GACjBO,GAAQh2B,OAASA,GACjBg2B,GAAQ5uB,WAAaA,GACrB4uB,GAAQC,YAAcjyB,EAAU,sFAAuFyxB,IACvHO,GAAQ7J,KAAOA,GAIfnlB,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1BuI,GAAc,IAAKP,IACnBO,GAAc,IAAKJ,IACnBuB,GAAc,KAAK,SAAU7T,EAAO0K,EAAO9D,GACzCA,EAAO7B,GAAK,IAAItC,KAAyB,IAApB+kB,WAAWxnB,GAClC,IACA6T,GAAc,KAAK,SAAU7T,EAAO0K,EAAO9D,GACzCA,EAAO7B,GAAK,IAAItC,KAAKgR,GAAMzT,GAC7B,IAIAwB,EAAM63B,QAAU,SAChB13B,EAAgB2jB,IAChB9jB,EAAMoB,GAAKqxB,GACXzyB,EAAM2X,IAAMA,GACZ3X,EAAMqI,IAAMA,GACZrI,EAAMyH,IAAMA,GACZzH,EAAM8B,IAAML,EACZzB,EAAMyuB,KAAOiE,GACb1yB,EAAMuN,OAAS8mB,GACfr0B,EAAMgB,OAASA,EACfhB,EAAM2B,OAASud,GACflf,EAAMsqB,QAAUvmB,EAChB/D,EAAMqmB,SAAWF,GACjBnmB,EAAMsF,SAAWA,EACjBtF,EAAMwM,SAAW+nB,GACjBv0B,EAAM4yB,UAAYD,GAClB3yB,EAAM+I,WAAaqW,GACnBpf,EAAM0mB,WAAaA,GACnB1mB,EAAMkW,YAAcoe,GACpBt0B,EAAMsa,YAAcma,GACpBz0B,EAAMqf,aAAeA,GACrBrf,EAAMyf,aAAeA,GACrBzf,EAAMme,QAAUwB,GAChB3f,EAAMua,cAAgBia,GACtBx0B,EAAM2O,eAAiBA,GACvB3O,EAAM83B,qBAAuBpB,GAC7B12B,EAAM+3B,sBAAwBnB,GAC9B52B,EAAM6rB,eAAiBP,GACvBtrB,EAAM5B,UAAYq0B,GAGlBzyB,EAAMg4B,UAAY,CAChBC,eAAgB,mBAEhBC,uBAAwB,sBAExBC,kBAAmB,0BAEnBtlB,KAAM,aAENulB,KAAM,QAENC,aAAc,WAEdC,QAAS,eAETplB,KAAM,aAENN,MAAO,WAGF5S,CACT,CAt7IkFu4B,sCCNlF,MAAMC,EAAkB,EAAQ,MAC1BC,EAAkB,EAAQ,MAC1BC,EAAe,EAAQ,MACvBC,EAAe,EAAQ,MAiG7B,SAASC,EAA6Bv+B,GACpC,GAAqB,iBAAVA,GAAuC,IAAjBA,EAAMP,OACrC,MAAM,IAAIiF,UAAU,uDAExB,CACA,SAAS85B,EAAOx+B,EAAOU,GACrB,OAAIA,EAAQ89B,OACH99B,EAAQ6G,OAAS42B,EAAgBn+B,GAASy+B,mBAAmBz+B,GAE/DA,CACT,CACA,SAASkE,EAAOlE,EAAOU,GACrB,OAAIA,EAAQwD,OACHk6B,EAAgBp+B,GAElBA,CACT,CACA,SAAS0+B,EAAWv6B,GAClB,OAAIL,MAAMwB,QAAQnB,GACTA,EAAMqR,OAEM,iBAAVrR,EACFu6B,EAAWj9B,OAAOsD,KAAKZ,IAAQqR,MAAK,CAACrP,EAAGC,IAAMu4B,OAAOx4B,GAAKw4B,OAAOv4B,KAAIS,KAAI7B,GAAOb,EAAMa,KAExFb,CACT,CACA,SAASy6B,EAAWz6B,GAClB,MAAM06B,EAAY16B,EAAMqB,QAAQ,KAIhC,OAHmB,IAAfq5B,IACF16B,EAAQA,EAAMP,MAAM,EAAGi7B,IAElB16B,CACT,CASA,SAAS26B,EAAQ36B,GAEf,MAAM46B,GADN56B,EAAQy6B,EAAWz6B,IACMqB,QAAQ,KACjC,OAAoB,IAAhBu5B,EACK,GAEF56B,EAAMP,MAAMm7B,EAAa,EAClC,CACA,SAASC,EAAWh/B,EAAOU,GAMzB,OALIA,EAAQu+B,eAAiBN,OAAOx1B,MAAMw1B,OAAO3+B,KAA4B,iBAAVA,GAAuC,KAAjBA,EAAMk/B,OAC7Fl/B,EAAQ2+B,OAAO3+B,IACNU,EAAQy+B,eAA2B,OAAVn/B,GAA2C,SAAxBA,EAAMwU,eAAoD,UAAxBxU,EAAMwU,gBAC7FxU,EAAgC,SAAxBA,EAAMwU,eAETxU,CACT,CACA,SAASo/B,EAAMC,EAAO3+B,GASpB69B,GARA79B,EAAUe,OAAOC,OAAO,CACtBwC,QAAQ,EACRsR,MAAM,EACN8pB,YAAa,OACbC,qBAAsB,IACtBN,cAAc,EACdE,eAAe,GACdz+B,IACkC6+B,sBACrC,MAAMC,EApHR,SAA8B9+B,GAC5B,IAAIU,EACJ,OAAQV,EAAQ4+B,aACd,IAAK,QACH,MAAO,CAACt6B,EAAKhF,EAAOy/B,KAClBr+B,EAAS,aAAayD,KAAKG,GAC3BA,EAAMA,EAAIL,QAAQ,WAAY,IACzBvD,QAIoBjB,IAArBs/B,EAAYz6B,KACdy6B,EAAYz6B,GAAO,CAAC,GAEtBy6B,EAAYz6B,GAAK5D,EAAO,IAAMpB,GAN5By/B,EAAYz6B,GAAOhF,CAMc,EAEvC,IAAK,UACH,MAAO,CAACgF,EAAKhF,EAAOy/B,KAClBr+B,EAAS,UAAUyD,KAAKG,GACxBA,EAAMA,EAAIL,QAAQ,QAAS,IACtBvD,OAIoBjB,IAArBs/B,EAAYz6B,GAIhBy6B,EAAYz6B,GAAO,GAAGhB,OAAOy7B,EAAYz6B,GAAMhF,GAH7Cy/B,EAAYz6B,GAAO,CAAChF,GAJpBy/B,EAAYz6B,GAAOhF,CAOgC,EAEzD,IAAK,QACL,IAAK,YACH,MAAO,CAACgF,EAAKhF,EAAOy/B,KAClB,MAAMn6B,EAA2B,iBAAVtF,GAAsBA,EAAM0/B,SAASh/B,EAAQ6+B,sBAC9DI,EAAkC,iBAAV3/B,IAAuBsF,GAAWpB,EAAOlE,EAAOU,GAASg/B,SAASh/B,EAAQ6+B,sBACxGv/B,EAAQ2/B,EAAiBz7B,EAAOlE,EAAOU,GAAWV,EAClD,MAAM4/B,EAAWt6B,GAAWq6B,EAAiB3/B,EAAMuD,MAAM7C,EAAQ6+B,sBAAsB14B,KAAIkqB,GAAQ7sB,EAAO6sB,EAAMrwB,KAAsB,OAAVV,EAAiBA,EAAQkE,EAAOlE,EAAOU,GACnK++B,EAAYz6B,GAAO46B,CAAQ,EAE/B,QACE,MAAO,CAAC56B,EAAKhF,EAAOy/B,UACOt/B,IAArBs/B,EAAYz6B,GAIhBy6B,EAAYz6B,GAAO,GAAGhB,OAAOy7B,EAAYz6B,GAAMhF,GAH7Cy/B,EAAYz6B,GAAOhF,CAGgC,EAG7D,CAoEoB6/B,CAAqBn/B,GAGjC0E,EAAM3D,OAAOq+B,OAAO,MAC1B,GAAqB,iBAAVT,EACT,OAAOj6B,EAGT,KADAi6B,EAAQA,EAAMH,OAAOv6B,QAAQ,SAAU,KAErC,OAAOS,EAET,IAAK,MAAM26B,KAASV,EAAM97B,MAAM,KAAM,CACpC,GAAc,KAAVw8B,EACF,SAEF,IAAK/6B,EAAKhF,GAASq+B,EAAa39B,EAAQwD,OAAS67B,EAAMp7B,QAAQ,MAAO,KAAOo7B,EAAO,KAIpF//B,OAAkBG,IAAVH,EAAsB,KAAO,CAAC,QAAS,aAAa0/B,SAASh/B,EAAQ4+B,aAAet/B,EAAQkE,EAAOlE,EAAOU,GAClH8+B,EAAUt7B,EAAOc,EAAKtE,GAAUV,EAAOoF,EACzC,CACA,IAAK,MAAMJ,KAAOvD,OAAOsD,KAAKK,GAAM,CAClC,MAAMpF,EAAQoF,EAAIJ,GAClB,GAAqB,iBAAVhF,GAAgC,OAAVA,EAC/B,IAAK,MAAMwG,KAAK/E,OAAOsD,KAAK/E,GAC1BA,EAAMwG,GAAKw4B,EAAWh/B,EAAMwG,GAAI9F,QAGlC0E,EAAIJ,GAAOg6B,EAAWh/B,EAAOU,EAEjC,CACA,OAAqB,IAAjBA,EAAQ8U,KACHpQ,IAEgB,IAAjB1E,EAAQ8U,KAAgB/T,OAAOsD,KAAKK,GAAKoQ,OAAS/T,OAAOsD,KAAKK,GAAKoQ,KAAK9U,EAAQ8U,OAAOwqB,QAAO,CAAC5+B,EAAQ4D,KAC7G,MAAMhF,EAAQoF,EAAIJ,GAOlB,OANIi7B,QAAQjgC,IAA2B,iBAAVA,IAAuB8D,MAAMwB,QAAQtF,GAEhEoB,EAAO4D,GAAO05B,EAAW1+B,GAEzBoB,EAAO4D,GAAOhF,EAEToB,CAAM,GACZK,OAAOq+B,OAAO,MACnB,CACAt7B,EAAQs6B,QAAUA,EAClBt6B,EAAQ46B,MAAQA,EAChB56B,EAAQ07B,UAAY,CAACC,EAAQz/B,KAC3B,IAAKy/B,EACH,MAAO,GAQT5B,GANA79B,EAAUe,OAAOC,OAAO,CACtB88B,QAAQ,EACRj3B,QAAQ,EACR+3B,YAAa,OACbC,qBAAsB,KACrB7+B,IACkC6+B,sBACrC,MAAMa,EAAep7B,GAAOtE,EAAQ2/B,UA9NHrgC,MA8NiCmgC,EAAOn7B,IAAStE,EAAQ4/B,iBAAmC,KAAhBH,EAAOn7B,GAC9Gw6B,EA9NR,SAA+B9+B,GAC7B,OAAQA,EAAQ4+B,aACd,IAAK,QACH,OAAOt6B,GAAO,CAAC5D,EAAQpB,KACrB,MAAMw5B,EAAQp4B,EAAO3B,OACrB,YAAcU,IAAVH,GAAuBU,EAAQ2/B,UAAsB,OAAVrgC,GAAkBU,EAAQ4/B,iBAA6B,KAAVtgC,EACnFoB,EAEK,OAAVpB,EACK,IAAIoB,EAAQ,CAACo9B,EAAOx5B,EAAKtE,GAAU,IAAK84B,EAAO,KAAK/1B,KAAK,KAE3D,IAAIrC,EAAQ,CAACo9B,EAAOx5B,EAAKtE,GAAU,IAAK89B,EAAOhF,EAAO94B,GAAU,KAAM89B,EAAOx+B,EAAOU,IAAU+C,KAAK,IAAI,EAElH,IAAK,UACH,OAAOuB,GAAO,CAAC5D,EAAQpB,SACPG,IAAVH,GAAuBU,EAAQ2/B,UAAsB,OAAVrgC,GAAkBU,EAAQ4/B,iBAA6B,KAAVtgC,EACnFoB,EAEK,OAAVpB,EACK,IAAIoB,EAAQ,CAACo9B,EAAOx5B,EAAKtE,GAAU,MAAM+C,KAAK,KAEhD,IAAIrC,EAAQ,CAACo9B,EAAOx5B,EAAKtE,GAAU,MAAO89B,EAAOx+B,EAAOU,IAAU+C,KAAK,KAElF,IAAK,QACL,IAAK,YACH,OAAOuB,GAAO,CAAC5D,EAAQpB,IACjBA,SAA0D,IAAjBA,EAAMP,OAC1C2B,EAEa,IAAlBA,EAAO3B,OACF,CAAC,CAAC++B,EAAOx5B,EAAKtE,GAAU,IAAK89B,EAAOx+B,EAAOU,IAAU+C,KAAK,KAE5D,CAAC,CAACrC,EAAQo9B,EAAOx+B,EAAOU,IAAU+C,KAAK/C,EAAQ6+B,uBAE1D,QACE,OAAOv6B,GAAO,CAAC5D,EAAQpB,SACPG,IAAVH,GAAuBU,EAAQ2/B,UAAsB,OAAVrgC,GAAkBU,EAAQ4/B,iBAA6B,KAAVtgC,EACnFoB,EAEK,OAAVpB,EACK,IAAIoB,EAAQo9B,EAAOx5B,EAAKtE,IAE1B,IAAIU,EAAQ,CAACo9B,EAAOx5B,EAAKtE,GAAU,IAAK89B,EAAOx+B,EAAOU,IAAU+C,KAAK,KAGpF,CAiLoB88B,CAAsB7/B,GAClC8/B,EAAa,CAAC,EACpB,IAAK,MAAMx7B,KAAOvD,OAAOsD,KAAKo7B,GACvBC,EAAap7B,KAChBw7B,EAAWx7B,GAAOm7B,EAAOn7B,IAG7B,MAAMD,EAAOtD,OAAOsD,KAAKy7B,GAIzB,OAHqB,IAAjB9/B,EAAQ8U,MACVzQ,EAAKyQ,KAAK9U,EAAQ8U,MAEbzQ,EAAK8B,KAAI7B,IACd,MAAMhF,EAAQmgC,EAAOn7B,GACrB,YAAc7E,IAAVH,EACK,GAEK,OAAVA,EACKw+B,EAAOx5B,EAAKtE,GAEjBoD,MAAMwB,QAAQtF,GACTA,EAAMggC,OAAOR,EAAUx6B,GAAM,IAAIvB,KAAK,KAExC+6B,EAAOx5B,EAAKtE,GAAW,IAAM89B,EAAOx+B,EAAOU,EAAQ,IACzDowB,QAAOpxB,GAAKA,EAAED,OAAS,IAAGgE,KAAK,IAAI,EAExCe,EAAQi8B,SAAW,CAACC,EAAKhgC,KACvBA,EAAUe,OAAOC,OAAO,CACtBwC,QAAQ,GACPxD,GACH,MAAOigC,EAAMC,GAAQvC,EAAaqC,EAAK,KACvC,OAAOj/B,OAAOC,OAAO,CACnBg/B,IAAKC,EAAKp9B,MAAM,KAAK,IAAM,GAC3B87B,MAAOD,EAAMN,EAAQ4B,GAAMhgC,IAC1BA,GAAWA,EAAQmgC,yBAA2BD,EAAO,CACtDE,mBAAoB58B,EAAO08B,EAAMlgC,IAC/B,CAAC,EAAE,EAET8D,EAAQu8B,aAAe,CAACZ,EAAQz/B,KAC9BA,EAAUe,OAAOC,OAAO,CACtB88B,QAAQ,EACRj3B,QAAQ,GACP7G,GACH,MAAMggC,EAAM9B,EAAWuB,EAAOO,KAAKn9B,MAAM,KAAK,IAAM,GAC9Cy9B,EAAex8B,EAAQs6B,QAAQqB,EAAOO,KACtCO,EAAqBz8B,EAAQ46B,MAAM4B,EAAc,CACrDxrB,MAAM,IAEF6pB,EAAQ59B,OAAOC,OAAOu/B,EAAoBd,EAAOd,OACvD,IAAI6B,EAAc18B,EAAQ07B,UAAUb,EAAO3+B,GACvCwgC,IACFA,EAAc,IAAIA,KAEpB,IAAIN,EAlJN,SAAiBF,GACf,IAAIE,EAAO,GACX,MAAM/B,EAAY6B,EAAIl7B,QAAQ,KAI9B,OAHmB,IAAfq5B,IACF+B,EAAOF,EAAI98B,MAAMi7B,IAEZ+B,CACT,CA2IaO,CAAQhB,EAAOO,KAI1B,OAHIP,EAAOW,qBACTF,EAAO,IAAIpC,EAAO2B,EAAOW,mBAAoBpgC,MAExC,GAAGggC,IAAMQ,IAAcN,GAAM,EAEtCp8B,EAAQ48B,KAAO,CAACj9B,EAAO2sB,EAAQpwB,KAC7BA,EAAUe,OAAOC,OAAO,CACtBm/B,yBAAyB,GACxBngC,GACH,MAAM,IACJggC,EAAG,MACHrB,EAAK,mBACLyB,GACEt8B,EAAQi8B,SAASt8B,EAAOzD,GAC5B,OAAO8D,EAAQu8B,aAAa,CAC1BL,MACArB,MAAOf,EAAae,EAAOvO,GAC3BgQ,sBACCpgC,EAAQ,EAEb8D,EAAQ68B,QAAU,CAACl9B,EAAO2sB,EAAQpwB,KAChC,MAAM4gC,EAAkBx9B,MAAMwB,QAAQwrB,GAAU9rB,IAAQ8rB,EAAO4O,SAAS16B,GAAO,CAACA,EAAKhF,KAAW8wB,EAAO9rB,EAAKhF,GAC5G,OAAOwE,EAAQ48B,KAAKj9B,EAAOm9B,EAAiB5gC,EAAQ,6GC/SlD6gC,EAAkBC,GAA4B,aAAjBA,EAAQljC,KACrCmjC,EAAezhC,GAASA,aAAiB4G,KACzC86B,EAAoB1hC,GAAkB,MAATA,EACjC,MAAM2hC,EAAe3hC,GAA0B,iBAAVA,EACrC,IAAIiG,EAAWjG,IAAU0hC,EAAkB1hC,KAAW8D,MAAMwB,QAAQtF,IAAU2hC,EAAa3hC,KAAWyhC,EAAazhC,GAC/G4hC,EAAgBC,GAAS57B,EAAS47B,IAAUA,EAAMC,OAASP,EAAgBM,EAAMC,QAAUD,EAAMC,OAAOC,QAAUF,EAAMC,OAAO9hC,MAAQ6hC,EAEvIG,EAAqB,CAAC1d,EAAO/lB,IAAS+lB,EAAM2d,IADxB1jC,IAAQA,EAAK2jC,UAAU,EAAG3jC,EAAK4jC,OAAO,iBAAmB5jC,EAC7B6jC,CAAkB7jC,IAClE8jC,EAAgBC,IAClB,MAAMC,EAAgBD,EAAWE,aAAeF,EAAWE,YAAYz+B,UACvE,OAAOkC,EAASs8B,IAAkBA,EAAcl8B,eAAe,gBAAgB,EAE7Eo8B,EAA0B,oBAAXC,aAAwD,IAAvBA,OAAOC,aAAmD,oBAAb/jC,SACjG,SAASgkC,EAAY3gC,GACnB,IAAI4gC,EACJ,MAAMv9B,EAAUxB,MAAMwB,QAAQrD,GACxB6gC,EAAyC,oBAAbC,UAA2B9gC,aAAgB8gC,SAC7E,GAAI9gC,aAAgB2E,KAClBi8B,EAAO,IAAIj8B,KAAK3E,QACX,GAAIA,aAAgB+gC,IACzBH,EAAO,IAAIG,IAAI/gC,OACV,IAAMwgC,IAAUxgC,aAAgBghC,MAAQH,KAAyBx9B,IAAWW,EAAShE,GAY1F,OAAOA,EAVP,GADA4gC,EAAOv9B,EAAU,GAAK,CAAC,EAClBA,GAAY+8B,EAAcpgC,GAG7B,IAAK,MAAM+C,KAAO/C,EACZA,EAAKoE,eAAerB,KACtB69B,EAAK79B,GAAO49B,EAAY3gC,EAAK+C,UAJjC69B,EAAO5gC,CAUX,CACA,OAAO4gC,CACT,CACA,IAAIK,EAAUljC,GAAS8D,MAAMwB,QAAQtF,GAASA,EAAM8wB,OAAOmP,SAAW,GAClEx5B,EAAclB,QAAepF,IAARoF,EACrBvG,EAAM,CAACmhC,EAAQgD,EAAMC,KACvB,IAAKD,IAASl9B,EAASk6B,GACrB,OAAOiD,EAET,MAAMhiC,EAAS8hC,EAAQC,EAAK5/B,MAAM,cAAcy8B,QAAO,CAAC5+B,EAAQ4D,IAAQ08B,EAAkBtgC,GAAUA,EAASA,EAAO4D,IAAMm7B,GAC1H,OAAO15B,EAAYrF,IAAWA,IAAW++B,EAAS15B,EAAY05B,EAAOgD,IAASC,EAAejD,EAAOgD,GAAQ/hC,CAAM,EAEhHiiC,EAAYrjC,GAA0B,kBAAVA,EAC5BsjC,EAAQtjC,GAAS,QAAQoP,KAAKpP,GAC9BujC,EAAep/B,GAAS++B,EAAQ/+B,EAAMQ,QAAQ,YAAa,IAAIpB,MAAM,UACrEtD,EAAM,CAACkgC,EAAQgD,EAAMnjC,KACvB,IAAIw5B,GAAS,EACb,MAAMgK,EAAWF,EAAMH,GAAQ,CAACA,GAAQI,EAAaJ,GAC/C1jC,EAAS+jC,EAAS/jC,OAClB0P,EAAY1P,EAAS,EAC3B,OAAS+5B,EAAQ/5B,GAAQ,CACvB,MAAMuF,EAAMw+B,EAAShK,GACrB,IAAIoG,EAAW5/B,EACf,GAAIw5B,IAAUrqB,EAAW,CACvB,MAAMs0B,EAAWtD,EAAOn7B,GACxB46B,EAAW35B,EAASw9B,IAAa3/B,MAAMwB,QAAQm+B,GAAYA,EAAYt6B,OAAOq6B,EAAShK,EAAQ,IAAW,CAAC,EAAN,EACvG,CACA,GAAY,cAARx0B,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAEFm7B,EAAOn7B,GAAO46B,EACdO,EAASA,EAAOn7B,EAClB,CACA,OAAOm7B,CAAM,EAEf,MAAMuD,EAAS,CACbC,KAAM,OACNC,UAAW,WACXC,OAAQ,UAEJC,EAAkB,CACtBC,OAAQ,SACRC,SAAU,WACVC,SAAU,WACVC,UAAW,YACXC,IAAK,OAEDC,EACC,MADDA,EAEC,MAFDA,EAGO,YAHPA,EAIO,YAJPA,EAKK,UALLA,EAMM,WANNA,EAOM,WAENC,EAAkB,gBAAoB,MA+BtCC,EAAiB,IAAM,aAAiBD,GAwC9C,IAAIE,EAAoB,SAAUC,EAAWC,EAASC,GACpD,IAAIC,IAAS9+B,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,KAAmBA,UAAU,GAC5E,MAAMzE,EAAS,CACbwjC,cAAeH,EAAQI,gBAEzB,IAAK,MAAM7/B,KAAOw/B,EAChB/iC,OAAOqjC,eAAe1jC,EAAQ4D,EAAK,CACjChG,IAAK,KACH,MAAM+lC,EAAO//B,EAKb,OAJIy/B,EAAQO,gBAAgBD,KAAUjB,EAAgBK,MACpDM,EAAQO,gBAAgBD,IAASJ,GAAUb,EAAgBK,KAE7DO,IAAwBA,EAAoBK,IAAQ,GAC7CP,EAAUO,EAAK,IAI5B,OAAO3jC,CACT,EACI6jC,EAAgBjlC,GAASiG,EAASjG,KAAWyB,OAAOsD,KAAK/E,GAAOP,OAChEylC,EAAwB,CAACC,EAAeH,EAAiBI,EAAiBT,KAC5ES,EAAgBD,GAChB,MAAM,KACJ5mC,KACGimC,GACDW,EACJ,OAAOF,EAAcT,IAAc/iC,OAAOsD,KAAKy/B,GAAW/kC,QAAUgC,OAAOsD,KAAKigC,GAAiBvlC,QAAUgC,OAAOsD,KAAKy/B,GAAWa,MAAKrgC,GAAOggC,EAAgBhgC,OAAW2/B,GAAUb,EAAgBK,MAAK,EAEtMmB,EAAwBtlC,GAAS8D,MAAMwB,QAAQtF,GAASA,EAAQ,CAACA,GACjEulC,EAAwB,CAAChnC,EAAMinC,EAAYC,KAAWlnC,IAASinC,GAAcjnC,IAASinC,GAAcF,EAAsB/mC,GAAMmH,MAAKggC,GAAeA,IAAgBD,EAAQC,IAAgBF,EAAaE,EAAYC,WAAWH,IAAeA,EAAWG,WAAWD,MACzQ,SAASE,EAAaC,GACpB,MAAMC,EAAS,SAAaD,GAC5BC,EAAOnkC,QAAUkkC,EACjB,aAAgB,KACd,MAAME,GAAgBF,EAAMG,UAAYF,EAAOnkC,QAAQskC,SAAWH,EAAOnkC,QAAQskC,QAAQC,UAAU,CACjG1hB,KAAMshB,EAAOnkC,QAAQ6iB,OAEvB,MAAO,KACLuhB,GAAgBA,EAAaI,aAAa,CAC3C,GACA,CAACN,EAAMG,UACZ,CAuEA,IAAI9V,EAAWlwB,GAA0B,iBAAVA,EAC3BomC,EAAsB,CAAC9hB,EAAO+hB,EAAQC,EAAYC,EAAUnD,IAC1DlT,EAAS5L,IACXiiB,GAAYF,EAAOG,MAAM9mB,IAAI4E,GACtBtlB,EAAIsnC,EAAYhiB,EAAO8e,IAE5Bt/B,MAAMwB,QAAQgf,GACTA,EAAMzd,KAAI4/B,IAAcF,GAAYF,EAAOG,MAAM9mB,IAAI+mB,GAAYznC,EAAIsnC,EAAYG,OAE1FF,IAAaF,EAAOK,UAAW,GACxBJ,GAoET,SAASK,EAAcd,GACrB,MAAMe,EAAUtC,KACV,KACJ/lC,EAAI,SACJynC,EAAQ,QACRvB,EAAUmC,EAAQnC,QAAO,iBACzBoC,GACEhB,EACEiB,EAAe9E,EAAmByC,EAAQ4B,OAAOx3B,MAAOtQ,GACxDyB,EA1DR,SAAkB6lC,GAChB,MAAMe,EAAUtC,KACV,QACJG,EAAUmC,EAAQnC,QAAO,KACzBlmC,EAAI,aACJ6kC,EAAY,SACZ4C,EAAQ,MACRP,GACEI,GAAS,CAAC,EACRkB,EAAQ,SAAaxoC,GAC3BwoC,EAAMplC,QAAUpD,EAChBqnC,EAAa,CACXI,WACAC,QAASxB,EAAQuC,UAAUliB,OAC3BN,KAAMggB,IACAe,EAAsBwB,EAAMplC,QAAS6iC,EAAUjmC,KAAMknC,IACvDwB,EAAYrE,EAAYwD,EAAoBW,EAAMplC,QAAS8iC,EAAQ4B,OAAQ7B,EAAU1f,QAAU2f,EAAQyC,aAAa,EAAO9D,IAC7H,IAGJ,MAAOpjC,EAAOinC,GAAe,WAAexC,EAAQ0C,UAAU5oC,EAAM6kC,IAEpE,OADA,aAAgB,IAAMqB,EAAQ2C,qBACvBpnC,CACT,CAmCgBqnC,CAAS,CACrB5C,UACAlmC,OACA6kC,aAAcpkC,EAAIylC,EAAQyC,YAAa3oC,EAAMS,EAAIylC,EAAQI,eAAgBtmC,EAAMsnC,EAAMzC,eACrFqC,OAAO,IAEHjB,EApIR,SAAsBqB,GACpB,MAAMe,EAAUtC,KACV,QACJG,EAAUmC,EAAQnC,QAAO,SACzBuB,EAAQ,KACRznC,EAAI,MACJknC,GACEI,GAAS,CAAC,GACPrB,EAAWY,GAAmB,WAAeX,EAAQ6C,YACtDC,EAAW,UAAa,GACxBC,EAAuB,SAAa,CACxCC,SAAS,EACTC,WAAW,EACXC,aAAa,EACbC,eAAe,EACfC,kBAAkB,EAClBC,cAAc,EACdh/B,SAAS,EACTtG,QAAQ,IAEJukC,EAAQ,SAAaxoC,GAiB3B,OAhBAwoC,EAAMplC,QAAUpD,EAChBqnC,EAAa,CACXI,WACAxhB,KAAMxkB,GAASunC,EAAS5lC,SAAW4jC,EAAsBwB,EAAMplC,QAAS3B,EAAMzB,KAAMknC,IAAUP,EAAsBllC,EAAOwnC,EAAqB7lC,QAAS8iC,EAAQsD,mBAAqB3C,EAAgB,IACjMX,EAAQ6C,cACRtnC,IAELimC,QAASxB,EAAQuC,UAAUgB,QAE7B,aAAgB,KACdT,EAAS5lC,SAAU,EACnB6lC,EAAqB7lC,QAAQmH,SAAW27B,EAAQwD,cAAa,GACtD,KACLV,EAAS5lC,SAAU,CAAK,IAEzB,CAAC8iC,IACG,WAAc,IAAMF,EAAkBC,EAAWC,EAAS+C,EAAqB7lC,SAAS,IAAQ,CAAC6iC,EAAWC,GACrH,CA8FoByD,CAAa,CAC7BzD,UACAlmC,OACAknC,OAAO,IAEH0C,EAAiB,SAAa1D,EAAQ2D,SAAS7pC,EAAM,IACtDsnC,EAAMwC,MACTroC,WACIqjC,EAAUwC,EAAMG,UAAY,CAC9BA,SAAUH,EAAMG,UACd,CAAC,KAEDsC,EAAa,WAAc,IAAM7mC,OAAO8mC,iBAAiB,CAAC,EAAG,CACjEtY,QAAS,CACPuY,YAAY,EACZxpC,IAAK,MAAQA,EAAIwlC,EAAUhiC,OAAQjE,IAErCkpC,QAAS,CACPe,YAAY,EACZxpC,IAAK,MAAQA,EAAIwlC,EAAUmD,YAAappC,IAE1CkqC,UAAW,CACTD,YAAY,EACZxpC,IAAK,MAAQA,EAAIwlC,EAAUoD,cAAerpC,IAE5CupC,aAAc,CACZU,YAAY,EACZxpC,IAAK,MAAQA,EAAIwlC,EAAUqD,iBAAkBtpC,IAE/CyD,MAAO,CACLwmC,YAAY,EACZxpC,IAAK,IAAMA,EAAIwlC,EAAUhiC,OAAQjE,OAEjC,CAACimC,EAAWjmC,IACVk7B,EAAQ,WAAc,KAAM,CAChCl7B,OACAyB,WACIqjC,EAAU2C,IAAaxB,EAAUwB,SAAW,CAC9CA,SAAUxB,EAAUwB,UAAYA,GAC9B,CAAC,EACLhC,SAAUnC,GAASsG,EAAexmC,QAAQqiC,SAAS,CACjDlC,OAAQ,CACN9hC,MAAO4hC,EAAcC,GACrBtjC,KAAMA,GAERD,KAAMolC,EAAOG,SAEfE,OAAQ,IAAMoE,EAAexmC,QAAQoiC,OAAO,CAC1CjC,OAAQ,CACN9hC,MAAOhB,EAAIylC,EAAQyC,YAAa3oC,GAChCA,KAAMA,GAERD,KAAMolC,EAAOC,OAEfriC,IAAKonC,IACH,MAAMjP,EAAQz6B,EAAIylC,EAAQkE,QAASpqC,GAC/Bk7B,GAASiP,IACXjP,EAAMjvB,GAAGlJ,IAAM,CACbsnC,MAAO,IAAMF,EAAIE,QACjBC,OAAQ,IAAMH,EAAIG,SAClBC,kBAAmBC,GAAWL,EAAII,kBAAkBC,GACpDC,eAAgB,IAAMN,EAAIM,kBAE9B,KAEA,CAACzqC,EAAMkmC,EAAQyC,YAAalB,EAAUxB,EAAUwB,SAAUhmC,EAAOykC,EAAQkE,UA6B7E,OA5BA,aAAgB,KACd,MAAMM,EAAyBxE,EAAQyE,SAASrC,kBAAoBA,EAC9DsC,EAAgB,CAAC5qC,EAAMyB,KAC3B,MAAMy5B,EAAQz6B,EAAIylC,EAAQkE,QAASpqC,GAC/Bk7B,GAASA,EAAMjvB,KACjBivB,EAAMjvB,GAAG4+B,MAAQppC,EACnB,EAGF,GADAmpC,EAAc5qC,GAAM,GAChB0qC,EAAwB,CAC1B,MAAMjpC,EAAQ4iC,EAAY5jC,EAAIylC,EAAQyE,SAAStE,cAAermC,IAC9D0B,EAAIwkC,EAAQI,eAAgBtmC,EAAMyB,GAC9ByG,EAAYzH,EAAIylC,EAAQyC,YAAa3oC,KACvC0B,EAAIwkC,EAAQyC,YAAa3oC,EAAMyB,EAEnC,CAEA,OADC8mC,GAAgBrC,EAAQ2D,SAAS7pC,GAC3B,MACJuoC,EAAemC,IAA2BxE,EAAQ4E,OAAOC,OAASL,GAA0BxE,EAAQ8E,WAAWhrC,GAAQ4qC,EAAc5qC,GAAM,EAAM,CACnJ,GACA,CAACA,EAAMkmC,EAASqC,EAAcD,IACjC,aAAgB,KACdpC,EAAQ+E,qBAAqB,CAC3BxD,WACAyD,OAAQhF,EAAQkE,QAChBpqC,QACA,GACD,CAACynC,EAAUznC,EAAMkmC,IACb,WAAc,KAAM,CACzBhL,QACA+K,YACA8D,gBACE,CAAC7O,EAAO+K,EAAW8D,GACzB,CA4CA,MAAMoB,EAAa7D,GAASA,EAAM8D,OAAOhD,EAAcd,IAoIvD,IAAI+D,EAAe,CAACrrC,EAAMsrC,EAA0BrnC,EAAQlE,EAAMyqC,IAAYc,EAA2B,IACpGrnC,EAAOjE,GACVurC,MAAO,IACDtnC,EAAOjE,IAASiE,EAAOjE,GAAMurC,MAAQtnC,EAAOjE,GAAMurC,MAAQ,CAAC,EAC/D,CAACxrC,GAAOyqC,IAAW,IAEnB,CAAC,EAYDgB,EAAqBC,IAAQ,CAC/BC,YAAaD,GAAQA,IAASlG,EAAgBG,SAC9CiG,SAAUF,IAASlG,EAAgBC,OACnCoG,WAAYH,IAASlG,EAAgBE,SACrCoG,QAASJ,IAASlG,EAAgBK,IAClCkG,UAAWL,IAASlG,EAAgBI,YAElCoG,EAAY,CAAC/rC,EAAM8nC,EAAQkE,KAAiBA,IAAgBlE,EAAOK,UAAYL,EAAOG,MAAMvE,IAAI1jC,IAAS,IAAI8nC,EAAOG,OAAO9gC,MAAK8kC,GAAajsC,EAAKonC,WAAW6E,IAAc,SAASp7B,KAAK7Q,EAAKqF,MAAM4mC,EAAU/qC,YAClN,MAAMgrC,EAAwB,CAAChB,EAAQH,EAAQoB,EAAaC,KAC1D,IAAK,MAAM3lC,KAAO0lC,GAAejpC,OAAOsD,KAAK0kC,GAAS,CACpD,MAAMhQ,EAAQz6B,EAAIyqC,EAAQzkC,GAC1B,GAAIy0B,EAAO,CACT,MAAM,GACJjvB,KACGogC,GACDnR,EACJ,GAAIjvB,EAAI,CACN,GAAIA,EAAGqgC,MAAQrgC,EAAGqgC,KAAK,IAAMvB,EAAO9+B,EAAGqgC,KAAK,GAAI7lC,KAAS2lC,EACvD,OAAO,EACF,GAAIngC,EAAGlJ,KAAOgoC,EAAO9+B,EAAGlJ,IAAKkJ,EAAGjM,QAAUosC,EAC/C,OAAO,EAEP,GAAIF,EAAsBG,EAActB,GACtC,KAGN,MAAO,GAAIrjC,EAAS2kC,IACdH,EAAsBG,EAActB,GACtC,KAGN,CACF,CACM,EAER,IAAIwB,EAA4B,CAACtoC,EAAQR,EAAOzD,KAC9C,MAAMwsC,EAAmBzF,EAAsBtmC,EAAIwD,EAAQjE,IAG3D,OAFA0B,EAAI8qC,EAAkB,OAAQ/oC,EAAMzD,IACpC0B,EAAIuC,EAAQjE,EAAMwsC,GACXvoC,CAAM,EAEXwoC,EAAcxJ,GAA4B,SAAjBA,EAAQljC,KACjC0N,EAAahM,GAA0B,mBAAVA,EAC7BirC,EAAgBjrC,IAClB,IAAKyiC,EACH,OAAO,EAET,MAAMyI,EAAQlrC,EAAQA,EAAMmrC,cAAgB,EAC5C,OAAOnrC,aAAkBkrC,GAASA,EAAME,YAAcF,EAAME,YAAYzI,YAAcA,YAAY,EAEhG0I,EAAYrrC,GAASkwB,EAASlwB,GAC9BsrC,EAAe9J,GAA4B,UAAjBA,EAAQljC,KAClCitC,EAAUvrC,GAASA,aAAiBmD,OACxC,MAAMqoC,EAAgB,CACpBxrC,OAAO,EACP8I,SAAS,GAEL2iC,GAAc,CAClBzrC,OAAO,EACP8I,SAAS,GAEX,IAAI4iC,GAAmBhrC,IACrB,GAAIoD,MAAMwB,QAAQ5E,GAAU,CAC1B,GAAIA,EAAQjB,OAAS,EAAG,CACtB,MAAMqlB,EAASpkB,EAAQowB,QAAO6a,GAAUA,GAAUA,EAAO5J,UAAY4J,EAAO3F,WAAUn/B,KAAI8kC,GAAUA,EAAO3rC,QAC3G,MAAO,CACLA,MAAO8kB,EACPhc,UAAWgc,EAAOrlB,OAEtB,CACA,OAAOiB,EAAQ,GAAGqhC,UAAYrhC,EAAQ,GAAGslC,SAEzCtlC,EAAQ,GAAGkrC,aAAenlC,EAAY/F,EAAQ,GAAGkrC,WAAW5rC,OAASyG,EAAY/F,EAAQ,GAAGV,QAA+B,KAArBU,EAAQ,GAAGV,MAAeyrC,GAAc,CAC5IzrC,MAAOU,EAAQ,GAAGV,MAClB8I,SAAS,GACP2iC,GAAcD,CACpB,CACA,OAAOA,CAAa,EAEtB,MAAMK,GAAgB,CACpB/iC,SAAS,EACT9I,MAAO,MAET,IAAI8rC,GAAgBprC,GAAWoD,MAAMwB,QAAQ5E,GAAWA,EAAQs/B,QAAO,CAAC+L,EAAUJ,IAAWA,GAAUA,EAAO5J,UAAY4J,EAAO3F,SAAW,CAC1Il9B,SAAS,EACT9I,MAAO2rC,EAAO3rC,OACZ+rC,GAAUF,IAAiBA,GAC/B,SAASG,GAAiB5qC,EAAQE,GAChC,IAAIhD,EAAOuH,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,WAC/E,GAAIwlC,EAAUjqC,IAAW0C,MAAMwB,QAAQlE,IAAWA,EAAO6qC,MAAMZ,IAAchI,EAAUjiC,KAAYA,EACjG,MAAO,CACL9C,OACAyqC,QAASsC,EAAUjqC,GAAUA,EAAS,GACtCE,MAGN,CACA,IAAI4qC,GAAqBC,GAAkBlmC,EAASkmC,KAAoBZ,EAAQY,GAAkBA,EAAiB,CACjHnsC,MAAOmsC,EACPpD,QAAS,IAEPqD,GAAgBC,MAAO5S,EAAO6S,EAAoBhG,EAAYuD,EAA0B0C,EAA2BC,KACrH,MAAM,IACJlrC,EAAG,KACHupC,EAAI,SACJ4B,EAAQ,UACRC,EAAS,UACTC,EAAS,IACTrvB,EAAG,IACHtP,EAAG,QACH4+B,EAAO,SACPC,EAAQ,KACRtuC,EAAI,cACJuuC,EAAa,MACb1D,GACE3P,EAAMjvB,GACJuiC,EAAa/tC,EAAIsnC,EAAY/nC,GACnC,IAAK6qC,GAASkD,EAAmBrK,IAAI1jC,GACnC,MAAO,CAAC,EAEV,MAAMyuC,EAAWnC,EAAOA,EAAK,GAAKvpC,EAC5BwnC,EAAoBC,IACpBwD,GAA6BS,EAAShE,iBACxCgE,EAASlE,kBAAkBzF,EAAU0F,GAAW,GAAKA,GAAW,IAChEiE,EAAShE,iBACX,EAEIhnC,EAAQ,CAAC,EACTirC,EAAU3B,EAAahqC,GACvB4rC,EAAa3L,EAAgBjgC,GAC7B6rC,EAAoBF,GAAWC,EAC/BE,GAAWN,GAAiB9B,EAAY1pC,KAASmF,EAAYnF,EAAItB,QAAUyG,EAAYsmC,IAAe9B,EAAc3pC,IAAsB,KAAdA,EAAItB,OAA+B,KAAf+sC,GAAqBjpC,MAAMwB,QAAQynC,KAAgBA,EAAWttC,OAC9M4tC,EAAoBzD,EAAa0D,KAAK,KAAM/uC,EAAMsrC,EAA0B7nC,GAC5EurC,EAAmB,SAAUC,EAAWC,EAAkBC,GAC9D,IAAIC,EAAU9nC,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAKu+B,EAC9EwJ,EAAU/nC,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAKu+B,EAClF,MAAM2E,EAAUyE,EAAYC,EAAmBC,EAC/C1rC,EAAMzD,GAAQ,CACZD,KAAMkvC,EAAYG,EAAUC,EAC5B7E,UACAznC,SACG+rC,EAAkBG,EAAYG,EAAUC,EAAS7E,GAExD,EACA,GAAIyD,GAAgB1oC,MAAMwB,QAAQynC,KAAgBA,EAAWttC,OAASgtC,KAAcU,IAAsBC,GAAW1L,EAAkBqL,KAAgB1J,EAAU0J,KAAgBA,GAAcG,IAAexB,GAAiBb,GAAM/hC,SAAWmkC,IAAYnB,GAAcjB,GAAM/hC,SAAU,CACxR,MAAM,MACJ9I,EAAK,QACL+oC,GACEsC,EAAUoB,GAAY,CACxBzsC,QAASysC,EACT1D,QAAS0D,GACPP,GAAmBO,GACvB,GAAIzsC,IACFgC,EAAMzD,GAAQ,CACZD,KAAM8lC,EACN2E,UACAznC,IAAK0rC,KACFK,EAAkBjJ,EAAiC2E,KAEnDc,GAEH,OADAf,EAAkBC,GACX/mC,CAGb,CACA,KAAKorC,GAAa1L,EAAkBpkB,IAASokB,EAAkB1zB,IAAO,CACpE,IAAIw/B,EACAK,EACJ,MAAMC,EAAY5B,GAAmBl+B,GAC/B+/B,EAAY7B,GAAmB5uB,GACrC,GAAKokB,EAAkBqL,IAAgB5jC,MAAM4jC,GAQtC,CACL,MAAMiB,EAAY1sC,EAAI2sC,aAAe,IAAIrnC,KAAKmmC,GACxCmB,EAAoB9c,GAAQ,IAAIxqB,MAAK,IAAIA,MAAOunC,eAAiB,IAAM/c,GACvEgd,EAAqB,QAAZ9sC,EAAIhD,KACb+vC,EAAqB,QAAZ/sC,EAAIhD,KACf4xB,EAAS4d,EAAU9tC,QAAU+sC,IAC/BS,EAAYY,EAASF,EAAkBnB,GAAcmB,EAAkBJ,EAAU9tC,OAASquC,EAAStB,EAAae,EAAU9tC,MAAQguC,EAAY,IAAIpnC,KAAKknC,EAAU9tC,QAE/JkwB,EAAS6d,EAAU/tC,QAAU+sC,IAC/Bc,EAAYO,EAASF,EAAkBnB,GAAcmB,EAAkBH,EAAU/tC,OAASquC,EAAStB,EAAagB,EAAU/tC,MAAQguC,EAAY,IAAIpnC,KAAKmnC,EAAU/tC,OAErK,KAnB0D,CACxD,MAAMsuC,EAAchtC,EAAIwrC,gBAAkBC,GAAcA,EAAaA,GAChErL,EAAkBoM,EAAU9tC,SAC/BwtC,EAAYc,EAAcR,EAAU9tC,OAEjC0hC,EAAkBqM,EAAU/tC,SAC/B6tC,EAAYS,EAAcP,EAAU/tC,MAExC,CAYA,IAAIwtC,GAAaK,KACfN,IAAmBC,EAAWM,EAAU/E,QAASgF,EAAUhF,QAAS3E,EAA4BA,IAC3FyF,GAEH,OADAf,EAAkB9mC,EAAMzD,GAAMwqC,SACvB/mC,CAGb,CACA,IAAK0qC,GAAaC,KAAeS,IAAYld,EAAS6c,IAAeP,GAAgB1oC,MAAMwB,QAAQynC,IAAc,CAC/G,MAAMwB,EAAkBrC,GAAmBQ,GACrC8B,EAAkBtC,GAAmBS,GACrCa,GAAa9L,EAAkB6M,EAAgBvuC,QAAU+sC,EAAWttC,QAAU8uC,EAAgBvuC,MAC9F6tC,GAAanM,EAAkB8M,EAAgBxuC,QAAU+sC,EAAWttC,QAAU+uC,EAAgBxuC,MACpG,IAAIwtC,GAAaK,KACfN,EAAiBC,EAAWe,EAAgBxF,QAASyF,EAAgBzF,UAChEc,GAEH,OADAf,EAAkB9mC,EAAMzD,GAAMwqC,SACvB/mC,CAGb,CACA,GAAI4qC,IAAYQ,GAAWld,EAAS6c,GAAa,CAC/C,MACE/sC,MAAOyuC,EAAY,QACnB1F,GACEmD,GAAmBU,GACvB,GAAIrB,EAAQkD,KAAkB1B,EAAW1oC,MAAMoqC,KAC7CzsC,EAAMzD,GAAQ,CACZD,KAAM8lC,EACN2E,UACAznC,SACG+rC,EAAkBjJ,EAAgC2E,KAElDc,GAEH,OADAf,EAAkBC,GACX/mC,CAGb,CACA,GAAI6qC,EACF,GAAI7gC,EAAW6gC,GAAW,CACxB,MACM6B,EAAgB1C,SADDa,EAASE,EAAYzG,GACK0G,GAC/C,GAAI0B,IACF1sC,EAAMzD,GAAQ,IACTmwC,KACArB,EAAkBjJ,EAAiCsK,EAAc3F,WAEjEc,GAEH,OADAf,EAAkB4F,EAAc3F,SACzB/mC,CAGb,MAAO,GAAIiE,EAAS4mC,GAAW,CAC7B,IAAI8B,EAAmB,CAAC,EACxB,IAAK,MAAM3pC,KAAO6nC,EAAU,CAC1B,IAAK5H,EAAc0J,KAAsB9E,EACvC,MAEF,MAAM6E,EAAgB1C,SAAuBa,EAAS7nC,GAAK+nC,EAAYzG,GAAa0G,EAAUhoC,GAC1F0pC,IACFC,EAAmB,IACdD,KACArB,EAAkBroC,EAAK0pC,EAAc3F,UAE1CD,EAAkB4F,EAAc3F,SAC5Bc,IACF7nC,EAAMzD,GAAQowC,GAGpB,CACA,IAAK1J,EAAc0J,KACjB3sC,EAAMzD,GAAQ,CACZ+C,IAAK0rC,KACF2B,IAEA9E,GACH,OAAO7nC,CAGb,CAGF,OADA8mC,GAAkB,GACX9mC,CAAK,EA+Cd,SAAS4sC,GAAMzO,EAAQgD,GACrB,MAAM0L,EAAQ/qC,MAAMwB,QAAQ69B,GAAQA,EAAOG,EAAMH,GAAQ,CAACA,GAAQI,EAAaJ,GACzE2L,EAA+B,IAAjBD,EAAMpvC,OAAe0gC,EAlB3C,SAAiBA,EAAQ4O,GACvB,MAAMtvC,EAASsvC,EAAWnrC,MAAM,GAAI,GAAGnE,OACvC,IAAI+5B,EAAQ,EACZ,KAAOA,EAAQ/5B,GACb0gC,EAAS15B,EAAY05B,GAAU3G,IAAU2G,EAAO4O,EAAWvV,MAE7D,OAAO2G,CACT,CAWoD6O,CAAQ7O,EAAQ0O,GAC5DrV,EAAQqV,EAAMpvC,OAAS,EACvBuF,EAAM6pC,EAAMrV,GAOlB,OANIsV,UACKA,EAAY9pC,GAEP,IAAVw0B,IAAgBvzB,EAAS6oC,IAAgB7J,EAAc6J,IAAgBhrC,MAAMwB,QAAQwpC,IAhB3F,SAAsB5pC,GACpB,IAAK,MAAMF,KAAOE,EAChB,GAAIA,EAAImB,eAAerB,KAASyB,EAAYvB,EAAIF,IAC9C,OAAO,EAGX,OAAO,CACT,CAS2GiqC,CAAaH,KACpHF,GAAMzO,EAAQ0O,EAAMjrC,MAAM,GAAI,IAEzBu8B,CACT,CAqOA,IAAI+O,GAAgB,KAClB,IAAIC,EAAa,GAiBjB,MAAO,CACL,aAAIC,GACF,OAAOD,CACT,EACA3qB,KApBWxkB,IACX,IAAK,MAAMqvC,KAAYF,EACrBE,EAAS7qB,MAAQ6qB,EAAS7qB,KAAKxkB,EACjC,EAkBAkmC,UAhBgBmJ,IAChBF,EAAWvvC,KAAKyvC,GACT,CACLlJ,YAAa,KACXgJ,EAAaA,EAAWre,QAAOlV,GAAKA,IAAMyzB,GAAS,IAavDlJ,YATkB,KAClBgJ,EAAa,EAAE,EAShB,EAECG,GAActvC,GAAS0hC,EAAkB1hC,KAAW2hC,EAAa3hC,GACrE,SAASuvC,GAAUC,EAASC,GAC1B,GAAIH,GAAYE,IAAYF,GAAYG,GACtC,OAAOD,IAAYC,EAErB,GAAIhO,EAAa+N,IAAY/N,EAAagO,GACxC,OAAOD,EAAQpmC,YAAcqmC,EAAQrmC,UAEvC,MAAMsmC,EAAQjuC,OAAOsD,KAAKyqC,GACpBG,EAAQluC,OAAOsD,KAAK0qC,GAC1B,GAAIC,EAAMjwC,SAAWkwC,EAAMlwC,OACzB,OAAO,EAET,IAAK,MAAMuF,KAAO0qC,EAAO,CACvB,MAAME,EAAOJ,EAAQxqC,GACrB,IAAK2qC,EAAMjQ,SAAS16B,GAClB,OAAO,EAET,GAAY,QAARA,EAAe,CACjB,MAAM6qC,EAAOJ,EAAQzqC,GACrB,GAAIy8B,EAAamO,IAASnO,EAAaoO,IAAS5pC,EAAS2pC,IAAS3pC,EAAS4pC,IAAS/rC,MAAMwB,QAAQsqC,IAAS9rC,MAAMwB,QAAQuqC,IAASN,GAAUK,EAAMC,GAAQD,IAASC,EACjK,OAAO,CAEX,CACF,CACA,OAAO,CACT,CACA,IAAIC,GAAmBtO,GAA4B,oBAAjBA,EAAQljC,KACtC6uC,GAAoB7rC,GAAOgqC,EAAahqC,IAAQigC,EAAgBjgC,GAChEyuC,GAAOzuC,GAAO2pC,EAAc3pC,IAAQA,EAAI0uC,YACxCC,GAAoBhuC,IACtB,IAAK,MAAM+C,KAAO/C,EAChB,GAAI+J,EAAW/J,EAAK+C,IAClB,OAAO,EAGX,OAAO,CAAK,EAEd,SAASkrC,GAAgBjuC,GACvB,IAAIwnC,EAAS5jC,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAClF,MAAMsqC,EAAoBrsC,MAAMwB,QAAQrD,GACxC,GAAIgE,EAAShE,IAASkuC,EACpB,IAAK,MAAMnrC,KAAO/C,EACZ6B,MAAMwB,QAAQrD,EAAK+C,KAASiB,EAAShE,EAAK+C,MAAUirC,GAAkBhuC,EAAK+C,KAC7EykC,EAAOzkC,GAAOlB,MAAMwB,QAAQrD,EAAK+C,IAAQ,GAAK,CAAC,EAC/CkrC,GAAgBjuC,EAAK+C,GAAMykC,EAAOzkC,KACxB08B,EAAkBz/B,EAAK+C,MACjCykC,EAAOzkC,IAAO,GAIpB,OAAOykC,CACT,CACA,SAAS2G,GAAgCnuC,EAAMqkC,EAAY+J,GACzD,MAAMF,EAAoBrsC,MAAMwB,QAAQrD,GACxC,GAAIgE,EAAShE,IAASkuC,EACpB,IAAK,MAAMnrC,KAAO/C,EACZ6B,MAAMwB,QAAQrD,EAAK+C,KAASiB,EAAShE,EAAK+C,MAAUirC,GAAkBhuC,EAAK+C,IACzEyB,EAAY6/B,IAAegJ,GAAYe,EAAsBrrC,IAC/DqrC,EAAsBrrC,GAAOlB,MAAMwB,QAAQrD,EAAK+C,IAAQkrC,GAAgBjuC,EAAK+C,GAAM,IAAM,IACpFkrC,GAAgBjuC,EAAK+C,KAG1BorC,GAAgCnuC,EAAK+C,GAAM08B,EAAkB4E,GAAc,CAAC,EAAIA,EAAWthC,GAAMqrC,EAAsBrrC,IAGzHqrC,EAAsBrrC,IAAQuqC,GAAUttC,EAAK+C,GAAMshC,EAAWthC,IAIpE,OAAOqrC,CACT,CACA,IAAIC,GAAiB,CAAC1L,EAAe0B,IAAe8J,GAAgCxL,EAAe0B,EAAY4J,GAAgB5J,IAC3HiK,GAAkB,CAACvwC,EAAOwwC,KAC5B,IAAI,cACF1D,EAAa,YACbmB,EAAW,WACXwC,GACED,EACJ,OAAO/pC,EAAYzG,GAASA,EAAQ8sC,EAA0B,KAAV9sC,EAAe2J,IAAM3J,GAASA,EAAQA,EAAQiuC,GAAe/d,EAASlwB,GAAS,IAAI4G,KAAK5G,GAASywC,EAAaA,EAAWzwC,GAASA,CAAK,EAE7L,SAAS0wC,GAAclmC,GACrB,MAAMlJ,EAAMkJ,EAAGlJ,IACf,OAAI0pC,EAAY1pC,GACPA,EAAIqvC,MAETrF,EAAahqC,GACRwqC,GAActhC,EAAGqgC,MAAM7qC,MAE5B8vC,GAAiBxuC,GACZ,IAAIA,EAAIsvC,iBAAiB/pC,KAAIgqC,IAClC,IAAI,MACF7wC,GACE6wC,EACJ,OAAO7wC,CAAK,IAGZuhC,EAAgBjgC,GACXoqC,GAAiBlhC,EAAGqgC,MAAM7qC,MAE5BuwC,GAAgB9pC,EAAYnF,EAAItB,OAASwK,EAAGlJ,IAAItB,MAAQsB,EAAItB,MAAOwK,EAC5E,CACA,IAAIsmC,GAAqB,CAACpG,EAAa/B,EAASoI,EAAcxE,KAC5D,MAAM9C,EAAS,CAAC,EAChB,IAAK,MAAMlrC,KAAQmsC,EAAa,CAC9B,MAAMjR,EAAQz6B,EAAI2pC,EAASpqC,GAC3Bk7B,GAASx5B,EAAIwpC,EAAQlrC,EAAMk7B,EAAMjvB,GACnC,CACA,MAAO,CACLumC,eACAzsB,MAAO,IAAIomB,GACXjB,SACA8C,4BACD,EAECyE,GAAeC,GAAQxqC,EAAYwqC,GAAQA,EAAO1F,EAAQ0F,GAAQA,EAAK5kC,OAASpG,EAASgrC,GAAQ1F,EAAQ0F,EAAKjxC,OAASixC,EAAKjxC,MAAMqM,OAAS4kC,EAAKjxC,MAAQixC,EAC5J,MAAMC,GAAiB,gBACvB,IAAIC,GAAuBC,KAAoBA,KAAoBA,EAAevE,aAAe7gC,EAAWolC,EAAevE,WAAauE,EAAevE,SAASrK,YAAYjkC,OAAS2yC,IAAkBjrC,EAASmrC,EAAevE,WAAaprC,OAAOqjB,OAAOssB,EAAevE,UAAUxH,MAAKgM,GAAoBA,EAAiB7O,YAAYjkC,OAAS2yC,MAC9UI,GAAgB5wC,GAAWA,EAAQ0oC,QAAU1oC,EAAQ+rC,UAAY/rC,EAAQ4c,KAAO5c,EAAQsN,KAAOtN,EAAQgsC,WAAahsC,EAAQisC,WAAajsC,EAAQksC,SAAWlsC,EAAQmsC,UACxK,SAAS0E,GAAkB/uC,EAAQmmC,EAASpqC,GAC1C,MAAMyD,EAAQhD,EAAIwD,EAAQjE,GAC1B,GAAIyD,GAASshC,EAAM/kC,GACjB,MAAO,CACLyD,QACAzD,QAGJ,MAAM+lB,EAAQ/lB,EAAKgF,MAAM,KACzB,KAAO+gB,EAAM7kB,QAAQ,CACnB,MAAMgnC,EAAYniB,EAAM7gB,KAAK,KACvBg2B,EAAQz6B,EAAI2pC,EAASlC,GACrB+K,EAAaxyC,EAAIwD,EAAQikC,GAC/B,GAAIhN,IAAU31B,MAAMwB,QAAQm0B,IAAUl7B,IAASkoC,EAC7C,MAAO,CACLloC,QAGJ,GAAIizC,GAAcA,EAAWlzC,KAC3B,MAAO,CACLC,KAAMkoC,EACNzkC,MAAOwvC,GAGXltB,EAAMmtB,KACR,CACA,MAAO,CACLlzC,OAEJ,CACA,IAAImzC,GAAiB,CAACnH,EAAa9B,EAAWkJ,EAAaC,EAAgB5H,KACrEA,EAAKI,WAEGuH,GAAe3H,EAAKK,YACrB5B,GAAa8B,IACboH,EAAcC,EAAe1H,SAAWF,EAAKE,WAC9CK,IACCoH,EAAcC,EAAezH,WAAaH,EAAKG,aACjDI,GAIPsH,GAAkB,CAACvwC,EAAK/C,KAAU2kC,EAAQlkC,EAAIsC,EAAK/C,IAAOkB,QAAUmvC,GAAMttC,EAAK/C,GACnF,MAAMuzC,GAAiB,CACrB9H,KAAMlG,EAAgBG,SACtB2N,eAAgB9N,EAAgBE,SAChC+N,kBAAkB,GAEpB,SAASC,KACP,IAmCIC,EAlCA/I,EAAW,IACV4I,MAFOjsC,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAK7EyhC,EAAa,CACf4K,YAAa,EACbzK,SAAS,EACTC,UAAW17B,EAAWk9B,EAAStE,eAC/BkD,cAAc,EACd6J,aAAa,EACbQ,cAAc,EACdC,oBAAoB,EACpBtpC,SAAS,EACT8+B,cAAe,CAAC,EAChBD,YAAa,CAAC,EACdE,iBAAkB,CAAC,EACnBrlC,OAAQ0mC,EAAS1mC,QAAU,CAAC,EAC5BwjC,SAAUkD,EAASlD,WAAY,GAE7B2C,EAAU,CAAC,EACX9D,GAAiB5+B,EAASijC,EAAStE,gBAAkB3+B,EAASijC,EAASpkB,UAAU8d,EAAYsG,EAAStE,eAAiBsE,EAASpkB,SAAgB,CAAC,EACjJoiB,EAAcgC,EAASrC,iBAAmB,CAAC,EAAIjE,EAAYiC,GAC3DwE,EAAS,CACXC,QAAQ,EACRF,OAAO,EACP5C,OAAO,GAELH,EAAS,CACX+C,MAAO,IAAIpG,IACXgD,SAAU,IAAIhD,IACdqP,QAAS,IAAIrP,IACbn0B,MAAO,IAAIm0B,IACXwD,MAAO,IAAIxD,KAGTsP,EAAQ,EACZ,MAAMtN,EAAkB,CACtByC,SAAS,EACTE,aAAa,EACbE,kBAAkB,EAClBD,eAAe,EACfE,cAAc,EACdh/B,SAAS,EACTtG,QAAQ,GAEJwkC,EAAY,CAChBliB,OAAQoqB,KACRrgC,MAAOqgC,KACPlH,MAAOkH,MAEHqD,EAA6BxI,EAAmBb,EAASc,MACzDwI,EAA4BzI,EAAmBb,EAAS0I,gBACxDa,EAAmCvJ,EAAS6H,eAAiBjN,EAAgBK,IAK7E8D,EAAeoE,UACnB,IAAKnD,EAASlD,WAAahB,EAAgBl8B,SAAW4pC,GAAoB,CACxE,MAAM5pC,EAAUogC,EAASyJ,SAAW1N,SAAqB2N,KAAkBpwC,cAAgBqwC,EAAyBlK,GAAS,GACzH7/B,IAAYw+B,EAAWx+B,SACzBk+B,EAAUgB,MAAMxjB,KAAK,CACnB1b,WAGN,GAEIgqC,EAAsB,CAACxuB,EAAOwjB,KAC7BoB,EAASlD,WAAahB,EAAgB8C,eAAgB9C,EAAgB6C,oBACxEvjB,GAASxgB,MAAMsG,KAAKi8B,EAAO+C,QAAQjkB,SAAQ5mB,IACtCA,IACFupC,EAAe7nC,EAAIqnC,EAAWO,iBAAkBtpC,EAAMupC,GAAgB8G,GAAMtH,EAAWO,iBAAkBtpC,GAC3G,IAEFyoC,EAAUgB,MAAMxjB,KAAK,CACnBqjB,iBAAkBP,EAAWO,iBAC7BC,cAAe7C,EAAcqC,EAAWO,oBAE5C,EAkDIkL,EAAsB,CAACx0C,EAAMy0C,EAAsBhzC,EAAOsB,KAC9D,MAAMm4B,EAAQz6B,EAAI2pC,EAASpqC,GAC3B,GAAIk7B,EAAO,CACT,MAAM2J,EAAepkC,EAAIkoC,EAAa3oC,EAAMkI,EAAYzG,GAAShB,EAAI6lC,EAAgBtmC,GAAQyB,GAC7FyG,EAAY28B,IAAiB9hC,GAAOA,EAAI2xC,gBAAkBD,EAAuB/yC,EAAIinC,EAAa3oC,EAAMy0C,EAAuB5P,EAAesN,GAAcjX,EAAMjvB,KAAO0oC,EAAc30C,EAAM6kC,GAC7LiG,EAAOD,OAASnB,GAClB,GAEIkL,EAAsB,CAAC50C,EAAM60C,EAAY7I,EAAa8I,EAAaC,KACvE,IAAIC,GAAoB,EACpBC,GAAkB,EACtB,MAAMnmC,EAAS,CACb9O,QAEF,IAAK2qC,EAASlD,SAAU,CACtB,MAAMyN,KAAmBz0C,EAAI2pC,EAASpqC,IAASS,EAAI2pC,EAASpqC,GAAMiM,IAAMxL,EAAI2pC,EAASpqC,GAAMiM,GAAGw7B,UAC9F,IAAKuE,GAAe8I,EAAa,CAC3BrO,EAAgByC,UAClB+L,EAAkBlM,EAAWG,QAC7BH,EAAWG,QAAUp6B,EAAOo6B,QAAUiM,IACtCH,EAAoBC,IAAoBnmC,EAAOo6B,SAEjD,MAAMkM,EAAyBF,GAAiBlE,GAAUvwC,EAAI6lC,EAAgBtmC,GAAO60C,GACrFI,IAAsBC,IAAiBz0C,EAAIsoC,EAAWK,YAAappC,IACnEo1C,GAA0BF,EAAgB7E,GAAMtH,EAAWK,YAAappC,GAAQ0B,EAAIqnC,EAAWK,YAAappC,GAAM,GAClH8O,EAAOs6B,YAAcL,EAAWK,YAChC4L,EAAoBA,GAAqBvO,EAAgB2C,aAAe6L,KAAqBG,CAC/F,CACA,GAAIpJ,EAAa,CACf,MAAMqJ,EAAyB50C,EAAIsoC,EAAWM,cAAerpC,GACxDq1C,IACH3zC,EAAIqnC,EAAWM,cAAerpC,EAAMgsC,GACpCl9B,EAAOu6B,cAAgBN,EAAWM,cAClC2L,EAAoBA,GAAqBvO,EAAgB4C,eAAiBgM,IAA2BrJ,EAEzG,CACAgJ,GAAqBD,GAAgBtM,EAAUgB,MAAMxjB,KAAKnX,EAC5D,CACA,OAAOkmC,EAAoBlmC,EAAS,CAAC,CAAC,EAElCwmC,EAAsB,CAACt1C,EAAMuK,EAAS9G,EAAOsmC,KACjD,MAAMwL,EAAqB90C,EAAIsoC,EAAW9kC,OAAQjE,GAC5Cm0C,EAAoB1N,EAAgBl8B,SAAWu6B,EAAUv6B,IAAYw+B,EAAWx+B,UAAYA,EArHnF/C,MA8Hf,GARImjC,EAAS6K,YAAc/xC,GAtHZ+D,EAuHiB,IAzDb,EAACxH,EAAMyD,KAC1B/B,EAAIqnC,EAAW9kC,OAAQjE,EAAMyD,GAC7BglC,EAAUgB,MAAMxjB,KAAK,CACnBhiB,OAAQ8kC,EAAW9kC,QACnB,EAqDoCwxC,CAAaz1C,EAAMyD,GAAvDiwC,EAvHyBgC,IAC3BC,aAAa5B,GACbA,EAAQ6B,WAAWpuC,EAAUkuC,EAAK,EAsHhChC,EAAmB/I,EAAS6K,cAE5BG,aAAa5B,GACbL,EAAqB,KACrBjwC,EAAQ/B,EAAIqnC,EAAW9kC,OAAQjE,EAAMyD,GAAS4sC,GAAMtH,EAAW9kC,OAAQjE,KAEpEyD,GAASutC,GAAUuE,EAAoB9xC,GAAS8xC,KAAwB7O,EAAcqD,IAAeoK,EAAmB,CAC3H,MAAM0B,EAAmB,IACpB9L,KACCoK,GAAqBrP,EAAUv6B,GAAW,CAC5CA,WACE,CAAC,EACLtG,OAAQ8kC,EAAW9kC,OACnBjE,QAEF+oC,EAAa,IACRA,KACA8M,GAELpN,EAAUgB,MAAMxjB,KAAK4vB,EACvB,GAEIxB,EAAiBvG,UACrByG,EAAoBv0C,GAAM,GAC1B,MAAM6C,QAAe8nC,EAASyJ,SAASzL,EAAagC,EAASroC,QAASiwC,GAAmBvyC,GAAQ8nC,EAAO+C,MAAOT,EAASO,EAAS6H,aAAc7H,EAASqD,4BAExJ,OADAuG,EAAoBv0C,GACb6C,CAAM,EAgBTyxC,EAA2BxG,eAAgB5C,EAAQ4K,GACvD,IAAIxzC,EAAUgF,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAChFyuC,OAAO,GAET,IAAK,MAAM/1C,KAAQkrC,EAAQ,CACzB,MAAMhQ,EAAQgQ,EAAOlrC,GACrB,GAAIk7B,EAAO,CACT,MAAM,GACJjvB,KACG4oC,GACD3Z,EACJ,GAAIjvB,EAAI,CACN,MAAM+pC,EAAmBlO,EAAOx3B,MAAMozB,IAAIz3B,EAAGjM,MACvCi2C,EAAoB/a,EAAMjvB,IAAM2mC,GAAqB1X,EAAMjvB,IAC7DgqC,GAAqBxP,EAAgB6C,kBACvCiL,EAAoB,CAACv0C,IAAO,GAE9B,MAAMk2C,QAAmBrI,GAAc3S,EAAO4M,EAAOL,SAAUkB,EAAauL,EAAkCvJ,EAASqD,4BAA8B8H,EAAsBE,GAI3K,GAHIC,GAAqBxP,EAAgB6C,kBACvCiL,EAAoB,CAACv0C,IAEnBk2C,EAAWjqC,EAAGjM,QAChBsC,EAAQyzC,OAAQ,EACZD,GACF,OAGHA,IAAyBr1C,EAAIy1C,EAAYjqC,EAAGjM,MAAQg2C,EAAmBzJ,EAA0BxD,EAAW9kC,OAAQiyC,EAAYjqC,EAAGjM,MAAQ0B,EAAIqnC,EAAW9kC,OAAQgI,EAAGjM,KAAMk2C,EAAWjqC,EAAGjM,OAASqwC,GAAMtH,EAAW9kC,OAAQgI,EAAGjM,MACjO,EACC0mC,EAAcmO,UAAsBP,EAAyBO,EAAYiB,EAAsBxzC,EAClG,CACF,CACA,OAAOA,EAAQyzC,KACjB,EAQMZ,EAAY,CAACn1C,EAAM0D,KAAUinC,EAASlD,WAAaznC,GAAQ0D,GAAQhC,EAAIinC,EAAa3oC,EAAM0D,IAAQstC,GAAUmF,KAAa7P,IACzHsC,EAAY,CAAC7iB,EAAO8e,EAAcmD,IAAaH,EAAoB9hB,EAAO+hB,EAAQ,IAClFgD,EAAOD,MAAQlC,EAAczgC,EAAY28B,GAAgByB,EAAiB3U,EAAS5L,GAAS,CAC9F,CAACA,GAAQ8e,GACPA,GACHmD,EAAUnD,GAEP8P,EAAgB,SAAU30C,EAAMyB,GACpC,IAAIU,EAAUmF,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAM4zB,EAAQz6B,EAAI2pC,EAASpqC,GAC3B,IAAI60C,EAAapzC,EACjB,GAAIy5B,EAAO,CACT,MAAM2X,EAAiB3X,EAAMjvB,GACzB4mC,KACDA,EAAepL,UAAY/lC,EAAIinC,EAAa3oC,EAAMgyC,GAAgBvwC,EAAOoxC,IAC1EgC,EAAanI,EAAcmG,EAAe9vC,MAAQogC,EAAkB1hC,GAAS,GAAKA,EAC9E8vC,GAAiBsB,EAAe9vC,KAClC,IAAI8vC,EAAe9vC,IAAIZ,SAASykB,SAAQwvB,GAAaA,EAAUC,SAAWxB,EAAW1T,SAASiV,EAAU30C,SAC/FoxC,EAAevG,KACpBtJ,EAAgB6P,EAAe9vC,KACjC8vC,EAAevG,KAAKprC,OAAS,EAAI2xC,EAAevG,KAAK1lB,SAAQ0vB,KAAiBA,EAAY5B,iBAAmB4B,EAAY7O,YAAc6O,EAAY9S,QAAUj+B,MAAMwB,QAAQ8tC,KAAgBA,EAAW/N,MAAKpjC,GAAQA,IAAS4yC,EAAY70C,QAASozC,IAAeyB,EAAY70C,SAAUoxC,EAAevG,KAAK,KAAOuG,EAAevG,KAAK,GAAG9I,UAAYqR,GAEpVhC,EAAevG,KAAK1lB,SAAQ2vB,GAAYA,EAAS/S,QAAU+S,EAAS90C,QAAUozC,IAEvEpI,EAAYoG,EAAe9vC,KACpC8vC,EAAe9vC,IAAItB,MAAQ,IAE3BoxC,EAAe9vC,IAAItB,MAAQozC,EACtBhC,EAAe9vC,IAAIhD,MACtB0oC,EAAUliB,OAAON,KAAK,CACpBjmB,OACAumB,OAAQ,IACHoiB,MAMf,EACCxmC,EAAQ2yC,aAAe3yC,EAAQq0C,cAAgB5B,EAAoB50C,EAAM60C,EAAY1yC,EAAQq0C,YAAar0C,EAAQ2yC,aAAa,GAChI3yC,EAAQs0C,gBAAkBC,GAAQ12C,EACpC,EACM22C,EAAY,CAAC32C,EAAMyB,EAAOU,KAC9B,IAAK,MAAMy0C,KAAYn1C,EAAO,CAC5B,MAAMozC,EAAapzC,EAAMm1C,GACnB1O,EAAY,GAAGloC,KAAQ42C,IACvB1b,EAAQz6B,EAAI2pC,EAASlC,IAC1BJ,EAAOx3B,MAAMozB,IAAI1jC,IAAS0H,EAASmtC,IAAe3Z,IAAUA,EAAMjvB,MAAQi3B,EAAa2R,GAAc8B,EAAUzO,EAAW2M,EAAY1yC,GAAWwyC,EAAczM,EAAW2M,EAAY1yC,EACzL,GAEI00C,EAAW,SAAU72C,EAAMyB,GAC/B,IAAIU,EAAUmF,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAM4zB,EAAQz6B,EAAI2pC,EAASpqC,GACrBiuC,EAAenG,EAAOx3B,MAAMozB,IAAI1jC,GAChC82C,EAAazS,EAAY5iC,GAC/BC,EAAIinC,EAAa3oC,EAAM82C,GACnB7I,GACFxF,EAAUn4B,MAAM2V,KAAK,CACnBjmB,OACAumB,OAAQ,IACHoiB,MAGFlC,EAAgByC,SAAWzC,EAAgB2C,cAAgBjnC,EAAQ2yC,aACtErM,EAAUgB,MAAMxjB,KAAK,CACnBjmB,OACAopC,YAAa2I,GAAezL,EAAgBqC,GAC5CO,QAASiM,EAAUn1C,EAAM82C,OAI7B5b,GAAUA,EAAMjvB,IAAOk3B,EAAkB2T,GAAqDnC,EAAc30C,EAAM82C,EAAY30C,GAAvEw0C,EAAU32C,EAAM82C,EAAY30C,GAErF4pC,EAAU/rC,EAAM8nC,IAAWW,EAAUgB,MAAMxjB,KAAK,IAC3C8iB,IAELN,EAAUliB,OAAON,KAAK,CACpBjmB,KAAM8qC,EAAOD,MAAQ7qC,OAAO4B,EAC5B2kB,OAAQ,IACHoiB,IAGT,EACMlD,EAAWqI,UACfhD,EAAOD,OAAQ,EACf,MAAMtH,EAASD,EAAMC,OACrB,IAAIvjC,EAAOujC,EAAOvjC,KACd+2C,GAAsB,EAC1B,MAAM7b,EAAQz6B,EAAI2pC,EAASpqC,GAErBg3C,EAA6BnC,IACjCkC,EAAsB3W,OAAOx1B,MAAMiqC,IAAe3R,EAAa2R,IAAejqC,MAAMiqC,EAAWhqC,YAAcmmC,GAAU6D,EAAYp0C,EAAIkoC,EAAa3oC,EAAM60C,GAAY,EAExK,GAAI3Z,EAAO,CACT,IAAIz3B,EACA8G,EACJ,MAAMsqC,EAP2BtR,EAAOxjC,KAAOoyC,GAAcjX,EAAMjvB,IAAMo3B,EAAcC,GAQjF0I,EAAc1I,EAAMvjC,OAASolC,EAAOC,MAAQ9B,EAAMvjC,OAASolC,EAAOE,UAClE4R,GAAwBlE,GAAc7X,EAAMjvB,MAAQ0+B,EAASyJ,WAAa3zC,EAAIsoC,EAAW9kC,OAAQjE,KAAUk7B,EAAMjvB,GAAGirC,MAAQ/D,GAAenH,EAAavrC,EAAIsoC,EAAWM,cAAerpC,GAAO+oC,EAAWqK,YAAaa,EAA2BD,GAChPmD,EAAUpL,EAAU/rC,EAAM8nC,EAAQkE,GACxCtqC,EAAIinC,EAAa3oC,EAAM60C,GACnB7I,GACF9Q,EAAMjvB,GAAGu5B,QAAUtK,EAAMjvB,GAAGu5B,OAAOlC,GACnCoQ,GAAsBA,EAAmB,IAChCxY,EAAMjvB,GAAGw5B,UAClBvK,EAAMjvB,GAAGw5B,SAASnC,GAEpB,MAAMyG,EAAa6K,EAAoB50C,EAAM60C,EAAY7I,GAAa,GAChE+I,GAAgBrO,EAAcqD,IAAeoN,EAQnD,IAPCnL,GAAevD,EAAUliB,OAAON,KAAK,CACpCjmB,OACAD,KAAMujC,EAAMvjC,KACZwmB,OAAQ,IACHoiB,KAGHsO,EAQF,OAPIxQ,EAAgBl8B,UACI,WAAlBogC,EAASc,MAAqBO,EAChCtC,IACUsC,GACVtC,KAGGqL,GAAgBtM,EAAUgB,MAAMxjB,KAAK,CAC1CjmB,UACIm3C,EAAU,CAAC,EAAIpN,IAMvB,IAHCiC,GAAemL,GAAW1O,EAAUgB,MAAMxjB,KAAK,IAC3C8iB,IAED4B,EAASyJ,SAAU,CACrB,MAAM,OACJnwC,SACQowC,EAAe,CAACr0C,IAE1B,GADAg3C,EAA2BnC,GACvBkC,EAAqB,CACvB,MAAMK,EAA4BpE,GAAkBjK,EAAW9kC,OAAQmmC,EAASpqC,GAC1Eq3C,EAAoBrE,GAAkB/uC,EAAQmmC,EAASgN,EAA0Bp3C,MAAQA,GAC/FyD,EAAQ4zC,EAAkB5zC,MAC1BzD,EAAOq3C,EAAkBr3C,KACzBuK,EAAUm8B,EAAcziC,EAC1B,CACF,MACEswC,EAAoB,CAACv0C,IAAO,GAC5ByD,SAAeoqC,GAAc3S,EAAO4M,EAAOL,SAAUkB,EAAauL,EAAkCvJ,EAASqD,4BAA4BhuC,GACzIu0C,EAAoB,CAACv0C,IACrBg3C,EAA2BnC,GACvBkC,IACEtzC,EACF8G,GAAU,EACDk8B,EAAgBl8B,UACzBA,QAAgB+pC,EAAyBlK,GAAS,KAIpD2M,IACF7b,EAAMjvB,GAAGirC,MAAQR,GAAQxb,EAAMjvB,GAAGirC,MAClC5B,EAAoBt1C,EAAMuK,EAAS9G,EAAOsmC,GAE9C,GAEIuN,EAAc,CAACv0C,EAAK0D,KACxB,GAAIhG,EAAIsoC,EAAW9kC,OAAQwC,IAAQ1D,EAAIsnC,MAErC,OADAtnC,EAAIsnC,QACG,CAEH,EAEFqM,GAAU5I,eAAgB9tC,GAC9B,IACIuK,EACA6lC,EAFAjuC,EAAUmF,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAGnF,MAAMiwC,EAAaxQ,EAAsB/mC,GACzC,GAAI2qC,EAASyJ,SAAU,CACrB,MAAMnwC,OAvO0B6pC,WAClC,MAAM,OACJ7pC,SACQowC,EAAetuB,GACzB,GAAIA,EACF,IAAK,MAAM/lB,KAAQ+lB,EAAO,CACxB,MAAMtiB,EAAQhD,EAAIwD,EAAQjE,GAC1ByD,EAAQ/B,EAAIqnC,EAAW9kC,OAAQjE,EAAMyD,GAAS4sC,GAAMtH,EAAW9kC,OAAQjE,EACzE,MAEA+oC,EAAW9kC,OAASA,EAEtB,OAAOA,CAAM,EA2NUuzC,CAA4BtvC,EAAYlI,GAAQA,EAAOu3C,GAC5EhtC,EAAUm8B,EAAcziC,GACxBmsC,EAAmBpwC,GAAQu3C,EAAWpwC,MAAKnH,GAAQS,EAAIwD,EAAQjE,KAASuK,CAC1E,MAAWvK,GACTowC,SAA0BqH,QAAQ7R,IAAI2R,EAAWjvC,KAAIwlC,UACnD,MAAM5S,EAAQz6B,EAAI2pC,EAASlC,GAC3B,aAAaoM,EAAyBpZ,GAASA,EAAMjvB,GAAK,CACxD,CAACi8B,GAAYhN,GACXA,EAAM,MACPwS,MAAMhM,UACR0O,GAAqBrH,EAAWx+B,UAAYm/B,KAE/C0G,EAAmB7lC,QAAgB+pC,EAAyBlK,GAY9D,OAVA3B,EAAUgB,MAAMxjB,KAAK,KACd0L,EAAS3xB,IAASymC,EAAgBl8B,SAAWA,IAAYw+B,EAAWx+B,QAAU,CAAC,EAAI,CACtFvK,WAEE2qC,EAASyJ,WAAap0C,EAAO,CAC/BuK,WACE,CAAC,EACLtG,OAAQ8kC,EAAW9kC,SAErB9B,EAAQu1C,cAAgBtH,GAAoBlE,EAAsB9B,EAASkN,EAAat3C,EAAOu3C,EAAazP,EAAO+C,OAC5GuF,CACT,EACM+F,GAAYoB,IAChB,MAAMhxB,EAAS,IACTukB,EAAOD,MAAQlC,EAAcrC,GAEnC,OAAOp+B,EAAYqvC,GAAchxB,EAASoL,EAAS4lB,GAAc92C,EAAI8lB,EAAQgxB,GAAcA,EAAWjvC,KAAItI,GAAQS,EAAI8lB,EAAQvmB,IAAM,EAEhI23C,GAAgB,CAAC33C,EAAMimC,KAAc,CACzCvU,UAAWjxB,GAAKwlC,GAAa8C,GAAY9kC,OAAQjE,GACjDkpC,UAAWzoC,GAAKwlC,GAAa8C,GAAYK,YAAappC,GACtDyD,MAAOhD,GAAKwlC,GAAa8C,GAAY9kC,OAAQjE,GAC7CupC,eAAgB9oC,EAAIsoC,EAAWO,iBAAkBtpC,GACjDkqC,YAAazpC,GAAKwlC,GAAa8C,GAAYM,cAAerpC,KAQtD43C,GAAW,CAAC53C,EAAMyD,EAAOtB,KAC7B,MAAMY,GAAOtC,EAAI2pC,EAASpqC,EAAM,CAC9BiM,GAAI,CAAC,IACJA,IAAM,CAAC,GAAGlJ,IACP80C,EAAep3C,EAAIsoC,EAAW9kC,OAAQjE,IAAS,CAAC,GAGpD+C,IAAK+0C,EAAU,QACftN,EAAO,KACPzqC,KACGg4C,GACDF,EACJn2C,EAAIqnC,EAAW9kC,OAAQjE,EAAM,IACxB+3C,KACAt0C,EACHV,QAEF0lC,EAAUgB,MAAMxjB,KAAK,CACnBjmB,OACAiE,OAAQ8kC,EAAW9kC,OACnBsG,SAAS,IAEXpI,GAAWA,EAAQu1C,aAAe30C,GAAOA,EAAIsnC,OAAStnC,EAAIsnC,OAAO,EAK7DW,GAAa,SAAUhrC,GAC3B,IAAImC,EAAUmF,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,IAAK,MAAM4gC,KAAaloC,EAAO+mC,EAAsB/mC,GAAQ8nC,EAAO+C,MAClE/C,EAAO+C,MAAMmN,OAAO9P,GACpBJ,EAAOx3B,MAAM0nC,OAAO9P,GACf/lC,EAAQ81C,YACX5H,GAAMjG,EAASlC,GACfmI,GAAM1H,EAAaT,KAEpB/lC,EAAQ+1C,WAAa7H,GAAMtH,EAAW9kC,OAAQikC,IAC9C/lC,EAAQg2C,WAAa9H,GAAMtH,EAAWK,YAAalB,IACnD/lC,EAAQi2C,aAAe/H,GAAMtH,EAAWM,cAAenB,IACvD/lC,EAAQk2C,kBAAoBhI,GAAMtH,EAAWO,iBAAkBpB,IAC/DyC,EAASrC,mBAAqBnmC,EAAQm2C,kBAAoBjI,GAAM/J,EAAgB4B,GAEnFO,EAAUliB,OAAON,KAAK,CACpBM,OAAQ,IACHoiB,KAGPF,EAAUgB,MAAMxjB,KAAK,IAChB8iB,KACE5mC,EAAQg2C,UAAiB,CAC5BjP,QAASiM,KADc,CAAC,KAI3BhzC,EAAQo2C,aAAe7O,GAC1B,EACMuB,GAAuBuN,IAC3B,IAAI,SACF/Q,EAAQ,KACRznC,EAAI,MACJk7B,EAAK,OACLgQ,GACEsN,GACA1T,EAAU2C,IAAaqD,EAAOD,OAAWpD,GAAYK,EAAOL,SAAS/D,IAAI1jC,MAC3EynC,EAAWK,EAAOL,SAAStmB,IAAInhB,GAAQ8nC,EAAOL,SAASuQ,OAAOh4C,GAC9D40C,EAAoB50C,EAAMmyC,GAAcjX,EAAQA,EAAMjvB,GAAKxL,EAAIyqC,EAAQlrC,GAAMiM,KAAK,GAAO,GAAO,GAClG,EAEI49B,GAAW,SAAU7pC,GACzB,IAAImC,EAAUmF,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E4zB,EAAQz6B,EAAI2pC,EAASpqC,GACzB,MAAMy4C,EAAoB3T,EAAU3iC,EAAQslC,WAAa3C,EAAU6F,EAASlD,UAwB5E,OAvBA/lC,EAAI0oC,EAASpqC,EAAM,IACbk7B,GAAS,CAAC,EACdjvB,GAAI,IACEivB,GAASA,EAAMjvB,GAAKivB,EAAMjvB,GAAK,CACjClJ,IAAK,CACH/C,SAGJA,OACA6qC,OAAO,KACJ1oC,KAGP2lC,EAAO+C,MAAM1pB,IAAInhB,GACbk7B,EACF+P,GAAqB,CACnB/P,QACAuM,SAAU3C,EAAU3iC,EAAQslC,UAAYtlC,EAAQslC,SAAWkD,EAASlD,SACpEznC,SAGFw0C,EAAoBx0C,GAAM,EAAMmC,EAAQV,OAEnC,IACDg3C,EAAoB,CACtBhR,SAAUtlC,EAAQslC,UAAYkD,EAASlD,UACrC,CAAC,KACDkD,EAAS+N,YAAc,CACzBxK,WAAY/rC,EAAQ+rC,SACpBnvB,IAAK0zB,GAAatwC,EAAQ4c,KAC1BtP,IAAKgjC,GAAatwC,EAAQsN,KAC1B2+B,UAAWqE,GAAatwC,EAAQisC,WAChCD,UAAWsE,GAAatwC,EAAQgsC,WAChCE,QAASoE,GAAatwC,EAAQksC,UAC5B,CAAC,EACLruC,OACAylC,WACAD,OAAQC,EACR1iC,IAAKA,IACH,GAAIA,EAAK,CACP8mC,GAAS7pC,EAAMmC,GACf+4B,EAAQz6B,EAAI2pC,EAASpqC,GACrB,MAAM24C,EAAWzwC,EAAYnF,EAAItB,QAASsB,EAAI61C,kBAAmB71C,EAAI61C,iBAAiB,yBAAyB,IAAkB71C,EAC3H81C,EAAkBjK,GAAkB+J,GACpCrM,EAAOpR,EAAMjvB,GAAGqgC,MAAQ,GAC9B,GAAIuM,EAAkBvM,EAAKxF,MAAKsG,GAAUA,IAAWuL,IAAYA,IAAazd,EAAMjvB,GAAGlJ,IACrF,OAEFrB,EAAI0oC,EAASpqC,EAAM,CACjBiM,GAAI,IACCivB,EAAMjvB,MACL4sC,EAAkB,CACpBvM,KAAM,IAAIA,EAAK/Z,OAAOif,IAAOmH,KAAcpzC,MAAMwB,QAAQtG,EAAI6lC,EAAgBtmC,IAAS,CAAC,CAAC,GAAK,IAC7F+C,IAAK,CACHhD,KAAM44C,EAAS54C,KACfC,SAEA,CACF+C,IAAK41C,MAIXnE,EAAoBx0C,GAAM,OAAO4B,EAAW+2C,EAC9C,MACEzd,EAAQz6B,EAAI2pC,EAASpqC,EAAM,CAAC,GACxBk7B,EAAMjvB,KACRivB,EAAMjvB,GAAG4+B,OAAQ,IAElBF,EAASrC,kBAAoBnmC,EAAQmmC,qBAAuB7E,EAAmBqE,EAAOx3B,MAAOtQ,KAAS8qC,EAAOC,SAAWjD,EAAOgM,QAAQ3yB,IAAInhB,EAC9I,EAGN,EACM84C,GAAc,IAAMnO,EAAS6I,kBAAoBtH,EAAsB9B,EAASkN,EAAaxP,EAAO+C,OAmBpGkO,GAAe,CAACC,EAASC,IAAcnL,UAC3C,IAAIoL,EACAvlC,IACFA,EAAEwlC,gBAAkBxlC,EAAEwlC,iBACtBxlC,EAAEylC,SAAWzlC,EAAEylC,WAEjB,IAAIC,EAAchV,EAAYsE,GAC9B,GAAIb,EAAOL,SAAS1lC,KAClB,IAAK,MAAM/B,KAAQ8nC,EAAOL,SACxB/lC,EAAI23C,EAAar5C,OAAM4B,GAM3B,GAHA6mC,EAAUgB,MAAMxjB,KAAK,CACnB2tB,cAAc,IAEZjJ,EAASyJ,SAAU,CACrB,MAAM,OACJnwC,EAAM,OACNsiB,SACQ8tB,IACVtL,EAAW9kC,OAASA,EACpBo1C,EAAc9yB,CAChB,YACQ+tB,EAAyBlK,GAGjC,GADAiG,GAAMtH,EAAW9kC,OAAQ,QACrByiC,EAAcqC,EAAW9kC,QAAS,CACpCwkC,EAAUgB,MAAMxjB,KAAK,CACnBhiB,OAAQ,CAAC,IAEX,UACQ+0C,EAAQK,EAAa1lC,EAC7B,CAAE,MAAOlQ,GACPy1C,EAAez1C,CACjB,CACF,MACMw1C,SACIA,EAAU,IACXlQ,EAAW9kC,QACb0P,GAELmlC,KACAlD,WAAWkD,IASb,GAPArQ,EAAUgB,MAAMxjB,KAAK,CACnBmtB,aAAa,EACbQ,cAAc,EACdC,mBAAoBnN,EAAcqC,EAAW9kC,UAAYi1C,EACzDvF,YAAa5K,EAAW4K,YAAc,EACtC1vC,OAAQ8kC,EAAW9kC,SAEjBi1C,EACF,MAAMA,CACR,EA2BII,GAAS,SAAUvR,GACvB,IAAIwR,EAAmBjyC,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5F,MAAMkyC,EAAgBzR,EAAa1D,EAAY0D,GAAczB,EACvDmT,EAAqBpV,EAAYmV,GACjCE,EAAqBhT,EAAcqB,GACnCxhB,EAASmzB,EAAqBpT,EAAiBmT,EAIrD,GAHKF,EAAiBI,oBACpBrT,EAAiBkT,IAEdD,EAAiBK,WAAY,CAChC,GAAIL,EAAiBM,gBAAiB,CACpC,MAAMC,EAAgB,IAAIrV,IAAI,IAAIqD,EAAO+C,SAAU3nC,OAAOsD,KAAKurC,GAAezL,EAAgBqC,MAC9F,IAAK,MAAMT,KAAa3iC,MAAMsG,KAAKiuC,GACjCr5C,EAAIsoC,EAAWK,YAAalB,GAAaxmC,EAAI6kB,EAAQ2hB,EAAWznC,EAAIkoC,EAAaT,IAAc2O,EAAS3O,EAAWznC,EAAI8lB,EAAQ2hB,GAEnI,KAAO,CACL,GAAIhE,GAASh8B,EAAY6/B,GACvB,IAAK,MAAM/nC,KAAQ8nC,EAAO+C,MAAO,CAC/B,MAAM3P,EAAQz6B,EAAI2pC,EAASpqC,GAC3B,GAAIk7B,GAASA,EAAMjvB,GAAI,CACrB,MAAM4mC,EAAiBttC,MAAMwB,QAAQm0B,EAAMjvB,GAAGqgC,MAAQpR,EAAMjvB,GAAGqgC,KAAK,GAAKpR,EAAMjvB,GAAGlJ,IAClF,GAAI2pC,EAAcmG,GAAiB,CACjC,MAAMkH,EAAOlH,EAAemH,QAAQ,QACpC,GAAID,EAAM,CACRA,EAAKv1C,QACL,KACF,CACF,CACF,CACF,CAEF4lC,EAAU,CAAC,CACb,CACAzB,EAAcgC,EAASrC,iBAAmBiR,EAAiBI,kBAAoBtV,EAAYiC,GAAkB,CAAC,EAAIjC,EAAY9d,GAC9HkiB,EAAUn4B,MAAM2V,KAAK,CACnBM,OAAQ,IACHA,KAGPkiB,EAAUliB,OAAON,KAAK,CACpBM,OAAQ,IACHA,IAGT,CACAuhB,EAAS,CACP+C,MAAO0O,EAAiBM,gBAAkB/R,EAAO+C,MAAQ,IAAIpG,IAC7DqP,QAAS,IAAIrP,IACbn0B,MAAO,IAAIm0B,IACXgD,SAAU,IAAIhD,IACdwD,MAAO,IAAIxD,IACX0D,UAAU,EACVkC,MAAO,IAETS,EAAOD,OAASpE,EAAgBl8B,WAAagvC,EAAiBhB,eAAiBgB,EAAiBM,gBAChG/O,EAAO7C,QAAU0C,EAASrC,iBAC1BG,EAAUgB,MAAMxjB,KAAK,CACnB0tB,YAAa4F,EAAiBU,gBAAkBlR,EAAW4K,YAAc,EACzEzK,SAASwQ,IAA6BH,EAAiBpB,UAAYpP,EAAWG,WAAaqQ,EAAiBI,mBAAsB3I,GAAUjJ,EAAYzB,KACxJ8M,cAAamG,EAAiBW,iBAAkBnR,EAAWqK,YAC3DhK,YAAasQ,EAAqB,CAAC,EAAIH,EAAiBM,gBAAkBN,EAAiBI,mBAAqBhR,EAAcoJ,GAAezL,EAAgBqC,GAAeI,EAAWK,YAAcmQ,EAAiBI,mBAAqB5R,EAAagK,GAAezL,EAAgByB,GAAcwR,EAAiBpB,UAAYpP,EAAWK,YAAc,CAAC,EAC5VC,cAAekQ,EAAiBnB,YAAcrP,EAAWM,cAAgB,CAAC,EAC1EplC,OAAQs1C,EAAiBY,WAAapR,EAAW9kC,OAAS,CAAC,EAC3D4vC,qBAAoB0F,EAAiBa,wBAAyBrR,EAAW8K,mBACzED,cAAc,GAElB,EACMpvC,GAAQ,CAACujC,EAAYwR,IAAqBD,GAAO7rC,EAAWs6B,GAAcA,EAAWY,GAAeZ,EAAYwR,GAyBtH,MAAO,CACLrT,QAAS,CACP2D,YACAmB,cACA2M,iBACAoB,gBACAnB,YACAvD,iBACAzL,YACAuM,YACAzL,eACAb,iBA9jBqB,KACvB,IAAK,MAAM7oC,KAAQ8nC,EAAOgM,QAAS,CACjC,MAAM5Y,EAAQz6B,EAAI2pC,EAASpqC,GAC3Bk7B,IAAUA,EAAMjvB,GAAGqgC,KAAOpR,EAAMjvB,GAAGqgC,KAAKoB,OAAM3qC,IAAQyuC,GAAKzuC,MAASyuC,GAAKtW,EAAMjvB,GAAGlJ,OAASioC,GAAWhrC,EACxG,CACA8nC,EAAOgM,QAAU,IAAIrP,GAAK,EA0jBxB4V,kBAxuBsB,SAAUr6C,GAClC,IAAIumB,EAASjf,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,GAC7EgzC,EAAShzC,UAAUpG,OAAS,EAAIoG,UAAU,QAAK1F,EAC/CuL,EAAO7F,UAAUpG,OAAS,EAAIoG,UAAU,QAAK1F,EAC7C24C,IAAkBjzC,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,KAAmBA,UAAU,GACjFkzC,IAA6BlzC,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,KAAmBA,UAAU,GAChG,GAAI6F,GAAQmtC,IAAW3P,EAASlD,SAAU,CAExC,GADAqD,EAAOC,QAAS,EACZyP,GAA8Bj1C,MAAMwB,QAAQtG,EAAI2pC,EAASpqC,IAAQ,CACnE,MAAMq5C,EAAciB,EAAO75C,EAAI2pC,EAASpqC,GAAOmN,EAAKstC,KAAMttC,EAAKutC,MAC/DH,GAAmB74C,EAAI0oC,EAASpqC,EAAMq5C,EACxC,CACA,GAAImB,GAA8Bj1C,MAAMwB,QAAQtG,EAAIsoC,EAAW9kC,OAAQjE,IAAQ,CAC7E,MAAMiE,EAASq2C,EAAO75C,EAAIsoC,EAAW9kC,OAAQjE,GAAOmN,EAAKstC,KAAMttC,EAAKutC,MACpEH,GAAmB74C,EAAIqnC,EAAW9kC,OAAQjE,EAAMiE,GAChDqvC,GAAgBvK,EAAW9kC,OAAQjE,EACrC,CACA,GAAIymC,EAAgB4C,eAAiBmR,GAA8Bj1C,MAAMwB,QAAQtG,EAAIsoC,EAAWM,cAAerpC,IAAQ,CACrH,MAAMqpC,EAAgBiR,EAAO75C,EAAIsoC,EAAWM,cAAerpC,GAAOmN,EAAKstC,KAAMttC,EAAKutC,MAClFH,GAAmB74C,EAAIqnC,EAAWM,cAAerpC,EAAMqpC,EACzD,CACI5C,EAAgB2C,cAClBL,EAAWK,YAAc2I,GAAezL,EAAgBqC,IAE1DF,EAAUgB,MAAMxjB,KAAK,CACnBjmB,OACAkpC,QAASiM,EAAUn1C,EAAMumB,GACzB6iB,YAAaL,EAAWK,YACxBnlC,OAAQ8kC,EAAW9kC,OACnBsG,QAASw+B,EAAWx+B,SAExB,MACE7I,EAAIinC,EAAa3oC,EAAMumB,EAE3B,EAusBI0kB,wBACA0P,eApjBmB36C,GAAQ2kC,EAAQlkC,EAAIqqC,EAAOD,MAAQlC,EAAcrC,EAAgBtmC,EAAM2qC,EAASrC,iBAAmB7nC,EAAI6lC,EAAgBtmC,EAAM,IAAM,KAqjBtJs5C,UACAsB,oBAtBwB,IAAMntC,EAAWk9B,EAAStE,gBAAkBsE,EAAStE,gBAAgBviC,MAAKyiB,IACpG/hB,GAAM+hB,EAAQokB,EAASkQ,cACvBpS,EAAUgB,MAAMxjB,KAAK,CACnBkjB,WAAW,GACX,IAmBAK,iBA7BqBqM,IACvB9M,EAAa,IACRA,KACA8M,EACJ,EA0BCiF,aAhNiBrT,IACf3C,EAAU2C,KACZgB,EAAUgB,MAAMxjB,KAAK,CACnBwhB,aAEFyE,EAAsB9B,GAAS,CAACrnC,EAAK/C,KACnC,MAAMqsC,EAAe5rC,EAAI2pC,EAASpqC,GAC9BqsC,IACFtpC,EAAI0kC,SAAW4E,EAAapgC,GAAGw7B,UAAYA,EACvCliC,MAAMwB,QAAQslC,EAAapgC,GAAGqgC,OAChCD,EAAapgC,GAAGqgC,KAAK1lB,SAAQ6nB,IAC3BA,EAAShH,SAAW4E,EAAapgC,GAAGw7B,UAAYA,CAAQ,IAG9D,GACC,GAAG,GACR,EAiMEgB,YACAhC,kBACAsU,WAxsBe92C,IACjB8kC,EAAW9kC,OAASA,EACpBwkC,EAAUgB,MAAMxjB,KAAK,CACnBhiB,OAAQ8kC,EAAW9kC,OACnBsG,SAAS,GACT,EAosBA,WAAI6/B,GACF,OAAOA,CACT,EACA,eAAIzB,GACF,OAAOA,CACT,EACA,UAAImC,GACF,OAAOA,CACT,EACA,UAAIA,CAAOrpC,GACTqpC,EAASrpC,CACX,EACA,kBAAI6kC,GACF,OAAOA,CACT,EACA,UAAIwB,GACF,OAAOA,CACT,EACA,UAAIA,CAAOrmC,GACTqmC,EAASrmC,CACX,EACA,cAAIsnC,GACF,OAAOA,CACT,EACA,cAAIA,CAAWtnC,GACbsnC,EAAatnC,CACf,EACA,YAAIkpC,GACF,OAAOA,CACT,EACA,YAAIA,CAASlpC,GACXkpC,EAAW,IACNA,KACAlpC,EAEP,GAEFi1C,WACA7M,YACAkP,gBACA9Q,MArXY,CAACjoC,EAAM6kC,IAAiBp3B,EAAWzN,GAAQyoC,EAAUliB,OAAOohB,UAAU,CAClF1hB,KAAMzkB,GAAWxB,EAAK4oC,OAAUhnC,EAAWijC,GAAerjC,KACvDonC,EAAU5oC,EAAM6kC,GAAc,GAoXjCgS,WACAV,aACA3xC,SACAw2C,WAvLiB,SAAUh7C,GAC3B,IAAImC,EAAUmF,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E7G,EAAI2pC,EAASpqC,KACXkI,EAAY/F,EAAQ0iC,cACtBgS,EAAS72C,EAAMqkC,EAAY5jC,EAAI6lC,EAAgBtmC,MAE/C62C,EAAS72C,EAAMmC,EAAQ0iC,cACvBnjC,EAAI4kC,EAAgBtmC,EAAMqkC,EAAYliC,EAAQ0iC,gBAE3C1iC,EAAQi2C,aACX/H,GAAMtH,EAAWM,cAAerpC,GAE7BmC,EAAQg2C,YACX9H,GAAMtH,EAAWK,YAAappC,GAC9B+oC,EAAWG,QAAU/mC,EAAQ0iC,aAAesQ,EAAUn1C,EAAMqkC,EAAY5jC,EAAI6lC,EAAgBtmC,KAAUm1C,KAEnGhzC,EAAQ+1C,YACX7H,GAAMtH,EAAW9kC,OAAQjE,GACzBymC,EAAgBl8B,SAAWm/B,KAE7BjB,EAAUgB,MAAMxjB,KAAK,IAChB8iB,IAGT,EAgKEkS,YAxZkBj7C,IAClBA,GAAQ+mC,EAAsB/mC,GAAM4mB,SAAQs0B,GAAa7K,GAAMtH,EAAW9kC,OAAQi3C,KAClFzS,EAAUgB,MAAMxjB,KAAK,CACnBhiB,OAAQjE,EAAO+oC,EAAW9kC,OAAS,CAAC,GACpC,EAqZF+mC,cACA4M,YACAuD,SA9Fe,SAAUn7C,GACzB,IAAImC,EAAUmF,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAM4zB,EAAQz6B,EAAI2pC,EAASpqC,GACrB6yC,EAAiB3X,GAASA,EAAMjvB,GACtC,GAAI4mC,EAAgB,CAClB,MAAM8F,EAAW9F,EAAevG,KAAOuG,EAAevG,KAAK,GAAKuG,EAAe9vC,IAC3E41C,EAAStO,QACXsO,EAAStO,QACTloC,EAAQi5C,cAAgB3tC,EAAWkrC,EAASrO,SAAWqO,EAASrO,SAEpE,CACF,EAoFEqN,iBAEJ,CA+BA,SAAS0D,KACP,IAAI/T,EAAQhgC,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACjF,MAAMg0C,EAAe,cAAa15C,GAC5B25C,EAAU,cAAa35C,IACtBqkC,EAAWY,GAAmB,WAAe,CAClDqC,SAAS,EACTK,cAAc,EACdJ,UAAW17B,EAAW65B,EAAMjB,eAC5B+M,aAAa,EACbQ,cAAc,EACdC,oBAAoB,EACpBtpC,SAAS,EACTopC,YAAa,EACbvK,YAAa,CAAC,EACdC,cAAe,CAAC,EAChBC,iBAAkB,CAAC,EACnBrlC,OAAQqjC,EAAMrjC,QAAU,CAAC,EACzBwjC,SAAUH,EAAMG,WAAY,EAC5BpB,cAAe54B,EAAW65B,EAAMjB,oBAAiBzkC,EAAY0lC,EAAMjB,gBAEhEiV,EAAal4C,UAChBk4C,EAAal4C,QAAU,IAClBqwC,GAAkBnM,GACrBrB,cAGJ,MAAMC,EAAUoV,EAAal4C,QAAQ8iC,QA0DrC,OAzDAA,EAAQyE,SAAWrD,EACnBD,EAAa,CACXK,QAASxB,EAAQuC,UAAUgB,MAC3BxjB,KAAMxkB,IACAklC,EAAsBllC,EAAOykC,EAAQO,gBAAiBP,EAAQsD,kBAAkB,IAClF3C,EAAgB,IACXX,EAAQ6C,YAEf,IAGJ,aAAgB,IAAM7C,EAAQ4U,aAAaxT,EAAMG,WAAW,CAACvB,EAASoB,EAAMG,WAC5E,aAAgB,KACd,GAAIvB,EAAQO,gBAAgByC,QAAS,CACnC,MAAMA,EAAUhD,EAAQiP,YACpBjM,IAAYjD,EAAUiD,SACxBhD,EAAQuC,UAAUgB,MAAMxjB,KAAK,CAC3BijB,WAGN,IACC,CAAChD,EAASD,EAAUiD,UACvB,aAAgB,KACV5B,EAAM/gB,SAAWyqB,GAAU1J,EAAM/gB,OAAQg1B,EAAQn4C,UACnD8iC,EAAQoT,OAAOhS,EAAM/gB,OAAQ2f,EAAQyE,SAASkQ,cAC9CU,EAAQn4C,QAAUkkC,EAAM/gB,OACxBsgB,GAAgB4C,IAAS,IACpBA,OAGLvD,EAAQ0U,qBACV,GACC,CAACtT,EAAM/gB,OAAQ2f,IAClB,aAAgB,KACVoB,EAAMrjC,QACRiiC,EAAQ6U,WAAWzT,EAAMrjC,OAC3B,GACC,CAACqjC,EAAMrjC,OAAQiiC,IAClB,aAAgB,KACTA,EAAQ4E,OAAOD,QAClB3E,EAAQwD,eACRxD,EAAQ4E,OAAOD,OAAQ,GAErB3E,EAAQ4E,OAAO7C,QACjB/B,EAAQ4E,OAAO7C,OAAQ,EACvB/B,EAAQuC,UAAUgB,MAAMxjB,KAAK,IACxBigB,EAAQ6C,cAGf7C,EAAQ2C,kBAAkB,IAE5B,aAAgB,KACdvB,EAAMgB,kBAAoBpC,EAAQuC,UAAUliB,OAAON,KAAK,CACtDM,OAAQ2f,EAAQ0C,aAChB,GACD,CAACtB,EAAMgB,iBAAkBpC,IAC5BoV,EAAal4C,QAAQ6iC,UAAYD,EAAkBC,EAAWC,GACvDoV,EAAal4C,OACtB,iCCh3EA4C,EAAOC,QAAU,CAAC+M,EAAQwb,KACxB,GAAwB,iBAAXxb,GAA4C,iBAAdwb,EACzC,MAAM,IAAIroB,UAAU,iDAEtB,GAAkB,KAAdqoB,EACF,MAAO,CAACxb,GAEV,MAAMwoC,EAAiBxoC,EAAO/L,QAAQunB,GACtC,OAAwB,IAApBgtB,EACK,CAACxoC,GAEH,CAACA,EAAO3N,MAAM,EAAGm2C,GAAiBxoC,EAAO3N,MAAMm2C,EAAiBhtB,EAAUttB,QAAQ,iCCX3F8E,EAAOC,QAAUw1C,GAAOvb,mBAAmBub,GAAKr1C,QAAQ,YAAYjF,GAAK,IAAIA,EAAEu6C,WAAW,GAAGj0C,SAAS,IAAI8J,gICyB1G,MAhBKoqC,IAAiD,IAAhD,QAAEC,EAAO,KAAEC,EAAI,eAAEC,EAAc,QAAEC,GAASJ,EAC9C,OACEK,EAAAA,cAACC,EAAAA,EAAM,CAACJ,KAAMA,GACZG,EAAAA,cAAA,OAAKE,UCXkB,+CDYrBF,EAAAA,cAAA,MAAIE,UCXa,2CDWkBJ,GACnCE,EAAAA,cAAA,OAAKE,UCfoB,mDDekBC,QAASA,IAAMP,GAAQ,IAChEI,EAAAA,cAACI,EAAAA,EAAY,CAACC,KAAMN,KAEtBC,EAAAA,cAAA,UAAQE,UCjBS,0CDiBqBC,QAASA,IAAMP,GAAQ,IAC3DI,EAAAA,cAACM,EAAAA,EAAK,QAGH,qGE2Bb,IA1CKX,IAAA,IAAC,QAAEzV,EAAO,SAAEqW,GAAUZ,EAAA,OACzBK,EAAAA,cAAC7Q,EAAAA,GAAU,CACTjF,QAASA,EACTlmC,KAAMu8C,EAASv8C,KACf6kC,aAAc0X,EAASC,QAAQ,GAAG/6C,MAClC2pC,OAAQ6G,IAAuD,IAApD/W,OAAO,SAAEuK,EAAQ,OAAED,EAAM,MAAE/jC,EAAK,IAAEsB,IAAYkvC,EACvD,OACE+J,EAAAA,cAAA,OAAKE,UAAU,mBACbF,EAAAA,cAACS,EAAAA,EAAU,KACRF,EAASG,MAAM,IAAEH,EAASI,WAAa,KAAO,IAEjDX,EAAAA,cAACY,EAAAA,EAAc,CAACC,MAAO,CAAEC,aAAc,WAAaP,EAASQ,aAC7Df,EAAAA,cAACgB,EAAAA,EAAM,CACLC,UAAW,CACTC,aAAc,CACZC,SAAU,SACVC,WAAY,QAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,QAEdE,mBAAoB,MAEtBC,QAAShB,EAASG,MAClBj7C,MAAOA,EACPgkC,SAAUA,EACVD,OAAQA,EACRqX,MAAO,CAAEC,aAAc,SAEtBP,EAASC,QAAQl0C,KAAI,CAACk1C,EAAQC,IAC7BzB,EAAAA,cAAC0B,EAAAA,EAAQ,CAACj3C,IAAM,GAAE81C,EAASv8C,QAAQw9C,EAAO/7C,SAASg8C,IAAOh8C,MAAO+7C,EAAO/7C,OACrE+7C,EAAOnB,SAIV,GAGE,6FC9CLsB,EAAe,6CC4D1B,MA/CsChC,IAAkG,IAAjG,IAAExZ,EAAG,KAAEka,EAAI,QAAEuB,EAAU,OAAM,SAAEC,EAAW,OAAM,OAAEta,EAAS,QAAO,SAAEua,GAAuBnC,EAChI,MAAMoC,GAASC,EAAAA,EAAAA,QAA0B,OACnC,EAACC,EAAQ,EAACC,IAAcC,EAAAA,EAAAA,WAAS,GAEjCC,EAAYA,IAAMF,GAAW,GAC7BG,EAAWA,IAAMH,GAAW,GAElC,OAAI/b,EAEA6Z,EAAAA,cAACsC,EAAAA,GAAI,CAAC1yC,GAAIu2B,EAAKoB,OAAQA,EAAQ2Y,UAAU,gBACvCF,EAAAA,cAAA,UACEuC,YAAaH,EACbI,WAAYH,EACZt7C,IAAKg7C,EACL7B,UAAY,GAAEuC,KAAuBR,EAAU,aAAe,KAC9DpB,MAAO,CACL6B,QAASZ,EAAW,IAAM,IAC1Ba,UAAWb,EAAW,mBAAqB,gBAC3Cc,MAAOX,EAAUL,EAAUC,EAC3BgB,gBAAiBjB,IAGnB5B,EAAAA,cAAA,YACEA,EAAAA,cAAA,QAAME,UAAU,SAAQ,MACvBG,KAOPL,EAAAA,cAAA,UACEuC,YAAaH,EACbI,WAAYH,EACZt7C,IAAKg7C,EACL7B,UAAY,GAAEuC,KAAuBR,EAAU,aAAe,KAC9DpB,MAAO,CAAE+B,MAAOX,EAAUL,EAAUC,EAAUgB,gBAAiBjB,IAE/D5B,EAAAA,cAAA,YACEA,EAAAA,cAAA,QAAME,UAAU,SAAQ,MACvBG,GAIT,gKC1Da,SAASyC,EAAUC,EAAWvU,GAG3C,IAFuB9I,QAAQqd,GAG7B,MAAM,IAAI1xC,MAAMm9B,EAEpB,CCNA,SAASwU,EAAQr4C,GAYf,OAREq4C,EADoB,mBAAX9kB,QAAoD,iBAApBA,OAAO+kB,SACtC,SAAiBt4C,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,mBAAXuzB,QAAyBvzB,EAAIs9B,cAAgB/J,QAAUvzB,IAAQuzB,OAAO10B,UAAY,gBAAkBmB,CAC3H,EAEKq4C,EAAQr4C,EACjB,CCX+C,mBAAXuzB,QAA4C,MAAnBA,OAAO+kB,UAAmB/kB,OAAO+kB,SAGzC,mBAAX/kB,QAAiD,MAAxBA,OAAOglB,eAAwBhlB,OAAOglB,cAHlG,IAKIC,EAAyC,mBAAXjlB,QAA+C,MAAtBA,OAAOklB,YAAsBllB,OAAOklB,YAAc,gBCC7G,SAASC,EAAYvxC,EAAQwxC,GAKlC,IAJA,IAGIx5C,EAHAy5C,EAAa,eACbC,EAAO,EACPC,EAASH,EAAW,GAEhBx5C,EAAQy5C,EAAWj5C,KAAKwH,EAAO4xC,QAAU55C,EAAMm1B,MAAQqkB,GAC7DE,GAAQ,EACRC,EAASH,EAAW,GAAKx5C,EAAMm1B,MAAQn1B,EAAM,GAAG5E,QAElD,MAAO,CACLs+C,KAAMA,EACNC,OAAQA,EAEZ,CChBO,SAASE,EAAcC,GAC5B,OAAOC,EAAoBD,EAAS9xC,OAAQuxC,EAAYO,EAAS9xC,OAAQ8xC,EAASE,OACpF,CAKO,SAASD,EAAoB/xC,EAAQiyC,GAC1C,IAAIC,EAAwBlyC,EAAOmyC,eAAeR,OAAS,EACvDC,EAAOQ,EAAWF,GAAyBlyC,EAAO4xC,KAClDS,EAAYJ,EAAeP,KAAO,EAClCY,EAAatyC,EAAOmyC,eAAeT,KAAO,EAC1Ca,EAAUN,EAAeP,KAAOY,EAChCE,EAAuC,IAAxBP,EAAeP,KAAaQ,EAAwB,EACnEO,EAAYR,EAAeN,OAASa,EACpCE,EAAc,GAAG/6C,OAAOqI,EAAO9N,KAAM,KAAKyF,OAAO46C,EAAS,KAAK56C,OAAO86C,EAAW,MACjFE,EAAQf,EAAK16C,MAAM,gBACnB07C,EAAeD,EAAMN,GAEzB,GAAIO,EAAax/C,OAAS,IAAK,CAI7B,IAHA,IAAIy/C,EAAetxC,KAAK+J,MAAMmnC,EAAY,IACtCK,EAAmBL,EAAY,GAC/BM,EAAW,GACN96C,EAAI,EAAGA,EAAI26C,EAAax/C,OAAQ6E,GAAK,GAC5C86C,EAASx/C,KAAKq/C,EAAar7C,MAAMU,EAAGA,EAAI,KAE1C,OAAOy6C,EAAcM,EAAmB,CAAC,CAAC,GAAGr7C,OAAO46C,GAAUQ,EAAS,KAAKp7C,OAAOo7C,EAASx7C,MAAM,EAAGs7C,EAAe,GAAGr4C,KAAI,SAAUy4C,GACnI,MAAO,CAAC,GAAIA,EACd,IAAI,CAAC,CAAC,IAAKb,EAAWU,EAAmB,GAAK,KAAM,CAAC,GAAIC,EAASF,EAAe,MACnF,CACA,OAAOH,EAAcM,EAAmB,CAExC,CAAC,GAAGr7C,OAAO46C,EAAU,GAAII,EAAMN,EAAY,IAAK,CAAC,GAAG16C,OAAO46C,GAAUK,GAAe,CAAC,GAAIR,EAAWK,EAAY,GAAK,KAAM,CAAC,GAAG96C,OAAO46C,EAAU,GAAII,EAAMN,EAAY,KACxK,CACA,SAASW,EAAmBL,GAC1B,IAAIO,EAAgBP,EAAMluB,QAAO,SAAUopB,GACjCA,EAAK,GAEb,YAAgB/5C,IADP+5C,EAAK,EAEhB,IACIsF,EAAS5xC,KAAKI,IAAIpI,MAAMgI,KAAM2xC,EAAc14C,KAAI,SAAU2pC,GAE5D,OADaA,EAAM,GACL/wC,MAChB,KACA,OAAO8/C,EAAc14C,KAAI,SAAUgqC,GACjC,IAQkBmJ,EARdnnB,EAASge,EAAM,GACjBkN,EAAOlN,EAAM,GACf,OAOK4N,EAPUe,GAMGxF,EANKnnB,GAOGpzB,QAAUu6C,GAPF+D,EAAO,MAAQA,EAAO,KAC1D,IAAGt6C,KAAK,KACV,CACA,SAASg7C,EAAW10C,GAClB,OAAOjG,MAAMiG,EAAM,GAAGtG,KAAK,IAC7B,CCzDA,SAAS,EAAQyB,GAYf,OARE,EADoB,mBAAXuzB,QAAoD,iBAApBA,OAAO+kB,SACtC,SAAiBt4C,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,mBAAXuzB,QAAyBvzB,EAAIs9B,cAAgB/J,QAAUvzB,IAAQuzB,OAAO10B,UAAY,gBAAkBmB,CAC3H,EAEK,EAAQA,EACjB,CACA,SAASu6C,EAAQtf,EAAQuf,GACvB,IAAI36C,EAAOtD,OAAOsD,KAAKo7B,GACvB,GAAI1+B,OAAOk+C,sBAAuB,CAChC,IAAIC,EAAUn+C,OAAOk+C,sBAAsBxf,GACvCuf,IAAgBE,EAAUA,EAAQ9uB,QAAO,SAAU+uB,GACrD,OAAOp+C,OAAOq+C,yBAAyB3f,EAAQ0f,GAAKrX,UACtD,KACAzjC,EAAKnF,KAAKgG,MAAMb,EAAM66C,EACxB,CACA,OAAO76C,CACT,CAkBA,SAASg7C,EAAgB76C,EAAKF,EAAKhF,GAWjC,OAVIgF,KAAOE,EACTzD,OAAOqjC,eAAe5/B,EAAKF,EAAK,CAC9BhF,MAAOA,EACPwoC,YAAY,EACZwX,cAAc,EACdC,UAAU,IAGZ/6C,EAAIF,GAAOhF,EAENkF,CACT,CAMA,SAASg7C,EAAkBpe,EAAQ+D,GACjC,IAAK,IAAIvhC,EAAI,EAAGA,EAAIuhC,EAAMpmC,OAAQ6E,IAAK,CACrC,IAAI67C,EAAata,EAAMvhC,GACvB67C,EAAW3X,WAAa2X,EAAW3X,aAAc,EACjD2X,EAAWH,cAAe,EACtB,UAAWG,IAAYA,EAAWF,UAAW,GACjDx+C,OAAOqjC,eAAehD,EAAQqe,EAAWn7C,IAAKm7C,EAChD,CACF,CAiCA,SAASC,EAA2BC,EAAMp8C,GACxC,OAAIA,GAA2B,WAAlB,EAAQA,IAAsC,mBAATA,EAG3Cq8C,EAAuBD,GAFrBp8C,CAGX,CACA,SAASq8C,EAAuBD,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIE,eAAe,6DAE3B,OAAOF,CACT,CACA,SAASG,EAAiBC,GACxB,IAAIC,EAAwB,mBAARC,IAAqB,IAAIA,SAAQxgD,EAuBrD,OAtBAqgD,EAAmB,SAA0BC,GAC3C,GAAc,OAAVA,IAiDmB15C,EAjDkB05C,GAkDqB,IAAzDx0C,SAASjG,SAAS/B,KAAK8C,GAAIvB,QAAQ,kBAlDS,OAAOi7C,EAiD5D,IAA2B15C,EAhDvB,GAAqB,mBAAV05C,EACT,MAAM,IAAI/7C,UAAU,sDAEtB,QAAsB,IAAXg8C,EAAwB,CACjC,GAAIA,EAAOze,IAAIwe,GAAQ,OAAOC,EAAO1hD,IAAIyhD,GACzCC,EAAOzgD,IAAIwgD,EAAOG,EACpB,CACA,SAASA,IACP,OAAOC,EAAWJ,EAAO56C,UAAWi7C,EAAgBh3C,MAAM04B,YAC5D,CASA,OARAoe,EAAQ78C,UAAYtC,OAAOq+B,OAAO2gB,EAAM18C,UAAW,CACjDy+B,YAAa,CACXxiC,MAAO4gD,EACPpY,YAAY,EACZyX,UAAU,EACVD,cAAc,KAGXe,EAAgBH,EAASH,EAClC,EACOD,EAAiBC,EAC1B,CACA,SAASI,EAAWG,EAAQt1C,EAAM+0C,GAahC,OAXEI,EADEI,IACWC,QAAQC,UAER,SAAoBH,EAAQt1C,EAAM+0C,GAC7C,IAAIt6C,EAAI,CAAC,MACTA,EAAEvG,KAAKgG,MAAMO,EAAGuF,GAChB,IACI01C,EAAW,IADGn1C,SAASqhC,KAAK1nC,MAAMo7C,EAAQ76C,IAG9C,OADIs6C,GAAOM,EAAgBK,EAAUX,EAAM18C,WACpCq9C,CACT,EAEKP,EAAWj7C,MAAM,KAAMC,UAChC,CACA,SAASo7C,IACP,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUE,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EACxC,IAEE,OADA16C,KAAK7C,UAAUiC,SAAS/B,KAAKi9C,QAAQC,UAAUv6C,KAAM,IAAI,WAAa,MAC/D,CACT,CAAE,MAAOsL,GACP,OAAO,CACT,CACF,CAIA,SAAS6uC,EAAgBnlC,EAAG2lC,GAK1B,OAJAR,EAAkBt/C,OAAO+/C,gBAAkB,SAAyB5lC,EAAG2lC,GAErE,OADA3lC,EAAE6lC,UAAYF,EACP3lC,CACT,EACOmlC,EAAgBnlC,EAAG2lC,EAC5B,CACA,SAAST,EAAgBllC,GAIvB,OAHAklC,EAAkBr/C,OAAO+/C,eAAiB//C,OAAOigD,eAAiB,SAAyB9lC,GACzF,OAAOA,EAAE6lC,WAAahgD,OAAOigD,eAAe9lC,EAC9C,EACOklC,EAAgBllC,EACzB,CAaO,IAAI+lC,EAA4B,SAAUC,IAvHjD,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIp9C,UAAU,sDAEtBm9C,EAAS99C,UAAYtC,OAAOq+B,OAAOgiB,GAAcA,EAAW/9C,UAAW,CACrEy+B,YAAa,CACXxiC,MAAO6hD,EACP5B,UAAU,EACVD,cAAc,KAGd8B,GAAYf,EAAgBc,EAAUC,EAC5C,CA4GEC,CAAUJ,EAAcC,GACxB,IA5GoBI,EAChBC,EAnBgBC,EAAaC,EAAYC,EA8HzCC,GA5GgBL,EA4GML,EA3GtBM,EAA4BhB,IACzB,WACL,IACE7/C,EADEkhD,EAAQxB,EAAgBkB,GAE5B,GAAIC,EAA2B,CAC7B,IAAIM,EAAYzB,EAAgBh3C,MAAM04B,YACtCphC,EAAS8/C,QAAQC,UAAUmB,EAAOz8C,UAAW08C,EAC/C,MACEnhD,EAASkhD,EAAM18C,MAAMkE,KAAMjE,WAE7B,OAAOu6C,EAA2Bt2C,KAAM1I,EAC1C,GA2IA,SAASugD,EAAa5Y,EAASyZ,EAAOn2C,EAAQo2C,EAAWtf,EAAMuf,EAAeC,GAC5E,IAAIC,EAAgBC,EAAiBC,EACjCC,GAzLR,SAAyB3B,EAAUc,GACjC,KAAMd,aAAoBc,GACxB,MAAM,IAAIx9C,UAAU,oCAExB,CAsLIs+C,CAAgBl5C,KAAM63C,IACtBoB,EAAQV,EAAOp+C,KAAK6F,KAAMi/B,IACpBxqC,KAAO,eACbwkD,EAAML,cAAgBA,QAAqDA,OAAgBviD,EAE3F4iD,EAAMP,MAAQS,EAAiBn/C,MAAMwB,QAAQk9C,GAASA,EAAQA,EAAQ,CAACA,QAASriD,GAEhF,IADA,IAAI+iD,EAAgB,GACXC,EAAM,EAAGtS,EAAwC,QAA/BuS,EAAcL,EAAMP,aAAmC,IAAhBY,EAAyBA,EAAc,GAAID,EAAMtS,EAAMpxC,OAAQ0jD,IAAO,CACtI,IAAIC,EAEAC,EADQxS,EAAMsS,GACFE,IACL,MAAPA,GACFH,EAActjD,KAAKyjD,EAEvB,CACAH,EAAgBD,EAAiBC,GAEjCH,EAAM12C,OAASA,QAAuCA,EAA8C,QAApCu2C,EAAiBM,SAA8C,IAAnBN,OAA4B,EAASA,EAAe,GAAGv2C,OACnK02C,EAAMN,UAAYA,QAA6CA,EAAkD,QAArCI,EAAkBK,SAA+C,IAApBL,OAA6B,EAASA,EAAgBh8C,KAAI,SAAUw8C,GAC3L,OAAOA,EAAIhF,KACb,IACA0E,EAAMO,UAAYb,GAAap2C,EAASo2C,EAAU57C,KAAI,SAAUsc,GAC9D,OAAOy6B,EAAYvxC,EAAQ8W,EAC7B,IAA2C,QAArC2/B,EAAkBI,SAA+C,IAApBJ,OAA6B,EAASA,EAAgBj8C,KAAI,SAAUw8C,GACrH,OAAOzF,EAAYyF,EAAIh3C,OAAQg3C,EAAIhF,MACrC,IACA0E,EAAM5f,KAAOA,QAAmCA,OAAOhjC,EACvD,IJzPiCH,EIyP7BujD,EAAqBb,aAAqD,EAASA,EAAcC,WAsCrG,OArCkB,MAAdA,IJzPmB,UAAlBpF,EAD4Bv9C,EI0PMujD,IJzPM,OAAVvjD,GI0PjC+iD,EAAMJ,WArPZ,SAAuB7gB,GACrB,IAAK,IAAIx9B,EAAI,EAAGA,EAAIuB,UAAUpG,OAAQ6E,IAAK,CACzC,IAAI+H,EAAyB,MAAhBxG,UAAUvB,GAAauB,UAAUvB,GAAK,CAAC,EAChDA,EAAI,EACNm7C,EAAQh+C,OAAO4K,IAAS,GAAM8Y,SAAQ,SAAUngB,GAC9C+6C,EAAgBje,EAAQ98B,EAAKqH,EAAOrH,GACtC,IACSvD,OAAO+hD,0BAChB/hD,OAAO8mC,iBAAiBzG,EAAQrgC,OAAO+hD,0BAA0Bn3C,IAEjEozC,EAAQh+C,OAAO4K,IAAS8Y,SAAQ,SAAUngB,GACxCvD,OAAOqjC,eAAehD,EAAQ98B,EAAKvD,OAAOq+C,yBAAyBzzC,EAAQrH,GAC7E,GAEJ,CACA,OAAO88B,CACT,CAqOyB2hB,CAAc,CAAC,EAAGF,GAErCR,EAAMJ,WAAaA,QAA+CA,EAAa,CAAC,EAIlFlhD,OAAO8mC,iBAAiB+X,EAAuByC,GAAQ,CACrDha,QAAS,CACPP,YAAY,GAEd8a,UAAW,CACT9a,WAA+B,MAAnBua,EAAMO,WAEpBngB,KAAM,CACJqF,WAA0B,MAAdua,EAAM5f,MAEpBwf,WAAY,CACVna,WAAgC,MAApBua,EAAMJ,YAAsBlhD,OAAOsD,KAAKg+C,EAAMJ,YAAYljD,OAAS,GAEjFlB,KAAM,CACJiqC,YAAY,GAEdga,MAAO,CACLha,YAAY,GAEdn8B,OAAQ,CACNm8B,YAAY,GAEdia,UAAW,CACTja,YAAY,GAEdka,cAAe,CACbla,YAAY,KAIZka,SAAsDA,EAAc72C,OACtEpK,OAAOqjC,eAAewb,EAAuByC,GAAQ,QAAS,CAC5D/iD,MAAO0iD,EAAc72C,MACrBo0C,UAAU,EACVD,cAAc,IAETI,EAA2B2C,KAGhCn3C,MAAM83C,kBACR93C,MAAM83C,kBAAkBpD,EAAuByC,GAAQpB,GAEvDlgD,OAAOqjC,eAAewb,EAAuByC,GAAQ,QAAS,CAC5D/iD,MAAO4L,QAAQC,MACfo0C,UAAU,EACVD,cAAc,IAGX+C,EACT,CAkBA,OAlRoBb,EAiQPP,GAjQoBQ,EAiQN,CAAC,CAC1Bn9C,IAAK,WACLhF,MAAO,WACL,OAwBC,SAAoBgC,GACzB,IAAIqL,EAASrL,EAAM+mC,QACnB,GAAI/mC,EAAMwgD,MACR,IAAK,IAAImB,EAAM,EAAGC,EAAgB5hD,EAAMwgD,MAAOmB,EAAMC,EAAcnkD,OAAQkkD,IAAO,CAChF,IAAIE,EAAOD,EAAcD,GACrBE,EAAKR,MACPh2C,GAAU,OAAS6wC,EAAc2F,EAAKR,KAE1C,MACK,GAAIrhD,EAAMqK,QAAUrK,EAAMshD,UAC/B,IAAK,IAAIQ,EAAM,EAAGC,EAAoB/hD,EAAMshD,UAAWQ,EAAMC,EAAkBtkD,OAAQqkD,IAAO,CAC5F,IAAI3F,EAAW4F,EAAkBD,GACjCz2C,GAAU,OAAS+wC,EAAoBp8C,EAAMqK,OAAQ8xC,EACvD,CAEF,OAAO9wC,CACT,CAxCa22C,CAAWl6C,KACpB,GACC,CACD9E,IAAK,SACLhF,MAAO,WACL,OAyCC,SAAqBgC,GAC1B,IAAIiiD,EACJjiD,GAASq7C,EAAU,EAAG,qCACtB,IAAItU,EAA+C,QAApCkb,EAAiBjiD,EAAM+mC,eAAwC,IAAnBkb,EAA4BA,EAAiB,6BACpGX,EAAYthD,EAAMshD,UAClBngB,EAAOnhC,EAAMmhC,KACbwf,EAAa3gD,EAAM2gD,WACvB,OAAOA,GAAclhD,OAAOsD,KAAK49C,GAAYljD,OAAS,EAAI,CACxDspC,QAASA,EACTua,UAAWA,EACXngB,KAAMA,EACNwf,WAAYA,GACV,CACF5Z,QAASA,EACTua,UAAWA,EACXngB,KAAMA,EAEV,CA1Da+gB,CAAYp6C,KACrB,GAEC,CACD9E,IAAK04C,EACL1+C,IAAK,WACH,MAAO,QACT,MA/QckhD,EAAkBgC,EAAYn+C,UAAWo+C,GACrDC,GAAalC,EAAkBgC,EAAaE,GAgRzCT,CACT,CAvJuC,CAuJvBnB,EAAiB50C,QACjC,SAASq3C,EAAiBp0C,GACxB,YAAiB1O,IAAV0O,GAAwC,IAAjBA,EAAMpP,YAAeU,EAAY0O,CACjE,CCrVO,SAASs1C,EAAY93C,EAAQwxC,EAAUvC,GAC5C,OAAO,IAAIqG,EAAa,iBAAiB39C,OAAOs3C,QAAcn7C,EAAWkM,EAAQ,CAACwxC,GACpF,yBCJW,EAAYp8C,OAAO2iD,OAAO,CACnCC,IAAK,QACLC,IAAK,QACLC,KAAM,IACNC,OAAQ,IACRC,IAAK,IACLC,QAAS,IACTC,QAAS,IACTC,OAAQ,MACRC,MAAO,IACPC,OAAQ,IACRC,GAAI,IACJC,UAAW,IACXC,UAAW,IACXC,QAAS,IACTC,KAAM,IACNC,QAAS,IACTC,KAAM,OACNC,IAAK,MACLC,MAAO,QACPC,OAAQ,SACRC,aAAc,cACdC,QAAS,sBCJX,MAGA,SAAoB1lD,EAAOwiC,GACzB,OAAOxiC,aAAiBwiC,CAC1B,EC3BA,SAAS,EAAkBV,EAAQ+D,GACjC,IAAK,IAAIvhC,EAAI,EAAGA,EAAIuhC,EAAMpmC,OAAQ6E,IAAK,CACrC,IAAI67C,EAAata,EAAMvhC,GACvB67C,EAAW3X,WAAa2X,EAAW3X,aAAc,EACjD2X,EAAWH,cAAe,EACtB,UAAWG,IAAYA,EAAWF,UAAW,GACjDx+C,OAAOqjC,eAAehD,EAAQqe,EAAWn7C,IAAKm7C,EAChD,CACF,CAkBO,IAAIwF,EAAsB,WAC/B,SAASA,EAAO1H,GACd,IAAI1/C,EAAOsH,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,kBAC3E24C,EAAiB34C,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CACvFk4C,KAAM,EACNC,OAAQ,GAEM,iBAATC,GAAqBZ,EAAU,EAAG,oCAAoCr5C,QAAO,EAAA4uB,EAAA,GAAQqrB,GAAO,MACnGn0C,KAAKm0C,KAAOA,EACZn0C,KAAKvL,KAAOA,EACZuL,KAAK00C,eAAiBA,EACtB10C,KAAK00C,eAAeT,KAAO,GAAKV,EAAU,EAAG,6DAC7CvzC,KAAK00C,eAAeR,OAAS,GAAKX,EAAU,EAAG,8DACjD,CA9BF,IAAsB6E,EAAaC,EAAYC,EAsC7C,OAtCoBF,EAgCPyD,GAhCoBxD,EAgCZ,CAAC,CACpBn9C,IAAK04C,EACL1+C,IAAK,WACH,MAAO,QACT,MAnCc,EAAkBkjD,EAAYn+C,UAAWo+C,GACrDC,GAAa,EAAkBF,EAAaE,GAoCzCuD,CACT,CAtBiC,GCvB1B,IAAIC,EAAoBnkD,OAAO2iD,OAAO,CAE3CyB,MAAO,QACPC,SAAU,WACVC,aAAc,eACdC,MAAO,QACPC,oBAAqB,sBACrBC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,oBAAqB,sBAErBC,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRC,iBAAkB,mBAClBC,oBAAqB,sBACrBC,UAAW,YACXC,MAAO,QACPC,KAAM,OACNC,WAAY,aACZC,aAAc,eACdC,uBAAwB,qCCXfC,EAAqB,WAgB9B,SAASA,EAAM36C,GACb,IAAI46C,EAAmB,IAAI,KAAM,EAAU5C,IAAK,EAAG,EAAG,EAAG,EAAG,MAC5Dv6C,KAAKuC,OAASA,EACdvC,KAAKo9C,UAAYD,EACjBn9C,KAAK7G,MAAQgkD,EACbn9C,KAAKi0C,KAAO,EACZj0C,KAAKq9C,UAAY,CACnB,CAKA,IAAIC,EAASJ,EAAMjjD,UAuBnB,OAtBAqjD,EAAOC,QAAU,WAGf,OAFAv9C,KAAKo9C,UAAYp9C,KAAK7G,MACV6G,KAAK7G,MAAQ6G,KAAKw9C,WAEhC,EAMAF,EAAOE,UAAY,WACjB,IAAIrkD,EAAQ6G,KAAK7G,MACjB,GAAIA,EAAMhE,OAAS,EAAUqlD,IAC3B,EAAG,CACD,IAAIiD,EAGJtkD,EAAuC,QAA9BskD,EAActkD,EAAMuhB,YAAkC,IAAhB+iC,EAAyBA,EAActkD,EAAMuhB,KAAOgjC,EAAU19C,KAAM7G,EACrH,OAASA,EAAMhE,OAAS,EAAUymD,SAEpC,OAAOziD,CACT,EACO+jD,CACT,CApDgC,GA4DhC,SAASS,EAAcC,GACrB,OAEEv+C,MAAMu+C,GAAQ,EAAUpD,IAExBoD,EAAO,IAASC,KAAKznB,UAAU/P,OAAOy3B,aAAaF,IAEnD,OAAQ1jD,QAAQ,KAAO0jD,EAAK1hD,SAAS,IAAI8J,eAAelM,OAAO,GAAI,IAEvE,CASA,SAAS4jD,EAAUK,EAAOC,GAKxB,IAJA,IAAIz7C,EAASw7C,EAAMx7C,OACf4xC,EAAO5xC,EAAO4xC,KACd8J,EAAa9J,EAAKx+C,OAClB0jB,EAAM2kC,EAAKE,IACR7kC,EAAM4kC,GAAY,CACvB,IAAIL,EAAOzJ,EAAKhE,WAAW92B,GACvB8kC,EAAQJ,EAAM9J,KACdmK,EAAO,EAAI/kC,EAAM0kC,EAAMV,UAE3B,OAAQO,GACN,KAAK,MAEL,KAAK,EAEL,KAAK,GAEL,KAAK,KAEDvkC,EACF,SACF,KAAK,KAEDA,IACA0kC,EAAM9J,KACR8J,EAAMV,UAAYhkC,EAClB,SACF,KAAK,GAE8B,KAA7B86B,EAAKhE,WAAW92B,EAAM,GACxBA,GAAO,IAELA,IAEF0kC,EAAM9J,KACR8J,EAAMV,UAAYhkC,EAClB,SACF,KAAK,GAEH,OAAO,IAAI,KAAM,EAAUohC,KAAMphC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GAC9D,KAAK,GAEH,OAAOK,EAAY97C,EAAQ8W,EAAK8kC,EAAOC,EAAMJ,GAC/C,KAAK,GAEH,OAAO,IAAI,KAAM,EAAUtD,OAAQrhC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GAChE,KAAK,GAEH,OAAO,IAAI,KAAM,EAAUrD,IAAKthC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GAC7D,KAAK,GAEH,OAAO,IAAI,KAAM,EAAUpD,QAASvhC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GACjE,KAAK,GAEH,OAAO,IAAI,KAAM,EAAUnD,QAASxhC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GACjE,KAAK,GAEH,GAAiC,KAA7B7J,EAAKhE,WAAW92B,EAAM,IAA0C,KAA7B86B,EAAKhE,WAAW92B,EAAM,GAC3D,OAAO,IAAI,KAAM,EAAUyhC,OAAQzhC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GAEhE,MACF,KAAK,GAEH,OAAO,IAAI,KAAM,EAAUjD,MAAO1hC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GAC/D,KAAK,GAEH,OAAO,IAAI,KAAM,EAAUhD,OAAQ3hC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GAChE,KAAK,GAEH,OAAO,IAAI,KAAM,EAAU/C,GAAI5hC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GAC5D,KAAK,GAEH,OAAO,IAAI,KAAM,EAAU9C,UAAW7hC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GACnE,KAAK,GAEH,OAAO,IAAI,KAAM,EAAU7C,UAAW9hC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GACnE,KAAK,IAEH,OAAO,IAAI,KAAM,EAAU5C,QAAS/hC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GACjE,KAAK,IAEH,OAAO,IAAI,KAAM,EAAU3C,KAAMhiC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GAC9D,KAAK,IAEH,OAAO,IAAI,KAAM,EAAU1C,QAASjiC,EAAKA,EAAM,EAAG8kC,EAAOC,EAAMJ,GACjE,KAAK,GAEH,OAAiC,KAA7B7J,EAAKhE,WAAW92B,EAAM,IAA0C,KAA7B86B,EAAKhE,WAAW92B,EAAM,GACpDilC,EAAgB/7C,EAAQ8W,EAAK8kC,EAAOC,EAAMJ,EAAMD,GAElDQ,EAAWh8C,EAAQ8W,EAAK8kC,EAAOC,EAAMJ,GAC9C,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEH,OAAOQ,EAAWj8C,EAAQ8W,EAAKukC,EAAMO,EAAOC,EAAMJ,GACpD,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,GAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEL,KAAK,IAEH,OAAOS,EAASl8C,EAAQ8W,EAAK8kC,EAAOC,EAAMJ,GAE9C,MAAM3D,EAAY93C,EAAQ8W,EAAKqlC,EAA2Bd,GAC5D,CACA,IAAI3J,EAAO8J,EAAM9J,KACb0K,EAAM,EAAItlC,EAAM0kC,EAAMV,UAC1B,OAAO,IAAI,KAAM,EAAU7C,IAAKyD,EAAYA,EAAYhK,EAAM0K,EAAKX,EACrE,CAKA,SAASU,EAA2Bd,GAClC,OAAIA,EAAO,IAAmB,IAATA,GAA4B,KAATA,GAA4B,KAATA,EAClD,wCAAwC1jD,OAAOyjD,EAAcC,GAAO,KAEhE,KAATA,EAEK,kFAEF,yCAAyC1jD,OAAOyjD,EAAcC,GAAO,IAC9E,CAOA,SAASS,EAAY97C,EAAQgyC,EAAON,EAAM0K,EAAKX,GAC7C,IACIJ,EADAzJ,EAAO5xC,EAAO4xC,KAEdJ,EAAWQ,EACf,GACEqJ,EAAOzJ,EAAKhE,aAAa4D,UACjB10C,MAAMu+C,KAEhBA,EAAO,IAAmB,IAATA,IACjB,OAAO,IAAI,KAAM,EAAUhC,QAASrH,EAAOR,EAAUE,EAAM0K,EAAKX,EAAM7J,EAAKr6C,MAAMy6C,EAAQ,EAAGR,GAC9F,CASA,SAASyK,EAAWj8C,EAAQgyC,EAAOqK,EAAW3K,EAAM0K,EAAKX,GACvD,IAAI7J,EAAO5xC,EAAO4xC,KACdyJ,EAAOgB,EACP7K,EAAWQ,EACXsK,GAAU,EAKd,GAJa,KAATjB,IAEFA,EAAOzJ,EAAKhE,aAAa4D,IAEd,KAAT6J,GAGF,IADAA,EAAOzJ,EAAKhE,aAAa4D,KACb,IAAM6J,GAAQ,GACxB,MAAMvD,EAAY93C,EAAQwxC,EAAU,6CAA6C75C,OAAOyjD,EAAcC,GAAO,WAG/G7J,EAAW+K,EAAWv8C,EAAQwxC,EAAU6J,GACxCA,EAAOzJ,EAAKhE,WAAW4D,GAqBzB,GAnBa,KAAT6J,IAEFiB,GAAU,EACVjB,EAAOzJ,EAAKhE,aAAa4D,GACzBA,EAAW+K,EAAWv8C,EAAQwxC,EAAU6J,GACxCA,EAAOzJ,EAAKhE,WAAW4D,IAEZ,KAAT6J,GAAwB,MAATA,IAEjBiB,GAAU,EAEG,MADbjB,EAAOzJ,EAAKhE,aAAa4D,KACG,KAAT6J,IAEjBA,EAAOzJ,EAAKhE,aAAa4D,IAE3BA,EAAW+K,EAAWv8C,EAAQwxC,EAAU6J,GACxCA,EAAOzJ,EAAKhE,WAAW4D,IAGZ,KAAT6J,GAuMN,SAAqBA,GACnB,OAAgB,KAATA,GAAeA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,GAC1E,CAzMqBmB,CAAYnB,GAC7B,MAAMvD,EAAY93C,EAAQwxC,EAAU,2CAA2C75C,OAAOyjD,EAAcC,GAAO,MAE7G,OAAO,IAAI,KAAMiB,EAAU,EAAUpD,MAAQ,EAAUD,IAAKjH,EAAOR,EAAUE,EAAM0K,EAAKX,EAAM7J,EAAKr6C,MAAMy6C,EAAOR,GAClH,CAKA,SAAS+K,EAAWv8C,EAAQgyC,EAAOqK,GACjC,IAAIzK,EAAO5xC,EAAO4xC,KACdJ,EAAWQ,EACXqJ,EAAOgB,EACX,GAAIhB,GAAQ,IAAMA,GAAQ,GAAI,CAE5B,GACEA,EAAOzJ,EAAKhE,aAAa4D,SAClB6J,GAAQ,IAAMA,GAAQ,IAE/B,OAAO7J,CACT,CACA,MAAMsG,EAAY93C,EAAQwxC,EAAU,2CAA2C75C,OAAOyjD,EAAcC,GAAO,KAC7G,CAOA,SAASW,EAAWh8C,EAAQgyC,EAAON,EAAM0K,EAAKX,GAM5C,IALA,IA+HmB3hD,EAAGC,EAAGuiB,EAAG9X,EA/HxBotC,EAAO5xC,EAAO4xC,KACdJ,EAAWQ,EAAQ,EACnByK,EAAajL,EACb6J,EAAO,EACP1nD,EAAQ,GACL69C,EAAWI,EAAKx+C,SAAW0J,MAAMu+C,EAAOzJ,EAAKhE,WAAW4D,KAEtD,KAAT6J,GAA4B,KAATA,GAAiB,CAElC,GAAa,KAATA,EAEF,OADA1nD,GAASi+C,EAAKr6C,MAAMklD,EAAYjL,GACzB,IAAI,KAAM,EAAU2H,OAAQnH,EAAOR,EAAW,EAAGE,EAAM0K,EAAKX,EAAM9nD,GAG3E,GAAI0nD,EAAO,IAAmB,IAATA,EACnB,MAAMvD,EAAY93C,EAAQwxC,EAAU,oCAAoC75C,OAAOyjD,EAAcC,GAAO,MAGtG,KADE7J,EACW,KAAT6J,EAAa,CAIf,OAFA1nD,GAASi+C,EAAKr6C,MAAMklD,EAAYjL,EAAW,GAC3C6J,EAAOzJ,EAAKhE,WAAW4D,IAErB,KAAK,GACH79C,GAAS,IACT,MACF,KAAK,GACHA,GAAS,IACT,MACF,KAAK,GACHA,GAAS,KACT,MACF,KAAK,GACHA,GAAS,KACT,MACF,KAAK,IACHA,GAAS,KACT,MACF,KAAK,IACHA,GAAS,KACT,MACF,KAAK,IACHA,GAAS,KACT,MACF,KAAK,IACHA,GAAS,KACT,MACF,KAAK,IAGD,IAAI+oD,GA6EK5iD,EA7EkB83C,EAAKhE,WAAW4D,EAAW,GA6E1Cz3C,EA7E8C63C,EAAKhE,WAAW4D,EAAW,GA6EtEl1B,EA7E0Es1B,EAAKhE,WAAW4D,EAAW,GA6ElGhtC,EA7EsGotC,EAAKhE,WAAW4D,EAAW,GA8EtJmL,EAAS7iD,IAAM,GAAK6iD,EAAS5iD,IAAM,EAAI4iD,EAASrgC,IAAM,EAAIqgC,EAASn4C,IA7EhE,GAAIk4C,EAAW,EAAG,CAChB,IAAIE,EAAkBhL,EAAKr6C,MAAMi6C,EAAW,EAAGA,EAAW,GAC1D,MAAMsG,EAAY93C,EAAQwxC,EAAU,yCAAyC75C,OAAOilD,EAAiB,KACvG,CACAjpD,GAASmwB,OAAOy3B,aAAamB,GAC7BlL,GAAY,EACZ,MAEJ,QACE,MAAMsG,EAAY93C,EAAQwxC,EAAU,wCAAwC75C,OAAOmsB,OAAOy3B,aAAaF,GAAO,MAGlHoB,IADEjL,CAEJ,CACF,CACA,MAAMsG,EAAY93C,EAAQwxC,EAAU,uBACtC,CAOA,SAASuK,EAAgB/7C,EAAQgyC,EAAON,EAAM0K,EAAKX,EAAMD,GAMvD,IALA,IAAI5J,EAAO5xC,EAAO4xC,KACdJ,EAAWQ,EAAQ,EACnByK,EAAajL,EACb6J,EAAO,EACPwB,EAAW,GACRrL,EAAWI,EAAKx+C,SAAW0J,MAAMu+C,EAAOzJ,EAAKhE,WAAW4D,KAAY,CAEzE,GAAa,KAAT6J,GAAiD,KAAlCzJ,EAAKhE,WAAW4D,EAAW,IAA+C,KAAlCI,EAAKhE,WAAW4D,EAAW,GAEpF,OADAqL,GAAYjL,EAAKr6C,MAAMklD,EAAYjL,GAC5B,IAAI,KAAM,EAAU4H,aAAcpH,EAAOR,EAAW,EAAGE,EAAM0K,EAAKX,GAAM,QAAuBoB,IAGxG,GAAIxB,EAAO,IAAmB,IAATA,GAA4B,KAATA,GAA4B,KAATA,EACzD,MAAMvD,EAAY93C,EAAQwxC,EAAU,oCAAoC75C,OAAOyjD,EAAcC,GAAO,MAEzF,KAATA,KAEA7J,IACAgK,EAAM9J,KACR8J,EAAMV,UAAYtJ,GACA,KAAT6J,GAE6B,KAAlCzJ,EAAKhE,WAAW4D,EAAW,GAC7BA,GAAY,IAEVA,IAEFgK,EAAM9J,KACR8J,EAAMV,UAAYtJ,GAGX,KAAT6J,GAAiD,KAAlCzJ,EAAKhE,WAAW4D,EAAW,IAA+C,KAAlCI,EAAKhE,WAAW4D,EAAW,IAA+C,KAAlCI,EAAKhE,WAAW4D,EAAW,IACxHqL,GAAYjL,EAAKr6C,MAAMklD,EAAYjL,GAAY,MAE/CiL,EADAjL,GAAY,KAGVA,CAEN,CACA,MAAMsG,EAAY93C,EAAQwxC,EAAU,uBACtC,CAwBA,SAASmL,EAAS7iD,GAChB,OAAOA,GAAK,IAAMA,GAAK,GAAKA,EAAI,GAC9BA,GAAK,IAAMA,GAAK,GAAKA,EAAI,GACzBA,GAAK,IAAMA,GAAK,IAAMA,EAAI,IACzB,CACL,CAOA,SAASoiD,EAASl8C,EAAQgyC,EAAON,EAAM0K,EAAKX,GAK1C,IAJA,IAAI7J,EAAO5xC,EAAO4xC,KACd8J,EAAa9J,EAAKx+C,OAClBo+C,EAAWQ,EAAQ,EACnBqJ,EAAO,EACJ7J,IAAakK,IAAe5+C,MAAMu+C,EAAOzJ,EAAKhE,WAAW4D,MAAwB,KAAT6J,GAE/EA,GAAQ,IAAMA,GAAQ,IAEtBA,GAAQ,IAAMA,GAAQ,IAEtBA,GAAQ,IAAMA,GAAQ,QAElB7J,EAEJ,OAAO,IAAI,KAAM,EAAUwH,KAAMhH,EAAOR,EAAUE,EAAM0K,EAAKX,EAAM7J,EAAKr6C,MAAMy6C,EAAOR,GACvF,CC9gBO,IAAIsL,EAAsB,WAC/B,SAASA,EAAO98C,EAAQ3L,GACtB,IAAI0oD,EHbD,SAAkB/8C,GACvB,OAAOg9C,EAAWh9C,EAAQs5C,EAC5B,CGWoB2D,CAASj9C,GAAUA,EAAS,IAAIs5C,EAAOt5C,GACvDvC,KAAKy/C,OAAS,IAAIvC,EAAMoC,GACxBt/C,KAAKo/B,SAAWxoC,CAClB,CAKA,IAAI0mD,EAAS+B,EAAOplD,UAwvCpB,OAvvCAqjD,EAAOoC,UAAY,WACjB,IAAIvmD,EAAQ6G,KAAK2/C,YAAY,EAAUpE,MACvC,MAAO,CACLpmD,KAAM,IAAKomD,KACXrlD,MAAOiD,EAAMjD,MACbqjD,IAAKv5C,KAAKu5C,IAAIpgD,GAElB,EAMAmkD,EAAOsC,cAAgB,WACrB,IAAIrL,EAAQv0C,KAAKy/C,OAAOtmD,MACxB,MAAO,CACLhE,KAAM,IAAK0qD,SACXnqD,YAAasK,KAAK8/C,KAAK,EAAUvF,IAAKv6C,KAAK+/C,gBAAiB,EAAUvF,KACtEjB,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAYA+I,EAAOyC,gBAAkB,WACvB,GAAI//C,KAAKggD,KAAK,EAAUzE,MACtB,OAAQv7C,KAAKy/C,OAAOtmD,MAAMjD,OACxB,IAAK,QACL,IAAK,WACL,IAAK,eACH,OAAO8J,KAAKigD,2BACd,IAAK,WACH,OAAOjgD,KAAKkgD,0BACd,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,YACH,OAAOlgD,KAAKmgD,4BACd,IAAK,SACH,OAAOngD,KAAKogD,+BAEX,IAAIpgD,KAAKggD,KAAK,EAAU5E,SAC7B,OAAOp7C,KAAKigD,2BACP,GAAIjgD,KAAKqgD,kBACd,OAAOrgD,KAAKmgD,2BACd,CACA,MAAMngD,KAAKsgD,YACb,EAQAhD,EAAO2C,yBAA2B,WAChC,IAAI1L,EAAQv0C,KAAKy/C,OAAOtmD,MACxB,GAAI6G,KAAKggD,KAAK,EAAU5E,SACtB,MAAO,CACLjmD,KAAM,IAAKorD,qBACX1qD,UAAW,QACXpB,UAAM4B,EACNL,oBAAqB,GACrBwqD,WAAY,GACZC,aAAczgD,KAAK0gD,oBACnBnH,IAAKv5C,KAAKu5C,IAAIhF,IAGlB,IACI9/C,EADAoB,EAAYmK,KAAK2gD,qBAKrB,OAHI3gD,KAAKggD,KAAK,EAAUzE,QACtB9mD,EAAOuL,KAAK0/C,aAEP,CACLvqD,KAAM,IAAKorD,qBACX1qD,UAAWA,EACXpB,KAAMA,EACNuB,oBAAqBgK,KAAK4gD,2BAC1BJ,WAAYxgD,KAAK6gD,iBAAgB,GACjCJ,aAAczgD,KAAK0gD,oBACnBnH,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAKA+I,EAAOqD,mBAAqB,WAC1B,IAAIG,EAAiB9gD,KAAK2/C,YAAY,EAAUpE,MAChD,OAAQuF,EAAe5qD,OACrB,IAAK,QACH,MAAO,QACT,IAAK,WACH,MAAO,WACT,IAAK,eACH,MAAO,eAEX,MAAM8J,KAAKsgD,WAAWQ,EACxB,EAKAxD,EAAOsD,yBAA2B,WAChC,OAAO5gD,KAAK+gD,aAAa,EAAUnG,QAAS56C,KAAKghD,wBAAyB,EAAUnG,QACtF,EAKAyC,EAAO0D,wBAA0B,WAC/B,IAAIzM,EAAQv0C,KAAKy/C,OAAOtmD,MACxB,MAAO,CACLhE,KAAM,IAAKmnD,oBACX2E,SAAUjhD,KAAKkhD,gBACf1sD,MAAOwL,KAAK2/C,YAAY,EAAU5E,OAAQ/6C,KAAKmhD,sBAC/C7nB,aAAct5B,KAAKohD,oBAAoB,EAAUpG,QAAUh7C,KAAKqhD,mBAAkB,QAAQhrD,EAC1FmqD,WAAYxgD,KAAK6gD,iBAAgB,GACjCtH,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAKA+I,EAAO4D,cAAgB,WACrB,IAAI3M,EAAQv0C,KAAKy/C,OAAOtmD,MAExB,OADA6G,KAAK2/C,YAAY,EAAUjF,QACpB,CACLvlD,KAAM,IAAKmsD,SACX7sD,KAAMuL,KAAK0/C,YACXnG,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAKA+I,EAAOoD,kBAAoB,WACzB,IAAInM,EAAQv0C,KAAKy/C,OAAOtmD,MACxB,MAAO,CACLhE,KAAM,IAAKosD,cACXC,WAAYxhD,KAAK8/C,KAAK,EAAU1E,QAASp7C,KAAKyhD,eAAgB,EAAUnG,SACxE/B,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAQA+I,EAAOmE,eAAiB,WACtB,OAAOzhD,KAAKggD,KAAK,EAAUlF,QAAU96C,KAAK0hD,gBAAkB1hD,KAAK2hD,YACnE,EAOArE,EAAOqE,WAAa,WAClB,IAEItwB,EACA58B,EAHA8/C,EAAQv0C,KAAKy/C,OAAOtmD,MACpByoD,EAAc5hD,KAAK0/C,YASvB,OANI1/C,KAAKohD,oBAAoB,EAAUrG,QACrC1pB,EAAQuwB,EACRntD,EAAOuL,KAAK0/C,aAEZjrD,EAAOmtD,EAEF,CACLzsD,KAAM,IAAK+mD,MACX7qB,MAAOA,EACP58B,KAAMA,EACNsH,UAAWiE,KAAK6hD,gBAAe,GAC/BrB,WAAYxgD,KAAK6gD,iBAAgB,GACjCJ,aAAczgD,KAAKggD,KAAK,EAAU5E,SAAWp7C,KAAK0gD,yBAAsBrqD,EACxEkjD,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAKA+I,EAAOuE,eAAiB,SAAwBC,GAC9C,IAAI76B,EAAO66B,EAAU9hD,KAAK+hD,mBAAqB/hD,KAAKgiD,cACpD,OAAOhiD,KAAK+gD,aAAa,EAAUnG,QAAS3zB,EAAM,EAAU4zB,QAC9D,EAKAyC,EAAO0E,cAAgB,WACrB,IAAIzN,EAAQv0C,KAAKy/C,OAAOtmD,MACpB1E,EAAOuL,KAAK0/C,YAEhB,OADA1/C,KAAK2/C,YAAY,EAAU5E,OACpB,CACL5lD,KAAM,IAAK8sD,SACXxtD,KAAMA,EACNyB,MAAO8J,KAAKqhD,mBAAkB,GAC9B9H,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EACA+I,EAAOyE,mBAAqB,WAC1B,IAAIxN,EAAQv0C,KAAKy/C,OAAOtmD,MACxB,MAAO,CACLhE,KAAM,IAAK8sD,SACXxtD,KAAMuL,KAAK0/C,YACXxpD,OAAQ8J,KAAK2/C,YAAY,EAAU5E,OAAQ/6C,KAAKqhD,mBAAkB,IAClE9H,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAUA+I,EAAOoE,cAAgB,WACrB,IAAInN,EAAQv0C,KAAKy/C,OAAOtmD,MACxB6G,KAAK2/C,YAAY,EAAU7E,QAC3B,IAAIoH,EAAmBliD,KAAKmiD,sBAAsB,MAClD,OAAKD,GAAoBliD,KAAKggD,KAAK,EAAUzE,MACpC,CACLpmD,KAAM,IAAKinD,gBACX3nD,KAAMuL,KAAKoiD,oBACX5B,WAAYxgD,KAAK6gD,iBAAgB,GACjCtH,IAAKv5C,KAAKu5C,IAAIhF,IAGX,CACLp/C,KAAM,IAAKknD,gBACXgG,cAAeH,EAAmBliD,KAAKsiD,sBAAmBjsD,EAC1DmqD,WAAYxgD,KAAK6gD,iBAAgB,GACjCJ,aAAczgD,KAAK0gD,oBACnBnH,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAQA+I,EAAO4C,wBAA0B,WAC/B,IAAIqC,EACAhO,EAAQv0C,KAAKy/C,OAAOtmD,MAKxB,OAJA6G,KAAKwiD,cAAc,aAIsH,KAA/F,QAApCD,EAAiBviD,KAAKo/B,gBAAyC,IAAnBmjB,OAA4B,EAASA,EAAeE,+BAC7F,CACLttD,KAAM,IAAKgnD,oBACX1nD,KAAMuL,KAAKoiD,oBACXpsD,oBAAqBgK,KAAK4gD,2BAC1ByB,eAAgBriD,KAAKwiD,cAAc,MAAOxiD,KAAKsiD,kBAC/C9B,WAAYxgD,KAAK6gD,iBAAgB,GACjCJ,aAAczgD,KAAK0gD,oBACnBnH,IAAKv5C,KAAKu5C,IAAIhF,IAGX,CACLp/C,KAAM,IAAKgnD,oBACX1nD,KAAMuL,KAAKoiD,oBACXC,eAAgBriD,KAAKwiD,cAAc,MAAOxiD,KAAKsiD,kBAC/C9B,WAAYxgD,KAAK6gD,iBAAgB,GACjCJ,aAAczgD,KAAK0gD,oBACnBnH,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAKA+I,EAAO8E,kBAAoB,WACzB,GAAgC,OAA5BpiD,KAAKy/C,OAAOtmD,MAAMjD,MACpB,MAAM8J,KAAKsgD,aAEb,OAAOtgD,KAAK0/C,WACd,EAqBApC,EAAO+D,kBAAoB,SAA2BS,GACpD,IAAI3oD,EAAQ6G,KAAKy/C,OAAOtmD,MACxB,OAAQA,EAAMhE,MACZ,KAAK,EAAU+lD,UACb,OAAOl7C,KAAK0iD,UAAUZ,GACxB,KAAK,EAAU1G,QACb,OAAOp7C,KAAK2iD,YAAYb,GAC1B,KAAK,EAAUtG,IAEb,OADAx7C,KAAKy/C,OAAOlC,UACL,CACLpoD,KAAM,IAAKqmD,IACXtlD,MAAOiD,EAAMjD,MACbqjD,IAAKv5C,KAAKu5C,IAAIpgD,IAElB,KAAK,EAAUsiD,MAEb,OADAz7C,KAAKy/C,OAAOlC,UACL,CACLpoD,KAAM,IAAKsmD,MACXvlD,MAAOiD,EAAMjD,MACbqjD,IAAKv5C,KAAKu5C,IAAIpgD,IAElB,KAAK,EAAUuiD,OACf,KAAK,EAAUC,aACb,OAAO37C,KAAK4iD,qBACd,KAAK,EAAUrH,KAEb,OADAv7C,KAAKy/C,OAAOlC,UACJpkD,EAAMjD,OACZ,IAAK,OACH,MAAO,CACLf,KAAM,IAAK0tD,QACX3sD,OAAO,EACPqjD,IAAKv5C,KAAKu5C,IAAIpgD,IAElB,IAAK,QACH,MAAO,CACLhE,KAAM,IAAK0tD,QACX3sD,OAAO,EACPqjD,IAAKv5C,KAAKu5C,IAAIpgD,IAElB,IAAK,OACH,MAAO,CACLhE,KAAM,IAAK2tD,KACXvJ,IAAKv5C,KAAKu5C,IAAIpgD,IAElB,QACE,MAAO,CACLhE,KAAM,IAAK2nD,KACX5mD,MAAOiD,EAAMjD,MACbqjD,IAAKv5C,KAAKu5C,IAAIpgD,IAGtB,KAAK,EAAUuhD,OACb,IAAKoH,EACH,OAAO9hD,KAAKkhD,gBAIlB,MAAMlhD,KAAKsgD,YACb,EACAhD,EAAOsF,mBAAqB,WAC1B,IAAIzpD,EAAQ6G,KAAKy/C,OAAOtmD,MAExB,OADA6G,KAAKy/C,OAAOlC,UACL,CACLpoD,KAAM,IAAKumD,OACXxlD,MAAOiD,EAAMjD,MACb6sD,MAAO5pD,EAAMhE,OAAS,EAAUwmD,aAChCpC,IAAKv5C,KAAKu5C,IAAIpgD,GAElB,EAOAmkD,EAAOoF,UAAY,SAAmBZ,GACpC,IAAI7I,EAAQj5C,KACRu0C,EAAQv0C,KAAKy/C,OAAOtmD,MAIxB,MAAO,CACLhE,KAAM,IAAK6tD,KACXhoC,OAAQhb,KAAKijD,IAAI,EAAU/H,WALlB,WACT,OAAOjC,EAAMoI,kBAAkBS,EACjC,GAG8C,EAAU3G,WACtD5B,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAOA+I,EAAOqF,YAAc,SAAqBb,GACxC,IAAIoB,EAASljD,KACTu0C,EAAQv0C,KAAKy/C,OAAOtmD,MAIxB,MAAO,CACLhE,KAAM,IAAKsnD,OACX9c,OAAQ3/B,KAAKijD,IAAI,EAAU7H,SALlB,WACT,OAAO8H,EAAOC,iBAAiBrB,EACjC,GAG4C,EAAUxG,SACpD/B,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAKA+I,EAAO6F,iBAAmB,SAA0BrB,GAClD,IAAIvN,EAAQv0C,KAAKy/C,OAAOtmD,MACpB1E,EAAOuL,KAAK0/C,YAEhB,OADA1/C,KAAK2/C,YAAY,EAAU5E,OACpB,CACL5lD,KAAM,IAAKiuD,aACX3uD,KAAMA,EACNyB,MAAO8J,KAAKqhD,kBAAkBS,GAC9BvI,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAMA+I,EAAOuD,gBAAkB,SAAyBiB,GAEhD,IADA,IAAItB,EAAa,GACVxgD,KAAKggD,KAAK,EAAU/E,KACzBuF,EAAW1qD,KAAKkK,KAAKqjD,eAAevB,IAEtC,OAAOtB,CACT,EAKAlD,EAAO+F,eAAiB,SAAwBvB,GAC9C,IAAIvN,EAAQv0C,KAAKy/C,OAAOtmD,MAExB,OADA6G,KAAK2/C,YAAY,EAAU1E,IACpB,CACL9lD,KAAM,IAAKmuD,UACX7uD,KAAMuL,KAAK0/C,YACX3jD,UAAWiE,KAAK6hD,eAAeC,GAC/BvI,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EASA+I,EAAO6D,mBAAqB,WAC1B,IACI3sD,EADA+/C,EAAQv0C,KAAKy/C,OAAOtmD,MAaxB,OAXI6G,KAAKohD,oBAAoB,EAAUlG,YACrC1mD,EAAOwL,KAAKmhD,qBACZnhD,KAAK2/C,YAAY,EAAUxE,WAC3B3mD,EAAO,CACLW,KAAM,IAAKouD,UACX/uD,KAAMA,EACN+kD,IAAKv5C,KAAKu5C,IAAIhF,KAGhB//C,EAAOwL,KAAKsiD,iBAEVtiD,KAAKohD,oBAAoB,EAAU3G,MAC9B,CACLtlD,KAAM,IAAKquD,cACXhvD,KAAMA,EACN+kD,IAAKv5C,KAAKu5C,IAAIhF,IAGX//C,CACT,EAKA8oD,EAAOgF,eAAiB,WACtB,IAAI/N,EAAQv0C,KAAKy/C,OAAOtmD,MACxB,MAAO,CACLhE,KAAM,IAAKsuD,WACXhvD,KAAMuL,KAAK0/C,YACXnG,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAiBA+I,EAAO6C,0BAA4B,WAEjC,IAAIuD,EAAe1jD,KAAKqgD,kBAAoBrgD,KAAKy/C,OAAOjC,YAAcx9C,KAAKy/C,OAAOtmD,MAClF,GAAIuqD,EAAavuD,OAAS,EAAUomD,KAClC,OAAQmI,EAAaxtD,OACnB,IAAK,SACH,OAAO8J,KAAK2jD,wBACd,IAAK,SACH,OAAO3jD,KAAK4jD,4BACd,IAAK,OACH,OAAO5jD,KAAK6jD,4BACd,IAAK,YACH,OAAO7jD,KAAK8jD,+BACd,IAAK,QACH,OAAO9jD,KAAK+jD,2BACd,IAAK,OACH,OAAO/jD,KAAKgkD,0BACd,IAAK,QACH,OAAOhkD,KAAKikD,iCACd,IAAK,YACH,OAAOjkD,KAAKkkD,2BAGlB,MAAMlkD,KAAKsgD,WAAWoD,EACxB,EACApG,EAAO+C,gBAAkB,WACvB,OAAOrgD,KAAKggD,KAAK,EAAUtE,SAAW17C,KAAKggD,KAAK,EAAUrE,aAC5D,EAKA2B,EAAO6G,iBAAmB,WACxB,GAAInkD,KAAKqgD,kBACP,OAAOrgD,KAAK4iD,oBAEhB,EAKAtF,EAAOqG,sBAAwB,WAC7B,IAAIpP,EAAQv0C,KAAKy/C,OAAOtmD,MACpBq4C,EAAcxxC,KAAKmkD,mBACvBnkD,KAAKwiD,cAAc,UACnB,IAAIhC,EAAaxgD,KAAK6gD,iBAAgB,GAClCuD,EAAiBpkD,KAAK8/C,KAAK,EAAU1E,QAASp7C,KAAKqkD,6BAA8B,EAAU/I,SAC/F,MAAO,CACLnmD,KAAM,IAAKmvD,kBACX9S,YAAaA,EACbgP,WAAYA,EACZ4D,eAAgBA,EAChB7K,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAKA+I,EAAO+G,6BAA+B,WACpC,IAAI9P,EAAQv0C,KAAKy/C,OAAOtmD,MACpBtD,EAAYmK,KAAK2gD,qBACrB3gD,KAAK2/C,YAAY,EAAU5E,OAC3B,IAAIvmD,EAAOwL,KAAKsiD,iBAChB,MAAO,CACLntD,KAAM,IAAKovD,0BACX1uD,UAAWA,EACXrB,KAAMA,EACN+kD,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAKA+I,EAAOsG,0BAA4B,WACjC,IAAIrP,EAAQv0C,KAAKy/C,OAAOtmD,MACpBq4C,EAAcxxC,KAAKmkD,mBACvBnkD,KAAKwiD,cAAc,UACnB,IAAI/tD,EAAOuL,KAAK0/C,YACZc,EAAaxgD,KAAK6gD,iBAAgB,GACtC,MAAO,CACL1rD,KAAM,IAAKqvD,uBACXhT,YAAaA,EACb/8C,KAAMA,EACN+rD,WAAYA,EACZjH,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAOA+I,EAAOuG,0BAA4B,WACjC,IAAItP,EAAQv0C,KAAKy/C,OAAOtmD,MACpBq4C,EAAcxxC,KAAKmkD,mBACvBnkD,KAAKwiD,cAAc,QACnB,IAAI/tD,EAAOuL,KAAK0/C,YACZ+E,EAAazkD,KAAK0kD,4BAClBlE,EAAaxgD,KAAK6gD,iBAAgB,GAClClhB,EAAS3/B,KAAK2kD,wBAClB,MAAO,CACLxvD,KAAM,IAAKyvD,uBACXpT,YAAaA,EACb/8C,KAAMA,EACNgwD,WAAYA,EACZjE,WAAYA,EACZ7gB,OAAQA,EACR4Z,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAOA+I,EAAOoH,0BAA4B,WACjC,IAAIG,EACJ,IAAK7kD,KAAKmiD,sBAAsB,cAC9B,MAAO,GAET,IAAiJ,KAAtG,QAArC0C,EAAkB7kD,KAAKo/B,gBAA0C,IAApBylB,OAA6B,EAASA,EAAgBC,oCAA8C,CACrJ,IAAI9kB,EAAQ,GAEZhgC,KAAKohD,oBAAoB,EAAUzG,KACnC,GACE3a,EAAMlqC,KAAKkK,KAAKsiD,wBACTtiD,KAAKohD,oBAAoB,EAAUzG,MAAQ36C,KAAKggD,KAAK,EAAUzE,OACxE,OAAOvb,CACT,CACA,OAAOhgC,KAAK+kD,cAAc,EAAUpK,IAAK36C,KAAKsiD,eAChD,EAKAhF,EAAOqH,sBAAwB,WAC7B,IAAIK,EAGJ,OAAwI,KAA7F,QAArCA,EAAkBhlD,KAAKo/B,gBAA0C,IAApB4lB,OAA6B,EAASA,EAAgBC,4BAAuCjlD,KAAKggD,KAAK,EAAU5E,UAAYp7C,KAAKy/C,OAAOjC,YAAYroD,OAAS,EAAUmmD,SACzNt7C,KAAKy/C,OAAOlC,UACZv9C,KAAKy/C,OAAOlC,UACL,IAEFv9C,KAAK+gD,aAAa,EAAU3F,QAASp7C,KAAKklD,qBAAsB,EAAU5J,QACnF,EAMAgC,EAAO4H,qBAAuB,WAC5B,IAAI3Q,EAAQv0C,KAAKy/C,OAAOtmD,MACpBq4C,EAAcxxC,KAAKmkD,mBACnB1vD,EAAOuL,KAAK0/C,YACZ99C,EAAO5B,KAAKmlD,oBAChBnlD,KAAK2/C,YAAY,EAAU5E,OAC3B,IAAIvmD,EAAOwL,KAAKmhD,qBACZX,EAAaxgD,KAAK6gD,iBAAgB,GACtC,MAAO,CACL1rD,KAAM,IAAKunD,iBACXlL,YAAaA,EACb/8C,KAAMA,EACNsH,UAAW6F,EACXpN,KAAMA,EACNgsD,WAAYA,EACZjH,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAKA+I,EAAO6H,kBAAoB,WACzB,OAAOnlD,KAAK+gD,aAAa,EAAUnG,QAAS56C,KAAKolD,mBAAoB,EAAUvK,QACjF,EAMAyC,EAAO8H,mBAAqB,WAC1B,IAAI7Q,EAAQv0C,KAAKy/C,OAAOtmD,MACpBq4C,EAAcxxC,KAAKmkD,mBACnB1vD,EAAOuL,KAAK0/C,YAChB1/C,KAAK2/C,YAAY,EAAU5E,OAC3B,IACIzhB,EADA9kC,EAAOwL,KAAKmhD,qBAEZnhD,KAAKohD,oBAAoB,EAAUpG,UACrC1hB,EAAet5B,KAAKqhD,mBAAkB,IAExC,IAAIb,EAAaxgD,KAAK6gD,iBAAgB,GACtC,MAAO,CACL1rD,KAAM,IAAKkwD,uBACX7T,YAAaA,EACb/8C,KAAMA,EACND,KAAMA,EACN8kC,aAAcA,EACdknB,WAAYA,EACZjH,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAMA+I,EAAOwG,6BAA+B,WACpC,IAAIvP,EAAQv0C,KAAKy/C,OAAOtmD,MACpBq4C,EAAcxxC,KAAKmkD,mBACvBnkD,KAAKwiD,cAAc,aACnB,IAAI/tD,EAAOuL,KAAK0/C,YACZ+E,EAAazkD,KAAK0kD,4BAClBlE,EAAaxgD,KAAK6gD,iBAAgB,GAClClhB,EAAS3/B,KAAK2kD,wBAClB,MAAO,CACLxvD,KAAM,IAAKmwD,0BACX9T,YAAaA,EACb/8C,KAAMA,EACNgwD,WAAYA,EACZjE,WAAYA,EACZ7gB,OAAQA,EACR4Z,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAMA+I,EAAOyG,yBAA2B,WAChC,IAAIxP,EAAQv0C,KAAKy/C,OAAOtmD,MACpBq4C,EAAcxxC,KAAKmkD,mBACvBnkD,KAAKwiD,cAAc,SACnB,IAAI/tD,EAAOuL,KAAK0/C,YACZc,EAAaxgD,KAAK6gD,iBAAgB,GAClC7gB,EAAQhgC,KAAKulD,wBACjB,MAAO,CACLpwD,KAAM,IAAKqwD,sBACXhU,YAAaA,EACb/8C,KAAMA,EACN+rD,WAAYA,EACZxgB,MAAOA,EACPuZ,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAOA+I,EAAOiI,sBAAwB,WAC7B,OAAOvlD,KAAKohD,oBAAoB,EAAUpG,QAAUh7C,KAAK+kD,cAAc,EAAU1J,KAAMr7C,KAAKsiD,gBAAkB,EAChH,EAMAhF,EAAO0G,wBAA0B,WAC/B,IAAIzP,EAAQv0C,KAAKy/C,OAAOtmD,MACpBq4C,EAAcxxC,KAAKmkD,mBACvBnkD,KAAKwiD,cAAc,QACnB,IAAI/tD,EAAOuL,KAAK0/C,YACZc,EAAaxgD,KAAK6gD,iBAAgB,GAClC7lC,EAAShb,KAAKylD,4BAClB,MAAO,CACLtwD,KAAM,IAAKuwD,qBACXlU,YAAaA,EACb/8C,KAAMA,EACN+rD,WAAYA,EACZxlC,OAAQA,EACRu+B,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAKA+I,EAAOmI,0BAA4B,WACjC,OAAOzlD,KAAK+gD,aAAa,EAAU3F,QAASp7C,KAAK2lD,yBAA0B,EAAUrK,QACvF,EAOAgC,EAAOqI,yBAA2B,WAChC,IAAIpR,EAAQv0C,KAAKy/C,OAAOtmD,MACpBq4C,EAAcxxC,KAAKmkD,mBACnB1vD,EAAOuL,KAAK0/C,YACZc,EAAaxgD,KAAK6gD,iBAAgB,GACtC,MAAO,CACL1rD,KAAM,IAAKywD,sBACXpU,YAAaA,EACb/8C,KAAMA,EACN+rD,WAAYA,EACZjH,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAMA+I,EAAO2G,+BAAiC,WACtC,IAAI1P,EAAQv0C,KAAKy/C,OAAOtmD,MACpBq4C,EAAcxxC,KAAKmkD,mBACvBnkD,KAAKwiD,cAAc,SACnB,IAAI/tD,EAAOuL,KAAK0/C,YACZc,EAAaxgD,KAAK6gD,iBAAgB,GAClClhB,EAAS3/B,KAAK6lD,6BAClB,MAAO,CACL1wD,KAAM,IAAK2wD,6BACXtU,YAAaA,EACb/8C,KAAMA,EACN+rD,WAAYA,EACZ7gB,OAAQA,EACR4Z,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAKA+I,EAAOuI,2BAA6B,WAClC,OAAO7lD,KAAK+gD,aAAa,EAAU3F,QAASp7C,KAAKolD,mBAAoB,EAAU9J,QACjF,EAeAgC,EAAO8C,yBAA2B,WAChC,IAAIsD,EAAe1jD,KAAKy/C,OAAOjC,YAC/B,GAAIkG,EAAavuD,OAAS,EAAUomD,KAClC,OAAQmI,EAAaxtD,OACnB,IAAK,SACH,OAAO8J,KAAK+lD,uBACd,IAAK,SACH,OAAO/lD,KAAKgmD,2BACd,IAAK,OACH,OAAOhmD,KAAKimD,2BACd,IAAK,YACH,OAAOjmD,KAAKkmD,8BACd,IAAK,QACH,OAAOlmD,KAAKmmD,0BACd,IAAK,OACH,OAAOnmD,KAAKomD,yBACd,IAAK,QACH,OAAOpmD,KAAKqmD,gCAGlB,MAAMrmD,KAAKsgD,WAAWoD,EACxB,EAOApG,EAAOyI,qBAAuB,WAC5B,IAAIxR,EAAQv0C,KAAKy/C,OAAOtmD,MACxB6G,KAAKwiD,cAAc,UACnBxiD,KAAKwiD,cAAc,UACnB,IAAIhC,EAAaxgD,KAAK6gD,iBAAgB,GAClCuD,EAAiBpkD,KAAK+gD,aAAa,EAAU3F,QAASp7C,KAAKqkD,6BAA8B,EAAU/I,SACvG,GAA0B,IAAtBkF,EAAW7qD,QAA0C,IAA1ByuD,EAAezuD,OAC5C,MAAMqK,KAAKsgD,aAEb,MAAO,CACLnrD,KAAM,IAAKmxD,iBACX9F,WAAYA,EACZ4D,eAAgBA,EAChB7K,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAMA+I,EAAO0I,yBAA2B,WAChC,IAAIzR,EAAQv0C,KAAKy/C,OAAOtmD,MACxB6G,KAAKwiD,cAAc,UACnBxiD,KAAKwiD,cAAc,UACnB,IAAI/tD,EAAOuL,KAAK0/C,YACZc,EAAaxgD,KAAK6gD,iBAAgB,GACtC,GAA0B,IAAtBL,EAAW7qD,OACb,MAAMqK,KAAKsgD,aAEb,MAAO,CACLnrD,KAAM,IAAKoxD,sBACX9xD,KAAMA,EACN+rD,WAAYA,EACZjH,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAQA+I,EAAO2I,yBAA2B,WAChC,IAAI1R,EAAQv0C,KAAKy/C,OAAOtmD,MACxB6G,KAAKwiD,cAAc,UACnBxiD,KAAKwiD,cAAc,QACnB,IAAI/tD,EAAOuL,KAAK0/C,YACZ+E,EAAazkD,KAAK0kD,4BAClBlE,EAAaxgD,KAAK6gD,iBAAgB,GAClClhB,EAAS3/B,KAAK2kD,wBAClB,GAA0B,IAAtBF,EAAW9uD,QAAsC,IAAtB6qD,EAAW7qD,QAAkC,IAAlBgqC,EAAOhqC,OAC/D,MAAMqK,KAAKsgD,aAEb,MAAO,CACLnrD,KAAM,IAAKqxD,sBACX/xD,KAAMA,EACNgwD,WAAYA,EACZjE,WAAYA,EACZ7gB,OAAQA,EACR4Z,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAQA+I,EAAO4I,4BAA8B,WACnC,IAAI3R,EAAQv0C,KAAKy/C,OAAOtmD,MACxB6G,KAAKwiD,cAAc,UACnBxiD,KAAKwiD,cAAc,aACnB,IAAI/tD,EAAOuL,KAAK0/C,YACZ+E,EAAazkD,KAAK0kD,4BAClBlE,EAAaxgD,KAAK6gD,iBAAgB,GAClClhB,EAAS3/B,KAAK2kD,wBAClB,GAA0B,IAAtBF,EAAW9uD,QAAsC,IAAtB6qD,EAAW7qD,QAAkC,IAAlBgqC,EAAOhqC,OAC/D,MAAMqK,KAAKsgD,aAEb,MAAO,CACLnrD,KAAM,IAAKsxD,yBACXhyD,KAAMA,EACNgwD,WAAYA,EACZjE,WAAYA,EACZ7gB,OAAQA,EACR4Z,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAOA+I,EAAO6I,wBAA0B,WAC/B,IAAI5R,EAAQv0C,KAAKy/C,OAAOtmD,MACxB6G,KAAKwiD,cAAc,UACnBxiD,KAAKwiD,cAAc,SACnB,IAAI/tD,EAAOuL,KAAK0/C,YACZc,EAAaxgD,KAAK6gD,iBAAgB,GAClC7gB,EAAQhgC,KAAKulD,wBACjB,GAA0B,IAAtB/E,EAAW7qD,QAAiC,IAAjBqqC,EAAMrqC,OACnC,MAAMqK,KAAKsgD,aAEb,MAAO,CACLnrD,KAAM,IAAKuxD,qBACXjyD,KAAMA,EACN+rD,WAAYA,EACZxgB,MAAOA,EACPuZ,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAOA+I,EAAO8I,uBAAyB,WAC9B,IAAI7R,EAAQv0C,KAAKy/C,OAAOtmD,MACxB6G,KAAKwiD,cAAc,UACnBxiD,KAAKwiD,cAAc,QACnB,IAAI/tD,EAAOuL,KAAK0/C,YACZc,EAAaxgD,KAAK6gD,iBAAgB,GAClC7lC,EAAShb,KAAKylD,4BAClB,GAA0B,IAAtBjF,EAAW7qD,QAAkC,IAAlBqlB,EAAOrlB,OACpC,MAAMqK,KAAKsgD,aAEb,MAAO,CACLnrD,KAAM,IAAKwxD,oBACXlyD,KAAMA,EACN+rD,WAAYA,EACZxlC,OAAQA,EACRu+B,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAOA+I,EAAO+I,8BAAgC,WACrC,IAAI9R,EAAQv0C,KAAKy/C,OAAOtmD,MACxB6G,KAAKwiD,cAAc,UACnBxiD,KAAKwiD,cAAc,SACnB,IAAI/tD,EAAOuL,KAAK0/C,YACZc,EAAaxgD,KAAK6gD,iBAAgB,GAClClhB,EAAS3/B,KAAK6lD,6BAClB,GAA0B,IAAtBrF,EAAW7qD,QAAkC,IAAlBgqC,EAAOhqC,OACpC,MAAMqK,KAAKsgD,aAEb,MAAO,CACLnrD,KAAM,IAAKyxD,4BACXnyD,KAAMA,EACN+rD,WAAYA,EACZ7gB,OAAQA,EACR4Z,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAMA+I,EAAO4G,yBAA2B,WAChC,IAAI3P,EAAQv0C,KAAKy/C,OAAOtmD,MACpBq4C,EAAcxxC,KAAKmkD,mBACvBnkD,KAAKwiD,cAAc,aACnBxiD,KAAK2/C,YAAY,EAAU1E,IAC3B,IAAIxmD,EAAOuL,KAAK0/C,YACZ99C,EAAO5B,KAAKmlD,oBACZ0B,EAAa7mD,KAAKmiD,sBAAsB,cAC5CniD,KAAKwiD,cAAc,MACnB,IAAIhJ,EAAYx5C,KAAK8mD,0BACrB,MAAO,CACL3xD,KAAM,IAAK4xD,qBACXvV,YAAaA,EACb/8C,KAAMA,EACNsH,UAAW6F,EACXilD,WAAYA,EACZrN,UAAWA,EACXD,IAAKv5C,KAAKu5C,IAAIhF,GAElB,EAOA+I,EAAOwJ,wBAA0B,WAC/B,OAAO9mD,KAAK+kD,cAAc,EAAU1J,KAAMr7C,KAAKgnD,uBACjD,EA6BA1J,EAAO0J,uBAAyB,WAC9B,IAAIzS,EAAQv0C,KAAKy/C,OAAOtmD,MACpB1E,EAAOuL,KAAK0/C,YAChB,QAAsCrpD,IAAlCylD,EAAkBrnD,EAAKyB,OACzB,OAAOzB,EAET,MAAMuL,KAAKsgD,WAAW/L,EACxB,EAMA+I,EAAO/D,IAAM,SAAa0N,GACxB,IAAIC,EACJ,IAAyH,KAA9E,QAArCA,EAAkBlnD,KAAKo/B,gBAA0C,IAApB8nB,OAA6B,EAASA,EAAgBC,YACvG,OAAO,IAAI,KAASF,EAAYjnD,KAAKy/C,OAAOrC,UAAWp9C,KAAKy/C,OAAOl9C,OAEvE,EAKA+6C,EAAO0C,KAAO,SAAc7qD,GAC1B,OAAO6K,KAAKy/C,OAAOtmD,MAAMhE,OAASA,CACpC,EAMAmoD,EAAOqC,YAAc,SAAqBxqD,GACxC,IAAIgE,EAAQ6G,KAAKy/C,OAAOtmD,MACxB,GAAIA,EAAMhE,OAASA,EAEjB,OADA6K,KAAKy/C,OAAOlC,UACLpkD,EAET,MAAMkhD,EAAYr6C,KAAKy/C,OAAOl9C,OAAQpJ,EAAMo7C,MAAO,YAAYr6C,OAAOktD,EAAiBjyD,GAAO,YAAY+E,OAAOmtD,EAAaluD,GAAQ,KACxI,EAMAmkD,EAAO8D,oBAAsB,SAA6BjsD,GACxD,IAAIgE,EAAQ6G,KAAKy/C,OAAOtmD,MACxB,GAAIA,EAAMhE,OAASA,EAEjB,OADA6K,KAAKy/C,OAAOlC,UACLpkD,CAGX,EAMAmkD,EAAOkF,cAAgB,SAAuBtsD,GAC5C,IAAIiD,EAAQ6G,KAAKy/C,OAAOtmD,MACxB,GAAIA,EAAMhE,OAAS,EAAUomD,MAAQpiD,EAAMjD,QAAUA,EAGnD,MAAMmkD,EAAYr6C,KAAKy/C,OAAOl9C,OAAQpJ,EAAMo7C,MAAO,aAAcr6C,OAAOhE,EAAO,aAAcgE,OAAOmtD,EAAaluD,GAAQ,MAFzH6G,KAAKy/C,OAAOlC,SAIhB,EAMAD,EAAO6E,sBAAwB,SAA+BjsD,GAC5D,IAAIiD,EAAQ6G,KAAKy/C,OAAOtmD,MACxB,OAAIA,EAAMhE,OAAS,EAAUomD,MAAQpiD,EAAMjD,QAAUA,IACnD8J,KAAKy/C,OAAOlC,WACL,EAGX,EAKAD,EAAOgD,WAAa,SAAoBgH,GACtC,IAAInuD,EAAQmuD,QAAyCA,EAAUtnD,KAAKy/C,OAAOtmD,MAC3E,OAAOkhD,EAAYr6C,KAAKy/C,OAAOl9C,OAAQpJ,EAAMo7C,MAAO,cAAcr6C,OAAOmtD,EAAaluD,GAAQ,KAChG,EAOAmkD,EAAO2F,IAAM,SAAasE,EAAUC,EAASC,GAC3CznD,KAAK2/C,YAAY4H,GAEjB,IADA,IAAI7O,EAAQ,IACJ14C,KAAKohD,oBAAoBqG,IAC/B/O,EAAM5iD,KAAK0xD,EAAQrtD,KAAK6F,OAE1B,OAAO04C,CACT,EAQA4E,EAAOyD,aAAe,SAAsBwG,EAAUC,EAASC,GAC7D,GAAIznD,KAAKohD,oBAAoBmG,GAAW,CACtC,IAAI7O,EAAQ,GACZ,GACEA,EAAM5iD,KAAK0xD,EAAQrtD,KAAK6F,cAChBA,KAAKohD,oBAAoBqG,IACnC,OAAO/O,CACT,CACA,MAAO,EACT,EAOA4E,EAAOwC,KAAO,SAAcyH,EAAUC,EAASC,GAC7CznD,KAAK2/C,YAAY4H,GACjB,IAAI7O,EAAQ,GACZ,GACEA,EAAM5iD,KAAK0xD,EAAQrtD,KAAK6F,cAChBA,KAAKohD,oBAAoBqG,IACnC,OAAO/O,CACT,EAOA4E,EAAOyH,cAAgB,SAAuB2C,EAAeF,GAC3DxnD,KAAKohD,oBAAoBsG,GACzB,IAAIhP,EAAQ,GACZ,GACEA,EAAM5iD,KAAK0xD,EAAQrtD,KAAK6F,aACjBA,KAAKohD,oBAAoBsG,IAClC,OAAOhP,CACT,EACO2G,CACT,CAnwCiC,GAwwCjC,SAASgI,EAAaluD,GACpB,IAAIjD,EAAQiD,EAAMjD,MAClB,OAAOkxD,EAAiBjuD,EAAMhE,OAAkB,MAATe,EAAgB,KAAMgE,OAAOhE,EAAO,KAAQ,GACrF,CAKA,SAASkxD,EAAiBjyD,GACxB,OD9wCK,SAA+BA,GACpC,OAAOA,IAAS,EAAUslD,MAAQtlD,IAAS,EAAUulD,QAAUvlD,IAAS,EAAUwlD,KAAOxlD,IAAS,EAAUylD,SAAWzlD,IAAS,EAAU0lD,SAAW1lD,IAAS,EAAU2lD,QAAU3lD,IAAS,EAAU4lD,OAAS5lD,IAAS,EAAU6lD,QAAU7lD,IAAS,EAAU8lD,IAAM9lD,IAAS,EAAU+lD,WAAa/lD,IAAS,EAAUgmD,WAAahmD,IAAS,EAAUimD,SAAWjmD,IAAS,EAAUkmD,MAAQlmD,IAAS,EAAUmmD,OAClZ,CC4wCSqM,CAAsBxyD,GAAQ,IAAK+E,OAAO/E,EAAM,KAAQA,CACjE,CCn1CA,IAAIyyD,EAAW,IAAI/Q,IACfgR,EAAoB,IAAIhR,IACxBiR,GAAwB,EACxBrF,GAAgC,EACpC,SAASsF,EAAUtgD,GACjB,OAAOA,EAAO5M,QAAQ,UAAW,KAAKu6B,MACxC,CAIA,SAAS4yB,GAAiBC,GACxB,IAAIC,EAAW,IAAIhvB,IACfxjC,EAAc,GAsBlB,OArBAuyD,EAAIvyD,YAAY2lB,SAAQ,SAAU8sC,GAChC,GAAgC,uBAA5BA,EAAmBhzD,KAA+B,CACpD,IAAIizD,EAAeD,EAAmB1zD,KAAKyB,MACvCmyD,EARDN,GADgBxO,EASa4O,EAAmB5O,KARlCh3C,OAAO4xC,KAAK/b,UAAUmhB,EAAIhF,MAAOgF,EAAI2E,MASlDoK,EAAeT,EAAkB3yD,IAAIkzD,GACrCE,IAAiBA,EAAanwB,IAAIkwB,GAChCP,GACFvmD,QAAQH,KAAK,+BAAiCgnD,EAAjC,iMAELE,GACVT,EAAkB1xD,IAAIiyD,EAAcE,EAAe,IAAIpvB,KAEzDovB,EAAa1yC,IAAIyyC,GACZH,EAAS/vB,IAAIkwB,KAChBH,EAAStyC,IAAIyyC,GACb3yD,EAAYI,KAAKqyD,GAErB,MACEzyD,EAAYI,KAAKqyD,GAxBvB,IAAyB5O,CA0BvB,KACO,SAAS,QAAS,CAAC,EAAG0O,GAAM,CACjCvyD,YAAaA,GAEjB,CAmBA,SAASkqD,GAAcr9C,GACrB,IAAIgmD,EAAWR,EAAUxlD,GACzB,IAAKqlD,EAASzvB,IAAIowB,GAAW,CAC3B,IAAIC,ED9CD,SAAejmD,EAAQ3L,GAE5B,OADa,IAAIyoD,EAAO98C,EAAQ3L,GAClBgpD,eAChB,CC2CiBtqB,CAAM/yB,EAAQ,CACzBkgD,8BAA+BA,EAC/BgG,6BAA8BhG,IAEhC,IAAK+F,GAA0B,aAAhBA,EAAOrzD,KACpB,MAAM,IAAI2M,MAAM,iCAElB8lD,EAASzxD,IAAIoyD,EA5BjB,SAAkBG,GAChB,IAAIC,EAAU,IAAIzvB,IAAIwvB,EAAIhzD,aAC1BizD,EAAQttC,SAAQ,SAAU0+B,GACpBA,EAAKR,YAAYQ,EAAKR,IAC1B5hD,OAAOsD,KAAK8+C,GAAM1+B,SAAQ,SAAUngB,GAClC,IAAIhF,EAAQ6jD,EAAK7+C,GACbhF,GAA0B,iBAAVA,GAClByyD,EAAQ/yC,IAAI1f,EAEhB,GACF,IACA,IAAIqjD,EAAMmP,EAAInP,IAKd,OAJIA,WACKA,EAAI0N,kBACJ1N,EAAIqP,UAENF,CACT,CAW2BG,CAASb,GAAiBQ,IACnD,CACA,OAAOZ,EAAS1yD,IAAIqzD,EACtB,CACO,SAASO,GAAIC,GAElB,IADA,IAAInnD,EAAO,GACFpM,EAAK,EAAGA,EAAKuG,UAAUpG,OAAQH,IACtCoM,EAAKpM,EAAK,GAAKuG,UAAUvG,GAEH,iBAAbuzD,IACTA,EAAW,CAACA,IAEd,IAAIzxD,EAASyxD,EAAS,GAStB,OARAnnD,EAAKyZ,SAAQ,SAAU1Z,EAAKnH,GACtBmH,GAAoB,aAAbA,EAAIxM,KACbmC,GAAUqK,EAAI43C,IAAIh3C,OAAO4xC,KAEzB78C,GAAUqK,EAEZrK,GAAUyxD,EAASvuD,EAAI,EACzB,IACOolD,GAActoD,EACvB,CAcA,IAOW0xD,GAPPC,GACGH,GADHG,GAbG,WACLrB,EAASsB,QACTrB,EAAkBqB,OACpB,EAUID,GATG,WACLnB,GAAwB,CAC1B,EAOImB,GANG,WACLxG,GAAgC,CAClC,EAIIwG,GAHG,WACLxG,GAAgC,CAClC,GAQWuG,GAERF,KAAQA,GAAM,CAAC,IADVA,IAAMG,GAAYD,GAAMG,YAAcF,GAAoBD,GAAMI,wBAA0BH,GAAgCD,GAAMK,oCAAsCJ,GAA4CD,GAAMM,qCAAuCL,GAEvQH,GAAa,QAAIA,GACjB,UClHO,MAAMS,GAA4B,CAAC,MAAO,MAAO,MAAO,OAGlDC,GAA4B,CACvC,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAIWC,GAA4B,CAAC,MAAO,MAAO,MAAO,MAAO,OAGzDC,GAAwB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAG/FC,GAAoB,CAAC,OAGrBC,GAAyB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OAG7DC,GAAwB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAG1EC,GAAoC,CAC/C,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OC9CWC,GAAeA,CAACC,EAAsBxb,KACjD,MAAMyb,EAAoBzb,EAAKzxC,KAAI26B,GAAY,IAAGA,EAAQjjC,SAA0B,aAAjBijC,EAAQljC,KAAsB,WAAa,aAAYmF,KAAK,MACzHuwD,EAAoB1b,EAAKzxC,KAAI26B,GAAY,GAAEA,EAAQjjC,SAASijC,EAAQjjC,SAAQkF,KAAK,MAEvF,OAAOmvD,EAAI;;;;;;;;QAQLmB;;IAEJD;;;;;;;;KAQCE;;;;;GAKF,EAGUC,GAAiB,SAAC3b,EAA8B4b,EAAczgC,QAAuB,IAAvBA,IAAAA,EAA0B,MACnG,MAAM0gC,EAAuC,CAAC,EAE9C,IAAK,MAAOnvD,EAAKhF,KAAUyB,OAAOqD,QAAQwzC,GACxC6b,EAAanvD,GAAOhF,EAStB,OANAm0D,EAAoB,MAAI7b,EAAK8b,UAC7BD,EAAmB,KAAI7b,EAAK8b,UAC5BD,EAA0C,4BAAI,SAC9CA,EAAyC,2BAAID,EAC7CC,EAAkC,oBAAI1gC,GAAQ,KAEvC0gC,CACT,EAEaE,GAA2BC,IACtC,IAAIC,EAAiB,EACrB,IAAK,MAAMlqD,KAAQiqD,EACbA,EAAQjqD,KACVkqD,GAAkB,GAItB,OAAIA,EAAiB,EACZ,cACED,EAAQE,cAAgB,EAC1B,gBACEF,EAAQG,cAAgB,EAC1B,gBACEH,EAAQI,cAAgB,EAC1B,gBACEJ,EAAQK,UAAY,EACtB,YACEL,EAAQM,OAAS,EACnB,SACEN,EAAQO,YAAc,EACxB,cACEP,EAAQQ,UAAY,EACtB,YACER,EAAQS,sBAAwB,EAClC,wBAEF,aAAa,EAGTC,GAAiB1c,IAC5B,MAAMgc,EAA0D,CAC9DE,cAAe,EACfC,cAAe,EACfC,cAAe,EACfC,UAAW,EACXC,OAAQ,EACRC,YAAa,EACbC,UAAW,EACXC,sBAAuB,GAyBzB,OAtBIzc,EAAK2c,WACP3c,EAAK2c,UAAU9vC,SAAS+vC,IAClB3B,GAA0B7zB,SAASw1B,GACrCZ,EAAQE,eAAiB,EAChBnB,GAA0B3zB,SAASw1B,GAC5CZ,EAAQG,eAAiB,EAChBnB,GAA0B5zB,SAASw1B,GAC5CZ,EAAQI,eAAiB,EAChBlB,GAAsB9zB,SAASw1B,GACxCZ,EAAQK,WAAa,EACZlB,GAAkB/zB,SAASw1B,GACpCZ,EAAQM,QAAU,EACTlB,GAAuBh0B,SAASw1B,GACzCZ,EAAQO,aAAe,EACdlB,GAAsBj0B,SAASw1B,GACxCZ,EAAQQ,WAAa,EACZlB,GAAkCl0B,SAASw1B,KACpDZ,EAAQS,uBAAyB,EACnC,IAIGT,CAAO,kKClEZa,EAAgC,cAAiB,SAA0BtvB,EAAOvkC,GACtEukC,EAAM9D,QAApB,IACEqzB,EAAUvvB,EAAMuvB,QAChB3a,EAAY5U,EAAM4U,UAClBhW,EAAUoB,EAAMpB,QAChB4wB,EAAexvB,EAAMG,SAErBsvB,GADWzvB,EAAMmH,SACTnH,EAAMyvB,OACdC,EAAwB1vB,EAAM2vB,eAC9BA,OAA2C,IAA1BD,EAAmC,MAAQA,EAI5DpqC,GAHO0a,EAAMtnC,KACFsnC,EAAM7B,SACT6B,EAAM7lC,OACN,OAAyB6lC,EAAO,CAAC,UAAW,UAAW,YAAa,UAAW,WAAY,WAAY,QAAS,iBAAkB,OAAQ,WAAY,WAC5J4vB,GAAiB,EAAAC,EAAA,KACjB1vB,EAAWqvB,OACS,IAAbrvB,QAA8D,IAA3BvB,EAAQoB,MAAMG,WAC1DA,EAAWvB,EAAQoB,MAAMG,eAEH,IAAbA,GAA4ByvB,IACrCzvB,EAAWyvB,EAAezvB,UAE5B,IAAI2vB,EAAe,CACjB3vB,SAAUA,GAOZ,MALA,CAAC,UAAW,OAAQ,WAAY,QAAS,YAAY7gB,SAAQ,SAAUngB,QACnC,IAAvBy/B,EAAQoB,MAAM7gC,SAA8C,IAAf6gC,EAAM7gC,KAC5D2wD,EAAa3wD,GAAO6gC,EAAM7gC,GAE9B,IACoB,gBAAoB,SAAS,OAAS,CACxDy1C,WAAW,OAAK2a,EAAQQ,KAAMnb,EAA8B,QAAnB+a,GAA4BJ,EAAQ,iBAAiBpxD,QAAO,EAAA6xD,EAAA,GAAWL,KAAmBxvB,GAAYovB,EAAQpvB,UACvJ1kC,IAAKA,GACJ6pB,GAAqB,eAAmBsZ,EAASkxB,GAA4B,gBAAoBG,EAAA,EAAY,CAC9GC,UAAW,OACXtb,WAAW,OAAK2a,EAAQE,MAAOtvB,GAAYovB,EAAQpvB,WAClDsvB,GACL,IAEA,GAAe,EAAAU,EAAA,IAxFK,SAAgBC,GAClC,MAAO,CAELL,KAAM,CACJM,QAAS,cACTC,WAAY,SACZC,OAAQ,UAERC,cAAe,SACfC,wBAAyB,cACzBC,YAAa,GACbC,YAAa,GAEb,aAAc,CACZJ,OAAQ,YAIZK,oBAAqB,CACnBC,cAAe,cACfH,WAAY,GAEZC,aAAc,IAGhBG,kBAAmB,CACjBD,cAAe,iBACfH,WAAY,IAGdK,qBAAsB,CACpBF,cAAe,SACfH,WAAY,IAGdvwB,SAAU,CAAC,EAEXsvB,MAAO,CACL,aAAc,CACZnY,MAAO8Y,EAAMY,QAAQjc,KAAK5U,WAIlC,GA6CkC,CAChCznC,KAAM,uBADR,CAEG42D,uBCzCH,MAjDKjb,IAAiC,IAAhC,SAAEY,EAAQ,QAAErW,GAASyV,EACzB,MAAM,EAAC4c,EAAc,EAACC,IAAoBra,EAAAA,EAAAA,aACpC,EAACjQ,EAAS,EAACuqB,IAAeta,EAAAA,EAAAA,WAAS,GAEnCua,EAAalb,IACjB,IAAIkb,GAAY,EAMhB,OALAH,SAAAA,EAAe3xC,SAAQ+xC,IACjBA,EAAEl3D,QAAU+7C,EAAO/7C,QACrBi3D,GAAY,EACd,IAEKA,CAAS,EASlB,OANAE,EAAAA,EAAAA,YAAU,KACJL,GAAiBA,EAAcr3D,OAAS,GAC1Cu3D,GAAY,EACd,GACC,CAACF,IAGFvc,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACS,EAAAA,EAAU,KACRF,EAASG,MACTH,EAASI,WAAa,KAAO,IAEhCX,EAAAA,cAAA,OAAKa,MAAO,CAAEgc,SAAU,UACrBtc,EAASC,QAAQl0C,KAAIk1C,GACpBxB,EAAAA,cAAC4a,EAAgB,CACfnwD,IAAM,MAAK+2C,EAAO/7C,QAClBzB,KAAMu8C,EAASv8C,KACf+2D,MAAOvZ,EAAOnB,KACdnW,QACE8V,EAAAA,cAAC7Q,EAAAA,GAAU,CACTnrC,KAAMu8C,EAASv8C,KACfkmC,QAASA,EACTrB,aAAc,GACduG,OAAQ6G,IAAA,IAAG/W,OAAO,SAAEuK,EAAQ,OAAED,EAAM,MAAE/jC,IAAcwwC,EAAA,OAClD+J,EAAAA,cAAC8c,EAAAA,EAAQ,CAACr3D,MAAOi3D,EAAUlb,GAAS/X,SAAUA,EAAUD,OAAQA,EAAQX,aAAcpjC,GAAS,SAO1G,qBCrDHs3D,EAA2B,WAC7B,SAASA,EAAY/3D,GACnB,IAAIgD,OAAY,IAAPhD,EAAgB,CAAC,EAAIA,EAC5B+H,EAAS/E,EAAG+E,OACZ85C,EAAW7+C,EAAG6+C,SACdmW,EAASh1D,EAAGg1D,OACdztD,KAAK0tD,WAAa,OAClB1tD,KAAK2tD,gBAAkB,YACvB3tD,KAAK4tD,kBAAoB,kBACzB5tD,KAAK6tD,kBAAoB,gBACzB7tD,KAAK8tD,cAAgB,UACrB9tD,KAAK+tD,cAAgB,QACrB/tD,KAAKid,WAAa,UAClBjd,KAAKytD,OAASnW,GAAYmW,GAAU,IACpCztD,KAAKxC,OAASA,CAChB,CA8LA,OA7LAgwD,EAAYvzD,UAAUq7B,MAAQ,SAAUp/B,EAAOqH,GAC7C,MAAc,KAAVrH,EACK,KAEF8J,KAAKytD,OAAOv3D,EAAOqH,GAAQ,EACpC,EACAiwD,EAAYvzD,UAAUgO,KAAO,SAAU/R,GACrC,GAAc,OAAVA,EACF,OAAO,KAET,IAAIu3D,EAASztD,KAAKytD,OAAOv3D,GAEzB,OADAu3D,EAAOjwD,OAAOwC,KAAKxC,QACZiwD,CACT,EACAD,EAAYvzD,UAAU+E,QAAU,SAAU9I,GACxC,OAAO8J,KAAKytD,OAAOv3D,GAAO8I,SAC5B,EACAwuD,EAAYvzD,UAAU+zD,OAAS,SAAU/lD,GACvC,OAAgB,OAATA,CACT,EACAulD,EAAYvzD,UAAUg0D,QAAU,SAAUhmD,EAAMimD,GAC9C,OAAOjmD,EAAKJ,KAAKqmD,EACnB,EACAV,EAAYvzD,UAAU2rB,QAAU,SAAU3d,EAAM/R,GAC9C,OAAO+R,EAAK2d,QAAQ1vB,EACtB,EACAs3D,EAAYvzD,UAAU4rB,SAAW,SAAU5d,EAAM/R,GAC/C,OAAO+R,EAAK4d,SAAS3vB,EACvB,EACAs3D,EAAYvzD,UAAUk0D,WAAa,SAAUlmD,EAAM/R,GACjD,OAAO+R,EAAK2d,QAAQ1vB,EAAO,MAC7B,EACAs3D,EAAYvzD,UAAUm0D,YAAc,SAAUnmD,EAAM/R,GAClD,OAAO+R,EAAK4d,SAAS3vB,EAAO,MAC9B,EACAs3D,EAAYvzD,UAAUo0D,aAAe,SAAUpmD,EAAM/R,GACnD,OAAO+R,EAAK4d,SAAS3vB,EAAO,OAC9B,EACAs3D,EAAYvzD,UAAUq0D,YAAc,SAAUrmD,EAAM/R,GAClD,OAAO+R,EAAK2d,QAAQ1vB,EAAO,OAC7B,EACAs3D,EAAYvzD,UAAUs0D,WAAa,SAAUtmD,GAC3C,OAAOA,EAAK0b,QAAQ8D,QAAQ,MAC9B,EACA+lC,EAAYvzD,UAAUu0D,SAAW,SAAUvmD,GACzC,OAAOA,EAAK0b,QAAQiE,MAAM,MAC5B,EACA4lC,EAAYvzD,UAAUsD,OAAS,SAAU0K,EAAMwmD,GAE7C,OADAxmD,EAAKzK,OAAOwC,KAAKxC,QACVyK,EAAK1K,OAAOkxD,EACrB,EACAjB,EAAYvzD,UAAUy0D,aAAe,SAAUC,GAC7C,OAAOA,CACT,EACAnB,EAAYvzD,UAAUgW,SAAW,SAAUhI,GACzC,OAAOA,EAAK/S,IAAI,QAClB,EACAs4D,EAAYvzD,UAAU20D,QAAU,SAAU3mD,EAAM4mD,GAC9C,OAAOA,EAAQ,EAAI5mD,EAAK0b,QAAQc,SAAS3gB,KAAKC,IAAI8qD,GAAQ,QAAU5mD,EAAK0b,QAAQ/N,IAAIi5C,EAAO,OAC9F,EACArB,EAAYvzD,UAAUgX,SAAW,SAAUhJ,EAAM4mD,GAC/C,OAAO5mD,EAAK0b,QAAQ9a,MAAMgmD,EAC5B,EACArB,EAAYvzD,UAAU8V,WAAa,SAAU9H,GAC3C,OAAOA,EAAK/S,IAAI,UAClB,EACAs4D,EAAYvzD,UAAU8W,WAAa,SAAU9I,EAAM4mD,GACjD,OAAO5mD,EAAK0b,QAAQza,QAAQ2lD,EAC9B,EACArB,EAAYvzD,UAAU4V,WAAa,SAAU5H,GAC3C,OAAOA,EAAK/S,IAAI,UAClB,EACAs4D,EAAYvzD,UAAU4W,WAAa,SAAU5I,EAAM4mD,GACjD,OAAO5mD,EAAK0b,QAAQla,QAAQolD,EAC9B,EACArB,EAAYvzD,UAAUsW,SAAW,SAAUtI,GACzC,OAAOA,EAAK/S,IAAI,QAClB,EACAs4D,EAAYvzD,UAAU60D,UAAY,SAAU7mD,EAAMimD,GAChD,OAAOjmD,EAAKggB,OAAOimC,EAAW,MAChC,EACAV,EAAYvzD,UAAU80D,YAAc,SAAU9mD,EAAMimD,GAClD,OAAOjmD,EAAKggB,OAAOimC,EAAW,QAChC,EACAV,EAAYvzD,UAAU+0D,WAAa,SAAU/mD,EAAMimD,GACjD,OAAOjmD,EAAKggB,OAAOimC,EAAW,OAChC,EACAV,EAAYvzD,UAAUg1D,WAAa,SAAUhnD,EAAMimD,GACjD,OAAOjmD,EAAKggB,OAAOimC,EAAW,OAChC,EACAV,EAAYvzD,UAAUsZ,SAAW,SAAUtL,EAAM4mD,GAC/C,OAAO5mD,EAAK0b,QAAQta,MAAMwlD,EAC5B,EACArB,EAAYvzD,UAAUi1D,gBAAkB,SAAUC,GAChD,MAAgB,OAATA,EAAgB,KAAO,IAChC,EACA3B,EAAYvzD,UAAUm1D,aAAe,SAAUnnD,GAC7C,OAAOA,EAAK0b,QAAQ8D,QAAQ,QAC9B,EACA+lC,EAAYvzD,UAAUo1D,WAAa,SAAUpnD,GAC3C,OAAOA,EAAK0b,QAAQiE,MAAM,QAC5B,EACA4lC,EAAYvzD,UAAUq1D,aAAe,SAAUrnD,GAC7C,OAAOA,EAAK0b,QAAQ/N,IAAI,EAAG,QAC7B,EACA43C,EAAYvzD,UAAUs1D,iBAAmB,SAAUtnD,GACjD,OAAOA,EAAK0b,QAAQc,SAAS,EAAG,QAClC,EACA+oC,EAAYvzD,UAAUu1D,cAAgB,SAAUvnD,GAG9C,IAFA,IACIwnD,EAAa,CADAxnD,EAAK0b,QAAQ8D,QAAQ,SAE/BgoC,EAAW95D,OAAS,IAAI,CAC7B,IAAI+5D,EAAYD,EAAWA,EAAW95D,OAAS,GAC/C85D,EAAW35D,KAAKkK,KAAKsvD,aAAaI,GACpC,CACA,OAAOD,CACT,EACAjC,EAAYvzD,UAAU01D,QAAU,SAAU1nD,GACxC,OAAOA,EAAK/S,IAAI,OAClB,EACAs4D,EAAYvzD,UAAU21D,QAAU,SAAU3nD,EAAMsC,GAC9C,OAAOtC,EAAK0b,QAAQxtB,IAAI,OAAQoU,EAClC,EACAijD,EAAYvzD,UAAU41D,iBAAmB,SAAU5nD,EAAMqf,GACvD,OAAOtnB,KAAK+Q,WAAW/Q,KAAKiR,SAAShJ,EAAMjI,KAAKiQ,SAASqX,IAAQtnB,KAAK+P,WAAWuX,GACnF,EACAkmC,EAAYvzD,UAAU61D,YAAc,WAClC,OAAO9vD,KAAKytD,OAAOr3C,eAAc,EACnC,EACAo3C,EAAYvzD,UAAU81D,QAAU,SAAU75D,EAAOg4D,GAC/C,OAAc,OAAVh4D,GAAgC,OAAdg4D,GAGfluD,KAAKytD,OAAOv3D,GAAO+xB,OAAOimC,EACnC,EACAV,EAAYvzD,UAAU+1D,aAAe,SAAU/nD,GAM7C,IALA,IAAIssC,EAAQtsC,EAAK0b,QAAQ8D,QAAQ,SAASA,QAAQ,QAC9Cy2B,EAAMj2C,EAAK0b,QAAQiE,MAAM,SAASA,MAAM,QACxCinC,EAAQ,EACRh3D,EAAU08C,EACV0b,EAAc,GACXp4D,EAAQguB,SAASq4B,IAAM,CAC5B,IAAIgS,EAAapsD,KAAK+J,MAAMghD,EAAQ,GACpCoB,EAAYC,GAAcD,EAAYC,IAAe,GACrDD,EAAYC,GAAYp6D,KAAK+B,GAC7BA,EAAUA,EAAQ8rB,QAAQ/N,IAAI,EAAG,OACjCi5C,GAAS,CACX,CACA,OAAOoB,CACT,EACAzC,EAAYvzD,UAAUk2D,aAAe,SAAU5b,EAAO2J,GAKpD,IAJA,IAAIkS,EAAYpwD,KAAKytD,OAAOlZ,GAAO9sB,QAAQ,QACvC4oC,EAAUrwD,KAAKytD,OAAOvP,GAAKt2B,MAAM,QACjCtd,EAAQ,GACRzS,EAAUu4D,EACPv4D,EAAQguB,SAASwqC,IACtB/lD,EAAMxU,KAAK+B,GACXA,EAAUA,EAAQ8rB,QAAQ/N,IAAI,EAAG,QAEnC,OAAOtL,CACT,EAEAkjD,EAAYvzD,UAAUq2D,sBAAwB,SAAUroD,GACtD,OAAOjI,KAAKzC,OAAO0K,EAAMjI,KAAK2tD,gBAChC,EACAH,EAAYvzD,UAAUs2D,YAAc,SAAUtoD,GAC5C,OAAOjI,KAAKzC,OAAO0K,EAAM,OAC3B,EACAulD,EAAYvzD,UAAUu2D,wBAA0B,SAAUvoD,GACxD,OAAOjI,KAAKzC,OAAO0K,EAAM,aAC3B,EACAulD,EAAYvzD,UAAUw2D,4BAA8B,SAAUxoD,GAC5D,OAAOjI,KAAKzC,OAAO0K,EAAM,QAC3B,EACAulD,EAAYvzD,UAAUy2D,aAAe,SAAUzoD,GAC7C,OAAOjI,KAAKzC,OAAO0K,EAAM,OAC3B,EACAulD,EAAYvzD,UAAU02D,WAAa,SAAU1oD,GAC3C,OAAOjI,KAAKzC,OAAO0K,EAAM,IAC3B,EACAulD,EAAYvzD,UAAU22D,YAAc,SAAU3oD,EAAMknD,GAClD,OAAOnvD,KAAKzC,OAAO0K,EAAMknD,EAAO,KAAO,KACzC,EACA3B,EAAYvzD,UAAU42D,cAAgB,SAAU5oD,GAC9C,OAAOjI,KAAKzC,OAAO0K,EAAM,KAC3B,EACAulD,EAAYvzD,UAAU62D,cAAgB,SAAU7oD,GAC9C,OAAOjI,KAAKzC,OAAO0K,EAAM,KAC3B,EACOulD,CACT,CA9M+B,GA+M/B,iCChKA,MArCKpd,IAA4B,IAA3B,QAAEzV,EAAO,SAAEqW,GAAUZ,EACzB,OACEK,EAAAA,cAAC7Q,EAAAA,GAAU,CACTjF,QAASA,EACTlmC,KAAMu8C,EAASv8C,KACf6kC,cAAc,IAAIx8B,MAAO6rB,cAAcyP,UAAU,EAAG,IACpDyH,OAAQ6G,IAAA,IAAG/W,OAAO,SAAEuK,EAAQ,OAAED,EAAM,MAAE/jC,IAASwwC,EAAA,OAC7C+J,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACsgB,EAAAA,EAAS,KACP/f,EAASG,MAAM,IAAEH,EAASI,WAAa,KAAO,IAEjDX,EAAAA,cAACugB,EAAAA,EAAuB,CAACC,MAAOzD,GAC9B/c,EAAAA,cAACygB,EAAAA,EAAkB,CACjBvuB,SAAkC,SAAxBqO,EAASI,WACnB+f,gBAAc,EACdC,QAAQ,SACR7zD,OAAO,aACP8zD,OAAO,SACPC,aAAW,EACXp7D,MAAOA,EACPq7D,WAAYvgB,EAASQ,YACrBvO,WAAY/sC,EACZ+jC,OAAQA,EACRC,SAAU9xB,IACR8xB,EAAS9xB,aAAC,EAADA,EAAG7K,OAAO,cAAc,EAEnCi0D,oBAAqB,CACnB,aAAc,kBAInB,GAEL,gCCAFC,EAA6B,cAAiB,SAAuB11B,EAAOvkC,GAC9E,IAAI8zD,EAAUvvB,EAAMuvB,QAClB3a,EAAY5U,EAAM4U,UAClB+gB,EAAe31B,EAAMsX,MACrBA,OAAyB,IAAjBqe,EAA0B,UAAYA,EAC9CC,EAAmB51B,EAAMkwB,UACzB2F,OAAiC,IAArBD,EAA8B,KAAOA,EACjDE,EAAwB91B,EAAM+1B,eAC9BA,OAA2C,IAA1BD,GAA2CA,EAC5DE,EAAuBh2B,EAAMi2B,cAC7BA,OAAyC,IAAzBD,GAA0CA,EAC1DE,EAAel2B,EAAMm2B,MACrBA,OAAyB,IAAjBD,GAAkCA,EAC1C5wC,GAAQ,OAAyB0a,EAAO,CAAC,UAAW,YAAa,QAAS,YAAa,iBAAkB,gBAAiB,UAC5H,OAAoB,gBAAoB61B,GAAW,OAAS,CAC1DjhB,WAAW,OAAK2a,EAAQQ,KAAMnb,EAAqB,YAAV0C,GAAuBiY,EAAQ,QAAQpxD,QAAO,EAAA6xD,EAAA,GAAW1Y,KAAU6e,GAAS5G,EAAQ4G,OAAQF,GAAiB1G,EAAQ6G,QAASL,GAAkBxG,EAAQ8G,SACjM56D,IAAKA,GACJ6pB,GACL,IAEA,GAAe,EAAA6qC,EAAA,IA1DK,SAAgBC,GAClC,MAAO,CAELL,KAAM,CACJuG,UAAW,aACXC,WAAY,OACZC,UAAW,OACXlf,MAAO8Y,EAAMY,QAAQjc,KAAK0hB,UAC1BC,WAAYtG,EAAMuG,WAAWD,WAC7BE,WAAYxG,EAAMuG,WAAWE,iBAC7BC,SAAU1G,EAAMuG,WAAWI,QAAQ,KAGrCC,aAAc,CACZ1f,MAAO8Y,EAAMY,QAAQiG,QAAQC,MAG/BC,aAAc,CACZ7f,MAAO,WAGT+e,QAAS,CACPe,YAAa,GACbC,aAAc,IAGhBlB,MAAO,CACLiB,YAAa,IAGfhB,OAAQ,CACNpe,SAAU,SACVsf,IAAK,EACLC,OAAQ,EACRhgB,gBAAiB,WAGvB,GAqBkC,CAChC7+C,KAAM,oBADR,CAEGg9D,gCC5DH,GAAe,EAAA8B,EAAA,GAA4B,gBAAoB,OAAQ,CACrExsD,EAAG,oLACD,uCC4PJ,SAASysD,EAAsBC,GAC7B,MAA6B,cAAtBA,EAAcv4D,KAA6C,WAAtBu4D,EAAcv4D,GAC5D,CAKA,IAAIw4D,EAAoB,cAAiB,SAAc33B,EAAOvkC,GAC5D,IAAIm8D,EAAa53B,EAAM63B,OACrBtI,EAAUvvB,EAAMuvB,QAChB3a,EAAY5U,EAAM4U,UAClBkjB,EAAgB93B,EAAM+3B,UACtBpC,EAAe31B,EAAMsX,MACrBA,OAAyB,IAAjBqe,EAA0B,UAAYA,EAC9CqC,EAAgBh4B,EAAMkwB,UACtB+H,EAAiBj4B,EAAMk4B,WACvBC,EAAkBn4B,EAAMG,SACxBA,OAA+B,IAApBg4B,GAAqCA,EAChDC,EAAWp4B,EAAMq4B,KACjB5I,EAAQzvB,EAAMyvB,MACd5a,EAAU7U,EAAM6U,QAChByjB,EAAWt4B,EAAMs4B,SACjBC,EAAYv4B,EAAMu4B,UAClBC,EAAUx4B,EAAMw4B,QAChBC,EAAcz4B,EAAMvlC,KACpBA,OAAuB,IAAhBg+D,EAAyB,SAAWA,EAC3CC,EAAiB14B,EAAMq1B,QACvBA,OAA6B,IAAnBqD,EAA4B,UAAYA,EAClDpzC,GAAQ,OAAyB0a,EAAO,CAAC,SAAU,UAAW,YAAa,YAAa,QAAS,YAAa,aAAc,WAAY,OAAQ,QAAS,UAAW,WAAY,YAAa,UAAW,OAAQ,YAC9M24B,EAAU,SAAa,MACvBC,GAAY,EAAAC,EAAA,GAAWF,EAASl9D,GAChCq9D,EAAwB,SAA+B98B,GAEzDA,EAAM+8B,kBACFT,GACFA,EAASt8B,EAEb,EAyBI+7B,KAA8B,IAAlBD,IAA2BjjB,IAAiBijB,EACxDkB,EAAiB,UAATv+D,EACRo7D,EAAYmC,IAAkBD,EAAYkB,EAAA,EAAa,OACvDC,EAAYrD,IAAcoD,EAAA,EAAa,CACzC/I,UAAW,OACT,CAAC,EACDgI,EAAa,KACjB,GAAII,EAAU,CACZ,IAAIa,GAAgB,OAAe,YAAV7hB,IAAoC,YAAZ+d,EAAwB9F,EAAQ,kBAAkBpxD,QAAO,EAAA6xD,EAAA,GAAW1Y,KAAWiY,EAAQ,0BAA0BpxD,QAAO,EAAA6xD,EAAA,GAAW1Y,MAAW0hB,GAASzJ,EAAQ6J,iBAChNlB,EAAaD,GAA+B,iBAAqBA,GAA+B,eAAmBA,EAAgB,CACjIrjB,WAAW,OAAKqjB,EAAej4B,MAAM4U,UAAW2a,EAAQ2I,WAAYiB,GACpEtkB,QAASikB,IACO,gBAAoBO,EAAY,CAChDzkB,WAAW,OAAK2a,EAAQ2I,WAAYiB,GACpCtkB,QAASikB,GAEb,CACA,IAAIjB,EAAS,KACTD,GAA2B,iBAAqBA,KAClDC,EAAsB,eAAmBD,EAAY,CACnDhjB,WAAW,OAAK2a,EAAQsI,OAAQD,EAAW53B,MAAM4U,UAAWokB,GAASzJ,EAAQ+J,YAAuB,YAAVhiB,GAAuBiY,EAAQ,cAAcpxD,QAAO,EAAA6xD,EAAA,GAAW1Y,SAG7J,IAAI+gB,EAAO,KAWX,OAVID,GAAyB,iBAAqBA,KAChDC,EAAoB,eAAmBD,EAAU,CAC/CxjB,WAAW,OAAK2a,EAAQ8I,KAAMD,EAASp4B,MAAM4U,UAAWokB,GAASzJ,EAAQgK,UAAqB,YAAVjiB,GAAuBiY,EAAQ,YAAYpxD,QAAO,EAAA6xD,EAAA,GAAW1Y,SAQjI,gBAAoBue,GAAW,OAAS,CAC1D2D,KAAMzB,GAAaO,EAAW,cAAWh+D,EACzCs6C,WAAW,OAAK2a,EAAQQ,KAAMnb,EAAqB,YAAV0C,GAAuB,CAACiY,EAAQ,QAAQpxD,QAAO,EAAA6xD,EAAA,GAAW1Y,KAAUygB,GAAaxI,EAAQ,iBAAiBpxD,QAAO,EAAA6xD,EAAA,GAAW1Y,KAAUghB,GAAY/I,EAAQ,iBAAiBpxD,QAAO,EAAA6xD,EAAA,GAAW1Y,MAAuB,YAAZ+d,GAAyB,CAAC9F,EAAQkK,SAAU,CAC3R,QAAWlK,EAAQmK,gBACnB,UAAanK,EAAQoK,mBACrBriB,IAASnX,GAAYovB,EAAQpvB,SAAU64B,GAASzJ,EAAQqK,UAAW7B,GAAaxI,EAAQwI,UAAWO,GAAY/I,EAAQsK,WACzH,kBAAiB15B,QAAkB7lC,EACnCw/D,SAAU/B,GAAaO,EAAW,OAAIh+D,EACtCu6C,QAASA,EACT0jB,UAnEkB,SAAuBv8B,GAErCA,EAAM+9B,gBAAkB/9B,EAAMC,QAAUw7B,EAAsBz7B,IAGhEA,EAAM6V,iBAEJ0mB,GACFA,EAAUv8B,EAEd,EA0DEw8B,QAzDgB,SAAqBx8B,GAEjCA,EAAM+9B,gBAAkB/9B,EAAMC,SAC5Bq8B,GAAYb,EAAsBz7B,GACpCs8B,EAASt8B,GACc,WAAdA,EAAM78B,KAAoBw5D,EAAQ78D,SAC3C68D,EAAQ78D,QAAQk+D,QAGhBxB,GACFA,EAAQx8B,EAEZ,EA8CEvgC,IAAKm9D,GACJM,EAAW5zC,GAAQuyC,GAAUQ,EAAmB,gBAAoB,OAAQ,CAC7EzjB,WAAW,OAAK2a,EAAQE,MAAOuJ,GAASzJ,EAAQ0K,aAC/CxK,GAAQyI,EACb,IAEA,GAAe,EAAA/H,EAAA,IA1WK,SAAgBC,GAClC,IAAI7Y,EAAyC,UAAvB6Y,EAAMY,QAAQv4D,KAAmB23D,EAAMY,QAAQkJ,KAAK,KAAO9J,EAAMY,QAAQkJ,KAAK,KAChGC,GAAkB,QAAM/J,EAAMY,QAAQjc,KAAKkiB,QAAS,KACxD,MAAO,CAELlH,KAAM,CACJ2G,WAAYtG,EAAMuG,WAAWD,WAC7BI,SAAU1G,EAAMuG,WAAWI,QAAQ,IACnC1G,QAAS,cACTC,WAAY,SACZ8J,eAAgB,SAChBC,OAAQ,GACR/iB,MAAO8Y,EAAMY,QAAQsJ,gBAAgB/iB,GACrCA,gBAAiBA,EACjBgjB,aAAc,GACdC,WAAY,SACZC,WAAYrK,EAAMsK,YAAYzgC,OAAO,CAAC,mBAAoB,eAE1Ds2B,OAAQ,UAERoK,QAAS,EACTC,eAAgB,OAChBC,OAAQ,OAERC,QAAS,EAETtK,cAAe,SACf8F,UAAW,aACX,aAAc,CACZlf,QAAS,GACT2jB,cAAe,QAEjB,YAAa,CACXrK,WAAY,EACZC,aAAc,EACdqK,MAAO,GACPX,OAAQ,GACR/iB,MAA8B,UAAvB8Y,EAAMY,QAAQv4D,KAAmB23D,EAAMY,QAAQkJ,KAAK,KAAO9J,EAAMY,QAAQkJ,KAAK,KACrFpD,SAAU1G,EAAMuG,WAAWI,QAAQ,KAErC,wBAAyB,CACvBzf,MAAO8Y,EAAMY,QAAQiG,QAAQgE,aAC7B1jB,gBAAiB6Y,EAAMY,QAAQiG,QAAQiE,MAEzC,0BAA2B,CACzB5jB,MAAO8Y,EAAMY,QAAQyF,UAAUwE,aAC/B1jB,gBAAiB6Y,EAAMY,QAAQyF,UAAUyE,MAE3C,iBAAkB,CAChBxK,WAAY,EACZC,aAAc,EACdqK,MAAO,GACPX,OAAQ,GACRvD,SAAU1G,EAAMuG,WAAWI,QAAQ,MAIvC6C,UAAW,CACTS,OAAQ,IAGVrD,aAAc,CACZzf,gBAAiB6Y,EAAMY,QAAQiG,QAAQC,KACvC5f,MAAO8Y,EAAMY,QAAQiG,QAAQgE,cAG/BE,eAAgB,CACd5jB,gBAAiB6Y,EAAMY,QAAQyF,UAAUS,KACzC5f,MAAO8Y,EAAMY,QAAQyF,UAAUwE,cAGjC96B,SAAU,CAAC,EAEX43B,UAAW,CACTqD,WAAY,OACZ3K,wBAAyB,cACzBF,OAAQ,UACR,mBAAoB,CAClBhZ,iBAAiB,QAAUA,EAAiB,MAE9C,WAAY,CACV8jB,UAAWjL,EAAMkL,QAAQ,KAI7BC,sBAAuB,CACrB,mBAAoB,CAClBhkB,iBAAiB,QAAU6Y,EAAMY,QAAQiG,QAAQC,KAAM,OAI3DsE,wBAAyB,CACvB,mBAAoB,CAClBjkB,iBAAiB,QAAU6Y,EAAMY,QAAQyF,UAAUS,KAAM,OAI7D2C,UAAW,CACT,UAAW,CACTtiB,iBAAiB,QAAUA,EAAiB,OAIhDkkB,sBAAuB,CACrB,UAAW,CACTlkB,iBAAiB,QAAU6Y,EAAMY,QAAQiG,QAAQC,KAAM,MAI3DwE,wBAAyB,CACvB,UAAW,CACTnkB,iBAAiB,QAAU6Y,EAAMY,QAAQyF,UAAUS,KAAM,MAI7DuC,SAAU,CACRliB,gBAAiB,cACjBsjB,OAAQ,aAAa18D,OAA8B,UAAvBiyD,EAAMY,QAAQv4D,KAAmB,sBAAwB,6BACrF,0DAA2D,CACzD8+C,iBAAiB,QAAM6Y,EAAMY,QAAQjc,KAAKkiB,QAAS7G,EAAMY,QAAQvtB,OAAOk4B,eAE1E,YAAa,CACXjL,WAAY,GAEd,iBAAkB,CAChBA,WAAY,GAEd,UAAW,CACTA,WAAY,GAEd,eAAgB,CACdA,WAAY,GAEd,gBAAiB,CACfC,YAAa,GAEf,qBAAsB,CACpBA,YAAa,IAIjB+I,gBAAiB,CACfpiB,MAAO8Y,EAAMY,QAAQiG,QAAQC,KAC7B2D,OAAQ,aAAa18D,OAAOiyD,EAAMY,QAAQiG,QAAQC,MAClD,0DAA2D,CACzD3f,iBAAiB,QAAM6Y,EAAMY,QAAQiG,QAAQC,KAAM9G,EAAMY,QAAQvtB,OAAOk4B,gBAI5EhC,kBAAmB,CACjBriB,MAAO8Y,EAAMY,QAAQyF,UAAUS,KAC/B2D,OAAQ,aAAa18D,OAAOiyD,EAAMY,QAAQyF,UAAUS,MACpD,0DAA2D,CACzD3f,iBAAiB,QAAM6Y,EAAMY,QAAQyF,UAAUS,KAAM9G,EAAMY,QAAQvtB,OAAOk4B,gBAM9E9D,OAAQ,CAAC,EAETyB,YAAa,CAAC,EAEdsC,mBAAoB,CAAC,EAErBC,qBAAsB,CAAC,EAEvBxD,KAAM,CACJ/gB,MAA8B,UAAvB8Y,EAAMY,QAAQv4D,KAAmB23D,EAAMY,QAAQkJ,KAAK,KAAO9J,EAAMY,QAAQkJ,KAAK,KACrFxJ,WAAY,EACZC,aAAc,GAGhB4I,UAAW,CACTyB,MAAO,GACPX,OAAQ,GACR3J,WAAY,EACZC,aAAc,GAGhBmL,iBAAkB,CAChBxkB,MAAO,WAGTykB,mBAAoB,CAClBzkB,MAAO,WAGTmY,MAAO,CACLxtD,SAAU,SACV+5D,aAAc,WACd5E,YAAa,GACbC,aAAc,GACdmD,WAAY,UAGdP,WAAY,CACV7C,YAAa,EACbC,aAAc,GAGhBa,WAAY,CACVzH,wBAAyB,cACzBnZ,MAAO6iB,EACPE,OAAQ,GACRW,MAAO,GACPzK,OAAQ,UACR+E,OAAQ,eACR,UAAW,CACThe,OAAO,QAAM6iB,EAAiB,MAIlCf,gBAAiB,CACfiB,OAAQ,GACRW,MAAO,GACPrK,YAAa,EACbD,YAAa,GAGfuL,uBAAwB,CACtB3kB,OAAO,QAAM8Y,EAAMY,QAAQiG,QAAQgE,aAAc,IACjD,oBAAqB,CACnB3jB,MAAO8Y,EAAMY,QAAQiG,QAAQgE,eAIjCiB,yBAA0B,CACxB5kB,OAAO,QAAM8Y,EAAMY,QAAQyF,UAAUwE,aAAc,IACnD,oBAAqB,CACnB3jB,MAAO8Y,EAAMY,QAAQyF,UAAUwE,eAInCkB,+BAAgC,CAC9B7kB,OAAO,QAAM8Y,EAAMY,QAAQiG,QAAQC,KAAM,IACzC,oBAAqB,CACnB5f,MAAO8Y,EAAMY,QAAQiG,QAAQC,OAIjCkF,iCAAkC,CAChC9kB,OAAO,QAAM8Y,EAAMY,QAAQyF,UAAUS,KAAM,IAC3C,oBAAqB,CACnB5f,MAAO8Y,EAAMY,QAAQyF,UAAUS,OAIvC,GAkHkC,CAChCx+D,KAAM,WADR,CAEGi/D,GCjXH,GAAe,EAAAH,EAAA,GAA4B,gBAAoB,OAAQ,CACrExsD,EAAG,0GACD,SCFJ,GAAe,EAAAwsD,EAAA,GAA4B,gBAAoB,OAAQ,CACrExsD,EAAG,mBACD,kECCJ,SAASqxD,EAAgB3wD,GACvB,YAAmC,IAArBA,EAAOsgD,UAA4BtgD,EAAOsgD,UAAU,OAAOltD,QAAQ,mBAAoB,IAAM4M,CAC7G,CAqCA,SAAS4wD,EAAUtzD,EAAOuzD,GACxB,IAAK,IAAI99D,EAAI,EAAGA,EAAIuK,EAAMpP,OAAQ6E,GAAK,EACrC,GAAI89D,EAAKvzD,EAAMvK,IACb,OAAOA,EAGX,OAAQ,CACV,CACA,IAAI+9D,EA5CG,WACL,IAAIt3D,EAASlF,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9Ey8D,EAAwBv3D,EAAOw3D,cACjCA,OAA0C,IAA1BD,GAA0CA,EAC1DE,EAAqBz3D,EAAO03D,WAC5BA,OAAoC,IAAvBD,GAAuCA,EACpD/lC,EAAQ1xB,EAAO0xB,MACfimC,EAAoB33D,EAAO43D,UAC3BA,OAAkC,IAAtBD,EAA+B,MAAQA,EACnDxiC,EAAYn1B,EAAOm1B,UACnB0iC,EAAe73D,EAAOm0B,KACtBA,OAAwB,IAAjB0jC,GAAkCA,EAC3C,OAAO,SAAUliE,EAASw5C,GACxB,IAAInN,EAAamN,EAAKnN,WACpB81B,EAAiB3oB,EAAK2oB,eACpB1+D,EAAQ+6B,EAAO6N,EAAW7N,OAAS6N,EACnC01B,IACFt+D,EAAQA,EAAMqQ,eAEZ+tD,IACFp+D,EAAQ+9D,EAAgB/9D,IAE1B,IAAI2+D,EAAkBpiE,EAAQowB,QAAO,SAAU6a,GAC7C,IAAIo3B,GAAa7iC,GAAa2iC,GAAgBl3B,GAO9C,OANI82B,IACFM,EAAYA,EAAUvuD,eAEpB+tD,IACFQ,EAAYb,EAAgBa,IAET,UAAdJ,EAAqD,IAA7BI,EAAUv9D,QAAQrB,GAAe4+D,EAAUv9D,QAAQrB,IAAU,CAC9F,IACA,MAAwB,iBAAVs4B,EAAqBqmC,EAAgBl/D,MAAM,EAAG64B,GAASqmC,CACvE,CACF,CAU2BE,GAGZ,SAASC,EAAgBp9B,GACtC,IAAIq9B,EAAsBr9B,EAAMs9B,aAC9BA,OAAuC,IAAxBD,GAAyCA,EACxDE,EAAuBv9B,EAAMw9B,cAC7BA,OAAyC,IAAzBD,GAA0CA,EAC1DE,EAAoBz9B,EAAM09B,WAC1BA,OAAmC,IAAtBD,GAAuCA,EACpDE,EAAsB39B,EAAM49B,aAC5BA,OAAuC,IAAxBD,GAAyCA,EACxDE,EAAqB79B,EAAM89B,YAC3BA,OAAqC,IAAvBD,GAAiC79B,EAAM+9B,SAAWF,EAChEG,EAAuBh+B,EAAMi+B,cAC7BA,OAAyC,IAAzBD,GAA0CA,EAC1DE,EAAuBl+B,EAAMm+B,cAC7BA,OAAyC,IAAzBD,EAAkC,kBAAoBA,EACtEE,EAAep+B,EAAMq+B,MACrBA,OAAyB,IAAjBD,GAAkCA,EAC1CE,EAAsBt+B,EAAMzC,aAC5BA,OAAuC,IAAxB+gC,EAAiCt+B,EAAMu+B,SAAW,GAAK,KAAOD,EAC7EE,EAAwBx+B,EAAMy+B,iBAC9BA,OAA6C,IAA1BD,GAA2CA,EAC9DE,EAAwB1+B,EAAM2+B,qBAC9BA,OAAiD,IAA1BD,GAA2CA,EAClEE,EAAwB5+B,EAAM6+B,uBAC9BA,OAAmD,IAA1BD,GAA2CA,EACpEE,EAAwB9+B,EAAM++B,gBAC9BA,OAA4C,IAA1BD,GAA2CA,EAC7DE,EAAuBh/B,EAAMi/B,cAC7BA,OAAyC,IAAzBD,EAAkCxC,EAAuBwC,EACzEE,EAAwBl/B,EAAMm/B,sBAC9BA,OAAkD,IAA1BD,GAA2CA,EACnEE,EAAkBp/B,EAAM+9B,SACxBA,OAA+B,IAApBqB,GAAqCA,EAChDC,EAAoBr/B,EAAMq/B,kBAC1BC,EAAwBt/B,EAAMg9B,eAC9BuC,OAA+C,IAA1BD,EAAmC,SAAUx5B,GAChE,OAAOA,CACT,EAAIw5B,EACJE,EAAwBx/B,EAAMy/B,kBAC9BA,OAA8C,IAA1BD,EAAmC,SAAU15B,EAAQ3rC,GACvE,OAAO2rC,IAAW3rC,CACpB,EAAIqlE,EACJE,EAAU1/B,EAAM0/B,QAChBC,EAAwB3/B,EAAM4/B,kBAC9BA,OAA8C,IAA1BD,GAAoC3/B,EAAM+9B,SAAW4B,EACzEE,EAAS7/B,EAAM8/B,GACfC,EAAwB//B,EAAMggC,mBAC9BA,OAA+C,IAA1BD,GAA2CA,EAChEE,EAAiBjgC,EAAMkH,WACvBg5B,GAAkBlgC,EAAMu+B,SACxBA,QAA+B,IAApB2B,IAAqCA,GAChD/hC,GAAW6B,EAAM7B,SACjBmW,GAAUtU,EAAMsU,QAChB6rB,GAAoBngC,EAAMmgC,kBAC1BC,GAAgBpgC,EAAMogC,cACtBC,GAASrgC,EAAMqgC,OACfC,GAAWtgC,EAAMuU,KACjBgsB,GAAqBvgC,EAAMwgC,YAC3BA,QAAqC,IAAvBD,IAAwCA,GACtD1lE,GAAUmlC,EAAMnlC,QAChB4lE,GAAuBzgC,EAAM0gC,cAC7BA,QAAyC,IAAzBD,IAAmCzgC,EAAM+9B,SAAW0C,GACpEE,GAAY3gC,EAAM7lC,MAChB2lE,IAAK,OAAMD,GACX7C,GAAiBuC,EAWrB,IAAIqB,GAAc,UAAa,GAC3BC,GAAa,UAAa,GAC1B15B,GAAW,SAAa,MACxB25B,GAAa,SAAa,MAC1BC,GAAkB,WAAe,MACnCC,GAAWD,GAAgB,GAC3BE,GAAcF,GAAgB,GAC5BG,GAAmB,YAAgB,GACrCC,GAAaD,GAAiB,GAC9BE,GAAgBF,GAAiB,GAC/BG,GAAqB7D,EAAgB,GAAK,EAC1C8D,GAAsB,SAAaD,IACnCE,IAAiB,EAAAC,EAAA,GAAc,CAC/BC,WAAYd,GACZe,QAASnkC,EACT7kC,KAAMylE,IAERwD,IAAkB,OAAeJ,GAAgB,GACjDpnE,GAAQwnE,GAAgB,GACxBpyB,GAAWoyB,GAAgB,GACzBC,IAAkB,EAAAJ,EAAA,GAAc,CAChCC,WAAYxB,EACZyB,QAAS,GACThpE,KAAMylE,EACNh8B,MAAO,eAET0/B,IAAkB,OAAeD,GAAiB,GAClD16B,GAAa26B,GAAgB,GAC7BC,GAAgBD,GAAgB,GAC9BE,GAAmB,YAAe,GACpCC,GAAUD,GAAiB,GAC3BE,GAAaF,GAAiB,GAC5BG,IAAkB,EAAAC,EAAA,IAAiB,SAAUnmC,EAAOjC,GACtD,IAAIqoC,EACJ,GAAI7D,GACF6D,EAAgB,QACX,GAAgB,MAAZroC,EACTqoC,EAAgB,OACX,CACL,IAAIC,EAAcrF,GAAejjC,GACjCqoC,EAAuC,iBAAhBC,EAA2BA,EAAc,EAClE,CACIn7B,KAAek7B,IAGnBN,GAAcM,GACVhC,IACFA,GAAcpkC,EAAOomC,EAAe,SAExC,IACA,aAAgB,WACdF,GAAgB,KAAM/nE,GACxB,GAAG,CAACA,GAAO+nE,KACX,IAAII,IAAkB,EAAAd,EAAA,GAAc,CAChCC,WAAYnB,GACZoB,SAAS,EACThpE,KAAMylE,EACNh8B,MAAO,SAETogC,IAAkB,OAAeD,GAAiB,GAClD/tB,GAAOguB,GAAgB,GACvBC,GAAeD,GAAgB,GAC7BE,IAA6BlE,IAAqB,MAATpkE,IAAiB+sC,KAAe81B,GAAe7iE,IACxFuoE,GAAYnuB,GACZ0oB,GAAkByF,GAAYzD,EAAcpkE,GAAQowB,QAAO,SAAU6a,GACvE,OAAIq5B,KAA0BZ,GAAWpkE,GAAQ,CAACA,KAAQ0F,MAAK,SAAU8iE,GACvE,OAAkB,OAAXA,GAAmBlD,EAAkB35B,EAAQ68B,EACtD,GAIF,IAGA,CACEz7B,WAAYu7B,GAA4B,GAAKv7B,GAC7C81B,eAAgBA,KACb,GAaD4F,IAAW,EAAAT,EAAA,IAAiB,SAAUU,IACpB,IAAhBA,EACF17B,GAASrrC,QAAQinC,QAEjBi+B,GAAS8B,cAAc,oBAAqB3kE,OAAO0kE,EAAY,OAAQ9/B,OAE3E,IAEA,aAAgB,WACVw7B,IAAY4C,GAAahnE,GAAMP,OAAS,IAC1CwnE,IAAe,GACfwB,IAAU,GAEd,GAAG,CAACzoE,GAAOokE,GAAU4C,GAAYyB,KAsBjC,IAAIG,IAAsB,EAAAZ,EAAA,IAAiB,SAAUx3B,GACnD,IAAI3O,EAAQ2O,EAAM3O,MAChBrI,EAAQgX,EAAMhX,MACdqvC,EAAer4B,EAAMs4B,OACrBA,OAA0B,IAAjBD,EAA0B,OAASA,EAW9C,GAVA1B,GAAoBxlE,QAAU63B,GAEf,IAAXA,EACFwT,GAASrrC,QAAQonE,gBAAgB,yBAEjC/7B,GAASrrC,QAAQqnE,aAAa,wBAAyB,GAAGhlE,OAAO2hE,GAAI,YAAY3hE,OAAOw1B,IAEtFwsC,IACFA,GAAkBnkC,GAAkB,IAAXrI,EAAe,KAAOspC,GAAgBtpC,GAAQsvC,GAEpEnC,GAAWhlE,QAAhB,CAGA,IAAImmD,EAAO6e,GAAWhlE,QAAQgnE,cAAc,gBACxC7gB,GACFA,EAAKihB,gBAAgB,cAEvB,IAAIE,EAActC,GAAWhlE,QAAQunE,cAAcP,cAAc,oBAEjE,GAAKM,EAGL,IAAe,IAAXzvC,EAAJ,CAIA,IAAImS,EAASg7B,GAAWhlE,QAAQgnE,cAAc,uBAAwB3kE,OAAOw1B,EAAO,OACpF,GAAKmS,IAGLA,EAAOq9B,aAAa,aAAc,QAM9BC,EAAYE,aAAeF,EAAYG,cAA2B,UAAXN,GAAoB,CAC7E,IAAItnC,EAAUmK,EACV09B,EAAeJ,EAAYG,aAAeH,EAAYK,UACtDC,EAAgB/nC,EAAQgoC,UAAYhoC,EAAQioC,aAC5CF,EAAgBF,EAClBJ,EAAYK,UAAYC,EAAgBN,EAAYG,aAC3C5nC,EAAQgoC,UAAYhoC,EAAQioC,cAAgBlE,EAAU,IAAM,GAAK0D,EAAYK,YACtFL,EAAYK,UAAY9nC,EAAQgoC,UAAYhoC,EAAQioC,cAAgBlE,EAAU,IAAM,GAExF,CApBA,MAFE0D,EAAYK,UAAY,CAX1B,CAkCF,IACII,IAAyB,EAAA1B,EAAA,IAAiB,SAAUn3B,GACtD,IAAIhP,EAAQgP,EAAMhP,MAChBlwB,EAAOk/B,EAAMl/B,KACbg4D,EAAkB94B,EAAMhhB,UACxBA,OAAgC,IAApB85C,EAA6B,OAASA,EAClDC,EAAe/4B,EAAMi4B,OACrBA,OAA0B,IAAjBc,EAA0B,OAASA,EAC9C,GAAKrB,GAAL,CAGA,IAgCIsB,EAnHN,SAA0BrwC,EAAO3J,GAC/B,IAAK82C,GAAWhlE,UAAsB,IAAX63B,EACzB,OAAQ,EAGV,IADA,IAAIswC,EAAYtwC,IACH,CAEX,GAAkB,SAAd3J,GAAwBi6C,IAAchH,GAAgBrjE,QAAwB,aAAdowB,IAA2C,IAAfi6C,EAC9F,OAAQ,EAEV,IAAIn+B,EAASg7B,GAAWhlE,QAAQgnE,cAAc,uBAAwB3kE,OAAO8lE,EAAW,OAEpFC,GAAoBrF,GAAiC/4B,IAAWA,EAAO3F,UAAqD,SAAzC2F,EAAOq+B,aAAa,kBAC3G,KAAIr+B,IAAWA,EAAOs+B,aAAa,aAAeF,GAIhD,OAAOD,EAFPA,GAA2B,SAAdj6C,EAAuB,GAAK,CAI7C,CACF,CA+FkBq6C,CAhCG,WACjB,IAAIC,EAAWrH,GAAgBrjE,OAAS,EACxC,GAAa,UAATkS,EACF,OAAOu1D,GAET,GAAa,UAATv1D,EACF,OAAO,EAET,GAAa,QAATA,EACF,OAAOw4D,EAET,IAAIC,EAAWjD,GAAoBxlE,QAAUgQ,EAC7C,OAAIy4D,EAAW,GACK,IAAdA,GAAmBvE,GACb,EAENjB,IAAoD,IAAjCuC,GAAoBxlE,SAAkBiM,KAAKC,IAAI8D,GAAQ,EACrE,EAEFw4D,EAELC,EAAWD,EACTC,IAAaD,EAAW,GAAKtE,GACvB,EAENjB,GAAmBh3D,KAAKC,IAAI8D,GAAQ,EAC/Bw4D,EAEF,EAEFC,CACT,CACiCC,GAAgBx6C,GAOjD,GANA+4C,GAAoB,CAClBpvC,MAAOqwC,EACPf,OAAQA,EACRjnC,MAAOA,IAGLshC,GAAyB,UAATxxD,EAClB,IAAmB,IAAfk4D,EACF78B,GAASrrC,QAAQ3B,MAAQ+sC,OACpB,CACL,IAAIpB,EAASk3B,GAAeC,GAAgB+G,IAC5C78B,GAASrrC,QAAQ3B,MAAQ2rC,EAIX,IADFA,EAAOn3B,cAAchP,QAAQunC,GAAWv4B,gBACjCu4B,GAAWttC,OAAS,GACrCutC,GAASrrC,QAAQ2oE,kBAAkBv9B,GAAWttC,OAAQksC,EAAOlsC,OAEjE,CApDF,CAsDF,IACI8qE,GAAuB,eAAkB,WAC3C,GAAKhC,GAAL,CAGA,IAAIiC,EAAYpG,GAAWpkE,GAAM,GAAKA,GAEtC,GAA+B,IAA3B8iE,GAAgBrjE,QAA6B,MAAb+qE,GAMpC,GAAK7D,GAAWhlE,QAIhB,GAAKqjE,GAAsC,MAAbwF,EAuB1BrD,GAAoBxlE,SAAWmhE,GAAgBrjE,OAAS,EAC1DmpE,GAAoB,CAClBpvC,MAAOspC,GAAgBrjE,OAAS,IAKpCmpE,GAAoB,CAClBpvC,MAAO2tC,GAAoBxlE,cA/B7B,CACE,IAAI8oE,EAAgB3H,GAAgBqE,GAAoBxlE,SAExD,GAAIyiE,IAAYqG,IAER,IAFyBtI,EAAUniE,IAAO,SAAUuF,GAC1D,OAAO+/D,EAAkBmF,EAAellE,EAC1C,IACE,OAEF,IAAImlE,EAAYvI,EAAUW,IAAiB,SAAU6H,GACnD,OAAOrF,EAAkBqF,EAAYH,EACvC,KACmB,IAAfE,EACFhB,GAAuB,CACrB/3D,KAAM,UAGRi3D,GAAoB,CAClBpvC,MAAOkxC,GAIb,OA9BEhB,GAAuB,CACrB/3D,KAAM,SALV,CA+CF,GAAG,CAGwB,IAA3BmxD,GAAgBrjE,QAGhB2kE,IAAmBpkE,GAAOglE,EAAuB0E,GAAwBd,GAAqBL,GAAWx7B,GAAYq3B,KACjHwG,IAAmB,EAAA5C,EAAA,IAAiB,SAAUnkB,IAChD,EAAAgnB,EAAA,GAAOlE,GAAY9iB,GACdA,GAGL0mB,IACF,IACA,aAAgB,WACdA,IACF,GAAG,CAACA,KACJ,IAAIO,GAAa,SAAoBjpC,GAC/BuY,KAGJiuB,IAAa,GACTnC,IACFA,GAAOrkC,GAEX,EACIkpC,GAAc,SAAqBlpC,EAAOinC,GACvC1uB,KAGLiuB,IAAa,GACTluB,IACFA,GAAQtY,EAAOinC,GAEnB,EACIkC,GAAc,SAAqBnpC,EAAOjC,EAAUkpC,EAAQmC,GAC1DjrE,KAAU4/B,IAGVoE,IACFA,GAASnC,EAAOjC,EAAUkpC,EAAQmC,GAEpC71B,GAASxV,GACX,EACIsrC,GAAU,UAAa,GACvBC,GAAiB,SAAwBtpC,EAAO8J,GAClD,IACIy/B,EAASvlE,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,UAC7EijE,EAFajjE,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,gBAGjF+5B,EAAW+L,EACf,GAAIy4B,GAAU,CAE+B,IAQvCsG,EAAYvI,EAThBviC,EAAW97B,MAAMwB,QAAQtF,IAASA,GAAM4D,QAAU,IASd,SAAU4mE,GAC5C,OAAOlF,EAAkB35B,EAAQ6+B,EACnC,KACmB,IAAfE,EACF9qC,EAAShgC,KAAK+rC,GACM,aAAXy/B,IACTxrC,EAASyrC,OAAOX,EAAW,GAC3B5B,EAAS,gBAEb,CACAf,GAAgBlmC,EAAOjC,GACvBorC,GAAYnpC,EAAOjC,EAAUkpC,EAAQ,CACnCn9B,OAAQA,IAEL64B,GACHuG,GAAYlpC,EAAOinC,KAEA,IAAjBrF,GAA0C,UAAjBA,GAA4ByH,GAAQvpE,SAA4B,UAAjB8hE,IAA6ByH,GAAQvpE,UAC/GqrC,GAASrrC,QAAQk+D,MAErB,EAoBA,IAAIyL,GAAiB,SAAwBzpC,EAAOhS,GAClD,GAAKu0C,GAAL,CAGA2G,GAAYlpC,EAAO,eACnB,IAAI0pC,EAAUvE,IACM,IAAhBA,GACiB,KAAfj6B,IAAmC,aAAdld,IACvB07C,EAAUvrE,GAAMP,OAAS,KAG3B8rE,GAAyB,SAAd17C,EAAuB,GAAK,GACzB,IACZ07C,EAAU,GAERA,IAAYvrE,GAAMP,SACpB8rE,GAAW,IAGfA,EAtCF,SAAuB/xC,EAAO3J,GAC5B,IAAe,IAAX2J,EACF,OAAQ,EAGV,IADA,IAAIswC,EAAYtwC,IACH,CAEX,GAAkB,SAAd3J,GAAwBi6C,IAAc9pE,GAAMP,QAAwB,aAAdowB,IAA2C,IAAfi6C,EACpF,OAAQ,EAEV,IAAIn+B,EAASk7B,GAAS8B,cAAc,oBAAqB3kE,OAAO8lE,EAAW,OAE3E,IAAIn+B,GAAYA,EAAOs+B,aAAa,cAAet+B,EAAO3F,UAAqD,SAAzC2F,EAAOq+B,aAAa,iBAGxF,OAAOF,EAFPA,GAA2B,SAAdj6C,EAAuB,GAAK,CAI7C,CACF,CAoBY27C,CAAcD,EAAS17C,GACjCo3C,GAAcsE,GACd9C,GAAS8C,EAlBT,CAmBF,EACIE,GAAc,SAAqB5pC,GACrC4kC,GAAY9kE,SAAU,EACtBgmE,GAAc,IACV1B,IACFA,GAAcpkC,EAAO,GAAI,SAE3BmpC,GAAYnpC,EAAOuiC,GAAW,GAAK,KAAM,QAC3C,EACIsH,GAAgB,SAAuBvgD,GACzC,OAAO,SAAU0W,GAKf,QAJoB,IAAhBmlC,KAAyE,IAApD,CAAC,YAAa,cAAcxhE,QAAQq8B,EAAM78B,OACjEiiE,IAAe,GACfwB,IAAU,IAEJ5mC,EAAM78B,KACZ,IAAK,OACCujE,IAAa9C,IAEf5jC,EAAM6V,iBACNgyB,GAAuB,CACrB/3D,KAAM,QACNke,UAAW,OACXi5C,OAAQ,WACRjnC,MAAOA,KAGX,MACF,IAAK,MACC0mC,IAAa9C,IAEf5jC,EAAM6V,iBACNgyB,GAAuB,CACrB/3D,KAAM,MACNke,UAAW,WACXi5C,OAAQ,WACRjnC,MAAOA,KAGX,MACF,IAAK,SAEHA,EAAM6V,iBACNgyB,GAAuB,CACrB/3D,MArhBG,EAshBHke,UAAW,WACXi5C,OAAQ,WACRjnC,MAAOA,IAETipC,GAAWjpC,GACX,MACF,IAAK,WAEHA,EAAM6V,iBACNgyB,GAAuB,CACrB/3D,KAhiBG,EAiiBHke,UAAW,OACXi5C,OAAQ,WACRjnC,MAAOA,IAETipC,GAAWjpC,GACX,MACF,IAAK,YAEHA,EAAM6V,iBACNgyB,GAAuB,CACrB/3D,KAAM,EACNke,UAAW,OACXi5C,OAAQ,WACRjnC,MAAOA,IAETipC,GAAWjpC,GACX,MACF,IAAK,UAEHA,EAAM6V,iBACNgyB,GAAuB,CACrB/3D,MAAO,EACPke,UAAW,WACXi5C,OAAQ,WACRjnC,MAAOA,IAETipC,GAAWjpC,GACX,MACF,IAAK,YACHypC,GAAezpC,EAAO,YACtB,MACF,IAAK,aACHypC,GAAezpC,EAAO,QACtB,MACF,IAAK,QAEH,GAAoB,MAAhBA,EAAM8pC,MACR,MAEF,IAAqC,IAAjCxE,GAAoBxlE,SAAkB4mE,GAAW,CACnD,IAAI58B,EAASm3B,GAAgBqE,GAAoBxlE,SAC7CqkC,IAAWk/B,GAAoBA,EAAkBv5B,GAGrD,GADA9J,EAAM6V,iBACF1R,EACF,OAEFmlC,GAAetpC,EAAO8J,EAAQ,iBAE1Bw3B,GACFn2B,GAASrrC,QAAQ2oE,kBAAkBt9B,GAASrrC,QAAQ3B,MAAMP,OAAQutC,GAASrrC,QAAQ3B,MAAMP,OAE7F,MAAWmkE,GAA2B,KAAf72B,KAAmD,IAA9Bu7B,KACtClE,IAEFviC,EAAM6V,iBAERyzB,GAAetpC,EAAOkL,GAAY,gBAAiB,aAErD,MACF,IAAK,SACCw7B,IAEF1mC,EAAM6V,iBAEN7V,EAAM+8B,kBACNmM,GAAYlpC,EAAO,WACViiC,IAAiC,KAAf/2B,IAAqBq3B,IAAYpkE,GAAMP,OAAS,KAE3EoiC,EAAM6V,iBAEN7V,EAAM+8B,kBACN6M,GAAY5pC,IAEd,MACF,IAAK,YACH,GAAIuiC,IAA2B,KAAfr3B,IAAqB/sC,GAAMP,OAAS,EAAG,CACrD,IAAI+5B,GAAwB,IAAhBwtC,GAAoBhnE,GAAMP,OAAS,EAAIunE,GAC/CpnC,EAAW5/B,GAAM4D,QACrBg8B,EAASyrC,OAAO7xC,EAAO,GACvBwxC,GAAYnpC,EAAOjC,EAAU,gBAAiB,CAC5C+L,OAAQ3rC,GAAMw5B,IAElB,EAIArO,EAAMizC,WACRjzC,EAAMizC,UAAUv8B,EAEpB,CACF,EACI+pC,GAAc,SAAqB/pC,GACrCimC,IAAW,GACPzB,KAAgBI,GAAY9kE,SAC9BmpE,GAAWjpC,EAEf,EACIgqC,GAAa,SAAoBhqC,GAER,OAAvB8kC,GAAWhlE,SAAoB/C,SAASktE,gBAAkBnF,GAAWhlE,QAAQunE,eAIjFpB,IAAW,GACXpB,GAAW/kE,SAAU,EACrB8kE,GAAY9kE,SAAU,EAClBuiE,GAAwB,KAAfn3B,KAGTw2B,IAA+C,IAAjC4D,GAAoBxlE,SAAkB4mE,GACtD4C,GAAetpC,EAAOihC,GAAgBqE,GAAoBxlE,SAAU,QAC3D4hE,GAAcK,GAA2B,KAAf72B,GACnCo+B,GAAetpC,EAAOkL,GAAY,OAAQ,YACjC42B,GACToE,GAAgBlmC,EAAO7hC,IAEzB+qE,GAAYlpC,EAAO,UAhBjBmL,GAASrrC,QAAQinC,OAiBrB,EACImjC,GAAoB,SAA2BlqC,GACjD,IAAIjC,EAAWiC,EAAMC,OAAO9hC,MACxB+sC,KAAenN,IACjB+nC,GAAc/nC,GACVqmC,IACFA,GAAcpkC,EAAOjC,EAAU,UAGlB,KAAbA,EACG0kC,GAAqBF,IACxB4G,GAAYnpC,EAAO,KAAM,SAG3BipC,GAAWjpC,EAEf,EACImqC,GAAwB,SAA+BnqC,GACzD+mC,GAAoB,CAClB/mC,MAAOA,EACPrI,MAAOmF,OAAOkD,EAAM+9B,cAAcoK,aAAa,sBAC/ClB,OAAQ,SAEZ,EACImD,GAAyB,WAC3Bf,GAAQvpE,SAAU,CACpB,EACIuqE,GAAoB,SAA2BrqC,GACjD,IAAIrI,EAAQmF,OAAOkD,EAAM+9B,cAAcoK,aAAa,sBACpDmB,GAAetpC,EAAOihC,GAAgBtpC,GAAQ,iBAC9C0xC,GAAQvpE,SAAU,CACpB,EACIwqE,GAAkB,SAAyB3yC,GAC7C,OAAO,SAAUqI,GACf,IAAIjC,EAAW5/B,GAAM4D,QACrBg8B,EAASyrC,OAAO7xC,EAAO,GACvBwxC,GAAYnpC,EAAOjC,EAAU,gBAAiB,CAC5C+L,OAAQ3rC,GAAMw5B,IAElB,CACF,EACI4yC,GAAuB,SAA8BvqC,GACnDuY,GACF2wB,GAAYlpC,EAAO,eAEnBipC,GAAWjpC,EAEf,EAEIwqC,GAAkB,SAAyBxqC,GACzCA,EAAMC,OAAOkoC,aAAa,QAAUrE,IACtC9jC,EAAM6V,gBAEV,EAEI40B,GAAc,WAChBt/B,GAASrrC,QAAQinC,QACb29B,IAAiBG,GAAW/kE,SAAWqrC,GAASrrC,QAAQ4qE,aAAev/B,GAASrrC,QAAQ6qE,gBAAmB,GAC7Gx/B,GAASrrC,QAAQknC,SAEnB69B,GAAW/kE,SAAU,CACvB,EACI8qE,GAAuB,SAA8B5qC,GACpC,KAAfkL,IAAsBqN,IACxBgyB,GAAqBvqC,EAEzB,EACI6qC,GAAQ9I,GAAY72B,GAAWttC,OAAS,EAC5CitE,GAAQA,KAAUtI,GAAWpkE,GAAMP,OAAS,EAAc,OAAVO,IAChD,IAAI2sE,GAAiB7J,GACrB,GAAIyC,EAAS,CAEG,IAAI5kB,IAElBgsB,GAAiB7J,GAAgB9iC,QAAO,SAAU4sC,EAAKjhC,EAAQnS,GAC7D,IAAIqzC,EAAQtH,EAAQ55B,GAkBpB,OAjBIihC,EAAIntE,OAAS,GAAKmtE,EAAIA,EAAIntE,OAAS,GAAGotE,QAAUA,EAClDD,EAAIA,EAAIntE,OAAS,GAAGiB,QAAQd,KAAK+rC,GASjCihC,EAAIhtE,KAAK,CACPoF,IAAKw0B,EACLA,MAAOA,EACPqzC,MAAOA,EACPnsE,QAAS,CAACirC,KAGPihC,CACT,GAAG,GACL,CACA,MAAO,CACLE,aAAc,WACZ,IAAI3hD,EAAQtlB,UAAUpG,OAAS,QAAsBU,IAAjB0F,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACjF,OAAO,OAAS,CACd,YAAa0iE,GAAY,GAAGvkE,OAAO2hE,GAAI,UAAY,KACnDtG,KAAM,WACN,gBAAiBkJ,IAChBp9C,EAAO,CACRizC,UAAWsN,GAAcvgD,GACzB4hD,YAAaV,GACb3xB,QAAS4xB,IAEb,EACAU,mBAAoB,WAClB,MAAO,CACLrH,GAAI,GAAG3hE,OAAO2hE,GAAI,UAClBsH,QAAStH,GAEb,EACAuH,cAAe,WACb,MAAO,CACLvH,GAAIA,GACJ3lE,MAAO+sC,GACPhJ,OAAQ8nC,GACRsB,QAASvB,GACT5nC,SAAU+nC,GACVgB,YAAaN,GAGb,wBAAyBlE,GAAY,GAAK,KAC1C,oBAAqBpF,EAAe,OAAS,OAC7C,gBAAiBoF,GAAY,GAAGvkE,OAAO2hE,GAAI,UAAY,KAGvDxC,aAAc,MACd7hE,IAAK0rC,GACLogC,eAAgB,OAChBC,WAAY,QAEhB,EACAC,cAAe,WACb,MAAO,CACL3N,UAAW,EACXjlB,QAAS+wB,GAEb,EACA8B,uBAAwB,WACtB,MAAO,CACL5N,UAAW,EACXjlB,QAAS0xB,GAEb,EACAoB,YAAa,SAAqBz2B,GAChC,IAAIvd,EAAQud,EAAMvd,MAClB,MAAO,CACLx0B,IAAKw0B,EACL,iBAAkBA,EAClBmmC,UAAW,EACXxB,SAAUgO,GAAgB3yC,GAE9B,EACAi0C,gBAAiB,WACf,MAAO,CACLpO,KAAM,UACNsG,GAAI,GAAG3hE,OAAO2hE,GAAI,UAClB,kBAAmB,GAAG3hE,OAAO2hE,GAAI,UACjCrkE,IAAKspE,GACLmC,YAAa,SAAqBlrC,GAEhCA,EAAM6V,gBACR,EAEJ,EACAg2B,eAAgB,SAAwBC,GACtC,IAAIn0C,EAAQm0C,EAAMn0C,MAChBmS,EAASgiC,EAAMhiC,OACbiJ,GAAYwvB,GAAWpkE,GAAQ,CAACA,KAAQ0F,MAAK,SAAU8iE,GACzD,OAAiB,MAAVA,GAAkBlD,EAAkB35B,EAAQ68B,EACrD,IACIxiC,IAAWk/B,GAAoBA,EAAkBv5B,GACrD,MAAO,CACL3mC,IAAKw0B,EACLmmC,UAAW,EACXN,KAAM,SACNsG,GAAI,GAAG3hE,OAAO2hE,GAAI,YAAY3hE,OAAOw1B,GACrCsjB,YAAakvB,GACbtxB,QAASwxB,GACT0B,aAAc3B,GACd,oBAAqBzyC,EACrB,gBAAiBwM,EACjB,gBAAiB4O,EAErB,EACA+wB,GAAIA,GACJ54B,WAAYA,GACZ/sC,MAAOA,GACP0sE,MAAOA,GACPnE,UAAWA,GACXV,QAASA,KAA2B,IAAhBb,GACpBH,SAAUA,GACVC,YAAaA,GACbE,WAAYA,GACZ2F,eAAgBA,GAEpB,CChrBA,SAASkB,EAAchoC,GAENA,EAAMghC,SACZhhC,EAAMuU,KADf,IAEEjvB,GAAQ,OAAyB0a,EAAO,CAAC,WAAY,SACvD,OAAoB,gBAAoB,MAAO1a,EACjD,CACA,IAAI+uB,EAAoB,gBAAoBW,EAAW,CACrD8hB,SAAU,UAERnsB,EAAqB,gBAAoBs9B,EAAmB,MAC5DC,GAA4B,cAAiB,SAAsBloC,EAAOvkC,GAElDukC,EAAMs9B,aAEPt9B,EAAMw9B,cAETx9B,EAAM09B,WAEJ19B,EAAM49B,aAN9B,IA+HIuK,EAvHFC,EAAYpoC,EAAMooC,UAClB7Y,EAAUvvB,EAAMuvB,QAChB3a,EAAY5U,EAAM4U,UAClBipB,EAAqB79B,EAAM89B,YAI3BuK,QAHqC,IAAvBxK,GAAiC79B,EAAM+9B,SAC9B/9B,EAAMi+B,cAEVj+B,EAAMsoC,WACzBA,OAAiC,IAArBD,EAA8B,QAAUA,EACpDE,EAAmBvoC,EAAMwoC,UACzBA,OAAiC,IAArBD,EAA8Bl0B,EAAOk0B,EACjDE,EAAmBzoC,EAAM0oC,UACzBA,OAAiC,IAArBD,EAA8B,QAAUA,EAGpDnK,GAFet+B,EAAMq+B,MAECr+B,EAAMzC,cAE5BihC,QADuC,IAAxBF,GAAiCt+B,EAAMu+B,SAC9Bv+B,EAAMy+B,kBAC9BA,OAA6C,IAA1BD,GAA2CA,EAG9DrG,GAFwBn4B,EAAM2+B,qBAEZ3+B,EAAMG,UACxBA,OAA+B,IAApBg4B,GAAqCA,EAKhDwQ,GAJwB3oC,EAAM6+B,uBAEN7+B,EAAM++B,gBAEP/+B,EAAM4oC,eAC7BA,OAAyC,IAAzBD,GAA0CA,EAI1DE,GAHgB7oC,EAAMi/B,cACEj/B,EAAMm/B,sBAENn/B,EAAM8oC,gBAC9BA,OAA2C,IAA1BD,EAAmC,OAASA,EAC7DzJ,EAAkBp/B,EAAM+9B,SACxBA,OAA+B,IAApBqB,GAAqCA,EAChD2J,EAAmB/oC,EAAMgpC,UACzBA,OAAiC,IAArBD,GAAsCA,EAClDE,EAAwBjpC,EAAMkpC,iBAC9BA,OAA6C,IAA1BD,EAAmC,SAAUE,GAC9D,MAAO,IAAIhrE,OAAOgrE,EACpB,EAAIF,EAEJ3J,GADoBt/B,EAAMq/B,kBACFr/B,EAAMg9B,gBAC9BA,OAA2C,IAA1BsC,EAAmC,SAAUzlE,GAC5D,OAAOA,CACT,EAAIylE,EAEJI,GADoB1/B,EAAMy/B,kBAChBz/B,EAAM0/B,SAChBC,EAAwB3/B,EAAM4/B,kBAM9BwJ,QAL8C,IAA1BzJ,GAAoC3/B,EAAM+9B,SACrD/9B,EAAM8/B,GACS9/B,EAAMggC,mBAEbhgC,EAAMkH,WACJlH,EAAMqpC,WACzBA,OAAiC,IAArBD,GAA+B,EAAIA,EAC/CE,EAAwBtpC,EAAMupC,iBAC9BA,OAA6C,IAA1BD,EAAmC,KAAOA,EAC7DE,EAAexpC,EAAMwpC,aACrBC,EAAiBzpC,EAAM1kC,QACvBA,OAA6B,IAAnBmuE,GAAoCA,EAC9CC,EAAqB1pC,EAAM2pC,YAC3BA,OAAqC,IAAvBD,EAAgC,WAAaA,EAC3DxJ,GAAkBlgC,EAAMu+B,SACxBA,QAA+B,IAApB2B,IAAqCA,GAChD0J,GAAuB5pC,EAAM6pC,cAC7BA,QAAyC,IAAzBD,GAAkC,aAAeA,GASjEE,IARW9pC,EAAM7B,SACP6B,EAAMsU,QACItU,EAAMmgC,kBACVngC,EAAMogC,cACbpgC,EAAMqgC,OACRrgC,EAAMuU,KACQvU,EAAMwgC,YAETxgC,EAAM+pC,UACxBA,QAA+B,IAApBD,GAA6B,OAASA,GAEjDE,IADUhqC,EAAMnlC,QACQmlC,EAAMiqC,gBAC9BA,QAA2C,IAA1BD,GAAmCE,EAAA,EAAQF,GAC5DG,GAAwBnqC,EAAMoqC,gBAC9BC,QAAgD,IAA1BF,GAAmCG,EAAA,EAASH,GAClEI,GAAmBvqC,EAAMwqC,UACzBA,QAAiC,IAArBD,GAA8B5/B,EAAQ4/B,GAClDE,GAAkBzqC,EAAM0qC,YACxBC,GAAc3qC,EAAM2qC,YACpBC,GAAmB5qC,EAAM6qC,aACzBC,GAAa9qC,EAAM8qC,WACnBrK,GAAuBzgC,EAAM0gC,cAE7BjI,SADyC,IAAzBgI,IAAmCzgC,EAAM+9B,SAC3C/9B,EAAMvlC,MACpBA,QAAuB,IAAhBg+D,GAAyB,SAAWA,GAE3CnzC,IADY0a,EAAM7lC,OACV,OAAyB6lC,EAAO,CAAC,eAAgB,gBAAiB,aAAc,eAAgB,YAAa,UAAW,YAAa,cAAe,gBAAiB,YAAa,YAAa,YAAa,QAAS,eAAgB,mBAAoB,uBAAwB,WAAY,yBAA0B,kBAAmB,gBAAiB,gBAAiB,wBAAyB,iBAAkB,WAAY,YAAa,mBAAoB,oBAAqB,iBAAkB,oBAAqB,UAAW,oBAAqB,KAAM,qBAAsB,aAAc,YAAa,mBAAoB,eAAgB,UAAW,cAAe,WAAY,gBAAiB,WAAY,UAAW,oBAAqB,gBAAiB,SAAU,OAAQ,cAAe,WAAY,UAAW,iBAAkB,kBAAmB,YAAa,cAAe,cAAe,eAAgB,aAAc,gBAAiB,OAAQ,WAGp7BoqC,GAAkBxB,EAAgBZ,EAAgBqC,GAClDU,GAAmB3N,GAAgB,OAAS,CAAC,EAAGp9B,EAAO,CACvDm+B,cAAe,kBAEjB8I,GAAe8D,GAAiB9D,aAChCI,GAAgB0D,GAAiB1D,cACjCF,GAAqB4D,GAAiB5D,mBACtCO,GAAyBqD,GAAiBrD,uBAC1CD,GAAgBsD,GAAiBtD,cACjCE,GAAcoD,GAAiBpD,YAC/BC,GAAkBmD,GAAiBnD,gBACnCC,GAAiBkD,GAAiBlD,eAClC1tE,GAAQ4wE,GAAiB5wE,MACzB0sE,GAAQkE,GAAiBlE,MACzB/G,GAAKiL,GAAiBjL,GACtB4C,GAAYqI,GAAiBrI,UAC7BV,GAAU+I,GAAiB/I,QAC3Bb,GAAa4J,GAAiB5J,WAC9BH,GAAW+J,GAAiB/J,SAC5BC,GAAc8J,GAAiB9J,YAC/B/5B,GAAa6jC,GAAiB7jC,WAC9B4/B,GAAiBiE,GAAiBjE,eAEpC,GAAIvI,IAAYpkE,GAAMP,OAAS,EAAG,CAChC,IAAIoxE,GAAwB,SAA+BC,GACzD,OAAO,OAAS,CACdr2B,WAAW,OAAK2a,EAAQ2b,IAAc,UAATzwE,IAAoB80D,EAAQ4b,cACzDhrC,SAAUA,GACTwnC,GAAYsD,GACjB,EAEE9C,EADE2C,GACeA,GAAW3wE,GAAO6wE,IAElB7wE,GAAM6G,KAAI,SAAU8kC,EAAQnS,GAC3C,OAAoB,gBAAoB,GAAM,OAAS,CACrD87B,MAAOuN,EAAel3B,GACtBrrC,KAAMA,IACLuwE,GAAsB,CACvBr3C,MAAOA,IACLy0C,GACN,GAEJ,CACA,GAAIiB,GAAa,GAAKprE,MAAMwB,QAAQ0oE,GAAiB,CACnD,IAAIgB,GAAOhB,EAAevuE,OAASyvE,GAC9BrH,IAAWmH,GAAO,IACrBhB,EAAiBA,EAAe3C,OAAO,EAAG6D,IAC3BtvE,KAAmB,gBAAoB,OAAQ,CAC5D66C,UAAW2a,EAAQ2b,IACnB/rE,IAAKgpE,EAAevuE,QACnBsvE,EAAiBC,KAExB,CACA,IAUIuB,GAAcD,IAVO,SAA4BQ,GACnD,OAAoB,gBAAoB,KAAM,CAC5C9rE,IAAK8rE,EAAO9rE,KACE,gBAAoB,EAAe,CACjDy1C,UAAW2a,EAAQ6b,WACnBlb,UAAW,OACV+a,EAAOjE,OAAqB,gBAAoB,KAAM,CACvDpyB,UAAW2a,EAAQ8b,SAClBJ,EAAOK,UACZ,EAEIT,GAAeD,IAAoB5N,EACnCuO,GAAmB,SAA0BzlC,EAAQnS,GACvD,IAAI63C,EAAc3D,GAAe,CAC/B/hC,OAAQA,EACRnS,MAAOA,IAET,OAAoB,gBAAoB,MAAM,OAAS,CAAC,EAAG63C,EAAa,CACtE52B,UAAW2a,EAAQzpB,SACjB+kC,GAAa/kC,EAAQ,CACvBiJ,SAAUy8B,EAAY,iBACtBtkC,WAAYA,KAEhB,EACIukC,IAAgBhN,IAAqBt+B,EACrCurC,KAAiB3N,IAA+B,IAAnB+K,KAA+C,IAAnBA,EAC7D,OAAoB,gBAAoB,WAAgB,KAAmB,gBAAoB,OAAO,OAAS,CAC7GrtE,IAAKA,EACLm5C,WAAW,OAAK2a,EAAQQ,KAAMnb,EAAWotB,IAAWzS,EAAQyS,QAASgH,GAAazZ,EAAQyZ,UAAWyC,IAAgBlc,EAAQkc,aAAcC,IAAgBnc,EAAQmc,eAClKzE,GAAa3hD,KAASqlD,GAAY,CACnC7K,GAAIA,GACJ3/B,SAAUA,EACV6oC,WAAW,EACXvuE,KAAe,UAATA,GAAmB,aAAUH,EACnCqxE,gBAAiBxE,KACjByE,WAAY,CACVnwE,IAAKwlE,GACLrsB,UAAW2a,EAAQsc,UACnB1D,eAAgBA,EAChB2D,aAA2B,gBAAoB,MAAO,CACpDl3B,UAAW2a,EAAQuc,cAClBL,GAA4B,gBAAoBM,EAAA,GAAY,OAAS,CAAC,EAAGtE,KAAiB,CAC3F,aAAca,EACdlzB,MAAOkzB,EACP1zB,WAAW,OAAK2a,EAAQyc,eAAgBnF,IAAStX,EAAQ0c,uBACvDzD,GAAa,KAAMkD,GAA4B,gBAAoBK,EAAA,GAAY,OAAS,CAAC,EAAGrE,KAA0B,CACxHvnC,SAAUA,EACV,aAAcuiC,GAAYgG,EAAYqB,GACtC30B,MAAOstB,GAAYgG,EAAYqB,GAC/Bn1B,WAAW,OAAK2a,EAAQ2c,eAAgBxJ,IAAanT,EAAQ4c,sBAC3D3B,IAAa,OAEnB4B,YAAY,OAAS,CACnBx3B,WAAW,OAAK2a,EAAQjxD,OAAuB,IAAhB6iE,IAAqB5R,EAAQ8c,cAC5DlsC,SAAUA,GACTknC,SACA3E,IAAa1B,GAAwB,gBAAoBoJ,GAAiB,CAC7Ex1B,WAAW,OAAK2a,EAAQ+c,OAAQ1D,GAAiBrZ,EAAQgd,qBACzDh3B,MAAO,CACLylB,MAAOgG,GAAWA,GAASwL,YAAc,MAE3ChT,KAAM,eACNwH,SAAUA,GACVzsB,MAAM,GACQ,gBAAoB01B,GAAgB,CAClDr1B,UAAW2a,EAAQkd,OAClBnxE,GAAqC,IAA1BwrE,GAAeltE,OAA4B,gBAAoB,MAAO,CAClFg7C,UAAW2a,EAAQj0D,SAClBquE,GAAe,KAAgC,IAA1B7C,GAAeltE,QAAiBmkE,GAAaziE,EAEjD,KAFwE,gBAAoB,MAAO,CACrHs5C,UAAW2a,EAAQmd,WAClB7C,IAAuB/C,GAAeltE,OAAS,EAAiB,gBAAoB2vE,GAAkB,OAAS,CAChH30B,UAAW2a,EAAQod,SAClB/E,KAAmB4B,GAAe1C,GAAe9lE,KAAI,SAAU8kC,EAAQnS,GACxE,OAAI+rC,EACKgL,GAAY,CACjBvrE,IAAK2mC,EAAO3mC,IACZ6nE,MAAOlhC,EAAOkhC,MACdsE,SAAUxlC,EAAOjrC,QAAQmG,KAAI,SAAU4rE,EAASC,GAC9C,OAAOtB,GAAiBqB,EAAS9mC,EAAOnS,MAAQk5C,EAClD,MAGGtB,GAAiBzlC,EAAQnS,EAClC,KAAM,OAAS,KACjB,IAEA,IAAe,EAAAw8B,EAAA,IA3dK,SAAgBC,GAClC,IAAI0c,EACJ,MAAO,CAEL/c,KAAM,CACJ,iCAAkC,CAChCgd,WAAY,WAGd,yBAA0B,CACxB,+BAAgC,CAC9BA,WAAY,aAKlB/D,UAAW,CACThO,MAAO,QAGTgH,QAAS,CAAC,EAEVkJ,IAAK,CACH5V,OAAQ,EACR/D,SAAU,oBAGZ4Z,aAAc,CACZ7V,OAAQ,EACR/D,SAAU,oBAGZma,aAAc,CAAC,EAEfD,aAAc,CAAC,EAEfI,UAAW,CACTmB,SAAU,OACV,mCAAoC,CAClC3V,aAAc,IAEhB,+BAAgC,CAC9BA,aAAc,IAEhB,WAAY,CACV2D,MAAO,EACPiS,SAAU,IAEZ,4BAA6B,CAC3BC,cAAe,EACf,WAAY,CACVpS,QAAS,GAEX,uBAAwB,CACtBA,QAAS,UAGb,2DAA4D,CAC1D,WAAY,CACVA,QAAS,eAEX,uBAAwB,CACtBA,QAAS,cAGb,oCAAqC,CACnCA,QAAS,EACT,mCAAoC,CAClCzD,aAAc,IAEhB,+BAAgC,CAC9BA,aAAc,IAEhB,WAAY,CACVyD,QAAS,aAEX,uBAAwB,CACtB1D,YAAa,GAEf,kBAAmB,CACjBp5D,MAAO,IAGX,2EAA4E,CAC1E88D,QAAS,EACT,WAAY,CACVA,QAAS,cAGb,kCAAmC,CACjCqS,WAAY,GACZ/V,YAAa,EACb,mCAAoC,CAClCC,aAAc,IAEhB,+BAAgC,CAC9BA,aAAc,IAEhB,WAAY,CACVyD,QAAS,WAEX,kBAAmB,CACjB98D,MAAO,IAGX,uEAAwE,CACtEkvE,cAAe,EACf,WAAY,CACVpS,QAAS,eAKfx8D,MAAO,CACL8uE,SAAU,EACVpR,aAAc,WACd5kB,QAAS,GAGXi1B,aAAc,CACZj1B,QAAS,GAGX00B,aAAc,CAEZ9zB,SAAU,WACVh6C,MAAO,EACPs5D,IAAK,oBAIP0U,eAAgB,CACdrb,aAAc,EACdmK,QAAS,EACTiS,WAAY,UAGdd,oBAAqB,CAAC,EAEtBC,eAAgB,CACdpR,QAAS,EACTnK,aAAc,GAGhBwb,mBAAoB,CAClB90B,UAAW,kBAGbi1B,OAAQ,CACN/U,OAAQnH,EAAMmH,OAAO8V,OAGvBd,oBAAqB,CACnBv0B,SAAU,YAGZy0B,OAAO,OAAS,CAAC,EAAGrc,EAAMuG,WAAW2W,MAAO,CAC1CrrE,SAAU,SACVqzD,OAAQ,UAGVqX,QAAS,CACPnW,UAAW,OACXlB,OAAQ,EACRwF,QAAS,QACTyS,UAAW,OACXtrE,SAAU,QAGZ3G,QAAS,CACPg8C,MAAO8Y,EAAMY,QAAQjc,KAAK0hB,UAC1BqE,QAAS,aAGX4R,UAAW,CACTp1B,MAAO8Y,EAAMY,QAAQjc,KAAK0hB,UAC1BqE,QAAS,aAGXh1B,QAASgnC,EAAU,CACjBU,UAAW,GACXnd,QAAS,OACT+J,eAAgB,aAChB9J,WAAY,SACZC,OAAQ,UACR4c,WAAY,EACZ7W,UAAW,aACXqE,QAAS,IACTlK,wBAAyB,cACzByc,cAAe,EACf9V,YAAa,GACbC,aAAc,KACb,OAAgByV,EAAS1c,EAAMqd,YAAYC,GAAG,MAAO,CACtDF,UAAW,UACT,OAAgBV,EAAS,0BAA2B,CACtDv1B,gBAAiB6Y,EAAMY,QAAQvtB,OAAOsL,YACpC,OAAgB+9B,EAAS,uBAAwB,CACnDv1B,gBAAiB6Y,EAAMY,QAAQvtB,OAAOkqC,SACpC,OAAgBb,EAAS,WAAY,CACvCv1B,gBAAiB6Y,EAAMY,QAAQvtB,OAAOsL,YACpC,OAAgB+9B,EAAS,0BAA2B,CACtD11B,QAASgZ,EAAMY,QAAQvtB,OAAOmqC,gBAC9B7S,cAAe,SACb+R,GAEJ1B,WAAY,CACV7zB,gBAAiB6Y,EAAMY,QAAQ6c,WAAWpB,MAC1CnV,KAAM,GAGR+T,QAAS,CACPvQ,QAAS,EACT,YAAa,CACX1D,YAAa,KAIrB,GAkQkC,CAChC1+D,KAAM,mBADR,CAEGwvE,ICtbH,OA3CK7zB,IAAmC,IAAlC,QAAEzV,EAAO,SAAEqW,EAAQ,MAAE94C,GAAOk4C,EAChC,MAAM,EAACa,EAAQ,EAAC44B,IAAcj3B,EAAAA,EAAAA,UAA8C,IAAIiE,MAC1E,EAACjgD,EAAQ,EAACkzE,IAAcl3B,EAAAA,EAAAA,UAAmB,IAOjD,OALAya,EAAAA,EAAAA,YAAU,KACRwc,EAAW,IAAIhzB,IAAI7F,EAASC,QAAQl0C,KAAIvC,GAAK,CAACA,EAAEtE,MAAOsE,OACvDsvE,EAAW94B,EAASC,QAAQl0C,KAAI8hB,GAAKA,EAAE3oB,QAAO,GAC7C,CAAC86C,EAASC,UAGXR,EAAAA,cAAC7Q,EAAAA,GAAU,CACTjF,QAASA,EACTlmC,KAAMu8C,EAASv8C,KACforC,OAAQ6G,IAAA,IAAG/W,OAAO,SAAEuK,EAAQ,OAAED,EAAM,MAAE/jC,EAAK,IAAEsB,IAAYkvC,EAAA,OACvD+J,EAAAA,cAAA,OAAKE,UAAU,wBACbF,EAAAA,cAACS,EAAAA,EAAU,KAAEF,EAASG,OACtBV,EAAAA,cAACwzB,GAAY,CACXrtE,QAASA,EAAQ8U,OACjB4uD,UAAQ,EACRpkE,MAAOA,EACPgkC,SAAUA,CAAC6vC,EAAG3c,KACZlzB,EAASkzB,EAAErwD,KAAI8hB,GAAKA,IAAG,EAEzBq8C,uBAAqB,EACrBjhC,OAAQA,EACR8+B,eAAiBl3B,IAAc,IAAAmoC,EAAA,OAAwB,QAAnBA,EAAA/4B,EAAQ/7C,IAAI2sC,UAAO,IAAAmoC,OAAA,EAAnBA,EAAqBl5B,OAAQ,EAAE,EACnE41B,YAAcM,GACZv2B,EAAAA,cAACw5B,EAAAA,EAAStyE,OAAAC,OAAA,GACJovE,EAAM,CACV3N,aAAa,MACbnhE,MAAOA,EACPq5D,YAAYr5D,aAAK,EAALA,EAAO1D,OAAQw8C,EAASQ,YACpC4f,QAAQ,WACRzuB,UAAWzsC,GAA2B,KAAlBA,aAAK,EAALA,EAAOP,aAI7B,GAEI,wBC3Bdu0E,GAAyB,cAAiB,SAAmBnuC,EAAOvkC,GACtE,IAAI8zD,EAAUvvB,EAAMuvB,QAClB3a,EAAY5U,EAAM4U,UAClBw5B,EAAapuC,EAAMquC,IACnBA,OAAqB,IAAfD,GAAgCA,EACtC9oD,GAAQ,OAAyB0a,EAAO,CAAC,UAAW,YAAa,QACnE,OAAoB,gBAAoB,OAAO,OAAS,CACtD4U,WAAW,OAAK2a,EAAQQ,KAAMnb,EAAWy5B,GAAO9e,EAAQ8e,KACxD5yE,IAAKA,GACJ6pB,GACL,IAEA,IAAe,EAAA6qC,EAAA,GA9BK,CAElBJ,KAAM,CACJM,QAAS,OACTQ,cAAe,SACfmc,SAAU,QAGZqB,IAAK,CACHxd,cAAe,QAqBe,CAChCn4D,KAAM,gBADR,CAEGy1E,IC5BH,OAJwB,kBCqDxB,GAjD8B,cAAiB,SAAoBnuC,EAAOvkC,GACxE,IAAI6yE,EAAUtuC,EAAMsuC,QAClBhD,EAAWtrC,EAAMsrC,SACjBiD,EAAWvuC,EAAMtnC,KACjBioE,EAAY3gC,EAAM7lC,MAClBgkC,EAAW6B,EAAM7B,SACjB7Y,GAAQ,OAAyB0a,EAAO,CAAC,UAAW,WAAY,OAAQ,QAAS,aAC/EwuC,EAAU,SAAa,MACvBjN,GAAiB,EAAAC,EAAA,GAAc,CAC/BC,WAAYd,EACZe,QAAS1hC,EAAMzC,aACf7kC,KAAM,eAERipE,GAAkB,OAAeJ,EAAgB,GACjDpnE,EAAQwnE,EAAgB,GACxBpyB,EAAWoyB,EAAgB,GAC7B,sBAA0B2M,GAAS,WACjC,MAAO,CACLvrC,MAAO,WACL,IAAIzkC,EAAQkwE,EAAQ1yE,QAAQgnE,cAAc,gCACrCxkE,IACHA,EAAQkwE,EAAQ1yE,QAAQgnE,cAAc,yBAEpCxkE,GACFA,EAAMykC,OAEV,EAEJ,GAAG,IACH,IAAI61B,GAAY,EAAAC,EAAA,GAAWp9D,EAAK+yE,GAO5B91E,GAAO,OAAM61E,GACjB,OAAoB,gBAAoB,GAAkBE,SAAU,CAClEt0E,MAAO,CACLzB,KAAMA,EACNylC,SAVe,SAAsBnC,GACvCuT,EAASvT,EAAMC,OAAO9hC,OAClBgkC,GACFA,EAASnC,EAAOA,EAAMC,OAAO9hC,MAEjC,EAMIA,MAAOA,IAEK,gBAAoB,IAAW,OAAS,CACtDq/D,KAAM,aACN/9D,IAAKm9D,GACJtzC,GAAQgmD,GACb,eClDA,IAAe,EAAA9T,EAAA,GAA4B,gBAAoB,OAAQ,CACrExsD,EAAG,iIACD,wBCFJ,IAAe,EAAAwsD,EAAA,GAA4B,gBAAoB,OAAQ,CACrExsD,EAAG,gLACD,sBCwCJ,QAAe,EAAAmlD,EAAA,IA3CK,SAAgBC,GAClC,MAAO,CACLL,KAAM,CACJ/X,SAAU,WACVqY,QAAS,OACT,mBAAoB,CAClBhZ,UAAW,WACXojB,WAAYrK,EAAMsK,YAAYzgC,OAAO,YAAa,CAChDy0C,OAAQte,EAAMsK,YAAYgU,OAAOC,QACjCxoD,SAAUiqC,EAAMsK,YAAYv0C,SAASyoD,aAI3CC,MAAO,CACL/wE,KAAM,EACNk6C,SAAU,WACVX,UAAW,WACXojB,WAAYrK,EAAMsK,YAAYzgC,OAAO,YAAa,CAChDy0C,OAAQte,EAAMsK,YAAYgU,OAAOI,OACjC3oD,SAAUiqC,EAAMsK,YAAYv0C,SAASyoD,YAGzC1yC,QAAS,CAAC,EAEd,GAmBkC,CAChCxjC,KAAM,0BADR,EAdA,SAAyBsnC,GACvB,IAAI9D,EAAU8D,EAAM9D,QAClBqzB,EAAUvvB,EAAMuvB,QAChBuH,EAAW92B,EAAM82B,SACnB,OAAoB,gBAAoB,MAAO,CAC7CliB,WAAW,OAAK2a,EAAQQ,KAAM7zB,GAAWqzB,EAAQrzB,UACnC,gBAAoB6yC,GAA0B,CAC5DjY,SAAUA,IACK,gBAAoBkY,GAAwB,CAC3DlY,SAAUA,EACVliB,UAAW2a,EAAQsf,QAEvB,eClCO,IA4CHI,GAAkC,gBAAoB,GAAiB,CACzE/yC,SAAS,IAEPgzC,GAA2B,gBAAoB,GAAiB,MAChEC,GAAqB,cAAiB,SAAenvC,EAAOvkC,GAC9D,IAAI2zE,EAAcpvC,EAAM9D,QACtBqzB,EAAUvvB,EAAMuvB,QAChBoG,EAAe31B,EAAMsX,MACrBA,OAAyB,IAAjBqe,EAA0B,YAAcA,EAChD4Y,EAAWvuC,EAAMtnC,KACjB22E,EAAervC,EAAM7B,SACrBs6B,EAAcz4B,EAAMvlC,KACpBA,OAAuB,IAAhBg+D,EAAyB,SAAWA,EAC3CnzC,GAAQ,OAAyB0a,EAAO,CAAC,UAAW,UAAW,QAAS,OAAQ,WAAY,SAC1FsvC,ECnEG,aAAiB,IDoEpBpzC,EAAUkzC,EACVjxC,GAAW,EAAAoxC,GAAA,GAAsBF,EAAcC,GAAcA,EAAWnxC,UACxEzlC,EAAO61E,EASX,OARIe,SACqB,IAAZpzC,IACTA,EAAUozC,EAAWn1E,QAAU6lC,EAAM7lC,YAEnB,IAATzB,IACTA,EAAO42E,EAAW52E,OAGF,gBAAoB82E,GAAA,GAAY,OAAS,CAC3Dl4B,MAAOA,EACP7+C,KAAM,QACN4/D,KAAmB,eAAmB6W,GAAa,CACjDpY,SAAmB,UAATr8D,EAAmB,QAAU,WAEzCg1E,YAA0B,eAAmBR,GAAoB,CAC/DnY,SAAmB,UAATr8D,EAAmB,QAAU,WAEzC80D,QAAS,CACPQ,MAAM,OAAKR,EAAQQ,KAAMR,EAAQ,QAAQpxD,QAAO,EAAA6xD,EAAA,GAAW1Y,MAC3Dpb,QAASqzB,EAAQrzB,QACjBiE,SAAUovB,EAAQpvB,UAEpBznC,KAAMA,EACNwjC,QAASA,EACTiC,SAAUA,EACV1iC,IAAKA,GACJ6pB,GACL,IAEA,IAAe,EAAA6qC,EAAA,IA3FK,SAAgBC,GAClC,MAAO,CAELL,KAAM,CACJzY,MAAO8Y,EAAMY,QAAQjc,KAAK0hB,WAG5Bv6B,QAAS,CAAC,EAEViE,SAAU,CAAC,EAEX62B,aAAc,CACZ,YAAa,CACX1f,MAAO8Y,EAAMY,QAAQiG,QAAQC,KAC7B,UAAW,CACT3f,iBAAiB,QAAM6Y,EAAMY,QAAQiG,QAAQC,KAAM9G,EAAMY,QAAQvtB,OAAOk4B,cAExE,uBAAwB,CACtBpkB,gBAAiB,iBAIvB,aAAc,CACZD,MAAO8Y,EAAMY,QAAQvtB,OAAOtD,WAIhCg7B,eAAgB,CACd,YAAa,CACX7jB,MAAO8Y,EAAMY,QAAQyF,UAAUS,KAC/B,UAAW,CACT3f,iBAAiB,QAAM6Y,EAAMY,QAAQyF,UAAUS,KAAM9G,EAAMY,QAAQvtB,OAAOk4B,cAE1E,uBAAwB,CACtBpkB,gBAAiB,iBAIvB,aAAc,CACZD,MAAO8Y,EAAMY,QAAQvtB,OAAOtD,WAIpC,GAgDkC,CAChCznC,KAAM,YADR,CAEGy2E,IEnEH,OA7BK96B,IAAmC,IAAlC,QAAEzV,EAAO,SAAEqW,EAAQ,MAAE96C,GAAOk6C,EAChC,OACEK,EAAAA,cAAC7Q,EAAAA,GAAU,CACTjF,QAASA,EACTlmC,KAAMu8C,EAASv8C,KACf6kC,aAAa,GACbuG,OAAQ6G,IAAA,IAAG/W,OAAO,SAAEuK,EAAQ,OAAED,EAAM,MAAE/jC,IAAcwwC,EAAA,OAClD+J,EAAAA,cAACg7B,GAAAA,EAAW,KACVh7B,EAAAA,cAACsgB,EAAAA,EAAS,CAACpuB,SAAkC,SAAxBqO,EAASI,WAAuB6a,UAAU,SAAS3a,MAAO,CAAEC,aAAc,IAC5FP,EAASG,OAEZV,EAAAA,cAACY,GAAAA,EAAc,CAACC,MAAO,CAAEC,aAAc,SAAWP,EAASQ,aAC3Df,EAAAA,cAACi7B,GAAU,CAACj3E,KAAMu8C,EAASv8C,KAAMyB,MAAOA,EAAOgkC,SAAUA,EAAUD,OAAQA,EAAQqX,MAAO,CAAEC,aAAc,SACvGP,EAASC,QAAQl0C,KAAI,CAACk1C,EAAQC,IAC7BzB,EAAAA,cAAC4a,EAAgB,CACfn1D,MAAO+7C,EAAO/7C,MACdykC,QAAS8V,EAAAA,cAACy6B,GAAK,CAACvoC,UAAWzsC,GAAmB,KAAVA,IACpCgF,IAAM,GAAE+2C,EAAO/7C,SAASg8C,IACxBsZ,MAAOvZ,EAAOnB,KACdr8C,KAAMw9C,EAAOnB,UAIP,GAEhB,wBCIN,OA7BKV,IAAmC,IAAlC,QAAEzV,EAAO,SAAEqW,EAAQ,MAAE94C,GAAOk4C,EAChC,OACEK,EAAAA,cAAC7Q,EAAAA,GAAU,CACTjF,QAASA,EACTlmC,KAAMu8C,EAASv8C,KACfyD,QAASA,EACTq5D,WAAYr5D,aAAK,EAALA,EAAO1D,KACnBuwE,WAAS,EACTllC,OAAQ6G,IAAA,IAAG/W,OAAO,SAAEuK,EAAQ,OAAED,EAAM,MAAE/jC,EAAK,IAAEsB,IAAYkvC,EAAA,OACvD+J,EAAAA,cAACg7B,GAAAA,EAAW,KACVh7B,EAAAA,cAACsgB,EAAAA,EAAS,CAACpuB,SAAkC,SAAxBqO,EAASI,WAAuB6a,UAAU,SAAS3a,MAAO,CAAEC,aAAc,IAC5FP,EAASG,OAEZV,EAAAA,cAACY,GAAAA,EAAc,CAACC,MAAO,CAAEC,aAAc,SAAWP,EAASQ,aAC3Df,EAAAA,cAACk7B,GAAAA,EAAK,CACJhpC,SAAkC,SAAxBqO,EAASI,WACnBw6B,YAAa56B,EAASG,MACtBlX,OAAQA,EACRC,SAAUA,EACVhkC,MAAOA,EACP1B,KAAMw8C,EAAS66B,YAAc76B,EAAS66B,WAAW,GAAK76B,EAAS66B,WAAW,GAAGr3E,KAAO,OACpF88C,MAAO,CAAEC,aAAc,UAEb,GAEhB,aCvBC,MAAMu6B,GAAeA,CAC1B96B,EACAkB,EACA5G,EACA3Q,EACAjiC,EACAxC,KAEA,OAAQ86C,EAASx8C,MACf,IAAK,gBACH,OACEi8C,EAAAA,cAAA,MAAIE,UAAWW,GAAAA,GAAoBp2C,IAAKg3C,EAAMlB,EAASv8C,MACpDu8C,EAASG,OAGhB,IAAK,WACH,MAAsB,cAAlBH,EAASv8C,KACJg8C,EAAAA,cAACs7B,GAAgB,CAAC/6B,SAAUA,EAAU94C,MAAOQ,EAAOs4C,EAASv8C,MAAOyG,IAAK,KAAO81C,EAASv8C,KAAMkmC,QAASA,IAE1G8V,EAAAA,cAACu7B,GAAAA,EAAQ,CAACh7B,SAAUA,EAAU91C,IAAK,IAAM81C,EAASv8C,KAAMkmC,QAASA,IAC1E,IAAK,aACH,OACE8V,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACw7B,GAAO,CAACj7B,SAAUA,EAAU91C,IAAK,IAAM81C,EAASv8C,KAAMkmC,QAASA,EAASzkC,MAAOA,KAItF,IAAK,WACH,OACEu6C,EAAAA,cAACy7B,EAAU,CACTl7B,SAAUA,EACV91C,IAAK81C,EAASv8C,KACdkmC,QAASA,EACTT,SAAU9xB,IACRiiC,YAAW,KACTiB,EAAS0F,EAASv8C,KAAM2T,EAAG,CAAC,EAAE,GAC9B,IAKV,IAAK,OACH,OAAOqoC,EAAAA,cAAC07B,EAAM,CAACn7B,SAAUA,EAAU91C,IAAK,IAAM81C,EAASv8C,KAAMkmC,QAASA,IAExE,IAAK,OACH,OAAO8V,EAAAA,cAAC27B,GAAM,CAACp7B,SAAUA,EAAUrW,QAASA,EAASziC,MAAOQ,EAAOs4C,EAASv8C,MAAOyG,IAAK,IAAM81C,EAASv8C,OAI3G,6FCzDK,MAAM43E,GAAYC,EAAAA,EAAAA,IAAW,KAClCC,EAAAA,EAAAA,GAAa,CACXzgB,KAAM,CACJ,uBAAwB,CACtB,gBAAiB,qBAEnB,8BAA+B,CAC7BuF,OAAQ,YAEV,uBAAwB,CACtBwB,SAAU,WACVxf,MAAO,kBACPF,QAAS,MACT,cAAe,gCACf,gBAAiB,QAEnB,oBAAqB,CACnBy2B,WAAY,OACZ/W,SAAU,OACVxf,MAAO,OACP,cAAe,gCACf,cAAe,UAEjB,8BAA+B,CAC7B,gBAAiB,kBAEnB,+BAAgC,CAC9B,gBAAiB,iBACjBF,QAAS,OAEX,yBAA0B,CACxB4jB,MAAO,OACP,cAAe,gCACf1F,OAAQ,OAEV,+BAAgC,CAC9B,cAAe,gCACfwB,SAAU,QAEZ,4CAA6C,CAC3C2Z,KAAM,OACNr5B,QAAS,IAEX,oDAAqD,CACnD,YAAa,QAEf,kCAAmC,CACjC0jB,QAAS,QAEX,yCAA0C,CACxCxjB,MAAO,mwCCpCf,MAAMo5B,OAAyCr8B,OAAsB,IAADs8B,sBAAAC,uBAAAC,uBAAAC,uBAAAC,uBAAAC,uBAAAC,uBAAAC,uBAAAC,uBAAAC,wBAAAC,wBAAAC,wBAAA,IAApB,YAAEC,aAAal9B,KAC7D,MAAMzmB,KAAO2jD,YAAY3jD,KACnB2hC,SAAU+gB,EAAAA,yCAAAA,MACV,EAACkB,YAAY,EAACC,iBAAkB56B,EAAAA,mCAAAA,UAAS,IACzC,EAAC66B,gBAAgB,EAACC,qBAAsB96B,EAAAA,mCAAAA,aACxC,EAAC+6B,SAAS,EAACC,cAAeh7B,EAAAA,mCAAAA,UAAc,KACxC,EAACi7B,eAAe,EAACC,oBAAqBl7B,EAAAA,mCAAAA,UAAmC,KACzE,EAACm7B,UAAU,EAACC,eAAgBp7B,EAAAA,mCAAAA,UAA0B,KACtD,EAACq7B,oBAAoB,EAACC,yBAA0Bt7B,EAAAA,mCAAAA,aAChD,QACJjY,QAAO,aACP6S,aAAY,SACZlC,SAAQ,UACRV,UACAlQ,WAAW,OAAEhiC,QAAQ,QACrByyC,QAAO,SACP7M,WACEwR,EAAAA,8CAAAA,OACE,EAACQ,KAAK,EAAC69B,UAAWv7B,EAAAA,mCAAAA,WAAS,IAC3B,EAAChV,UAAU,EAACwwC,eAAgBx7B,EAAAA,mCAAAA,WAAS,IACrC,EAACy7B,kBAAmBz7B,EAAAA,mCAAAA,UAAS,IAC7B,EAAC07B,mBAAmB,EAACC,wBAAyB37B,EAAAA,mCAAAA,UAAc,KAC5D,EAAC47B,kBAAkB,EAACC,uBAAwB77B,EAAAA,mCAAAA,aAC5C,EAAC87B,QAAQ,EAACC,aAAc/7B,EAAAA,mCAAAA,WAAS,GAEjCg8B,aAAetB,YAAYuB,MAAM34C,QAAO,CAAC4sC,EAAUgM,IAAI,GAAA50E,QAAA60E,EAAAA,2EAAAA,GAASjM,IAAGiM,EAAAA,2EAAAA,GAAKD,EAAKE,YAAW,KAEvFC,iEAAkEv4E,EAAAA,6CAAAA,IACvEqzD,EAAAA,6CAAAA,IAAa,iEAAkE6kB,gBAE1EM,2DAA4Dx4E,EAAAA,6CAAAA,IACjEqzD,EAAAA,6CAAAA,IAAa,2DAA4D6kB,gBAEpEO,mDAAoDz4E,EAAAA,6CAAAA,IACzDqzD,EAAAA,6CAAAA,IAAa,mDAAoD6kB,gBAE5DQ,yDAA0D14E,EAAAA,6CAAAA,IAC/DqzD,EAAAA,6CAAAA,IAAa,yDAA0D6kB,gBAElES,yDAA0D34E,EAAAA,6CAAAA,IAC/DqzD,EAAAA,6CAAAA,IAAa,yDAA0D6kB,gBAElEU,iEAAkE54E,EAAAA,6CAAAA,IACvEqzD,EAAAA,6CAAAA,IAAa,iEAAkE6kB,gBAE1EW,iEAAkE74E,EAAAA,6CAAAA,IACvEqzD,EAAAA,6CAAAA,IAAa,iEAAkE6kB,gBAE1EY,2DAA4D94E,EAAAA,6CAAAA,IACjEqzD,EAAAA,6CAAAA,IAAa,2DAA4D6kB,gBAEpEa,iFAAkF/4E,EAAAA,6CAAAA,IACvFqzD,EAAAA,6CAAAA,IAAa,iFAAkF6kB,eAG3Fh2E,QAAWF,IACf6I,QAAQmuE,IAAIh3E,EAAO,EAMfi3E,WAAaA,CAACC,EAA0Bz3E,KAC5C,MAAM03E,EAAiB,CACrB,MAAOC,CAACzzE,EAAQC,IAAWD,IAAMC,EACjC,MAAOyzE,CAAC1zE,EAAQC,IAAWD,IAAMC,EACjC,IAAK0zE,CAAC3zE,EAAWC,IAAcD,EAAIC,EACnC,IAAK2zE,CAAC5zE,EAAWC,IAAcD,EAAIC,EACnC,KAAM4zE,CAAC7zE,EAAWC,IAAcD,GAAKC,EACrC,KAAM6zE,CAAC9zE,EAAWC,IAAcD,GAAKC,GAevC,OAA0D,KAZnCszE,aAAU,EAAVA,EAAY15C,QAAO,CAAC4sC,EAAgBsN,KACzD,MAAMC,GACJD,aAAY,EAAZA,EAAcl6C,QAAO,CAACo6C,EAAazxD,KACb,IAAhByxD,IAGJA,EAAcT,EAAUhxD,EAAE0xD,UAAUp4E,EAAK0mB,EAAE3jB,KAAM2jB,EAAE3oB,UAElD,MAAU,EAEf,OADA4sE,EAAG,GAAA5oE,QAAA60E,EAAAA,2EAAAA,GAAOjM,GAAG,CAAEuN,GACL,GACT,KACmBrpD,QAAOnI,IAAW,IAANA,IAAalpB,MAAY,EAGvDwkC,SAAYhiC,OAGhB,GAFAgzC,UACAqlC,SAAS,EAAG,GACRzC,UAAW,CAAC,IAAD0C,cACb,MAAMjiC,KAAO,IAAKq/B,kBAAmB11E,MACrC21E,kBAAkBt/B,MACN,QAAZiiC,cAAAC,oBAAY,IAAAD,eAAZA,cAAcE,QAAQ,mBAAoB9yB,KAAKznB,UAAUoY,OAEzD,MAAMohC,WAA2BgB,KAAKtD,YAAYuD,kBAElD,GAAIlB,WAAWC,WAAYz3E,MACzBg2E,SAAQ,OACH,CACL,MAAMvrC,EAAYmrC,UAAUp4E,OAAS,EACjC43E,YAAc3qC,GAAW4qC,eAAeD,YAAc,GACtDA,cAAgB3qC,GAAW6rC,qBAAqBjgC,KACtD,CACF,GAGIyyB,YAAexlE,IACnB0yE,SAAQ,GACJ1yE,IACFq1E,EAAAA,oCAAAA,IAAU,IAAEnnD,KAAO,IAAMA,KAAO,KAClC,EAGIonD,YAAcA,KAClBn4C,OAAO43C,SAAS,EAAG,EAAE,GAIvBnjB,EAAAA,mCAAAA,YAAU,KACR,MAAM2jB,EAAY1D,YAAYuB,MAAM7nD,QACjC8nD,GAAyC,4DAAdA,EAAKr6E,OACjC,GACIw8E,EAAY3D,YAAYuB,MAAM7nD,QACjC8nD,GAAyC,4DAAdA,EAAKr6E,OAEnCu5E,aAAaiD,GACb/C,uBAAuB8C,EAAU,GAChC,CAAC1D,eAGJjgB,EAAAA,mCAAAA,YAAU,KACR,GAAsB,oBAAXz0B,OAAwB,CACjC,MAAMouC,EAASkK,0CAAAA,MAAkB78B,SAAShc,QAC1C,GAAIq4C,aAAc,CAChB,MAAMS,EAAWtzB,KAAKvoB,MAAMo7C,aAAaU,QAAQ,qBAAuB,MACxEtD,kBAAkBqD,GAClB,IAAK,MAAOj2E,EAAKhF,KAAUyB,OAAOqD,QAAQm2E,GACxC7yC,SAASpjC,GACTowC,SAASpwC,EAAKhF,EAElB,CACI8wE,EAAO5c,MACT9e,SAAS,OAAQ07B,EAAO5c,KAE5B,IACC,KAGHiD,EAAAA,mCAAAA,YAAU,KACR,GAAImhB,kBAEF,GADAJ,cAAa,GACTz2E,OAAOsD,KAAKuzE,mBAAmB74E,OAAS,EAAG,CAC7C,MAAM60D,GAAUU,EAAAA,6CAAAA,IAAcsjB,mBAC9BA,kBAAkB6C,mBAAoB9mB,EAAAA,6CAAAA,IAAwBC,GAC9D,MAAM8mB,EAAczzB,KAAKvoB,MAAMo7C,aAAaU,QAAQ,oBAAsB,MAAMl7E,MAC1ElB,GAAYm1D,EAAAA,6CAAAA,IAAeqkB,kBAAmBA,kBAAkBpkB,KAAMknB,GAEtEC,EAAkBA,KACtBnD,cAAa,GACbsC,aAAac,WAAW,qBACxBV,EAAAA,oCAAAA,KAAYnnD,KAAO,IAAMA,KAAO,IAAtB,8BAAsD,EAElE,OAAQ6kD,kBAAkB6C,mBACxB,IAAK,cACHnC,yDAAyD,CAAEl6E,cAAauD,MAAK,KAC3Eg5E,GAAiB,IAEnB,MACF,IAAK,gBACHtC,+DAA+D,CAAEj6E,cAAauD,MAAK,KACjFg5E,GAAiB,IAEnB,MACF,IAAK,gBACHhC,+DAA+D,CAAEv6E,cAAauD,MAAK,KACjFg5E,GAAiB,IAEnB,MACF,IAAK,gBACHjC,+DAA+D,CAAEt6E,cAAauD,MAAK,KACjFg5E,GAAiB,IAEnB,MACF,IAAK,YACHlC,uDAAuD,CAAEr6E,cAAauD,MAAK,KACzEg5E,GAAiB,IAEnB,MACF,IAAK,SACHpC,iDAAiD,CAAEn6E,cAAauD,MAAK,KACnEg5E,GAAiB,IAEnB,MACF,IAAK,cACH/B,yDAAyD,CAAEx6E,cAAauD,MAAK,KAC3Eg5E,GAAiB,IAEnB,MACF,IAAK,YACHnC,uDAAuD,CAAEp6E,cAAauD,MAAK,KACzEg5E,GAAiB,IAEnB,MACF,IAAK,wBACH9B,+EAA+E,CAAEz6E,cAAauD,MAAK,KACjGg5E,GAAiB,IAIzB,MACEnD,cAAa,IACb0C,EAAAA,oCAAAA,KAAYnnD,KAAO,IAAMA,KAAO,IAAtB,6BAEd,GACC,CAAC6kD,qBAEJnhB,EAAAA,mCAAAA,YAAU,KACJ0gB,WACFL,mBAAmBK,UAAUR,aAC/B,GACC,CAACQ,UAAWR,eAEflgB,EAAAA,mCAAAA,YAAU,KACgB,IAApBghB,iBAAyBZ,kBAIL,IAApBY,iBAAyBZ,iBAC3BG,YAAYH,gBAAgBuB,SAAShoD,QAAQyqD,GAAyB,cAAbA,EAAG1O,SAG1D0K,iBACFc,sBAAsB,GAADr0E,QAAA60E,EAAAA,2EAAAA,GAChBT,oBAAkB,CACrBX,SAASz3C,QAAO,CAACw7C,EAAc1gC,KAC7BA,EAASv8C,KAAQ,GAAEu8C,EAASv8C,QAAQ45E,kBAC9B,GAANn0E,QAAA60E,EAAAA,2EAAAA,GAAW2C,GAAO,CAAE1gC,MACnB,OAEP,GACC,CAACq9B,kBAEJ,MAAMsD,aAAiC,CACrCn9E,KAAM,aACNC,KAAM,OACN08C,OAAOm8B,mBAAuB,QAAZZ,sBAAXY,YAAasE,kBAAU,IAAAlF,2BAAZ,EAAXA,sBAAyBmF,iBAAkB,OAClDzgC,WAAY,OACZI,aAAa87B,mBAAuB,QAAZX,uBAAXW,YAAasE,kBAAU,IAAAjF,4BAAZ,EAAXA,uBAAyBmF,uBAAwB,uCAC9D7gC,QAAS8gC,8CAAAA,GAGX,OACEthC,mCAAAA,cAACuhC,8DAAAA,EAAQ,CACPC,SAAU3E,mBAAuB,QAAZV,uBAAXU,YAAasE,kBAAU,IAAAhF,4BAAZ,EAAXA,uBAAyBsF,QAAQ,GAC3CC,WAAY7E,mBAAuB,QAAZT,uBAAXS,YAAasE,kBAAU,IAAA/E,4BAAZ,EAAXA,uBAAyBuF,UAAU,GAC/CC,sBAAuB,CAAElhC,MAAOm8B,mBAAuB,QAAZR,uBAAXQ,YAAasE,kBAAU,IAAA9E,4BAAZ,EAAXA,uBAAyBwF,mBAAoBC,SAAUjF,mBAAuB,QAAZP,uBAAXO,YAAasE,kBAAU,IAAA7E,4BAAZ,EAAXA,uBAAyByF,mBAChHC,OAAQ,CACNC,cAAepF,uBAAW,EAAXA,YAAasE,WAAWc,cACvCC,mBAAoBrF,uBAAW,EAAXA,YAAasE,WAAWe,mBAC5CC,mBAAoBtF,uBAAW,EAAXA,YAAasE,WAAWgB,qBAG9CniC,mCAAAA,cAACoiC,wDAAAA,EAAG,CAAC1hC,MAAO,kBAAmBK,YAAY,oBAC3Cf,mCAAAA,cAACqiC,0DAAAA,EAAY,CACXxiC,KAAMA,KACND,QAAS4wB,YACT1wB,eAAgB+8B,mBAAuB,QAAZN,uBAAXM,YAAasE,kBAAU,IAAA5E,4BAAZ,EAAXA,uBAAyB+F,QAAQ,GAAGxiC,eACpDC,QAAS88B,mBAAuB,QAAZL,uBAAXK,YAAasE,kBAAU,IAAA3E,4BAAZ,EAAXA,uBAAyB+F,iBAAiB,GAAGt4D,OAExD+1B,mCAAAA,cAAA,OAAKE,UAAWW,gDAAAA,IACdb,mCAAAA,cAAA,OAAKE,UAAWW,gDAAAA,IACdb,mCAAAA,cAAA,MAAIE,UAAWW,gDAAAA,IAAkBm8B,2BAAe,EAAfA,gBAAiBh5E,MACjDi6E,QACCj+B,mCAAAA,cAAAA,mCAAAA,SAAA,KACEA,mCAAAA,cAAA,OACEE,UAAY,UACZsiC,wBAAyB,CACvBC,OAAQ5F,YAAY6F,6BAGxB1iC,mCAAAA,cAAA,OAAKE,UAAWW,gDAAAA,IACdb,mCAAAA,cAAA,UACEE,UAAWW,gDAAAA,GACX98C,KAAK,SACLo8C,QAASA,KACP+9B,YAAW,GACXoC,aAAa,GAEhB,MACIzD,mBAAuB,QAAZJ,uBAAXI,YAAasE,kBAAU,IAAA1E,4BAAZ,EAAXA,uBAAyB8F,iBAAiB,GAAGt4D,OAAQ,UAK9D+1B,mCAAAA,cAAA,QAAMtW,SAAUqT,aAAarT,SAAUvhC,SAAU+3C,UAAW2a,QAAQQ,MACjD,IAAhByhB,aAAqB98B,mCAAAA,cAACu7B,4DAAAA,EAAQ,CAACrxC,QAASA,QAASqW,SAAU2gC,eAC3DlE,2BAAe,EAAfA,gBAAiBuB,SACfhoD,QAAOyqD,IAAOA,EAAG1O,QACjBhmE,KAAI,CAACi0C,EAAUkB,IACP,EAAC45B,EAAAA,2CAAAA,GAAa96B,EAAUkB,EAAK5G,SAAU3Q,QAASjiC,OAAQkyC,UAAUoG,EAASv8C,UAEtFg8C,mCAAAA,cAAA,OAAKE,UAAWW,gDAAAA,IACdb,mCAAAA,cAAA,UACEE,UAAY,GAAEW,gDAAAA,MAAsBA,gDAAAA,MACpC98C,KAAK,SACL0nC,SAAU0B,UACVgT,QAASA,KACPmgC,cACgB,IAAhBxD,YAAoBoB,YAAW,GAAQnB,eAAeD,YAAc,EAAE,GAEzE,MACID,mBAAuB,QAAZH,wBAAXG,YAAasE,kBAAU,IAAAzE,6BAAZ,EAAXA,wBAAyB6F,iBAAiB,GAAG/wC,WAAY,YAE9DwO,mCAAAA,cAAA,UACEE,UAAWW,gDAAAA,GACX98C,KAAK,SACL0nC,SAAU0B,UACVgT,QAASA,IAAM28B,YAAcQ,UAAUp4E,OAAS,GAAKo7E,eAEpDxD,YAAcQ,UAAUp4E,OAAS,EAC7B,MAAI23E,mBAAuB,QAAZF,wBAAXE,YAAasE,kBAAU,IAAAxE,6BAAZ,EAAXA,wBAAyB4F,iBAAiB,GAAGt4D,OAAQ,SACzD,MAAI4yD,mBAAuB,QAAZD,wBAAXC,YAAasE,kBAAU,IAAAvE,6BAAZ,EAAXA,wBAAyB2F,iBAAiB,GAAGI,SAAU,aAGpE3iC,mCAAAA,cAAA,OAAKE,UAAWW,gDAAAA,IACbi8B,YAAc,EAAE,IAAEQ,UAAUp4E,WAM9B,EAIf,+QChWO,IAEI09E,EAAgB,qCAChB7kC,EAAO,2BACP8kC,EAAgB,qCAEhBC,EAAY,iCAEZC,EAAQ,4BACRC,EAAiB,sCACjBC,EAAe,oCACfC,EAAe","sources":["webpack://riot-tournament-eu/./node_modules/@apollo/client/react/parser/index.js","webpack://riot-tournament-eu/./node_modules/@apollo/client/react/hooks/internal/useIsomorphicLayoutEffect.js","webpack://riot-tournament-eu/./node_modules/@apollo/client/react/hooks/useMutation.js","webpack://riot-tournament-eu/./node_modules/@apollo/client/react/hooks/useApolloClient.js","webpack://riot-tournament-eu/./node_modules/decode-uri-component/index.js","webpack://riot-tournament-eu/./node_modules/filter-obj/index.js","webpack://riot-tournament-eu/./node_modules/moment/moment.js","webpack://riot-tournament-eu/./node_modules/query-string/index.js","webpack://riot-tournament-eu/./node_modules/react-hook-form/dist/index.esm.mjs","webpack://riot-tournament-eu/./node_modules/split-on-first/index.js","webpack://riot-tournament-eu/./node_modules/strict-uri-encode/index.js","webpack://riot-tournament-eu/./src/components/form/form-dialog.tsx","webpack://riot-tournament-eu/./src/components/form/form-dialog.module.scss","webpack://riot-tournament-eu/./src/components/form/inputs/select.tsx","webpack://riot-tournament-eu/./src/components/global/global-button/global-button.module.scss","webpack://riot-tournament-eu/./src/components/global/global-button/global-button.tsx","webpack://riot-tournament-eu/./node_modules/graphql/jsutils/devAssert.mjs","webpack://riot-tournament-eu/./node_modules/graphql/jsutils/isObjectLike.mjs","webpack://riot-tournament-eu/./node_modules/graphql/polyfills/symbols.mjs","webpack://riot-tournament-eu/./node_modules/graphql/language/location.mjs","webpack://riot-tournament-eu/./node_modules/graphql/language/printLocation.mjs","webpack://riot-tournament-eu/./node_modules/graphql/error/GraphQLError.mjs","webpack://riot-tournament-eu/./node_modules/graphql/error/syntaxError.mjs","webpack://riot-tournament-eu/./node_modules/graphql/language/tokenKind.mjs","webpack://riot-tournament-eu/./node_modules/graphql/jsutils/instanceOf.mjs","webpack://riot-tournament-eu/./node_modules/graphql/language/source.mjs","webpack://riot-tournament-eu/./node_modules/graphql/language/directiveLocation.mjs","webpack://riot-tournament-eu/./node_modules/graphql/language/lexer.mjs","webpack://riot-tournament-eu/./node_modules/graphql/language/parser.mjs","webpack://riot-tournament-eu/./node_modules/graphql-tag/lib/index.js","webpack://riot-tournament-eu/./src/templates/form/form.constant.ts","webpack://riot-tournament-eu/./src/templates/form/form.mutation.ts","webpack://riot-tournament-eu/./node_modules/@material-ui/core/esm/FormControlLabel/FormControlLabel.js","webpack://riot-tournament-eu/./src/components/form/inputs/checkbox.tsx","webpack://riot-tournament-eu/./node_modules/@date-io/moment/build/index.esm.js","webpack://riot-tournament-eu/./src/components/form/inputs/date.tsx","webpack://riot-tournament-eu/./node_modules/@material-ui/core/esm/ListSubheader/ListSubheader.js","webpack://riot-tournament-eu/./node_modules/@material-ui/core/esm/internal/svg-icons/Cancel.js","webpack://riot-tournament-eu/./node_modules/@material-ui/core/esm/Chip/Chip.js","webpack://riot-tournament-eu/./node_modules/@material-ui/lab/esm/internal/svg-icons/Close.js","webpack://riot-tournament-eu/./node_modules/@material-ui/lab/esm/internal/svg-icons/ArrowDropDown.js","webpack://riot-tournament-eu/./node_modules/@material-ui/lab/esm/useAutocomplete/useAutocomplete.js","webpack://riot-tournament-eu/./node_modules/@material-ui/lab/esm/Autocomplete/Autocomplete.js","webpack://riot-tournament-eu/./src/components/form/inputs/multiple-select.tsx","webpack://riot-tournament-eu/./node_modules/@material-ui/core/esm/FormGroup/FormGroup.js","webpack://riot-tournament-eu/./node_modules/@material-ui/core/esm/RadioGroup/RadioGroupContext.js","webpack://riot-tournament-eu/./node_modules/@material-ui/core/esm/RadioGroup/RadioGroup.js","webpack://riot-tournament-eu/./node_modules/@material-ui/core/esm/internal/svg-icons/RadioButtonUnchecked.js","webpack://riot-tournament-eu/./node_modules/@material-ui/core/esm/internal/svg-icons/RadioButtonChecked.js","webpack://riot-tournament-eu/./node_modules/@material-ui/core/esm/Radio/RadioButtonIcon.js","webpack://riot-tournament-eu/./node_modules/@material-ui/core/esm/Radio/Radio.js","webpack://riot-tournament-eu/./node_modules/@material-ui/core/esm/RadioGroup/useRadioGroup.js","webpack://riot-tournament-eu/./src/components/form/inputs/radio.tsx","webpack://riot-tournament-eu/./src/components/form/inputs/text.tsx","webpack://riot-tournament-eu/./src/templates/form/form.service.tsx","webpack://riot-tournament-eu/./src/templates/form/form.style.ts","webpack://riot-tournament-eu/./src/templates/form/form.tsx","webpack://riot-tournament-eu/./src/templates/form/form.module.scss"],"sourcesContent":["import { invariant } from \"../../utilities/globals/index.js\";\nimport { AutoCleanedWeakCache, cacheSizes } from \"../../utilities/index.js\";\nimport { registerGlobalCache } from \"../../utilities/caching/getMemoryInternals.js\";\nexport var DocumentType;\n(function (DocumentType) {\n DocumentType[DocumentType[\"Query\"] = 0] = \"Query\";\n DocumentType[DocumentType[\"Mutation\"] = 1] = \"Mutation\";\n DocumentType[DocumentType[\"Subscription\"] = 2] = \"Subscription\";\n})(DocumentType || (DocumentType = {}));\nvar cache;\nexport function operationName(type) {\n var name;\n switch (type) {\n case DocumentType.Query:\n name = \"Query\";\n break;\n case DocumentType.Mutation:\n name = \"Mutation\";\n break;\n case DocumentType.Subscription:\n name = \"Subscription\";\n break;\n }\n return name;\n}\n// This parser is mostly used to safety check incoming documents.\nexport function parser(document) {\n if (!cache) {\n cache = new AutoCleanedWeakCache(cacheSizes.parser || 1000 /* defaultCacheSizes.parser */);\n }\n\n var cached = cache.get(document);\n if (cached) return cached;\n var variables, type, name;\n invariant(!!document && !!document.kind, 70, document);\n var fragments = [];\n var queries = [];\n var mutations = [];\n var subscriptions = [];\n for (var _i = 0, _a = document.definitions; _i < _a.length; _i++) {\n var x = _a[_i];\n if (x.kind === \"FragmentDefinition\") {\n fragments.push(x);\n continue;\n }\n if (x.kind === \"OperationDefinition\") {\n switch (x.operation) {\n case \"query\":\n queries.push(x);\n break;\n case \"mutation\":\n mutations.push(x);\n break;\n case \"subscription\":\n subscriptions.push(x);\n break;\n }\n }\n }\n invariant(!fragments.length || queries.length || mutations.length || subscriptions.length, 71);\n invariant(queries.length + mutations.length + subscriptions.length <= 1, 72, document, queries.length, subscriptions.length, mutations.length);\n type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n if (!queries.length && !mutations.length) type = DocumentType.Subscription;\n var definitions = queries.length ? queries : mutations.length ? mutations : subscriptions;\n invariant(definitions.length === 1, 73, document, definitions.length);\n var definition = definitions[0];\n variables = definition.variableDefinitions || [];\n if (definition.name && definition.name.kind === \"Name\") {\n name = definition.name.value;\n } else {\n name = \"data\"; // fallback to using data if no name\n }\n\n var payload = {\n name: name,\n type: type,\n variables: variables\n };\n cache.set(document, payload);\n return payload;\n}\nparser.resetCache = function () {\n cache = undefined;\n};\nif (globalThis.__DEV__ !== false) {\n registerGlobalCache(\"parser\", function () {\n return cache ? cache.size : 0;\n });\n}\nexport function verifyDocumentType(document, type) {\n var operation = parser(document);\n var requiredOperationName = operationName(type);\n var usedOperationName = operationName(operation.type);\n invariant(operation.type === type, 74, requiredOperationName, requiredOperationName, usedOperationName);\n}","import * as React from \"rehackt\";\nimport { canUseDOM } from \"../../../utilities/index.js\";\n// use canUseDOM here instead of canUseLayoutEffect because we want to be able\n// to use useLayoutEffect in our jest tests. useLayoutEffect seems to work fine\n// in useSuspenseQuery tests, but to honor the original comment about the\n// warnings for useSyncExternalStore implementation, canUseLayoutEffect is left\n// alone.\nexport var useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;","import { __assign } from \"tslib\";\nimport * as React from \"rehackt\";\nimport { mergeOptions } from \"../../utilities/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { useIsomorphicLayoutEffect } from \"./internal/useIsomorphicLayoutEffect.js\";\n/**\n *\n *\n * > Refer to the [Mutations](https://www.apollographql.com/docs/react/data/mutations/) section for a more in-depth overview of `useMutation`.\n *\n * @example\n * ```jsx\n * import { gql, useMutation } from '@apollo/client';\n *\n * const ADD_TODO = gql`\n * mutation AddTodo($type: String!) {\n * addTodo(type: $type) {\n * id\n * type\n * }\n * }\n * `;\n *\n * function AddTodo() {\n * let input;\n * const [addTodo, { data }] = useMutation(ADD_TODO);\n *\n * return (\n *
\n * {\n * e.preventDefault();\n * addTodo({ variables: { type: input.value } });\n * input.value = '';\n * }}\n * >\n * {\n * input = node;\n * }}\n * />\n * \n * \n *
\n * );\n * }\n * ```\n * @since 3.0.0\n * @param mutation - A GraphQL mutation document parsed into an AST by `gql`.\n * @param options - Options to control how the mutation is executed.\n * @returns A tuple in the form of `[mutate, result]`\n */\nexport function useMutation(mutation, options) {\n var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);\n verifyDocumentType(mutation, DocumentType.Mutation);\n var _a = React.useState({\n called: false,\n loading: false,\n client: client\n }),\n result = _a[0],\n setResult = _a[1];\n var ref = React.useRef({\n result: result,\n mutationId: 0,\n isMounted: true,\n client: client,\n mutation: mutation,\n options: options\n });\n useIsomorphicLayoutEffect(function () {\n Object.assign(ref.current, {\n client: client,\n options: options,\n mutation: mutation\n });\n });\n var execute = React.useCallback(function (executeOptions) {\n if (executeOptions === void 0) {\n executeOptions = {};\n }\n var _a = ref.current,\n options = _a.options,\n mutation = _a.mutation;\n var baseOptions = __assign(__assign({}, options), {\n mutation: mutation\n });\n var client = executeOptions.client || ref.current.client;\n if (!ref.current.result.loading && !baseOptions.ignoreResults && ref.current.isMounted) {\n setResult(ref.current.result = {\n loading: true,\n error: void 0,\n data: void 0,\n called: true,\n client: client\n });\n }\n var mutationId = ++ref.current.mutationId;\n var clientOptions = mergeOptions(baseOptions, executeOptions);\n return client.mutate(clientOptions).then(function (response) {\n var _a, _b;\n var data = response.data,\n errors = response.errors;\n var error = errors && errors.length > 0 ? new ApolloError({\n graphQLErrors: errors\n }) : void 0;\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (error && onError) {\n onError(error, clientOptions);\n }\n if (mutationId === ref.current.mutationId && !clientOptions.ignoreResults) {\n var result_1 = {\n called: true,\n loading: false,\n data: data,\n error: error,\n client: client\n };\n if (ref.current.isMounted && !equal(ref.current.result, result_1)) {\n setResult(ref.current.result = result_1);\n }\n }\n var onCompleted = executeOptions.onCompleted || ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onCompleted);\n if (!error) {\n onCompleted === null || onCompleted === void 0 ? void 0 : onCompleted(response.data, clientOptions);\n }\n return response;\n }).catch(function (error) {\n var _a;\n if (mutationId === ref.current.mutationId && ref.current.isMounted) {\n var result_2 = {\n loading: false,\n error: error,\n data: void 0,\n called: true,\n client: client\n };\n if (!equal(ref.current.result, result_2)) {\n setResult(ref.current.result = result_2);\n }\n }\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (onError) {\n onError(error, clientOptions);\n // TODO(brian): why are we returning this here???\n return {\n data: void 0,\n errors: error\n };\n }\n throw error;\n });\n }, []);\n var reset = React.useCallback(function () {\n if (ref.current.isMounted) {\n var result_3 = {\n called: false,\n loading: false,\n client: ref.current.client\n };\n Object.assign(ref.current, {\n mutationId: 0,\n result: result_3\n });\n setResult(result_3);\n }\n }, []);\n React.useEffect(function () {\n var current = ref.current;\n current.isMounted = true;\n return function () {\n current.isMounted = false;\n };\n }, []);\n return [execute, __assign({\n reset: reset\n }, result)];\n}","import { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from \"rehackt\";\nimport { getApolloContext } from \"../context/index.js\";\n/**\n * @example\n * ```jsx\n * import { useApolloClient } from '@apollo/client';\n *\n * function SomeComponent() {\n * const client = useApolloClient();\n * // `client` is now set to the `ApolloClient` instance being used by the\n * // application (that was configured using something like `ApolloProvider`)\n * }\n * ```\n *\n * @since 3.0.0\n * @returns The `ApolloClient` instance being used by the application.\n */\nexport function useApolloClient(override) {\n var context = React.useContext(getApolloContext());\n var client = override || context.client;\n invariant(!!client, 58);\n return client;\n}","'use strict';\n\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\nfunction decodeComponents(components, split) {\n try {\n // Try to decode the entire string first\n return [decodeURIComponent(components.join(''))];\n } catch (err) {\n // Do nothing\n }\n if (components.length === 1) {\n return components;\n }\n split = split || 1;\n\n // Split the array in 2 parts\n var left = components.slice(0, split);\n var right = components.slice(split);\n return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\nfunction decode(input) {\n try {\n return decodeURIComponent(input);\n } catch (err) {\n var tokens = input.match(singleMatcher) || [];\n for (var i = 1; i < tokens.length; i++) {\n input = decodeComponents(tokens, i).join('');\n tokens = input.match(singleMatcher) || [];\n }\n return input;\n }\n}\nfunction customDecodeURIComponent(input) {\n // Keep track of all the replacements and prefill the map with the `BOM`\n var replaceMap = {\n '%FE%FF': '\\uFFFD\\uFFFD',\n '%FF%FE': '\\uFFFD\\uFFFD'\n };\n var match = multiMatcher.exec(input);\n while (match) {\n try {\n // Decode as big chunks as possible\n replaceMap[match[0]] = decodeURIComponent(match[0]);\n } catch (err) {\n var result = decode(match[0]);\n if (result !== match[0]) {\n replaceMap[match[0]] = result;\n }\n }\n match = multiMatcher.exec(input);\n }\n\n // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n replaceMap['%C2'] = '\\uFFFD';\n var entries = Object.keys(replaceMap);\n for (var i = 0; i < entries.length; i++) {\n // Replace all decoded components\n var key = entries[i];\n input = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n }\n return input;\n}\nmodule.exports = function (encodedURI) {\n if (typeof encodedURI !== 'string') {\n throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n }\n try {\n encodedURI = encodedURI.replace(/\\+/g, ' ');\n\n // Try the built in decoder first\n return decodeURIComponent(encodedURI);\n } catch (err) {\n // Fallback to a more advanced decoder\n return customDecodeURIComponent(encodedURI);\n }\n};","'use strict';\n\nmodule.exports = function (obj, predicate) {\n var ret = {};\n var keys = Object.keys(obj);\n var isArr = Array.isArray(predicate);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var val = obj[key];\n if (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n ret[key] = val;\n }\n }\n return ret;\n};","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n 'use strict';\n\n var hookCallback;\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n function isUndefined(input) {\n return input === void 0;\n }\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n return a;\n }\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false\n };\n }\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n return false;\n };\n }\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid = flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n if (m._strict) {\n isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [],\n updateInProgress = false;\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n function isMoment(obj) {\n return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n }\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n function deprecate(msg, fn) {\n var firstTime = true;\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n var deprecations = {};\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\n }\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n var keys;\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n };\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n return formatFunctions[format](m);\n }\n function expandFormat(format, locale) {\n var i = 5;\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n return format;\n }\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n };\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n if (format || !formatUpper) {\n return format;\n }\n this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function (tok) {\n if (tok === 'MMMM' || tok === 'MM' || tok === 'DD' || tok === 'dddd') {\n return tok.slice(1);\n }\n return tok;\n }).join('');\n return this._longDateFormat[key];\n }\n var defaultInvalidDate = 'Invalid date';\n function invalidDate() {\n return this._invalidDate;\n }\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n };\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\n }\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year'\n };\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n return normalizedInput;\n }\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1\n };\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({\n unit: u,\n priority: priorities[u]\n });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n var match1 = /\\d/,\n // 0 - 9\n match2 = /\\d\\d/,\n // 00 - 99\n match3 = /\\d{3}/,\n // 000 - 999\n match4 = /\\d{4}/,\n // 0000 - 9999\n match6 = /[+-]?\\d{6}/,\n // -999999 - 999999\n match1to2 = /\\d\\d?/,\n // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/,\n // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/,\n // 99999 - 999999\n match1to3 = /\\d{1,3}/,\n // 0 - 999\n match1to4 = /\\d{1,4}/,\n // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/,\n // -999999 - 999999\n matchUnsigned = /\\d+/,\n // 0 - inf\n matchSigned = /[+-]?\\d+/,\n // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi,\n // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi,\n // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/,\n // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/,\n // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/,\n // 0-99\n regexes;\n regexes = {};\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n return value;\n }\n var tokens = {};\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n var d = mom._d,\n isUTC = mom._isUTC;\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN;\n // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n d = mom._d;\n isUTC = mom._isUTC;\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC ? d.setUTCMilliseconds(value) : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break;\n // See below ...\n default:\n return;\n // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC ? d.setUTCFullYear(year, month, date) : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n function mod(n, x) {\n return (n % x + x) % x;\n }\n var indexOf;\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months) ? this._months : this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n var month = value,\n date = mom.date();\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC ? mom._d.setUTCMonth(month, date) : mom._d.setMonth(month, date));\n return mom;\n }\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;\n }\n }\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n return date;\n }\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n return {\n week: resWeek,\n year: resYear\n };\n }\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n var defaultLocaleWeek = {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n return null;\n }\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n }\n function localeWeekdaysShort(m) {\n return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n function localeWeekdaysMin(m) {\n return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n function kFormat() {\n return this.hours() || 24;\n }\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n week: defaultLocaleWeek,\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && commonPrefix(split, next) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (locales[name] === undefined && typeof module !== 'undefined' && module && module.exports && isLocaleNameSane(name)) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n return globalLocale._abbr;\n }\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n if (!key) {\n return globalLocale;\n }\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n return chooseLocale(key);\n }\n function listLocales() {\n return keys(locales);\n }\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n if (a && getParsingFlags(m).overflow === -2) {\n overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n getParsingFlags(m).overflow = overflow;\n }\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/], ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/], ['YYYYMM', /\\d{6}/, false], ['YYYY', /\\d{4}/, false]],\n // iso time formats and regexes\n isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n return result;\n }\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^()]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n });\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n if (config._d) {\n return;\n }\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n curWeek = weekOfYear(createLocal(), dow, doy);\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n configFromArray(config);\n checkOverflow(config);\n }\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n getParsingFlags(tempConfig).score = currentScore;\n if (!bestFormatIsValid) {\n if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n extend(config, bestMoment || tempConfig);\n }\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map([i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n configFromArray(config);\n }\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n return res;\n }\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n config._locale = config._locale || getLocale(config._l);\n if (input === null || format === undefined && input === '') {\n return createInvalid({\n nullInput: true\n });\n }\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n if (!isValid(config)) {\n config._d = null;\n }\n return config;\n }\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n return createFromConfig(c);\n }\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }),\n prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n });\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isBefore', args);\n }\n function max() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isAfter', args);\n }\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n return true;\n }\n function isValid$1() {\n return this._isValid;\n }\n function createInvalid$1() {\n return createDuration(NaN);\n }\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds + seconds * 1e3 +\n // 1000\n minutes * 6e4 +\n // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n this._data = {};\n this._locale = getLocale();\n this._bubble();\n }\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\n });\n }\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n if (matches === null) {\n return null;\n }\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n this.utcOffset(input, keepLocalTime);\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n return (this.utcOffset() - input) % 60 === 0;\n }\n function isDaylightSavingTime() {\n return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n }\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n var c = {},\n other;\n copyConfig(c, this);\n c = prepareConfig(c);\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n return this._isDSTShifted;\n }\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if (match = aspNetRegex.exec(input)) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (match = isoRegex.exec(input)) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign)\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n ret = new Duration(duration);\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n return ret;\n }\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n function positiveMomentsDifference(base, other) {\n var res = {};\n res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n return res;\n }\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {\n milliseconds: 0,\n months: 0\n };\n }\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val;\n val = period;\n period = tmp;\n }\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n if (!mom.isValid()) {\n // No op\n return;\n }\n updateOffset = updateOffset == null ? true : updateOffset;\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined;\n }\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['years', 'year', 'y', 'months', 'month', 'M', 'days', 'day', 'd', 'dates', 'date', 'D', 'hours', 'hour', 'h', 'minutes', 'minute', 'm', 'seconds', 'second', 's', 'milliseconds', 'millisecond', 'ms'],\n i,\n property,\n propertyLen = properties.length;\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n return objectTest && propertyTest;\n }\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest = input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['sameDay', 'nextDay', 'lastDay', 'nextWeek', 'lastWeek', 'sameElse'],\n i,\n property;\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n return objectTest && propertyTest;\n }\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\n }\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n function clone() {\n return new Moment(this);\n }\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n if (!this.isValid()) {\n return NaN;\n }\n that = cloneWithOffset(input, this);\n if (!that.isValid()) {\n return NaN;\n }\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n units = normalizeUnits(units);\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break;\n // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break;\n // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break;\n // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break;\n // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break;\n // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n return asFloat ? output : absFloor(output);\n }\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n return this.format(prefix + year + datetime + suffix);\n }\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n function from(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n to: this,\n from: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n function to(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n from: this,\n to: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n });\n function localeData() {\n return this._locale;\n }\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n function toDate() {\n return new Date(this.valueOf());\n }\n function toArray() {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n function isValid$2() {\n return isValid(this);\n }\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n return '';\n }\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n return '';\n }\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n return '';\n }\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) {\n return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset;\n }\n }\n return this.year();\n }\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp('^(' + narrowPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.week(), this.weekday() + this.localeData()._week.dow, this.localeData()._week.dow, this.localeData()._week.doy);\n }\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\n });\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n var proto = Moment.prototype;\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n function preParsePostFormat(string) {\n return string;\n }\n var proto$1 = Locale.prototype;\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n }\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n getSetGlobalLocale('en', {\n eras: [{\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC'\n }],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n var mathAbs = Math.abs;\n function abs() {\n var data = this._data;\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n return this;\n }\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n data.days = days;\n data.months = months;\n data.years = years;\n return this;\n }\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n units = normalizeUnits(units);\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n function clone$1() {\n return createDuration(this);\n }\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n function weeks() {\n return absFloor(this.days() / 7);\n }\n var round = Math.round,\n thresholds = {\n ss: 44,\n // a few seconds to seconds\n s: 45,\n // seconds to minute\n m: 45,\n // minutes to hour\n h: 22,\n // hours to day\n d: 26,\n // days to month/week\n w: null,\n // weeks to month\n M: 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days];\n if (thresholds.w != null) {\n a = a || weeks <= 1 && ['w'] || weeks < thresholds.w && ['ww', weeks];\n }\n a = a || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n return locale.postformat(output);\n }\n var abs$1 = Math.abs;\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n return totalSign + 'P' + (years ? ymSign + years + 'Y' : '') + (months ? ymSign + months + 'M' : '') + (days ? daysSign + days + 'D' : '') + (hours || minutes || seconds ? 'T' : '') + (hours ? hmsSign + hours + 'H' : '') + (minutes ? hmsSign + minutes + 'M' : '') + (seconds ? hmsSign + s + 'S' : '');\n }\n var proto$2 = Duration.prototype;\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n setHookCallback(createLocal);\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',\n // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n // \n DATE: 'YYYY-MM-DD',\n // \n TIME: 'HH:mm',\n // \n TIME_SECONDS: 'HH:mm:ss',\n // \n TIME_MS: 'HH:mm:ss.SSS',\n // \n WEEK: 'GGGG-[W]WW',\n // \n MONTH: 'YYYY-MM' // \n };\n\n return hooks;\n});","'use strict';\n\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\nconst isNullOrUndefined = value => value === null || value === undefined;\nfunction encoderForArrayFormat(options) {\n switch (options.arrayFormat) {\n case 'index':\n return key => (result, value) => {\n const index = result.length;\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n if (value === null) {\n return [...result, [encode(key, options), '[', index, ']'].join('')];\n }\n return [...result, [encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')];\n };\n case 'bracket':\n return key => (result, value) => {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n if (value === null) {\n return [...result, [encode(key, options), '[]'].join('')];\n }\n return [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n };\n case 'comma':\n case 'separator':\n return key => (result, value) => {\n if (value === null || value === undefined || value.length === 0) {\n return result;\n }\n if (result.length === 0) {\n return [[encode(key, options), '=', encode(value, options)].join('')];\n }\n return [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n };\n default:\n return key => (result, value) => {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n if (value === null) {\n return [...result, encode(key, options)];\n }\n return [...result, [encode(key, options), '=', encode(value, options)].join('')];\n };\n }\n}\nfunction parserForArrayFormat(options) {\n let result;\n switch (options.arrayFormat) {\n case 'index':\n return (key, value, accumulator) => {\n result = /\\[(\\d*)\\]$/.exec(key);\n key = key.replace(/\\[\\d*\\]$/, '');\n if (!result) {\n accumulator[key] = value;\n return;\n }\n if (accumulator[key] === undefined) {\n accumulator[key] = {};\n }\n accumulator[key][result[1]] = value;\n };\n case 'bracket':\n return (key, value, accumulator) => {\n result = /(\\[\\])$/.exec(key);\n key = key.replace(/\\[\\]$/, '');\n if (!result) {\n accumulator[key] = value;\n return;\n }\n if (accumulator[key] === undefined) {\n accumulator[key] = [value];\n return;\n }\n accumulator[key] = [].concat(accumulator[key], value);\n };\n case 'comma':\n case 'separator':\n return (key, value, accumulator) => {\n const isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n const isEncodedArray = typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator);\n value = isEncodedArray ? decode(value, options) : value;\n const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n accumulator[key] = newValue;\n };\n default:\n return (key, value, accumulator) => {\n if (accumulator[key] === undefined) {\n accumulator[key] = value;\n return;\n }\n accumulator[key] = [].concat(accumulator[key], value);\n };\n }\n}\nfunction validateArrayFormatSeparator(value) {\n if (typeof value !== 'string' || value.length !== 1) {\n throw new TypeError('arrayFormatSeparator must be single character string');\n }\n}\nfunction encode(value, options) {\n if (options.encode) {\n return options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n }\n return value;\n}\nfunction decode(value, options) {\n if (options.decode) {\n return decodeComponent(value);\n }\n return value;\n}\nfunction keysSorter(input) {\n if (Array.isArray(input)) {\n return input.sort();\n }\n if (typeof input === 'object') {\n return keysSorter(Object.keys(input)).sort((a, b) => Number(a) - Number(b)).map(key => input[key]);\n }\n return input;\n}\nfunction removeHash(input) {\n const hashStart = input.indexOf('#');\n if (hashStart !== -1) {\n input = input.slice(0, hashStart);\n }\n return input;\n}\nfunction getHash(url) {\n let hash = '';\n const hashStart = url.indexOf('#');\n if (hashStart !== -1) {\n hash = url.slice(hashStart);\n }\n return hash;\n}\nfunction extract(input) {\n input = removeHash(input);\n const queryStart = input.indexOf('?');\n if (queryStart === -1) {\n return '';\n }\n return input.slice(queryStart + 1);\n}\nfunction parseValue(value, options) {\n if (options.parseNumbers && !Number.isNaN(Number(value)) && typeof value === 'string' && value.trim() !== '') {\n value = Number(value);\n } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n value = value.toLowerCase() === 'true';\n }\n return value;\n}\nfunction parse(query, options) {\n options = Object.assign({\n decode: true,\n sort: true,\n arrayFormat: 'none',\n arrayFormatSeparator: ',',\n parseNumbers: false,\n parseBooleans: false\n }, options);\n validateArrayFormatSeparator(options.arrayFormatSeparator);\n const formatter = parserForArrayFormat(options);\n\n // Create an object with no prototype\n const ret = Object.create(null);\n if (typeof query !== 'string') {\n return ret;\n }\n query = query.trim().replace(/^[?#&]/, '');\n if (!query) {\n return ret;\n }\n for (const param of query.split('&')) {\n if (param === '') {\n continue;\n }\n let [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n // Missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n value = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n formatter(decode(key, options), value, ret);\n }\n for (const key of Object.keys(ret)) {\n const value = ret[key];\n if (typeof value === 'object' && value !== null) {\n for (const k of Object.keys(value)) {\n value[k] = parseValue(value[k], options);\n }\n } else {\n ret[key] = parseValue(value, options);\n }\n }\n if (options.sort === false) {\n return ret;\n }\n return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n const value = ret[key];\n if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n // Sort object keys, not values\n result[key] = keysSorter(value);\n } else {\n result[key] = value;\n }\n return result;\n }, Object.create(null));\n}\nexports.extract = extract;\nexports.parse = parse;\nexports.stringify = (object, options) => {\n if (!object) {\n return '';\n }\n options = Object.assign({\n encode: true,\n strict: true,\n arrayFormat: 'none',\n arrayFormatSeparator: ','\n }, options);\n validateArrayFormatSeparator(options.arrayFormatSeparator);\n const shouldFilter = key => options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === '';\n const formatter = encoderForArrayFormat(options);\n const objectCopy = {};\n for (const key of Object.keys(object)) {\n if (!shouldFilter(key)) {\n objectCopy[key] = object[key];\n }\n }\n const keys = Object.keys(objectCopy);\n if (options.sort !== false) {\n keys.sort(options.sort);\n }\n return keys.map(key => {\n const value = object[key];\n if (value === undefined) {\n return '';\n }\n if (value === null) {\n return encode(key, options);\n }\n if (Array.isArray(value)) {\n return value.reduce(formatter(key), []).join('&');\n }\n return encode(key, options) + '=' + encode(value, options);\n }).filter(x => x.length > 0).join('&');\n};\nexports.parseUrl = (url, options) => {\n options = Object.assign({\n decode: true\n }, options);\n const [url_, hash] = splitOnFirst(url, '#');\n return Object.assign({\n url: url_.split('?')[0] || '',\n query: parse(extract(url), options)\n }, options && options.parseFragmentIdentifier && hash ? {\n fragmentIdentifier: decode(hash, options)\n } : {});\n};\nexports.stringifyUrl = (object, options) => {\n options = Object.assign({\n encode: true,\n strict: true\n }, options);\n const url = removeHash(object.url).split('?')[0] || '';\n const queryFromUrl = exports.extract(object.url);\n const parsedQueryFromUrl = exports.parse(queryFromUrl, {\n sort: false\n });\n const query = Object.assign(parsedQueryFromUrl, object.query);\n let queryString = exports.stringify(query, options);\n if (queryString) {\n queryString = `?${queryString}`;\n }\n let hash = getHash(object.url);\n if (object.fragmentIdentifier) {\n hash = `#${encode(object.fragmentIdentifier, options)}`;\n }\n return `${url}${queryString}${hash}`;\n};\nexports.pick = (input, filter, options) => {\n options = Object.assign({\n parseFragmentIdentifier: true\n }, options);\n const {\n url,\n query,\n fragmentIdentifier\n } = exports.parseUrl(input, options);\n return exports.stringifyUrl({\n url,\n query: filterObject(query, filter),\n fragmentIdentifier\n }, options);\n};\nexports.exclude = (input, filter, options) => {\n const exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n return exports.pick(input, exclusionFilter, options);\n};","import React from 'react';\nvar isCheckBoxInput = element => element.type === 'checkbox';\nvar isDateObject = value => value instanceof Date;\nvar isNullOrUndefined = value => value == null;\nconst isObjectType = value => typeof value === 'object';\nvar isObject = value => !isNullOrUndefined(value) && !Array.isArray(value) && isObjectType(value) && !isDateObject(value);\nvar getEventValue = event => isObject(event) && event.target ? isCheckBoxInput(event.target) ? event.target.checked : event.target.value : event;\nvar getNodeParentName = name => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\nvar isPlainObject = tempObject => {\n const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n return isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf');\n};\nvar isWeb = typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined' && typeof document !== 'undefined';\nfunction cloneObject(data) {\n let copy;\n const isArray = Array.isArray(data);\n const isFileListInstance = typeof FileList !== 'undefined' ? data instanceof FileList : false;\n if (data instanceof Date) {\n copy = new Date(data);\n } else if (data instanceof Set) {\n copy = new Set(data);\n } else if (!(isWeb && (data instanceof Blob || isFileListInstance)) && (isArray || isObject(data))) {\n copy = isArray ? [] : {};\n if (!isArray && !isPlainObject(data)) {\n copy = data;\n } else {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n }\n } else {\n return data;\n }\n return copy;\n}\nvar compact = value => Array.isArray(value) ? value.filter(Boolean) : [];\nvar isUndefined = val => val === undefined;\nvar get = (object, path, defaultValue) => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n const result = compact(path.split(/[,[\\].]+?/)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);\n return isUndefined(result) || result === object ? isUndefined(object[path]) ? defaultValue : object[path] : result;\n};\nvar isBoolean = value => typeof value === 'boolean';\nvar isKey = value => /^\\w*$/.test(value);\nvar stringToPath = input => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\nvar set = (object, path, value) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue = isObject(objValue) || Array.isArray(objValue) ? objValue : !isNaN(+tempPath[index + 1]) ? [] : {};\n }\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n object[key] = newValue;\n object = object[key];\n }\n return object;\n};\nconst EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change'\n};\nconst VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all'\n};\nconst INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate'\n};\nconst HookFormContext = React.createContext(null);\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * \n *
\n * \n * \n * \n *
\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return ;\n * }\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * \n *
\n * \n * \n * \n *
\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return ;\n * }\n * ```\n */\nconst FormProvider = props => {\n const {\n children,\n ...data\n } = props;\n return React.createElement(HookFormContext.Provider, {\n value: data\n }, children);\n};\nvar getProxyFormState = function (formState, control, localProxyFormState) {\n let isRoot = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n const result = {\n defaultValues: control._defaultValues\n };\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key;\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n }\n });\n }\n return result;\n};\nvar isEmptyObject = value => isObject(value) && !Object.keys(value).length;\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n updateFormState(formStateData);\n const {\n name,\n ...formState\n } = formStateData;\n return isEmptyObject(formState) || Object.keys(formState).length >= Object.keys(_proxyFormState).length || Object.keys(formState).find(key => _proxyFormState[key] === (!isRoot || VALIDATION_MODE.all));\n};\nvar convertToArrayPayload = value => Array.isArray(value) ? value : [value];\nvar shouldSubscribeByName = (name, signalName, exact) => !name || !signalName || name === signalName || convertToArrayPayload(name).some(currentName => currentName && (exact ? currentName === signalName : currentName.startsWith(signalName) || signalName.startsWith(currentName)));\nfunction useSubscribe(props) {\n const _props = React.useRef(props);\n _props.current = props;\n React.useEffect(() => {\n const subscription = !props.disabled && _props.current.subject && _props.current.subject.subscribe({\n next: _props.current.next\n });\n return () => {\n subscription && subscription.unsubscribe();\n };\n }, [props.disabled]);\n}\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, control } = useForm({\n * defaultValues: {\n * firstName: \"firstName\"\n * }});\n * const { dirtyFields } = useFormState({\n * control\n * });\n * const onSubmit = (data) => console.log(data);\n *\n * return (\n *
\n * \n * {dirtyFields.firstName &&

Field is dirty.

}\n * \n *
\n * );\n * }\n * ```\n */\nfunction useFormState(props) {\n const methods = useFormContext();\n const {\n control = methods.control,\n disabled,\n name,\n exact\n } = props || {};\n const [formState, updateFormState] = React.useState(control._formState);\n const _mounted = React.useRef(true);\n const _localProxyFormState = React.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false\n });\n const _name = React.useRef(name);\n _name.current = name;\n useSubscribe({\n disabled,\n next: value => _mounted.current && shouldSubscribeByName(_name.current, value.name, exact) && shouldRenderFormState(value, _localProxyFormState.current, control._updateFormState) && updateFormState({\n ...control._formState,\n ...value\n }),\n subject: control._subjects.state\n });\n React.useEffect(() => {\n _mounted.current = true;\n _localProxyFormState.current.isValid && control._updateValid(true);\n return () => {\n _mounted.current = false;\n };\n }, [control]);\n return React.useMemo(() => getProxyFormState(formState, control, _localProxyFormState.current, false), [formState, control]);\n}\nvar isString = value => typeof value === 'string';\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n if (Array.isArray(names)) {\n return names.map(fieldName => (isGlobal && _names.watch.add(fieldName), get(formValues, fieldName)));\n }\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * name: \"fieldName\"\n * control,\n * })\n * ```\n */\nfunction useWatch(props) {\n const methods = useFormContext();\n const {\n control = methods.control,\n name,\n defaultValue,\n disabled,\n exact\n } = props || {};\n const _name = React.useRef(name);\n _name.current = name;\n useSubscribe({\n disabled,\n subject: control._subjects.values,\n next: formState => {\n if (shouldSubscribeByName(_name.current, formState.name, exact)) {\n updateValue(cloneObject(generateWatchOutput(_name.current, control._names, formState.values || control._formValues, false, defaultValue)));\n }\n }\n });\n const [value, updateValue] = React.useState(control._getWatch(name, defaultValue));\n React.useEffect(() => control._removeUnmounted());\n return value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n * const { field, fieldState, formState } = useController(props);\n * return (\n *
\n * \n *

{fieldState.isTouched && \"Touched\"}

\n *

{formState.isSubmitted ? \"submitted\" : \"\"}

\n *
\n * );\n * }\n * ```\n */\nfunction useController(props) {\n const methods = useFormContext();\n const {\n name,\n disabled,\n control = methods.control,\n shouldUnregister\n } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const value = useWatch({\n control,\n name,\n defaultValue: get(control._formValues, name, get(control._defaultValues, name, props.defaultValue)),\n exact: true\n });\n const formState = useFormState({\n control,\n name,\n exact: true\n });\n const _registerProps = React.useRef(control.register(name, {\n ...props.rules,\n value,\n ...(isBoolean(props.disabled) ? {\n disabled: props.disabled\n } : {})\n }));\n const fieldState = React.useMemo(() => Object.defineProperties({}, {\n invalid: {\n enumerable: true,\n get: () => !!get(formState.errors, name)\n },\n isDirty: {\n enumerable: true,\n get: () => !!get(formState.dirtyFields, name)\n },\n isTouched: {\n enumerable: true,\n get: () => !!get(formState.touchedFields, name)\n },\n isValidating: {\n enumerable: true,\n get: () => !!get(formState.validatingFields, name)\n },\n error: {\n enumerable: true,\n get: () => get(formState.errors, name)\n }\n }), [formState, name]);\n const field = React.useMemo(() => ({\n name,\n value,\n ...(isBoolean(disabled) || formState.disabled ? {\n disabled: formState.disabled || disabled\n } : {}),\n onChange: event => _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name\n },\n type: EVENTS.CHANGE\n }),\n onBlur: () => _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name\n },\n type: EVENTS.BLUR\n }),\n ref: elm => {\n const field = get(control._fields, name);\n if (field && elm) {\n field._f.ref = {\n focus: () => elm.focus(),\n select: () => elm.select(),\n setCustomValidity: message => elm.setCustomValidity(message),\n reportValidity: () => elm.reportValidity()\n };\n }\n }\n }), [name, control._formValues, disabled, formState.disabled, value, control._fields]);\n React.useEffect(() => {\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n updateMounted(name, true);\n if (_shouldUnregisterField) {\n const value = cloneObject(get(control._options.defaultValues, name));\n set(control._defaultValues, name, value);\n if (isUndefined(get(control._formValues, name))) {\n set(control._formValues, name, value);\n }\n }\n !isArrayField && control.register(name);\n return () => {\n (isArrayField ? _shouldUnregisterField && !control._state.action : _shouldUnregisterField) ? control.unregister(name) : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n React.useEffect(() => {\n control._updateDisabledField({\n disabled,\n fields: control._fields,\n name\n });\n }, [disabled, name, control]);\n return React.useMemo(() => ({\n field,\n formState,\n fieldState\n }), [field, formState, fieldState]);\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n *
\n * (\n * <>\n * \n *

{formState.isSubmitted ? \"submitted\" : \"\"}

\n *

{fieldState.isTouched ? \"touched\" : \"\"}

\n * \n * )}\n * />\n * \n * );\n * }\n * ```\n */\nconst Controller = props => props.render(useController(props));\nconst flatten = obj => {\n const output = {};\n for (const key of Object.keys(obj)) {\n if (isObjectType(obj[key]) && obj[key] !== null) {\n const nested = flatten(obj[key]);\n for (const nestedKey of Object.keys(nested)) {\n output[`${key}.${nestedKey}`] = nested[nestedKey];\n }\n } else {\n output[key] = obj[key];\n }\n }\n return output;\n};\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control, formState: { errors } } = useForm();\n *\n * return (\n *
\n * \n *

{errors?.root?.server && 'Server error'}

\n * \n *
\n * );\n * }\n * ```\n */\nfunction Form(props) {\n const methods = useFormContext();\n const [mounted, setMounted] = React.useState(false);\n const {\n control = methods.control,\n onSubmit,\n children,\n action,\n method = POST_REQUEST,\n headers,\n encType,\n onError,\n render,\n onSuccess,\n validateStatus,\n ...rest\n } = props;\n const submit = async event => {\n let hasError = false;\n let type = '';\n await control.handleSubmit(async data => {\n const formData = new FormData();\n let formDataJson = '';\n try {\n formDataJson = JSON.stringify(data);\n } catch (_a) {}\n const flattenFormValues = flatten(control._formValues);\n for (const key in flattenFormValues) {\n formData.append(key, flattenFormValues[key]);\n }\n if (onSubmit) {\n await onSubmit({\n data,\n event,\n method,\n formData,\n formDataJson\n });\n }\n if (action) {\n try {\n const shouldStringifySubmissionData = [headers && headers['Content-Type'], encType].some(value => value && value.includes('json'));\n const response = await fetch(String(action), {\n method,\n headers: {\n ...headers,\n ...(encType ? {\n 'Content-Type': encType\n } : {})\n },\n body: shouldStringifySubmissionData ? formDataJson : formData\n });\n if (response && (validateStatus ? !validateStatus(response.status) : response.status < 200 || response.status >= 300)) {\n hasError = true;\n onError && onError({\n response\n });\n type = String(response.status);\n } else {\n onSuccess && onSuccess({\n response\n });\n }\n } catch (error) {\n hasError = true;\n onError && onError({\n error\n });\n }\n }\n })(event);\n if (hasError && props.control) {\n props.control._subjects.state.next({\n isSubmitSuccessful: false\n });\n props.control.setError('root.server', {\n type\n });\n }\n };\n React.useEffect(() => {\n setMounted(true);\n }, []);\n return render ? React.createElement(React.Fragment, null, render({\n submit\n })) : React.createElement(\"form\", {\n noValidate: mounted,\n action: action,\n method: method,\n encType: encType,\n onSubmit: submit,\n ...rest\n }, children);\n}\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\n [type]: message || true\n }\n} : {};\nvar generateId = () => {\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n};\nvar getFocusFieldName = function (name, index) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return options.shouldFocus || isUndefined(options.shouldFocus) ? options.focusName || `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.` : '';\n};\nvar getValidationModes = mode => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched\n});\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent && (_names.watchAll || _names.watch.has(name) || [..._names.watch].some(watchName => name.startsWith(watchName) && /^\\.\\w+/.test(name.slice(watchName.length))));\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n if (field) {\n const {\n _f,\n ...currentField\n } = field;\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n return true;\n } else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n return true;\n } else {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n } else if (isObject(currentField)) {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n }\n return;\n};\nvar updateFieldArrayRootError = (errors, error, name) => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\nvar isFileInput = element => element.type === 'file';\nvar isFunction = value => typeof value === 'function';\nvar isHTMLElement = value => {\n if (!isWeb) {\n return false;\n }\n const owner = value ? value.ownerDocument : 0;\n return value instanceof (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement);\n};\nvar isMessage = value => isString(value);\nvar isRadioInput = element => element.type === 'radio';\nvar isRegex = value => value instanceof RegExp;\nconst defaultResult = {\n value: false,\n isValid: false\n};\nconst validResult = {\n value: true,\n isValid: true\n};\nvar getCheckboxValue = options => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options.filter(option => option && option.checked && !option.disabled).map(option => option.value);\n return {\n value: values,\n isValid: !!values.length\n };\n }\n return options[0].checked && !options[0].disabled ?\n // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value) ? isUndefined(options[0].value) || options[0].value === '' ? validResult : {\n value: options[0].value,\n isValid: true\n } : validResult : defaultResult;\n }\n return defaultResult;\n};\nconst defaultReturn = {\n isValid: false,\n value: null\n};\nvar getRadioValue = options => Array.isArray(options) ? options.reduce((previous, option) => option && option.checked && !option.disabled ? {\n isValid: true,\n value: option.value\n} : previous, defaultReturn) : defaultReturn;\nfunction getValidateError(result, ref) {\n let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'validate';\n if (isMessage(result) || Array.isArray(result) && result.every(isMessage) || isBoolean(result) && !result) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref\n };\n }\n}\nvar getValueAndMessage = validationData => isObject(validationData) && !isRegex(validationData) ? validationData : {\n value: validationData,\n message: ''\n};\nvar validateField = async (field, disabledFieldNames, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n const {\n ref,\n refs,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n name,\n valueAsNumber,\n mount\n } = field._f;\n const inputValue = get(formValues, name);\n if (!mount || disabledFieldNames.has(name)) {\n return {};\n }\n const inputRef = refs ? refs[0] : ref;\n const setCustomValidity = message => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty = (valueAsNumber || isFileInput(ref)) && isUndefined(ref.value) && isUndefined(inputValue) || isHTMLElement(ref) && ref.value === '' || inputValue === '' || Array.isArray(inputValue) && !inputValue.length;\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n const getMinMaxMessage = function (exceedMax, maxLengthMessage, minLengthMessage) {\n let maxType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : INPUT_VALIDATION_RULES.maxLength;\n let minType = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : INPUT_VALIDATION_RULES.minLength;\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message)\n };\n };\n if (isFieldArray ? !Array.isArray(inputValue) || !inputValue.length : required && (!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue)) || isBoolean(inputValue) && !inputValue || isCheckBox && !getCheckboxValue(refs).isValid || isRadio && !getRadioValue(refs).isValid)) {\n const {\n value,\n message\n } = isMessage(required) ? {\n value: !!required,\n message: required\n } : getValueAndMessage(required);\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message)\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n const valueNumber = ref.valueAsNumber || (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate = ref.valueAsDate || new Date(inputValue);\n const convertTimeToDate = time => new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value) : isWeek ? inputValue > maxOutput.value : valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value) : isWeek ? inputValue < minOutput.value : valueDate < new Date(minOutput.value);\n }\n }\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if ((maxLength || minLength) && !isEmpty && (isString(inputValue) || isFieldArray && Array.isArray(inputValue))) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) && inputValue.length > +maxLengthOutput.value;\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) && inputValue.length < +minLengthOutput.value;\n if (exceedMax || exceedMin) {\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if (pattern && !isEmpty && isString(inputValue)) {\n const {\n value: patternValue,\n message\n } = getValueAndMessage(pattern);\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message)\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message)\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {};\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message)\n };\n setCustomValidity(validateError.message);\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n setCustomValidity(true);\n return error;\n};\nvar appendAt = (data, value) => [...data, ...convertToArrayPayload(value)];\nvar fillEmptyArray = value => Array.isArray(value) ? value.map(() => undefined) : undefined;\nfunction insert(data, index, value) {\n return [...data.slice(0, index), ...convertToArrayPayload(value), ...data.slice(index)];\n}\nvar moveArrayAt = (data, from, to) => {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n};\nvar prependAt = (data, value) => [...convertToArrayPayload(value), ...convertToArrayPayload(data)];\nfunction removeAtIndexes(data, indexes) {\n let i = 0;\n const temp = [...data];\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index) ? [] : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\nvar swapArrayAt = (data, indexA, indexB) => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\nfunction baseGet(object, updatePath) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n return object;\n}\nfunction isEmptyArray(obj) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\nfunction unset(object, path) {\n const paths = Array.isArray(path) ? path : isKey(path) ? [path] : stringToPath(path);\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n const index = paths.length - 1;\n const key = paths[index];\n if (childObject) {\n delete childObject[key];\n }\n if (index !== 0 && (isObject(childObject) && isEmptyObject(childObject) || Array.isArray(childObject) && isEmptyArray(childObject))) {\n unset(object, paths.slice(0, -1));\n }\n return object;\n}\nvar updateAt = (fieldValues, index, value) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n * defaultValues: {\n * test: []\n * }\n * });\n * const { fields, append } = useFieldArray({\n * control,\n * name: \"test\"\n * });\n *\n * return (\n *
console.log(data))}>\n * {fields.map((item, index) => (\n * \n * ))}\n * \n * \n *
\n * );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n const methods = useFormContext();\n const {\n control = methods.control,\n name,\n keyName = 'id',\n shouldUnregister,\n rules\n } = props;\n const [fields, setFields] = React.useState(control._getFieldArray(name));\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\n const _fieldIds = React.useRef(fields);\n const _name = React.useRef(name);\n const _actioned = React.useRef(false);\n _name.current = name;\n _fieldIds.current = fields;\n control._names.array.add(name);\n rules && control.register(name, rules);\n useSubscribe({\n next: _ref => {\n let {\n values,\n name: fieldArrayName\n } = _ref;\n if (fieldArrayName === _name.current || !fieldArrayName) {\n const fieldValues = get(values, _name.current);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n },\n subject: control._subjects.array\n });\n const updateValues = React.useCallback(updatedFieldArrayValues => {\n _actioned.current = true;\n control._updateFieldArray(name, updatedFieldArrayValues);\n }, [control, name]);\n const append = (value, options) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value)\n });\n };\n const prepend = (value, options) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value)\n });\n };\n const remove = index => {\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n !Array.isArray(get(control._fields, name)) && set(control._fields, name, undefined);\n control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index\n });\n };\n const insert$1 = (index, value, options) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insert(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, insert, {\n argA: index,\n argB: fillEmptyArray(value)\n });\n };\n const swap = (indexA, indexB) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n argA: indexA,\n argB: indexB\n }, false);\n };\n const move = (from, to) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n argA: from,\n argB: to\n }, false);\n };\n const update = (index, value) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._updateFieldArray(name, updatedFieldArrayValues, updateAt, {\n argA: index,\n argB: updateValue\n }, true, false);\n };\n const replace = value => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._updateFieldArray(name, [...updatedFieldArrayValues], data => data, {}, true, false);\n };\n React.useEffect(() => {\n control._state.action = false;\n isWatched(name, control._names) && control._subjects.state.next({\n ...control._formState\n });\n if (_actioned.current && (!getValidationModes(control._options.mode).isOnSubmit || control._formState.isSubmitted)) {\n if (control._options.resolver) {\n control._executeSchema([name]).then(result => {\n const error = get(result.errors, name);\n const existingError = get(control._formState.errors, name);\n if (existingError ? !error && existingError.type || error && (existingError.type !== error.type || existingError.message !== error.message) : error && error.type) {\n error ? set(control._formState.errors, name, error) : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors\n });\n }\n });\n } else {\n const field = get(control._fields, name);\n if (field && field._f && !(getValidationModes(control._options.reValidateMode).isOnSubmit && getValidationModes(control._options.mode).isOnSubmit)) {\n validateField(field, control._names.disabled, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then(error => !isEmptyObject(error) && control._subjects.state.next({\n errors: updateFieldArrayRootError(control._formState.errors, error, name)\n }));\n }\n }\n }\n control._subjects.values.next({\n name,\n values: {\n ...control._formValues\n }\n });\n control._names.focus && iterateFieldsByAction(control._fields, (ref, key) => {\n if (control._names.focus && key.startsWith(control._names.focus) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n });\n control._names.focus = '';\n control._updateValid();\n _actioned.current = false;\n }, [fields, name, control]);\n React.useEffect(() => {\n !get(control._formValues, name) && control._updateFieldArray(name);\n return () => {\n (control._options.shouldUnregister || shouldUnregister) && control.unregister(name);\n };\n }, [name, control, keyName, shouldUnregister]);\n return {\n swap: React.useCallback(swap, [updateValues, name, control]),\n move: React.useCallback(move, [updateValues, name, control]),\n prepend: React.useCallback(prepend, [updateValues, name, control]),\n append: React.useCallback(append, [updateValues, name, control]),\n remove: React.useCallback(remove, [updateValues, name, control]),\n insert: React.useCallback(insert$1, [updateValues, name, control]),\n update: React.useCallback(update, [updateValues, name, control]),\n replace: React.useCallback(replace, [updateValues, name, control]),\n fields: React.useMemo(() => fields.map((field, index) => ({\n ...field,\n [keyName]: ids.current[index] || generateId()\n })), [fields, keyName])\n };\n}\nvar createSubject = () => {\n let _observers = [];\n const next = value => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n const subscribe = observer => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter(o => o !== observer);\n }\n };\n };\n const unsubscribe = () => {\n _observers = [];\n };\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe\n };\n};\nvar isPrimitive = value => isNullOrUndefined(value) || !isObjectType(value);\nfunction deepEqual(object1, object2) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n const val1 = object1[key];\n if (!keys2.includes(key)) {\n return false;\n }\n if (key !== 'ref') {\n const val2 = object2[key];\n if (isDateObject(val1) && isDateObject(val2) || isObject(val1) && isObject(val2) || Array.isArray(val1) && Array.isArray(val2) ? !deepEqual(val1, val2) : val1 !== val2) {\n return false;\n }\n }\n }\n return true;\n}\nvar isMultipleSelect = element => element.type === `select-multiple`;\nvar isRadioOrCheckbox = ref => isRadioInput(ref) || isCheckBoxInput(ref);\nvar live = ref => isHTMLElement(ref) && ref.isConnected;\nvar objectHasFunction = data => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\nfunction markFieldsDirty(data) {\n let fields = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const isParentNodeArray = Array.isArray(data);\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) || isObject(data[key]) && !objectHasFunction(data[key])) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n } else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n return fields;\n}\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) || isObject(data[key]) && !objectHasFunction(data[key])) {\n if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key]) ? markFieldsDirty(data[key], []) : {\n ...markFieldsDirty(data[key])\n };\n } else {\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n }\n } else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n return dirtyFieldsFromValues;\n}\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\nvar getFieldValueAs = (value, _ref2) => {\n let {\n valueAsNumber,\n valueAsDate,\n setValueAs\n } = _ref2;\n return isUndefined(value) ? value : valueAsNumber ? value === '' ? NaN : value ? +value : value : valueAsDate && isString(value) ? new Date(value) : setValueAs ? setValueAs(value) : value;\n};\nfunction getFieldValue(_f) {\n const ref = _f.ref;\n if (isFileInput(ref)) {\n return ref.files;\n }\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(_ref3 => {\n let {\n value\n } = _ref3;\n return value;\n });\n }\n if (isCheckBoxInput(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n const fields = {};\n for (const name of fieldsNames) {\n const field = get(_fields, name);\n field && set(fields, name, field._f);\n }\n return {\n criteriaMode,\n names: [...fieldsNames],\n fields,\n shouldUseNativeValidation\n };\n};\nvar getRuleValue = rule => isUndefined(rule) ? rule : isRegex(rule) ? rule.source : isObject(rule) ? isRegex(rule.value) ? rule.value.source : rule.value : rule;\nconst ASYNC_FUNCTION = 'AsyncFunction';\nvar hasPromiseValidation = fieldReference => !!fieldReference && !!fieldReference.validate && !!(isFunction(fieldReference.validate) && fieldReference.validate.constructor.name === ASYNC_FUNCTION || isObject(fieldReference.validate) && Object.values(fieldReference.validate).find(validateFunction => validateFunction.constructor.name === ASYNC_FUNCTION));\nvar hasValidation = options => options.mount && (options.required || options.min || options.max || options.maxLength || options.minLength || options.pattern || options.validate);\nfunction schemaErrorLookup(errors, _fields, name) {\n const error = get(errors, name);\n if (error || isKey(name)) {\n return {\n error,\n name\n };\n }\n const names = name.split('.');\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n if (field && !Array.isArray(field) && name !== fieldName) {\n return {\n name\n };\n }\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError\n };\n }\n names.pop();\n }\n return {\n name\n };\n}\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n if (mode.isOnAll) {\n return false;\n } else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true\n};\nfunction createFormControl() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let _options = {\n ...defaultOptions,\n ...props\n };\n let _formState = {\n submitCount: 0,\n isDirty: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false\n };\n let _fields = {};\n let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values) ? cloneObject(_options.defaultValues || _options.values) || {} : {};\n let _formValues = _options.shouldUnregister ? {} : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false\n };\n let _names = {\n mount: new Set(),\n disabled: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set()\n };\n let delayErrorCallback;\n let timer = 0;\n const _proxyFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false\n };\n const _subjects = {\n values: createSubject(),\n array: createSubject(),\n state: createSubject()\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n const debounce = callback => wait => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n const _updateValid = async shouldUpdateValid => {\n if (!_options.disabled && (_proxyFormState.isValid || shouldUpdateValid)) {\n const isValid = _options.resolver ? isEmptyObject((await _executeSchema()).errors) : await executeBuiltInValidation(_fields, true);\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid\n });\n }\n }\n };\n const _updateIsValidating = (names, isValidating) => {\n if (!_options.disabled && (_proxyFormState.isValidating || _proxyFormState.validatingFields)) {\n (names || Array.from(_names.mount)).forEach(name => {\n if (name) {\n isValidating ? set(_formState.validatingFields, name, isValidating) : unset(_formState.validatingFields, name);\n }\n });\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields)\n });\n }\n };\n const _updateFieldArray = function (name) {\n let values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let method = arguments.length > 2 ? arguments[2] : undefined;\n let args = arguments.length > 3 ? arguments[3] : undefined;\n let shouldSetValues = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let shouldUpdateFieldsAndState = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n if (args && method && !_options.disabled) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n if (shouldUpdateFieldsAndState && Array.isArray(get(_formState.errors, name))) {\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n if (_proxyFormState.touchedFields && shouldUpdateFieldsAndState && Array.isArray(get(_formState.touchedFields, name))) {\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n if (_proxyFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid\n });\n } else {\n set(_formValues, name, values);\n }\n };\n const updateErrors = (name, error) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors\n });\n };\n const _setErrors = errors => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false\n });\n };\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n const field = get(_fields, name);\n if (field) {\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n isUndefined(defaultValue) || ref && ref.defaultChecked || shouldSkipSetValueAs ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f)) : setFieldValue(name, defaultValue);\n _state.mount && _updateValid();\n }\n };\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output = {\n name\n };\n if (!_options.disabled) {\n const disabledField = !!(get(_fields, name) && get(_fields, name)._f && get(_fields, name)._f.disabled);\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n const isCurrentFieldPristine = disabledField || deepEqual(get(_defaultValues, name), fieldValue);\n isPreviousDirty = !!(!disabledField && get(_formState.dirtyFields, name));\n isCurrentFieldPristine || disabledField ? unset(_formState.dirtyFields, name) : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField = shouldUpdateField || _proxyFormState.dirtyFields && isPreviousDirty !== !isCurrentFieldPristine;\n }\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField = shouldUpdateField || _proxyFormState.touchedFields && isPreviousFieldTouched !== isBlurEvent;\n }\n }\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n }\n return shouldUpdateField ? output : {};\n };\n const shouldRenderByError = (name, isValid, error, fieldState) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid = _proxyFormState.isValid && isBoolean(isValid) && _formState.isValid !== isValid;\n if (_options.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(_options.delayError);\n } else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error ? set(_formState.errors, name, error) : unset(_formState.errors, name);\n }\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) || !isEmptyObject(fieldState) || shouldUpdateValid) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? {\n isValid\n } : {}),\n errors: _formState.errors,\n name\n };\n _formState = {\n ..._formState,\n ...updatedFormState\n };\n _subjects.state.next(updatedFormState);\n }\n };\n const _executeSchema = async name => {\n _updateIsValidating(name, true);\n const result = await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n _updateIsValidating(name);\n return result;\n };\n const executeSchemaAndUpdateState = async names => {\n const {\n errors\n } = await _executeSchema(names);\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error ? set(_formState.errors, name, error) : unset(_formState.errors, name);\n }\n } else {\n _formState.errors = errors;\n }\n return errors;\n };\n const executeBuiltInValidation = async function (fields, shouldOnlyCheckValid) {\n let context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n valid: true\n };\n for (const name in fields) {\n const field = fields[name];\n if (field) {\n const {\n _f,\n ...fieldValue\n } = field;\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name], true);\n }\n const fieldError = await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !shouldOnlyCheckValid, isFieldArrayRoot);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name]);\n }\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n !shouldOnlyCheckValid && (get(fieldError, _f.name) ? isFieldArrayRoot ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name) : set(_formState.errors, _f.name, fieldError[_f.name]) : unset(_formState.errors, _f.name));\n }\n !isEmptyObject(fieldValue) && (await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context));\n }\n }\n return context.valid;\n };\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field = get(_fields, name);\n field && (field._f.refs ? field._f.refs.every(ref => !live(ref)) : !live(field._f.ref)) && unregister(name);\n }\n _names.unMount = new Set();\n };\n const _getDirty = (name, data) => !_options.disabled && (name && data && set(_formValues, name, data), !deepEqual(getValues(), _defaultValues));\n const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n ...(_state.mount ? _formValues : isUndefined(defaultValue) ? _defaultValues : isString(names) ? {\n [names]: defaultValue\n } : defaultValue)\n }, isGlobal, defaultValue);\n const _getFieldArray = name => compact(get(_state.mount ? _formValues : _defaultValues, name, _options.shouldUnregister ? get(_defaultValues, name, []) : []));\n const setFieldValue = function (name, value) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const field = get(_fields, name);\n let fieldValue = value;\n if (field) {\n const fieldReference = field._f;\n if (fieldReference) {\n !fieldReference.disabled && set(_formValues, name, getFieldValueAs(value, fieldReference));\n fieldValue = isHTMLElement(fieldReference.ref) && isNullOrUndefined(value) ? '' : value;\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach(optionRef => optionRef.selected = fieldValue.includes(optionRef.value));\n } else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.length > 1 ? fieldReference.refs.forEach(checkboxRef => (!checkboxRef.defaultChecked || !checkboxRef.disabled) && (checkboxRef.checked = Array.isArray(fieldValue) ? !!fieldValue.find(data => data === checkboxRef.value) : fieldValue === checkboxRef.value)) : fieldReference.refs[0] && (fieldReference.refs[0].checked = !!fieldValue);\n } else {\n fieldReference.refs.forEach(radioRef => radioRef.checked = radioRef.value === fieldValue);\n }\n } else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n } else {\n fieldReference.ref.value = fieldValue;\n if (!fieldReference.ref.type) {\n _subjects.values.next({\n name,\n values: {\n ..._formValues\n }\n });\n }\n }\n }\n }\n (options.shouldDirty || options.shouldTouch) && updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n options.shouldValidate && trigger(name);\n };\n const setValues = (name, value, options) => {\n for (const fieldKey in value) {\n const fieldValue = value[fieldKey];\n const fieldName = `${name}.${fieldKey}`;\n const field = get(_fields, fieldName);\n (_names.array.has(name) || isObject(fieldValue) || field && !field._f) && !isDateObject(fieldValue) ? setValues(fieldName, fieldValue, options) : setFieldValue(fieldName, fieldValue, options);\n }\n };\n const setValue = function (name, value) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n set(_formValues, name, cloneValue);\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: {\n ..._formValues\n }\n });\n if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) && options.shouldDirty) {\n _subjects.state.next({\n name,\n dirtyFields: getDirtyFields(_defaultValues, _formValues),\n isDirty: _getDirty(name, cloneValue)\n });\n }\n } else {\n field && !field._f && !isNullOrUndefined(cloneValue) ? setValues(name, cloneValue, options) : setFieldValue(name, cloneValue, options);\n }\n isWatched(name, _names) && _subjects.state.next({\n ..._formState\n });\n _subjects.values.next({\n name: _state.mount ? name : undefined,\n values: {\n ..._formValues\n }\n });\n };\n const onChange = async event => {\n _state.mount = true;\n const target = event.target;\n let name = target.name;\n let isFieldValueUpdated = true;\n const field = get(_fields, name);\n const getCurrentFieldValue = () => target.type ? getFieldValue(field._f) : getEventValue(event);\n const _updateIsFieldValueUpdated = fieldValue => {\n isFieldValueUpdated = Number.isNaN(fieldValue) || isDateObject(fieldValue) && isNaN(fieldValue.getTime()) || deepEqual(fieldValue, get(_formValues, name, fieldValue));\n };\n if (field) {\n let error;\n let isValid;\n const fieldValue = getCurrentFieldValue();\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation = !hasValidation(field._f) && !_options.resolver && !get(_formState.errors, name) && !field._f.deps || skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n const watched = isWatched(name, _names, isBlurEvent);\n set(_formValues, name, fieldValue);\n if (isBlurEvent) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n } else if (field._f.onChange) {\n field._f.onChange(event);\n }\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\n const shouldRender = !isEmptyObject(fieldState) || watched;\n !isBlurEvent && _subjects.values.next({\n name,\n type: event.type,\n values: {\n ..._formValues\n }\n });\n if (shouldSkipValidation) {\n if (_proxyFormState.isValid) {\n if (_options.mode === 'onBlur' && isBlurEvent) {\n _updateValid();\n } else if (!isBlurEvent) {\n _updateValid();\n }\n }\n return shouldRender && _subjects.state.next({\n name,\n ...(watched ? {} : fieldState)\n });\n }\n !isBlurEvent && watched && _subjects.state.next({\n ..._formState\n });\n if (_options.resolver) {\n const {\n errors\n } = await _executeSchema([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n isValid = isEmptyObject(errors);\n }\n } else {\n _updateIsValidating([name], true);\n error = (await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n } else if (_proxyFormState.isValid) {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n if (isFieldValueUpdated) {\n field._f.deps && trigger(field._f.deps);\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n const _focusInput = (ref, key) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n const trigger = async function (name) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name);\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n isValid = isEmptyObject(errors);\n validationResult = name ? !fieldNames.some(name => get(errors, name)) : isValid;\n } else if (name) {\n validationResult = (await Promise.all(fieldNames.map(async fieldName => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(field && field._f ? {\n [fieldName]: field\n } : field);\n }))).every(Boolean);\n !(!validationResult && !_formState.isValid) && _updateValid();\n } else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n _subjects.state.next({\n ...(!isString(name) || _proxyFormState.isValid && isValid !== _formState.isValid ? {} : {\n name\n }),\n ...(_options.resolver || !name ? {\n isValid\n } : {}),\n errors: _formState.errors\n });\n options.shouldFocus && !validationResult && iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n return validationResult;\n };\n const getValues = fieldNames => {\n const values = {\n ...(_state.mount ? _formValues : _defaultValues)\n };\n return isUndefined(fieldNames) ? values : isString(fieldNames) ? get(values, fieldNames) : fieldNames.map(name => get(values, name));\n };\n const getFieldState = (name, formState) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n error: get((formState || _formState).errors, name),\n isValidating: !!get(_formState.validatingFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name)\n });\n const clearErrors = name => {\n name && convertToArrayPayload(name).forEach(inputName => unset(_formState.errors, inputName));\n _subjects.state.next({\n errors: name ? _formState.errors : {}\n });\n };\n const setError = (name, error, options) => {\n const ref = (get(_fields, name, {\n _f: {}\n })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n // Don't override existing error messages elsewhere in the object tree.\n const {\n ref: currentRef,\n message,\n type,\n ...restOfErrorTree\n } = currentError;\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref\n });\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false\n });\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n const watch = (name, defaultValue) => isFunction(name) ? _subjects.values.subscribe({\n next: payload => name(_getWatch(undefined, defaultValue), payload)\n }) : _getWatch(name, defaultValue, true);\n const unregister = function (name) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating && unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister && !options.keepDefaultValue && unset(_defaultValues, fieldName);\n }\n _subjects.values.next({\n values: {\n ..._formValues\n }\n });\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : {\n isDirty: _getDirty()\n })\n });\n !options.keepIsValid && _updateValid();\n };\n const _updateDisabledField = _ref4 => {\n let {\n disabled,\n name,\n field,\n fields\n } = _ref4;\n if (isBoolean(disabled) && _state.mount || !!disabled || _names.disabled.has(name)) {\n disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n updateTouchAndDirty(name, getFieldValue(field ? field._f : get(fields, name)._f), false, false, true);\n }\n };\n const register = function (name) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : {\n ref: {\n name\n }\n }),\n name,\n mount: true,\n ...options\n }\n });\n _names.mount.add(name);\n if (field) {\n _updateDisabledField({\n field,\n disabled: isBoolean(options.disabled) ? options.disabled : _options.disabled,\n name\n });\n } else {\n updateValidAndValue(name, true, options.value);\n }\n return {\n ...(disabledIsDefined ? {\n disabled: options.disabled || _options.disabled\n } : {}),\n ...(_options.progressive ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength),\n maxLength: getRuleValue(options.maxLength),\n pattern: getRuleValue(options.pattern)\n } : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: ref => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n const fieldRef = isUndefined(ref.value) ? ref.querySelectorAll ? ref.querySelectorAll('input,select,textarea')[0] || ref : ref : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n if (radioOrCheckbox ? refs.find(option => option === fieldRef) : fieldRef === field._f.ref) {\n return;\n }\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox ? {\n refs: [...refs.filter(live), fieldRef, ...(Array.isArray(get(_defaultValues, name)) ? [{}] : [])],\n ref: {\n type: fieldRef.type,\n name\n }\n } : {\n ref: fieldRef\n })\n }\n });\n updateValidAndValue(name, false, undefined, fieldRef);\n } else {\n field = get(_fields, name, {});\n if (field._f) {\n field._f.mount = false;\n }\n (_options.shouldUnregister || options.shouldUnregister) && !(isNameInFieldArray(_names.array, name) && _state.action) && _names.unMount.add(name);\n }\n }\n };\n };\n const _focusError = () => _options.shouldFocusError && iterateFieldsByAction(_fields, _focusInput, _names.mount);\n const _disableForm = disabled => {\n if (isBoolean(disabled)) {\n _subjects.state.next({\n disabled\n });\n iterateFieldsByAction(_fields, (ref, name) => {\n const currentField = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach(inputRef => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n }, 0, false);\n }\n };\n const handleSubmit = (onValid, onInvalid) => async e => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let fieldValues = cloneObject(_formValues);\n if (_names.disabled.size) {\n for (const name of _names.disabled) {\n set(fieldValues, name, undefined);\n }\n }\n _subjects.state.next({\n isSubmitting: true\n });\n if (_options.resolver) {\n const {\n errors,\n values\n } = await _executeSchema();\n _formState.errors = errors;\n fieldValues = values;\n } else {\n await executeBuiltInValidation(_fields);\n }\n unset(_formState.errors, 'root');\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {}\n });\n try {\n await onValid(fieldValues, e);\n } catch (error) {\n onValidError = error;\n }\n } else {\n if (onInvalid) {\n await onInvalid({\n ..._formState.errors\n }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n const resetField = function (name) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n } else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue ? _getDirty(name, cloneObject(get(_defaultValues, name))) : _getDirty();\n }\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _updateValid();\n }\n _subjects.state.next({\n ..._formState\n });\n }\n };\n const _reset = function (formValues) {\n let keepStateOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n const fieldsToCheck = new Set([..._names.mount, ...Object.keys(getDirtyFields(_defaultValues, _formValues))]);\n for (const fieldName of Array.from(fieldsToCheck)) {\n get(_formState.dirtyFields, fieldName) ? set(values, fieldName, get(_formValues, fieldName)) : setValue(fieldName, get(values, fieldName));\n }\n } else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs) ? field._f.refs[0] : field._f.ref;\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n _fields = {};\n }\n _formValues = _options.shouldUnregister ? keepStateOptions.keepDefaultValues ? cloneObject(_defaultValues) : {} : cloneObject(values);\n _subjects.array.next({\n values: {\n ...values\n }\n });\n _subjects.values.next({\n values: {\n ...values\n }\n });\n }\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n disabled: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: ''\n };\n _state.mount = !_proxyFormState.isValid || !!keepStateOptions.keepIsValid || !!keepStateOptions.keepDirtyValues;\n _state.watch = !!_options.shouldUnregister;\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount ? _formState.submitCount : 0,\n isDirty: isEmptyResetValues ? false : keepStateOptions.keepDirty ? _formState.isDirty : !!(keepStateOptions.keepDefaultValues && !deepEqual(formValues, _defaultValues)),\n isSubmitted: keepStateOptions.keepIsSubmitted ? _formState.isSubmitted : false,\n dirtyFields: isEmptyResetValues ? {} : keepStateOptions.keepDirtyValues ? keepStateOptions.keepDefaultValues && _formValues ? getDirtyFields(_defaultValues, _formValues) : _formState.dirtyFields : keepStateOptions.keepDefaultValues && formValues ? getDirtyFields(_defaultValues, formValues) : keepStateOptions.keepDirty ? _formState.dirtyFields : {},\n touchedFields: keepStateOptions.keepTouched ? _formState.touchedFields : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful ? _formState.isSubmitSuccessful : false,\n isSubmitting: false\n });\n };\n const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues) ? formValues(_formValues) : formValues, keepStateOptions);\n const setFocus = function (name) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n if (fieldReference) {\n const fieldRef = fieldReference.refs ? fieldReference.refs[0] : fieldReference.ref;\n if (fieldRef.focus) {\n fieldRef.focus();\n options.shouldSelect && isFunction(fieldRef.select) && fieldRef.select();\n }\n }\n };\n const _updateFormState = updatedFormState => {\n _formState = {\n ..._formState,\n ...updatedFormState\n };\n };\n const _resetDefaultValues = () => isFunction(_options.defaultValues) && _options.defaultValues().then(values => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false\n });\n });\n return {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _executeSchema,\n _getWatch,\n _getDirty,\n _updateValid,\n _removeUnmounted,\n _updateFieldArray,\n _updateDisabledField,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _updateFormState,\n _disableForm,\n _subjects,\n _proxyFormState,\n _setErrors,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n set _formState(value) {\n _formState = value;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value\n };\n }\n },\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState\n };\n}\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n *
\n * \n * \n * {errors.exampleRequired && This field is required}\n * \n *
\n * );\n * }\n * ```\n */\nfunction useForm() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const _formControl = React.useRef(undefined);\n const _values = React.useRef(undefined);\n const [formState, updateFormState] = React.useState({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n defaultValues: isFunction(props.defaultValues) ? undefined : props.defaultValues\n });\n if (!_formControl.current) {\n _formControl.current = {\n ...createFormControl(props),\n formState\n };\n }\n const control = _formControl.current.control;\n control._options = props;\n useSubscribe({\n subject: control._subjects.state,\n next: value => {\n if (shouldRenderFormState(value, control._proxyFormState, control._updateFormState, true)) {\n updateFormState({\n ...control._formState\n });\n }\n }\n });\n React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n React.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty\n });\n }\n }\n }, [control, formState.isDirty]);\n React.useEffect(() => {\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, control._options.resetOptions);\n _values.current = props.values;\n updateFormState(state => ({\n ...state\n }));\n } else {\n control._resetDefaultValues();\n }\n }, [props.values, control]);\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n }\n }, [props.errors, control]);\n React.useEffect(() => {\n if (!control._state.mount) {\n control._updateValid();\n control._state.mount = true;\n }\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({\n ...control._formState\n });\n }\n control._removeUnmounted();\n });\n React.useEffect(() => {\n props.shouldUnregister && control._subjects.values.next({\n values: control._getWatch()\n });\n }, [props.shouldUnregister, control]);\n _formControl.current.formState = getProxyFormState(formState, control);\n return _formControl.current;\n}\nexport { Controller, Form, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };","'use strict';\n\nmodule.exports = (string, separator) => {\n if (!(typeof string === 'string' && typeof separator === 'string')) {\n throw new TypeError('Expected the arguments to be of type `string`');\n }\n if (separator === '') {\n return [string];\n }\n const separatorIndex = string.indexOf(separator);\n if (separatorIndex === -1) {\n return [string];\n }\n return [string.slice(0, separatorIndex), string.slice(separatorIndex + separator.length)];\n};","'use strict';\n\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);","import { Dialog } from '@material-ui/core';\nimport React, { FC } from 'react';\nimport Close from '../../assets/icon/Close';\nimport GlobalButton from '../global/global-button/global-button';\nimport * as style from './form-dialog.module.scss';\n\nconst RTFormDialog: FC<{\n onClose: (value: boolean) => any;\n open: boolean;\n dialogSentence: string;\n nextTxt: string;\n}> = ({ onClose, open, dialogSentence, nextTxt }) => {\n return (\n \n
\n

{dialogSentence}

\n
onClose(true)}>\n \n
\n \n
\n
\n );\n};\n\nexport default RTFormDialog;\n","// extracted by mini-css-extract-plugin\nexport var dialogButtonWrapper = \"form-dialog-module--dialog-button-wrapper--1sF+F\";\nexport var dialogClose = \"form-dialog-module--dialog-close--KR0T6\";\nexport var dialogContainer = \"form-dialog-module--dialog-container--3usk8\";\nexport var dialogTitle = \"form-dialog-module--dialog-title--zWWDA\";","import { FormHelperText, InputLabel, MenuItem, Select } from '@material-ui/core';\nimport React, { FC } from 'react';\nimport { Control, Controller, FieldValues } from 'react-hook-form';\nimport { CraftFormElement } from '../../../interfaces/form.interface';\n\nconst RTSelect: FC<{\n control: Control;\n question: CraftFormElement;\n}> = ({ control, question }) => (\n {\n return (\n
\n \n {question.title} {question.isRequired ? ' *' : ''}\n \n {question.description}\n \n {question.choices.map((choice, idx) => (\n \n {choice.text}\n \n ))}\n \n
\n );\n }}\n >\n);\n\nexport default RTSelect;\n","// extracted by mini-css-extract-plugin\nexport var globalButton = \"global-button-module--global-button--RGMLY\";","import { Link } from 'gatsby';\nimport React, { FC, useRef, useState } from 'react';\nimport * as styles from './global-button.module.scss';\nimport './global-button.scss';\n\ntype ButtonProps = {\n url?: string;\n target?: '_blank' | '_self' | '_parent' | '_top' | 'framename';\n text: string;\n bgColor?: string;\n txtColor?: string;\n animated?: boolean;\n};\n\nconst GlobalButton: FC = ({ url, text, bgColor = '#000', txtColor = '#fff', target = '_self', animated }: ButtonProps) => {\n const button = useRef(null);\n const [hovered, setHovered] = useState(false);\n\n const mouseover = () => setHovered(true);\n const mouseout = () => setHovered(false);\n\n if (url) {\n return (\n \n \n \n / \n {text}\n \n \n \n );\n } else {\n return (\n \n \n / \n {text}\n \n \n );\n }\n};\n\nexport default GlobalButton;\n","export default function devAssert(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport default function isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}","// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nexport var SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';","/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n return {\n line: line,\n column: column\n };\n}","import { getLocation } from \"./location.mjs\";\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printLocation(location) {\n return printSourceLocation(location.source, getLocation(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var subLineIndex = Math.floor(columnNum / 80);\n var subLineColumnNum = columnNum % 80;\n var subLines = [];\n for (var i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function (subLine) {\n return ['', subLine];\n }), [[' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]));\n }\n return locationStr + printPrefixedLines([\n // Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return leftPad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\nfunction leftPad(len, str) {\n return whitespace(len - str.length) + str;\n}","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nimport devAssert from \"../jsutils/devAssert.mjs\";\nimport isObjectLike from \"../jsutils/isObjectLike.mjs\";\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport { getLocation } from \"../language/location.mjs\";\nimport { printLocation, printSourceLocation } from \"../language/printLocation.mjs\";\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport var GraphQLError = /*#__PURE__*/function (_Error) {\n _inherits(GraphQLError, _Error);\n var _super = _createSuper(GraphQLError);\n\n /**\n * An array of { line, column } locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n function GraphQLError(message, nodes, source, positions, path, originalError, extensions) {\n var _nodeLocations, _nodeLocations2, _nodeLocations3;\n var _this;\n _classCallCheck(this, GraphQLError);\n _this = _super.call(this, message);\n _this.name = 'GraphQLError';\n _this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined; // Compute list of blame nodes.\n\n _this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined);\n var nodeLocations = [];\n for (var _i2 = 0, _ref3 = (_this$nodes = _this.nodes) !== null && _this$nodes !== void 0 ? _this$nodes : []; _i2 < _ref3.length; _i2++) {\n var _this$nodes;\n var _ref4 = _ref3[_i2];\n var loc = _ref4.loc;\n if (loc != null) {\n nodeLocations.push(loc);\n }\n }\n nodeLocations = undefinedIfEmpty(nodeLocations); // Compute locations in the source for the given nodes/positions.\n\n _this.source = source !== null && source !== void 0 ? source : (_nodeLocations = nodeLocations) === null || _nodeLocations === void 0 ? void 0 : _nodeLocations[0].source;\n _this.positions = positions !== null && positions !== void 0 ? positions : (_nodeLocations2 = nodeLocations) === null || _nodeLocations2 === void 0 ? void 0 : _nodeLocations2.map(function (loc) {\n return loc.start;\n });\n _this.locations = positions && source ? positions.map(function (pos) {\n return getLocation(source, pos);\n }) : (_nodeLocations3 = nodeLocations) === null || _nodeLocations3 === void 0 ? void 0 : _nodeLocations3.map(function (loc) {\n return getLocation(loc.source, loc.start);\n });\n _this.path = path !== null && path !== void 0 ? path : undefined;\n var originalExtensions = originalError === null || originalError === void 0 ? void 0 : originalError.extensions;\n if (extensions == null && isObjectLike(originalExtensions)) {\n _this.extensions = _objectSpread({}, originalExtensions);\n } else {\n _this.extensions = extensions !== null && extensions !== void 0 ? extensions : {};\n } // By being enumerable, JSON.stringify will include bellow properties in the resulting output.\n // This ensures that the simplest possible GraphQL service adheres to the spec.\n\n Object.defineProperties(_assertThisInitialized(_this), {\n message: {\n enumerable: true\n },\n locations: {\n enumerable: _this.locations != null\n },\n path: {\n enumerable: _this.path != null\n },\n extensions: {\n enumerable: _this.extensions != null && Object.keys(_this.extensions).length > 0\n },\n name: {\n enumerable: false\n },\n nodes: {\n enumerable: false\n },\n source: {\n enumerable: false\n },\n positions: {\n enumerable: false\n },\n originalError: {\n enumerable: false\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError !== null && originalError !== void 0 && originalError.stack) {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n return _possibleConstructorReturn(_this);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError);\n } else {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n return _this;\n }\n _createClass(GraphQLError, [{\n key: \"toString\",\n value: function toString() {\n return printError(this);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return formatError(this);\n } // FIXME: workaround to not break chai comparisons, should be remove in v16\n // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n }, {\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Object';\n }\n }]);\n return GraphQLError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\nexport function printError(error) {\n var output = error.message;\n if (error.nodes) {\n for (var _i4 = 0, _error$nodes2 = error.nodes; _i4 < _error$nodes2.length; _i4++) {\n var node = _error$nodes2[_i4];\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i6 = 0, _error$locations2 = error.locations; _i6 < _error$locations2.length; _i6++) {\n var location = _error$locations2[_i6];\n output += '\\n\\n' + printSourceLocation(error.source, location);\n }\n }\n return output;\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n */\n\nexport function formatError(error) {\n var _error$message;\n error || devAssert(0, 'Received null or undefined error.');\n var message = (_error$message = error.message) !== null && _error$message !== void 0 ? _error$message : 'An unknown error occurred.';\n var locations = error.locations;\n var path = error.path;\n var extensions = error.extensions;\n return extensions && Object.keys(extensions).length > 0 ? {\n message: message,\n locations: locations,\n path: path,\n extensions: extensions\n } : {\n message: message,\n locations: locations,\n path: path\n };\n}\n/**\n * @see https://github.com/graphql/graphql-spec/blob/master/spec/Section%207%20--%20Response.md#errors\n */","import { GraphQLError } from \"./GraphQLError.mjs\";\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport var TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nimport inspect from \"./inspect.mjs\";\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n */\n\n// See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n// See: https://webpack.js.org/guides/production/\nexport default process.env.NODE_ENV === 'production' ?\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n// eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n return value instanceof constructor;\n} :\n// eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n if (_typeof(value) === 'object' && value !== null) {\n var _value$constructor;\n var className = constructor.prototype[Symbol.toStringTag];\n var valueClassName =\n // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name;\n if (className === valueClassName) {\n var stringifiedValue = inspect(value);\n throw new Error(\"Cannot use \".concat(className, \" \\\"\").concat(stringifiedValue, \"\\\" from another module or realm.\\n\\nEnsure that there is only one instance of \\\"graphql\\\" in the node_modules\\ndirectory. If different versions of \\\"graphql\\\" are the dependencies of other\\nrelied on modules, use \\\"resolutions\\\" to ensure only one version is installed.\\n\\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\\n\\nDuplicate \\\"graphql\\\" modules cannot be used at the same time since different\\nversions may have different capabilities and behavior. The data from one\\nversion used in the function from another could produce confusing and\\nspurious results.\"));\n }\n }\n return false;\n};","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport inspect from \"../jsutils/inspect.mjs\";\nimport devAssert from \"../jsutils/devAssert.mjs\";\nimport instanceOf from \"../jsutils/instanceOf.mjs\";\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport var Source = /*#__PURE__*/function () {\n function Source(body) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';\n var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n line: 1,\n column: 1\n };\n typeof body === 'string' || devAssert(0, \"Body must be a string. Received: \".concat(inspect(body), \".\"));\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive.');\n this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive.');\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n _createClass(Source, [{\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Source';\n }\n }]);\n return Source;\n}();\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\n// eslint-disable-next-line no-redeclare\nexport function isSource(source) {\n return instanceOf(source, Source);\n}","/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Token } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { dedentBlockStringValue } from \"./blockString.mjs\";\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport var Lexer = /*#__PURE__*/function () {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n function Lexer(source) {\n var startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0, null);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n var _proto = Lexer.prototype;\n _proto.advance = function advance() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */;\n\n _proto.lookahead = function lookahead() {\n var token = this.token;\n if (token.kind !== TokenKind.EOF) {\n do {\n var _token$next;\n\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = (_token$next = token.next) !== null && _token$next !== void 0 ? _token$next : token.next = readToken(this, token);\n } while (token.kind === TokenKind.COMMENT);\n }\n return token;\n };\n return Lexer;\n}();\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;\n}\nfunction printCharCode(code) {\n return (\n // NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? TokenKind.EOF :\n // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) :\n // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = prev.end;\n while (pos < bodyLength) {\n var code = body.charCodeAt(pos);\n var _line = lexer.line;\n var _col = 1 + pos - lexer.lineStart; // SourceCharacter\n\n switch (code) {\n case 0xfeff: // \n\n case 9: // \\t\n\n case 32: // \n\n case 44:\n // ,\n ++pos;\n continue;\n case 10:\n // \\n\n ++pos;\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n case 13:\n // \\r\n if (body.charCodeAt(pos + 1) === 10) {\n pos += 2;\n } else {\n ++pos;\n }\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n case 33:\n // !\n return new Token(TokenKind.BANG, pos, pos + 1, _line, _col, prev);\n case 35:\n // #\n return readComment(source, pos, _line, _col, prev);\n case 36:\n // $\n return new Token(TokenKind.DOLLAR, pos, pos + 1, _line, _col, prev);\n case 38:\n // &\n return new Token(TokenKind.AMP, pos, pos + 1, _line, _col, prev);\n case 40:\n // (\n return new Token(TokenKind.PAREN_L, pos, pos + 1, _line, _col, prev);\n case 41:\n // )\n return new Token(TokenKind.PAREN_R, pos, pos + 1, _line, _col, prev);\n case 46:\n // .\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new Token(TokenKind.SPREAD, pos, pos + 3, _line, _col, prev);\n }\n break;\n case 58:\n // :\n return new Token(TokenKind.COLON, pos, pos + 1, _line, _col, prev);\n case 61:\n // =\n return new Token(TokenKind.EQUALS, pos, pos + 1, _line, _col, prev);\n case 64:\n // @\n return new Token(TokenKind.AT, pos, pos + 1, _line, _col, prev);\n case 91:\n // [\n return new Token(TokenKind.BRACKET_L, pos, pos + 1, _line, _col, prev);\n case 93:\n // ]\n return new Token(TokenKind.BRACKET_R, pos, pos + 1, _line, _col, prev);\n case 123:\n // {\n return new Token(TokenKind.BRACE_L, pos, pos + 1, _line, _col, prev);\n case 124:\n // |\n return new Token(TokenKind.PIPE, pos, pos + 1, _line, _col, prev);\n case 125:\n // }\n return new Token(TokenKind.BRACE_R, pos, pos + 1, _line, _col, prev);\n case 34:\n // \"\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, _line, _col, prev, lexer);\n }\n return readString(source, pos, _line, _col, prev);\n case 45: // -\n\n case 48: // 0\n\n case 49: // 1\n\n case 50: // 2\n\n case 51: // 3\n\n case 52: // 4\n\n case 53: // 5\n\n case 54: // 6\n\n case 55: // 7\n\n case 56: // 8\n\n case 57:\n // 9\n return readNumber(source, pos, code, _line, _col, prev);\n case 65: // A\n\n case 66: // B\n\n case 67: // C\n\n case 68: // D\n\n case 69: // E\n\n case 70: // F\n\n case 71: // G\n\n case 72: // H\n\n case 73: // I\n\n case 74: // J\n\n case 75: // K\n\n case 76: // L\n\n case 77: // M\n\n case 78: // N\n\n case 79: // O\n\n case 80: // P\n\n case 81: // Q\n\n case 82: // R\n\n case 83: // S\n\n case 84: // T\n\n case 85: // U\n\n case 86: // V\n\n case 87: // W\n\n case 88: // X\n\n case 89: // Y\n\n case 90: // Z\n\n case 95: // _\n\n case 97: // a\n\n case 98: // b\n\n case 99: // c\n\n case 100: // d\n\n case 101: // e\n\n case 102: // f\n\n case 103: // g\n\n case 104: // h\n\n case 105: // i\n\n case 106: // j\n\n case 107: // k\n\n case 108: // l\n\n case 109: // m\n\n case 110: // n\n\n case 111: // o\n\n case 112: // p\n\n case 113: // q\n\n case 114: // r\n\n case 115: // s\n\n case 116: // t\n\n case 117: // u\n\n case 118: // v\n\n case 119: // w\n\n case 120: // x\n\n case 121: // y\n\n case 122:\n // z\n return readName(source, pos, _line, _col, prev);\n }\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n }\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n return new Token(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n if (code === 39) {\n // '\n return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n }\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n do {\n code = body.charCodeAt(++position);\n } while (!isNaN(code) && (\n // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n return new Token(TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n if (code === 45) {\n // -\n code = body.charCodeAt(++position);\n }\n if (code === 48) {\n // 0\n code = body.charCodeAt(++position);\n if (code >= 48 && code <= 57) {\n throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n if (code === 46 || isNameStart(code)) {\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n return new Token(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = body.charCodeAt(++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n return position;\n }\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n while (position < body.length && !isNaN(code = body.charCodeAt(position)) &&\n // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new Token(TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n if (code < 0x0020 && code !== 0x0009) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n ++position;\n if (code === 92) {\n // \\\n value += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(position);\n switch (code) {\n case 34:\n value += '\"';\n break;\n case 47:\n value += '/';\n break;\n case 92:\n value += '\\\\';\n break;\n case 98:\n value += '\\b';\n break;\n case 102:\n value += '\\f';\n break;\n case 110:\n value += '\\n';\n break;\n case 114:\n value += '\\r';\n break;\n case 116:\n value += '\\t';\n break;\n case 117:\n {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\n default:\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n ++position;\n chunkStart = position;\n }\n }\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new Token(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, dedentBlockStringValue(rawValue));\n } // SourceCharacter\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n ++lexer.line;\n lexer.lineStart = position;\n } else if (\n // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 ||\n // _\n code >= 48 && code <= 57 ||\n // 0-9\n code >= 65 && code <= 90 ||\n // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n return new Token(TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n} // _ A-Z a-z\n\nfunction isNameStart(code) {\n return code === 95 || code >= 65 && code <= 90 || code >= 97 && code <= 122;\n}","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Kind } from \"./kinds.mjs\";\nimport { Location } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { Source, isSource } from \"./source.mjs\";\nimport { DirectiveLocation } from \"./directiveLocation.mjs\";\nimport { Lexer, isPunctuatorTokenKind } from \"./lexer.mjs\";\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport var Parser = /*#__PURE__*/function () {\n function Parser(source, options) {\n var sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n var _proto = Parser.prototype;\n _proto.parseName = function parseName() {\n var token = this.expectToken(TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */;\n\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */;\n\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(TokenKind.NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n case 'fragment':\n return this.parseFragmentDefinition();\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return this.parseTypeSystemDefinition();\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */;\n\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n if (this.peek(TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n var operation = this.parseOperationType();\n var name;\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */;\n\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(TokenKind.NAME);\n switch (operationToken.value) {\n case 'query':\n return 'query';\n case 'mutation':\n return 'mutation';\n case 'subscription':\n return 'subscription';\n }\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */;\n\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */;\n\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */;\n\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */;\n\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */;\n\n _proto.parseSelection = function parseSelection() {\n return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */;\n\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */;\n\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */;\n\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */;\n\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */;\n\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var _this$_options;\n var start = this._lexer.token;\n this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */;\n\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */;\n\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n case TokenKind.INT:\n this._lexer.advance();\n return {\n kind: Kind.INT,\n value: token.value,\n loc: this.loc(token)\n };\n case TokenKind.FLOAT:\n this._lexer.advance();\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n case TokenKind.NAME:\n this._lexer.advance();\n switch (token.value) {\n case 'true':\n return {\n kind: Kind.BOOLEAN,\n value: true,\n loc: this.loc(token)\n };\n case 'false':\n return {\n kind: Kind.BOOLEAN,\n value: false,\n loc: this.loc(token)\n };\n case 'null':\n return {\n kind: Kind.NULL,\n loc: this.loc(token)\n };\n default:\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n }\n case TokenKind.DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n break;\n }\n throw this.unexpected();\n };\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n this._lexer.advance();\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */;\n\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n var start = this._lexer.token;\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n return {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */;\n\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n var start = this._lexer.token;\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n return {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */;\n\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */;\n\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */;\n\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */;\n\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n return type;\n }\n /**\n * NamedType : Name\n */;\n\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Type Definition section.\n\n /**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */;\n\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n case 'scalar':\n return this.parseScalarTypeDefinition();\n case 'type':\n return this.parseObjectTypeDefinition();\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n case 'union':\n return this.parseUnionTypeDefinition();\n case 'enum':\n return this.parseEnumTypeDefinition();\n case 'input':\n return this.parseInputObjectTypeDefinition();\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n throw this.unexpected(keywordToken);\n };\n _proto.peekDescription = function peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */;\n\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n */;\n\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n description: description,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */;\n\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n var type = this.parseNamedType();\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */;\n\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */;\n\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */;\n\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var _this$_options2;\n if (!this.expectOptionalKeyword('implements')) {\n return [];\n }\n if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {\n var types = []; // Optional leading ampersand\n\n this.expectOptionalToken(TokenKind.AMP);\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(TokenKind.AMP) || this.peek(TokenKind.NAME));\n return types;\n }\n return this.delimitedMany(TokenKind.AMP, this.parseNamedType);\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */;\n\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n var _this$_options3;\n\n // Legacy support for the SDL?\n if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) {\n this._lexer.advance();\n this._lexer.advance();\n return [];\n }\n return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */;\n\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */;\n\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */;\n\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */;\n\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */;\n\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */;\n\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */;\n\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */;\n\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */;\n\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */;\n\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */;\n\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseInputValueDef, TokenKind.BRACE_R);\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */;\n\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n case 'scalar':\n return this.parseScalarTypeExtension();\n case 'type':\n return this.parseObjectTypeExtension();\n case 'interface':\n return this.parseInterfaceTypeExtension();\n case 'union':\n return this.parseUnionTypeExtension();\n case 'enum':\n return this.parseEnumTypeExtension();\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */;\n\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */;\n\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n if (directives.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */;\n\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */;\n\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */;\n\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */;\n\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */;\n\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */;\n\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */;\n\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */;\n\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n if (DirectiveLocation[name.value] !== undefined) {\n return name;\n }\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in the source that created a given parsed object.\n */;\n\n _proto.loc = function loc(startToken) {\n var _this$_options4;\n if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {\n return new Location(startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */;\n\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */;\n\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n if (token.kind === kind) {\n this._lexer.advance();\n return token;\n }\n throw syntaxError(this._lexer.source, token.start, \"Expected \".concat(getTokenKindDesc(kind), \", found \").concat(getTokenDesc(token), \".\"));\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and return undefined.\n */;\n\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n if (token.kind === kind) {\n this._lexer.advance();\n return token;\n }\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */;\n\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw syntaxError(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token), \".\"));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */;\n\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n return true;\n }\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */;\n\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token), \".\"));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */;\n\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */;\n\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n return nodes;\n }\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */;\n\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */;\n\n _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n var nodes = [];\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n return nodes;\n };\n return Parser;\n}();\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? \" \\\"\".concat(value, \"\\\"\") : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? \"\\\"\".concat(kind, \"\\\"\") : kind;\n}","import { __assign } from \"tslib\";\nimport { parse } from 'graphql';\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n var seenKeys = new Set();\n var definitions = [];\n ast.definitions.forEach(function (fragmentDefinition) {\n if (fragmentDefinition.kind === 'FragmentDefinition') {\n var fragmentName = fragmentDefinition.name.value;\n var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n var sourceKeySet = fragmentSourceMap.get(fragmentName);\n if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n if (printFragmentWarnings) {\n console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\" + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\" + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n }\n } else if (!sourceKeySet) {\n fragmentSourceMap.set(fragmentName, sourceKeySet = new Set());\n }\n sourceKeySet.add(sourceKey);\n if (!seenKeys.has(sourceKey)) {\n seenKeys.add(sourceKey);\n definitions.push(fragmentDefinition);\n }\n } else {\n definitions.push(fragmentDefinition);\n }\n });\n return __assign(__assign({}, ast), {\n definitions: definitions\n });\n}\nfunction stripLoc(doc) {\n var workSet = new Set(doc.definitions);\n workSet.forEach(function (node) {\n if (node.loc) delete node.loc;\n Object.keys(node).forEach(function (key) {\n var value = node[key];\n if (value && typeof value === 'object') {\n workSet.add(value);\n }\n });\n });\n var loc = doc.loc;\n if (loc) {\n delete loc.startToken;\n delete loc.endToken;\n }\n return doc;\n}\nfunction parseDocument(source) {\n var cacheKey = normalize(source);\n if (!docCache.has(cacheKey)) {\n var parsed = parse(source, {\n experimentalFragmentVariables: experimentalFragmentVariables,\n allowLegacyFragmentVariables: experimentalFragmentVariables\n });\n if (!parsed || parsed.kind !== 'Document') {\n throw new Error('Not a valid GraphQL document.');\n }\n docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n }\n return docCache.get(cacheKey);\n}\nexport function gql(literals) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof literals === 'string') {\n literals = [literals];\n }\n var result = literals[0];\n args.forEach(function (arg, i) {\n if (arg && arg.kind === 'Document') {\n result += arg.loc.source.body;\n } else {\n result += arg;\n }\n result += literals[i + 1];\n });\n return parseDocument(result);\n}\nexport function resetCaches() {\n docCache.clear();\n fragmentSourceMap.clear();\n}\nexport function disableFragmentWarnings() {\n printFragmentWarnings = false;\n}\nexport function enableExperimentalFragmentVariables() {\n experimentalFragmentVariables = true;\n}\nexport function disableExperimentalFragmentVariables() {\n experimentalFragmentVariables = false;\n}\nvar extras = {\n gql: gql,\n resetCaches: resetCaches,\n disableFragmentWarnings: disableFragmentWarnings,\n enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\nexport default gql;","// Autriche, Allemagne, Liechtenstein, Suisse\nexport const applicationsCentralEurope = ['aut', 'deu', 'lie', 'che'];\n\n// Albanie, Bosnie-Herzégovine, Bulgarie, Croatie, Chypre, République tchèque, Estonie, Grèce, Hongrie, Israël, Kosovo, Lettonie, Lituanie, Monténégro, Macédoine du Nord, Roumanie, Serbie, Slovaquie, Pologne, Slovénie, Ukraine, Moldavie\nexport const applicationsEasternEurope = [\n 'alb',\n 'bih',\n 'bgr',\n 'hrv',\n 'cyp',\n 'cze',\n 'est',\n 'grc',\n 'hun',\n 'isr',\n 'xkx',\n 'lva',\n 'lut',\n 'mne',\n 'mkd',\n 'rou',\n 'srb',\n 'svk',\n 'pol',\n 'svn',\n 'ukr',\n 'mda',\n];\n\n// France, Belgique, Monaco, Pays-Bas, Luxembourg\nexport const applicationsFranceBenelux = ['fra', 'bel', 'mco', 'nld', 'lux'];\n\n// Arménie, Azerbaïdjan, Biélorussie, Géorgie, Kazakhstan, Kirghizistan, Mongolie, Russie, Tadjikistan, Turkménistan, Ouzbékistan\nexport const applicationsRussiaCis = ['arm', 'aze', 'blr', 'geo', 'kaz', 'kgz', 'mng', 'rus', 'tjk', 'tkm', 'uzb'];\n\n// Turquie\nexport const applicationTurkey = ['tur'];\n\n// Portugal, Espagne, Andorre, Vatican, Italie, Saint-Marin\nexport const applicationIberiaItaly = ['and', 'prt', 'esp', 'vat', 'ita', 'smr'];\n\n// Royaume-Uni, Danemark, Finlande, Islande, Norvège, Suède, Irlande, Malte\nexport const applicationsUkNordics = ['gbr', 'dnk', 'fin', 'isl', 'nor', 'swe', 'irl', 'mlt'];\n\n// Algérie, Bahreïn, Égypte, Irak, Jordanie, Koweït, Liban, Libye, Maroc, Oman, Qatar, Arabie saoudite, Tunisie, Émirats arabes un\nexport const applicationsMiddleEastNorthAfrica = [\n 'alg',\n 'bah',\n 'egy',\n 'ira',\n 'jor',\n 'kuw',\n 'leb',\n 'lib',\n 'mrc',\n 'oma',\n 'qat',\n 'sab',\n 'tun',\n 'uae',\n 'pal',\n];\n","import gql from 'graphql-tag';\nimport { CraftForm, CraftFormElement } from '../../interfaces/form.interface';\nimport {\n applicationIberiaItaly,\n applicationTurkey,\n applicationsCentralEurope,\n applicationsEasternEurope,\n applicationsFranceBenelux,\n applicationsMiddleEastNorthAfrica,\n applicationsRussiaCis,\n applicationsUkNordics,\n} from './form.constant';\nimport { Region } from './type';\n\nexport const ADD_MUTATION = (functionName: string, form: CraftFormElement[]) => {\n const mutationVariables = form.map(element => `$${element.name}: ${element.type === 'dropdown' ? '[String]' : 'String'}`).join(', ');\n const mutationArguments = form.map(element => `${element.name}:$${element.name}`).join(', ');\n\n return gql`\n mutation(\n $title: String,\n $slug: String,\n $tournamentApplicationStatus: String,\n $tournamentApplicationGames: String,\n\t $applicationRegion: String,\n\t $applicationLanguage: String,\n ${mutationVariables}\n\t ) {\n\t\t${functionName}(\n\t\t\tauthorId: 1,\n\t\t\ttitle: $title,\n\t\t\tslug: $slug,\n\t\t\tapplicationRegion: $applicationRegion,\n\t\t\tapplicationLanguage: $applicationLanguage,\n\t\t\ttournamentApplicationStatus: $tournamentApplicationStatus,\n\t\t\ttournamentApplicationGames: $tournamentApplicationGames,\n\t\t\t${mutationArguments}\n ) {\n id\n }\n }\n `;\n};\n\nexport const mapAddMutation = (form: { [key: string]: any }, game: string, lang: CraftForm['lang'] = 'en') => {\n const mutationData: { [key: string]: any } = {};\n\n for (const [key, value] of Object.entries(form)) {\n mutationData[key] = value;\n }\n\n mutationData['title'] = form.eventName;\n mutationData['slug'] = form.eventName;\n mutationData['tournamentApplicationStatus'] = 'unread';\n mutationData['tournamentApplicationGames'] = game;\n mutationData['applicationLanguage'] = lang || 'en';\n\n return mutationData;\n};\n\nexport const defineApplicationRegion = (counter: Record, number>): Region => {\n let definedCounter = 0;\n for (const prop in counter) {\n if (counter[prop as keyof typeof counter]) {\n definedCounter += 1;\n }\n }\n\n if (definedCounter > 1) {\n return 'paneuropean';\n } else if (counter.franceBenelux > 0) {\n return 'franceBenelux';\n } else if (counter.centralEurope > 0) {\n return 'centralEurope';\n } else if (counter.easternEurope > 0) {\n return 'easternEurope';\n } else if (counter.russiaCis > 0) {\n return 'russiaCis';\n } else if (counter.turkey > 0) {\n return 'turkey';\n } else if (counter.iberiaItaly > 0) {\n return 'iberiaItaly';\n } else if (counter.ukNordics > 0) {\n return 'ukNordics';\n } else if (counter.middleEastNorthAfrica > 0) {\n return 'middleEastNorthAfrica';\n }\n return 'paneuropean';\n};\n\nexport const regionCounter = (form: { [key: string]: any }): Record, number> => {\n const counter: Record, number> = {\n franceBenelux: 0,\n centralEurope: 0,\n easternEurope: 0,\n russiaCis: 0,\n turkey: 0,\n iberiaItaly: 0,\n ukNordics: 0,\n middleEastNorthAfrica: 0,\n };\n\n if (form.countries) {\n form.countries.forEach((country: string) => {\n if (applicationsFranceBenelux.includes(country)) {\n counter.franceBenelux += 1;\n } else if (applicationsCentralEurope.includes(country)) {\n counter.centralEurope += 1;\n } else if (applicationsEasternEurope.includes(country)) {\n counter.easternEurope += 1;\n } else if (applicationsRussiaCis.includes(country)) {\n counter.russiaCis += 1;\n } else if (applicationTurkey.includes(country)) {\n counter.turkey += 1;\n } else if (applicationIberiaItaly.includes(country)) {\n counter.iberiaItaly += 1;\n } else if (applicationsUkNordics.includes(country)) {\n counter.ukNordics += 1;\n } else if (applicationsMiddleEastNorthAfrica.includes(country)) {\n counter.middleEastNorthAfrica += 1;\n }\n });\n }\n\n return counter;\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport { useFormControl } from '../FormControl';\nimport withStyles from '../styles/withStyles';\nimport Typography from '../Typography';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n cursor: 'pointer',\n // For correct alignment with the text.\n verticalAlign: 'middle',\n WebkitTapHighlightColor: 'transparent',\n marginLeft: -11,\n marginRight: 16,\n // used for row presentation of radio/checkbox\n '&$disabled': {\n cursor: 'default'\n }\n },\n /* Styles applied to the root element if `labelPlacement=\"start\"`. */\n labelPlacementStart: {\n flexDirection: 'row-reverse',\n marginLeft: 16,\n // used for row presentation of radio/checkbox\n marginRight: -11\n },\n /* Styles applied to the root element if `labelPlacement=\"top\"`. */\n labelPlacementTop: {\n flexDirection: 'column-reverse',\n marginLeft: 16\n },\n /* Styles applied to the root element if `labelPlacement=\"bottom\"`. */\n labelPlacementBottom: {\n flexDirection: 'column',\n marginLeft: 16\n },\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n /* Styles applied to the label's Typography component. */\n label: {\n '&$disabled': {\n color: theme.palette.text.disabled\n }\n }\n };\n};\n/**\n * Drop in replacement of the `Radio`, `Switch` and `Checkbox` component.\n * Use this component if you want to display an extra label.\n */\n\nvar FormControlLabel = /*#__PURE__*/React.forwardRef(function FormControlLabel(props, ref) {\n var checked = props.checked,\n classes = props.classes,\n className = props.className,\n control = props.control,\n disabledProp = props.disabled,\n inputRef = props.inputRef,\n label = props.label,\n _props$labelPlacement = props.labelPlacement,\n labelPlacement = _props$labelPlacement === void 0 ? 'end' : _props$labelPlacement,\n name = props.name,\n onChange = props.onChange,\n value = props.value,\n other = _objectWithoutProperties(props, [\"checked\", \"classes\", \"className\", \"control\", \"disabled\", \"inputRef\", \"label\", \"labelPlacement\", \"name\", \"onChange\", \"value\"]);\n var muiFormControl = useFormControl();\n var disabled = disabledProp;\n if (typeof disabled === 'undefined' && typeof control.props.disabled !== 'undefined') {\n disabled = control.props.disabled;\n }\n if (typeof disabled === 'undefined' && muiFormControl) {\n disabled = muiFormControl.disabled;\n }\n var controlProps = {\n disabled: disabled\n };\n ['checked', 'name', 'onChange', 'value', 'inputRef'].forEach(function (key) {\n if (typeof control.props[key] === 'undefined' && typeof props[key] !== 'undefined') {\n controlProps[key] = props[key];\n }\n });\n return /*#__PURE__*/React.createElement(\"label\", _extends({\n className: clsx(classes.root, className, labelPlacement !== 'end' && classes[\"labelPlacement\".concat(capitalize(labelPlacement))], disabled && classes.disabled),\n ref: ref\n }, other), /*#__PURE__*/React.cloneElement(control, controlProps), /*#__PURE__*/React.createElement(Typography, {\n component: \"span\",\n className: clsx(classes.label, disabled && classes.disabled)\n }, label));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiFormControlLabel'\n})(FormControlLabel);","import { Checkbox, FormControlLabel, InputLabel } from '@material-ui/core';\nimport React, { FC, useEffect, useState } from 'react';\nimport { Control, Controller, FieldValues } from 'react-hook-form';\nimport { CraftFormElement, CraftFormElementChoice } from '../../../interfaces/form.interface';\n\nconst RTCheckbox: FC<{\n control: Control;\n question: CraftFormElement;\n onChange: (value: string[]) => void;\n}> = ({ question, control }): any => {\n const [checkedValues, setCheckedValues] = useState();\n const [required, setRequired] = useState(true);\n\n const isChecked = (choice: CraftFormElementChoice): boolean => {\n let isChecked = false;\n checkedValues?.forEach(v => {\n if (v.value === choice.value) {\n isChecked = true;\n }\n });\n return isChecked;\n };\n\n useEffect(() => {\n if (checkedValues && checkedValues.length > 0) {\n setRequired(false);\n }\n }, [checkedValues]);\n\n return (\n <>\n \n {question.title}\n {question.isRequired ? ' *' : ''}\n \n
\n {question.choices.map(choice => (\n (\n \n )}\n />\n }\n />\n ))}\n
\n \n );\n};\n\nexport default RTCheckbox;\n","import defaultMoment from 'moment';\nvar MomentUtils = /** @class */function () {\n function MomentUtils(_a) {\n var _b = _a === void 0 ? {} : _a,\n locale = _b.locale,\n instance = _b.instance,\n moment = _b.moment;\n this.yearFormat = \"YYYY\";\n this.yearMonthFormat = \"MMMM YYYY\";\n this.dateTime12hFormat = \"MMMM Do hh:mm a\";\n this.dateTime24hFormat = \"MMMM Do HH:mm\";\n this.time12hFormat = \"hh:mm A\";\n this.time24hFormat = \"HH:mm\";\n this.dateFormat = \"MMMM Do\";\n this.moment = instance || moment || defaultMoment;\n this.locale = locale;\n }\n MomentUtils.prototype.parse = function (value, format) {\n if (value === \"\") {\n return null;\n }\n return this.moment(value, format, true);\n };\n MomentUtils.prototype.date = function (value) {\n if (value === null) {\n return null;\n }\n var moment = this.moment(value);\n moment.locale(this.locale);\n return moment;\n };\n MomentUtils.prototype.isValid = function (value) {\n return this.moment(value).isValid();\n };\n MomentUtils.prototype.isNull = function (date) {\n return date === null;\n };\n MomentUtils.prototype.getDiff = function (date, comparing) {\n return date.diff(comparing);\n };\n MomentUtils.prototype.isAfter = function (date, value) {\n return date.isAfter(value);\n };\n MomentUtils.prototype.isBefore = function (date, value) {\n return date.isBefore(value);\n };\n MomentUtils.prototype.isAfterDay = function (date, value) {\n return date.isAfter(value, \"day\");\n };\n MomentUtils.prototype.isBeforeDay = function (date, value) {\n return date.isBefore(value, \"day\");\n };\n MomentUtils.prototype.isBeforeYear = function (date, value) {\n return date.isBefore(value, \"year\");\n };\n MomentUtils.prototype.isAfterYear = function (date, value) {\n return date.isAfter(value, \"year\");\n };\n MomentUtils.prototype.startOfDay = function (date) {\n return date.clone().startOf(\"day\");\n };\n MomentUtils.prototype.endOfDay = function (date) {\n return date.clone().endOf(\"day\");\n };\n MomentUtils.prototype.format = function (date, formatString) {\n date.locale(this.locale);\n return date.format(formatString);\n };\n MomentUtils.prototype.formatNumber = function (numberToFormat) {\n return numberToFormat;\n };\n MomentUtils.prototype.getHours = function (date) {\n return date.get(\"hours\");\n };\n MomentUtils.prototype.addDays = function (date, count) {\n return count < 0 ? date.clone().subtract(Math.abs(count), \"days\") : date.clone().add(count, \"days\");\n };\n MomentUtils.prototype.setHours = function (date, count) {\n return date.clone().hours(count);\n };\n MomentUtils.prototype.getMinutes = function (date) {\n return date.get(\"minutes\");\n };\n MomentUtils.prototype.setMinutes = function (date, count) {\n return date.clone().minutes(count);\n };\n MomentUtils.prototype.getSeconds = function (date) {\n return date.get(\"seconds\");\n };\n MomentUtils.prototype.setSeconds = function (date, count) {\n return date.clone().seconds(count);\n };\n MomentUtils.prototype.getMonth = function (date) {\n return date.get(\"month\");\n };\n MomentUtils.prototype.isSameDay = function (date, comparing) {\n return date.isSame(comparing, \"day\");\n };\n MomentUtils.prototype.isSameMonth = function (date, comparing) {\n return date.isSame(comparing, \"month\");\n };\n MomentUtils.prototype.isSameYear = function (date, comparing) {\n return date.isSame(comparing, \"year\");\n };\n MomentUtils.prototype.isSameHour = function (date, comparing) {\n return date.isSame(comparing, \"hour\");\n };\n MomentUtils.prototype.setMonth = function (date, count) {\n return date.clone().month(count);\n };\n MomentUtils.prototype.getMeridiemText = function (ampm) {\n return ampm === \"am\" ? \"AM\" : \"PM\";\n };\n MomentUtils.prototype.startOfMonth = function (date) {\n return date.clone().startOf(\"month\");\n };\n MomentUtils.prototype.endOfMonth = function (date) {\n return date.clone().endOf(\"month\");\n };\n MomentUtils.prototype.getNextMonth = function (date) {\n return date.clone().add(1, \"month\");\n };\n MomentUtils.prototype.getPreviousMonth = function (date) {\n return date.clone().subtract(1, \"month\");\n };\n MomentUtils.prototype.getMonthArray = function (date) {\n var firstMonth = date.clone().startOf(\"year\");\n var monthArray = [firstMonth];\n while (monthArray.length < 12) {\n var prevMonth = monthArray[monthArray.length - 1];\n monthArray.push(this.getNextMonth(prevMonth));\n }\n return monthArray;\n };\n MomentUtils.prototype.getYear = function (date) {\n return date.get(\"year\");\n };\n MomentUtils.prototype.setYear = function (date, year) {\n return date.clone().set(\"year\", year);\n };\n MomentUtils.prototype.mergeDateAndTime = function (date, time) {\n return this.setMinutes(this.setHours(date, this.getHours(time)), this.getMinutes(time));\n };\n MomentUtils.prototype.getWeekdays = function () {\n return this.moment.weekdaysShort(true);\n };\n MomentUtils.prototype.isEqual = function (value, comparing) {\n if (value === null && comparing === null) {\n return true;\n }\n return this.moment(value).isSame(comparing);\n };\n MomentUtils.prototype.getWeekArray = function (date) {\n var start = date.clone().startOf(\"month\").startOf(\"week\");\n var end = date.clone().endOf(\"month\").endOf(\"week\");\n var count = 0;\n var current = start;\n var nestedWeeks = [];\n while (current.isBefore(end)) {\n var weekNumber = Math.floor(count / 7);\n nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];\n nestedWeeks[weekNumber].push(current);\n current = current.clone().add(1, \"day\");\n count += 1;\n }\n return nestedWeeks;\n };\n MomentUtils.prototype.getYearRange = function (start, end) {\n var startDate = this.moment(start).startOf(\"year\");\n var endDate = this.moment(end).endOf(\"year\");\n var years = [];\n var current = startDate;\n while (current.isBefore(endDate)) {\n years.push(current);\n current = current.clone().add(1, \"year\");\n }\n return years;\n };\n // displaying methods\n MomentUtils.prototype.getCalendarHeaderText = function (date) {\n return this.format(date, this.yearMonthFormat);\n };\n MomentUtils.prototype.getYearText = function (date) {\n return this.format(date, \"YYYY\");\n };\n MomentUtils.prototype.getDatePickerHeaderText = function (date) {\n return this.format(date, \"ddd, MMM D\");\n };\n MomentUtils.prototype.getDateTimePickerHeaderText = function (date) {\n return this.format(date, \"MMM D\");\n };\n MomentUtils.prototype.getMonthText = function (date) {\n return this.format(date, \"MMMM\");\n };\n MomentUtils.prototype.getDayText = function (date) {\n return this.format(date, \"D\");\n };\n MomentUtils.prototype.getHourText = function (date, ampm) {\n return this.format(date, ampm ? \"hh\" : \"HH\");\n };\n MomentUtils.prototype.getMinuteText = function (date) {\n return this.format(date, \"mm\");\n };\n MomentUtils.prototype.getSecondText = function (date) {\n return this.format(date, \"ss\");\n };\n return MomentUtils;\n}();\nexport default MomentUtils;","import MomentUtils from '@date-io/moment';\nimport { FormLabel } from '@material-ui/core';\nimport { KeyboardDatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport React, { FC } from 'react';\nimport { Control, Controller, FieldValues } from 'react-hook-form';\n\nimport { CraftFormElement } from '../../../interfaces/form.interface';\n\nconst RTDate: FC<{\n control: Control;\n question: CraftFormElement;\n}> = ({ control, question }) => {\n return (\n (\n <>\n \n {question.title} {question.isRequired ? ' *' : ''}\n \n \n {\n onChange(e?.format('YYYY-MM-DD'));\n }}\n KeyboardButtonProps={{\n 'aria-label': 'change date',\n }}\n />\n \n \n )}\n />\n );\n};\n\nexport default RTDate;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n boxSizing: 'border-box',\n lineHeight: '48px',\n listStyle: 'none',\n color: theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.pxToRem(14)\n },\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n /* Styles applied to the inner `component` element if `disableGutters={false}`. */\n gutters: {\n paddingLeft: 16,\n paddingRight: 16\n },\n /* Styles applied to the root element if `inset={true}`. */\n inset: {\n paddingLeft: 72\n },\n /* Styles applied to the root element if `disableSticky={false}`. */\n sticky: {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: 'inherit'\n }\n };\n};\nvar ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'default' : _props$color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'li' : _props$component,\n _props$disableGutters = props.disableGutters,\n disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,\n _props$disableSticky = props.disableSticky,\n disableSticky = _props$disableSticky === void 0 ? false : _props$disableSticky,\n _props$inset = props.inset,\n inset = _props$inset === void 0 ? false : _props$inset,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"]);\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, color !== 'default' && classes[\"color\".concat(capitalize(color))], inset && classes.inset, !disableSticky && classes.sticky, !disableGutters && classes.gutters),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiListSubheader'\n})(ListSubheader);","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport CancelIcon from '../internal/svg-icons/Cancel';\nimport withStyles from '../styles/withStyles';\nimport { emphasize, alpha } from '../styles/colorManipulator';\nimport useForkRef from '../utils/useForkRef';\nimport unsupportedProp from '../utils/unsupportedProp';\nimport capitalize from '../utils/capitalize';\nimport ButtonBase from '../ButtonBase';\nexport var styles = function styles(theme) {\n var backgroundColor = theme.palette.type === 'light' ? theme.palette.grey[300] : theme.palette.grey[700];\n var deleteIconColor = alpha(theme.palette.text.primary, 0.26);\n return {\n /* Styles applied to the root element. */\n root: {\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(13),\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 32,\n color: theme.palette.getContrastText(backgroundColor),\n backgroundColor: backgroundColor,\n borderRadius: 32 / 2,\n whiteSpace: 'nowrap',\n transition: theme.transitions.create(['background-color', 'box-shadow']),\n // label will inherit this from root, then `clickable` class overrides this for both\n cursor: 'default',\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n textDecoration: 'none',\n border: 'none',\n // Remove `button` border\n padding: 0,\n // Remove `button` padding\n verticalAlign: 'middle',\n boxSizing: 'border-box',\n '&$disabled': {\n opacity: 0.5,\n pointerEvents: 'none'\n },\n '& $avatar': {\n marginLeft: 5,\n marginRight: -6,\n width: 24,\n height: 24,\n color: theme.palette.type === 'light' ? theme.palette.grey[700] : theme.palette.grey[300],\n fontSize: theme.typography.pxToRem(12)\n },\n '& $avatarColorPrimary': {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.dark\n },\n '& $avatarColorSecondary': {\n color: theme.palette.secondary.contrastText,\n backgroundColor: theme.palette.secondary.dark\n },\n '& $avatarSmall': {\n marginLeft: 4,\n marginRight: -4,\n width: 18,\n height: 18,\n fontSize: theme.typography.pxToRem(10)\n }\n },\n /* Styles applied to the root element if `size=\"small\"`. */\n sizeSmall: {\n height: 24\n },\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText\n },\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n backgroundColor: theme.palette.secondary.main,\n color: theme.palette.secondary.contrastText\n },\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n /* Styles applied to the root element if `onClick` is defined or `clickable={true}`. */\n clickable: {\n userSelect: 'none',\n WebkitTapHighlightColor: 'transparent',\n cursor: 'pointer',\n '&:hover, &:focus': {\n backgroundColor: emphasize(backgroundColor, 0.08)\n },\n '&:active': {\n boxShadow: theme.shadows[1]\n }\n },\n /* Styles applied to the root element if `onClick` and `color=\"primary\"` is defined or `clickable={true}`. */\n clickableColorPrimary: {\n '&:hover, &:focus': {\n backgroundColor: emphasize(theme.palette.primary.main, 0.08)\n }\n },\n /* Styles applied to the root element if `onClick` and `color=\"secondary\"` is defined or `clickable={true}`. */\n clickableColorSecondary: {\n '&:hover, &:focus': {\n backgroundColor: emphasize(theme.palette.secondary.main, 0.08)\n }\n },\n /* Styles applied to the root element if `onDelete` is defined. */\n deletable: {\n '&:focus': {\n backgroundColor: emphasize(backgroundColor, 0.08)\n }\n },\n /* Styles applied to the root element if `onDelete` and `color=\"primary\"` is defined. */\n deletableColorPrimary: {\n '&:focus': {\n backgroundColor: emphasize(theme.palette.primary.main, 0.2)\n }\n },\n /* Styles applied to the root element if `onDelete` and `color=\"secondary\"` is defined. */\n deletableColorSecondary: {\n '&:focus': {\n backgroundColor: emphasize(theme.palette.secondary.main, 0.2)\n }\n },\n /* Styles applied to the root element if `variant=\"outlined\"`. */\n outlined: {\n backgroundColor: 'transparent',\n border: \"1px solid \".concat(theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'),\n '$clickable&:hover, $clickable&:focus, $deletable&:focus': {\n backgroundColor: alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity)\n },\n '& $avatar': {\n marginLeft: 4\n },\n '& $avatarSmall': {\n marginLeft: 2\n },\n '& $icon': {\n marginLeft: 4\n },\n '& $iconSmall': {\n marginLeft: 2\n },\n '& $deleteIcon': {\n marginRight: 5\n },\n '& $deleteIconSmall': {\n marginRight: 3\n }\n },\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"primary\"`. */\n outlinedPrimary: {\n color: theme.palette.primary.main,\n border: \"1px solid \".concat(theme.palette.primary.main),\n '$clickable&:hover, $clickable&:focus, $deletable&:focus': {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.hoverOpacity)\n }\n },\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"secondary\"`. */\n outlinedSecondary: {\n color: theme.palette.secondary.main,\n border: \"1px solid \".concat(theme.palette.secondary.main),\n '$clickable&:hover, $clickable&:focus, $deletable&:focus': {\n backgroundColor: alpha(theme.palette.secondary.main, theme.palette.action.hoverOpacity)\n }\n },\n // TODO v5: remove\n\n /* Styles applied to the `avatar` element. */\n avatar: {},\n /* Styles applied to the `avatar` element if `size=\"small\"`. */\n avatarSmall: {},\n /* Styles applied to the `avatar` element if `color=\"primary\"`. */\n avatarColorPrimary: {},\n /* Styles applied to the `avatar` element if `color=\"secondary\"`. */\n avatarColorSecondary: {},\n /* Styles applied to the `icon` element. */\n icon: {\n color: theme.palette.type === 'light' ? theme.palette.grey[700] : theme.palette.grey[300],\n marginLeft: 5,\n marginRight: -6\n },\n /* Styles applied to the `icon` element if `size=\"small\"`. */\n iconSmall: {\n width: 18,\n height: 18,\n marginLeft: 4,\n marginRight: -4\n },\n /* Styles applied to the `icon` element if `color=\"primary\"`. */\n iconColorPrimary: {\n color: 'inherit'\n },\n /* Styles applied to the `icon` element if `color=\"secondary\"`. */\n iconColorSecondary: {\n color: 'inherit'\n },\n /* Styles applied to the label `span` element. */\n label: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n paddingLeft: 12,\n paddingRight: 12,\n whiteSpace: 'nowrap'\n },\n /* Styles applied to the label `span` element if `size=\"small\"`. */\n labelSmall: {\n paddingLeft: 8,\n paddingRight: 8\n },\n /* Styles applied to the `deleteIcon` element. */\n deleteIcon: {\n WebkitTapHighlightColor: 'transparent',\n color: deleteIconColor,\n height: 22,\n width: 22,\n cursor: 'pointer',\n margin: '0 5px 0 -6px',\n '&:hover': {\n color: alpha(deleteIconColor, 0.4)\n }\n },\n /* Styles applied to the `deleteIcon` element if `size=\"small\"`. */\n deleteIconSmall: {\n height: 16,\n width: 16,\n marginRight: 4,\n marginLeft: -4\n },\n /* Styles applied to the deleteIcon element if `color=\"primary\"` and `variant=\"default\"`. */\n deleteIconColorPrimary: {\n color: alpha(theme.palette.primary.contrastText, 0.7),\n '&:hover, &:active': {\n color: theme.palette.primary.contrastText\n }\n },\n /* Styles applied to the deleteIcon element if `color=\"secondary\"` and `variant=\"default\"`. */\n deleteIconColorSecondary: {\n color: alpha(theme.palette.secondary.contrastText, 0.7),\n '&:hover, &:active': {\n color: theme.palette.secondary.contrastText\n }\n },\n /* Styles applied to the deleteIcon element if `color=\"primary\"` and `variant=\"outlined\"`. */\n deleteIconOutlinedColorPrimary: {\n color: alpha(theme.palette.primary.main, 0.7),\n '&:hover, &:active': {\n color: theme.palette.primary.main\n }\n },\n /* Styles applied to the deleteIcon element if `color=\"secondary\"` and `variant=\"outlined\"`. */\n deleteIconOutlinedColorSecondary: {\n color: alpha(theme.palette.secondary.main, 0.7),\n '&:hover, &:active': {\n color: theme.palette.secondary.main\n }\n }\n };\n};\nfunction isDeleteKeyboardEvent(keyboardEvent) {\n return keyboardEvent.key === 'Backspace' || keyboardEvent.key === 'Delete';\n}\n/**\n * Chips represent complex entities in small blocks, such as a contact.\n */\n\nvar Chip = /*#__PURE__*/React.forwardRef(function Chip(props, ref) {\n var avatarProp = props.avatar,\n classes = props.classes,\n className = props.className,\n clickableProp = props.clickable,\n _props$color = props.color,\n color = _props$color === void 0 ? 'default' : _props$color,\n ComponentProp = props.component,\n deleteIconProp = props.deleteIcon,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n iconProp = props.icon,\n label = props.label,\n onClick = props.onClick,\n onDelete = props.onDelete,\n onKeyDown = props.onKeyDown,\n onKeyUp = props.onKeyUp,\n _props$size = props.size,\n size = _props$size === void 0 ? 'medium' : _props$size,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'default' : _props$variant,\n other = _objectWithoutProperties(props, [\"avatar\", \"classes\", \"className\", \"clickable\", \"color\", \"component\", \"deleteIcon\", \"disabled\", \"icon\", \"label\", \"onClick\", \"onDelete\", \"onKeyDown\", \"onKeyUp\", \"size\", \"variant\"]);\n var chipRef = React.useRef(null);\n var handleRef = useForkRef(chipRef, ref);\n var handleDeleteIconClick = function handleDeleteIconClick(event) {\n // Stop the event from bubbling up to the `Chip`\n event.stopPropagation();\n if (onDelete) {\n onDelete(event);\n }\n };\n var handleKeyDown = function handleKeyDown(event) {\n // Ignore events from children of `Chip`.\n if (event.currentTarget === event.target && isDeleteKeyboardEvent(event)) {\n // will be handled in keyUp, otherwise some browsers\n // might init navigation\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n var handleKeyUp = function handleKeyUp(event) {\n // Ignore events from children of `Chip`.\n if (event.currentTarget === event.target) {\n if (onDelete && isDeleteKeyboardEvent(event)) {\n onDelete(event);\n } else if (event.key === 'Escape' && chipRef.current) {\n chipRef.current.blur();\n }\n }\n if (onKeyUp) {\n onKeyUp(event);\n }\n };\n var clickable = clickableProp !== false && onClick ? true : clickableProp;\n var small = size === 'small';\n var Component = ComponentProp || (clickable ? ButtonBase : 'div');\n var moreProps = Component === ButtonBase ? {\n component: 'div'\n } : {};\n var deleteIcon = null;\n if (onDelete) {\n var customClasses = clsx(color !== 'default' && (variant === \"default\" ? classes[\"deleteIconColor\".concat(capitalize(color))] : classes[\"deleteIconOutlinedColor\".concat(capitalize(color))]), small && classes.deleteIconSmall);\n deleteIcon = deleteIconProp && /*#__PURE__*/React.isValidElement(deleteIconProp) ? /*#__PURE__*/React.cloneElement(deleteIconProp, {\n className: clsx(deleteIconProp.props.className, classes.deleteIcon, customClasses),\n onClick: handleDeleteIconClick\n }) : /*#__PURE__*/React.createElement(CancelIcon, {\n className: clsx(classes.deleteIcon, customClasses),\n onClick: handleDeleteIconClick\n });\n }\n var avatar = null;\n if (avatarProp && /*#__PURE__*/React.isValidElement(avatarProp)) {\n avatar = /*#__PURE__*/React.cloneElement(avatarProp, {\n className: clsx(classes.avatar, avatarProp.props.className, small && classes.avatarSmall, color !== 'default' && classes[\"avatarColor\".concat(capitalize(color))])\n });\n }\n var icon = null;\n if (iconProp && /*#__PURE__*/React.isValidElement(iconProp)) {\n icon = /*#__PURE__*/React.cloneElement(iconProp, {\n className: clsx(classes.icon, iconProp.props.className, small && classes.iconSmall, color !== 'default' && classes[\"iconColor\".concat(capitalize(color))])\n });\n }\n if (process.env.NODE_ENV !== 'production') {\n if (avatar && icon) {\n console.error('Material-UI: The Chip component can not handle the avatar ' + 'and the icon prop at the same time. Pick one.');\n }\n }\n return /*#__PURE__*/React.createElement(Component, _extends({\n role: clickable || onDelete ? 'button' : undefined,\n className: clsx(classes.root, className, color !== 'default' && [classes[\"color\".concat(capitalize(color))], clickable && classes[\"clickableColor\".concat(capitalize(color))], onDelete && classes[\"deletableColor\".concat(capitalize(color))]], variant !== \"default\" && [classes.outlined, {\n 'primary': classes.outlinedPrimary,\n 'secondary': classes.outlinedSecondary\n }[color]], disabled && classes.disabled, small && classes.sizeSmall, clickable && classes.clickable, onDelete && classes.deletable),\n \"aria-disabled\": disabled ? true : undefined,\n tabIndex: clickable || onDelete ? 0 : undefined,\n onClick: onClick,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n ref: handleRef\n }, moreProps, other), avatar || icon, /*#__PURE__*/React.createElement(\"span\", {\n className: clsx(classes.label, small && classes.labelSmall)\n }, label), deleteIcon);\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiChip'\n})(Chip);","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","import * as React from 'react';\nimport { createSvgIcon } from '@material-ui/core/utils';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/* eslint-disable no-constant-condition */\nimport * as React from 'react';\nimport { setRef, useEventCallback, useControlled, unstable_useId as useId } from '@material-ui/core/utils'; // https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\n// Give up on IE 11 support for this feature\n\nfunction stripDiacritics(string) {\n return typeof string.normalize !== 'undefined' ? string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : string;\n}\nexport function createFilterOptions() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _config$ignoreAccents = config.ignoreAccents,\n ignoreAccents = _config$ignoreAccents === void 0 ? true : _config$ignoreAccents,\n _config$ignoreCase = config.ignoreCase,\n ignoreCase = _config$ignoreCase === void 0 ? true : _config$ignoreCase,\n limit = config.limit,\n _config$matchFrom = config.matchFrom,\n matchFrom = _config$matchFrom === void 0 ? 'any' : _config$matchFrom,\n stringify = config.stringify,\n _config$trim = config.trim,\n trim = _config$trim === void 0 ? false : _config$trim;\n return function (options, _ref) {\n var inputValue = _ref.inputValue,\n getOptionLabel = _ref.getOptionLabel;\n var input = trim ? inputValue.trim() : inputValue;\n if (ignoreCase) {\n input = input.toLowerCase();\n }\n if (ignoreAccents) {\n input = stripDiacritics(input);\n }\n var filteredOptions = options.filter(function (option) {\n var candidate = (stringify || getOptionLabel)(option);\n if (ignoreCase) {\n candidate = candidate.toLowerCase();\n }\n if (ignoreAccents) {\n candidate = stripDiacritics(candidate);\n }\n return matchFrom === 'start' ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;\n });\n return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;\n };\n} // To replace with .findIndex() once we stop IE 11 support.\n\nfunction findIndex(array, comp) {\n for (var i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n return -1;\n}\nvar defaultFilterOptions = createFilterOptions(); // Number of options to jump in list box when pageup and pagedown keys are used.\n\nvar pageSize = 5;\nexport default function useAutocomplete(props) {\n var _props$autoComplete = props.autoComplete,\n autoComplete = _props$autoComplete === void 0 ? false : _props$autoComplete,\n _props$autoHighlight = props.autoHighlight,\n autoHighlight = _props$autoHighlight === void 0 ? false : _props$autoHighlight,\n _props$autoSelect = props.autoSelect,\n autoSelect = _props$autoSelect === void 0 ? false : _props$autoSelect,\n _props$blurOnSelect = props.blurOnSelect,\n blurOnSelect = _props$blurOnSelect === void 0 ? false : _props$blurOnSelect,\n _props$clearOnBlur = props.clearOnBlur,\n clearOnBlur = _props$clearOnBlur === void 0 ? !props.freeSolo : _props$clearOnBlur,\n _props$clearOnEscape = props.clearOnEscape,\n clearOnEscape = _props$clearOnEscape === void 0 ? false : _props$clearOnEscape,\n _props$componentName = props.componentName,\n componentName = _props$componentName === void 0 ? 'useAutocomplete' : _props$componentName,\n _props$debug = props.debug,\n debug = _props$debug === void 0 ? false : _props$debug,\n _props$defaultValue = props.defaultValue,\n defaultValue = _props$defaultValue === void 0 ? props.multiple ? [] : null : _props$defaultValue,\n _props$disableClearab = props.disableClearable,\n disableClearable = _props$disableClearab === void 0 ? false : _props$disableClearab,\n _props$disableCloseOn = props.disableCloseOnSelect,\n disableCloseOnSelect = _props$disableCloseOn === void 0 ? false : _props$disableCloseOn,\n _props$disabledItemsF = props.disabledItemsFocusable,\n disabledItemsFocusable = _props$disabledItemsF === void 0 ? false : _props$disabledItemsF,\n _props$disableListWra = props.disableListWrap,\n disableListWrap = _props$disableListWra === void 0 ? false : _props$disableListWra,\n _props$filterOptions = props.filterOptions,\n filterOptions = _props$filterOptions === void 0 ? defaultFilterOptions : _props$filterOptions,\n _props$filterSelected = props.filterSelectedOptions,\n filterSelectedOptions = _props$filterSelected === void 0 ? false : _props$filterSelected,\n _props$freeSolo = props.freeSolo,\n freeSolo = _props$freeSolo === void 0 ? false : _props$freeSolo,\n getOptionDisabled = props.getOptionDisabled,\n _props$getOptionLabel = props.getOptionLabel,\n getOptionLabelProp = _props$getOptionLabel === void 0 ? function (option) {\n return option;\n } : _props$getOptionLabel,\n _props$getOptionSelec = props.getOptionSelected,\n getOptionSelected = _props$getOptionSelec === void 0 ? function (option, value) {\n return option === value;\n } : _props$getOptionSelec,\n groupBy = props.groupBy,\n _props$handleHomeEndK = props.handleHomeEndKeys,\n handleHomeEndKeys = _props$handleHomeEndK === void 0 ? !props.freeSolo : _props$handleHomeEndK,\n idProp = props.id,\n _props$includeInputIn = props.includeInputInList,\n includeInputInList = _props$includeInputIn === void 0 ? false : _props$includeInputIn,\n inputValueProp = props.inputValue,\n _props$multiple = props.multiple,\n multiple = _props$multiple === void 0 ? false : _props$multiple,\n onChange = props.onChange,\n onClose = props.onClose,\n onHighlightChange = props.onHighlightChange,\n onInputChange = props.onInputChange,\n onOpen = props.onOpen,\n openProp = props.open,\n _props$openOnFocus = props.openOnFocus,\n openOnFocus = _props$openOnFocus === void 0 ? false : _props$openOnFocus,\n options = props.options,\n _props$selectOnFocus = props.selectOnFocus,\n selectOnFocus = _props$selectOnFocus === void 0 ? !props.freeSolo : _props$selectOnFocus,\n valueProp = props.value;\n var id = useId(idProp);\n var getOptionLabel = getOptionLabelProp;\n if (process.env.NODE_ENV !== 'production') {\n getOptionLabel = function getOptionLabel(option) {\n var optionLabel = getOptionLabelProp(option);\n if (typeof optionLabel !== 'string') {\n var erroneousReturn = optionLabel === undefined ? 'undefined' : \"\".concat(_typeof(optionLabel), \" (\").concat(optionLabel, \")\");\n console.error(\"Material-UI: The `getOptionLabel` method of \".concat(componentName, \" returned \").concat(erroneousReturn, \" instead of a string for \").concat(JSON.stringify(option), \".\"));\n }\n return optionLabel;\n };\n }\n var ignoreFocus = React.useRef(false);\n var firstFocus = React.useRef(true);\n var inputRef = React.useRef(null);\n var listboxRef = React.useRef(null);\n var _React$useState = React.useState(null),\n anchorEl = _React$useState[0],\n setAnchorEl = _React$useState[1];\n var _React$useState2 = React.useState(-1),\n focusedTag = _React$useState2[0],\n setFocusedTag = _React$useState2[1];\n var defaultHighlighted = autoHighlight ? 0 : -1;\n var highlightedIndexRef = React.useRef(defaultHighlighted);\n var _useControlled = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: componentName\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n value = _useControlled2[0],\n setValue = _useControlled2[1];\n var _useControlled3 = useControlled({\n controlled: inputValueProp,\n default: '',\n name: componentName,\n state: 'inputValue'\n }),\n _useControlled4 = _slicedToArray(_useControlled3, 2),\n inputValue = _useControlled4[0],\n setInputValue = _useControlled4[1];\n var _React$useState3 = React.useState(false),\n focused = _React$useState3[0],\n setFocused = _React$useState3[1];\n var resetInputValue = useEventCallback(function (event, newValue) {\n var newInputValue;\n if (multiple) {\n newInputValue = '';\n } else if (newValue == null) {\n newInputValue = '';\n } else {\n var optionLabel = getOptionLabel(newValue);\n newInputValue = typeof optionLabel === 'string' ? optionLabel : '';\n }\n if (inputValue === newInputValue) {\n return;\n }\n setInputValue(newInputValue);\n if (onInputChange) {\n onInputChange(event, newInputValue, 'reset');\n }\n });\n React.useEffect(function () {\n resetInputValue(null, value);\n }, [value, resetInputValue]);\n var _useControlled5 = useControlled({\n controlled: openProp,\n default: false,\n name: componentName,\n state: 'open'\n }),\n _useControlled6 = _slicedToArray(_useControlled5, 2),\n open = _useControlled6[0],\n setOpenState = _useControlled6[1];\n var inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n var popupOpen = open;\n var filteredOptions = popupOpen ? filterOptions(options.filter(function (option) {\n if (filterSelectedOptions && (multiple ? value : [value]).some(function (value2) {\n return value2 !== null && getOptionSelected(option, value2);\n })) {\n return false;\n }\n return true;\n }),\n // we use the empty string to manipulate `filterOptions` to not filter any options\n // i.e. the filter predicate always returns true\n {\n inputValue: inputValueIsSelectedValue ? '' : inputValue,\n getOptionLabel: getOptionLabel\n }) : [];\n if (process.env.NODE_ENV !== 'production') {\n if (value !== null && !freeSolo && options.length > 0) {\n var missingValue = (multiple ? value : [value]).filter(function (value2) {\n return !options.some(function (option) {\n return getOptionSelected(option, value2);\n });\n });\n if (missingValue.length > 0) {\n console.warn([\"Material-UI: The value provided to \".concat(componentName, \" is invalid.\"), \"None of the options match with `\".concat(missingValue.length > 1 ? JSON.stringify(missingValue) : JSON.stringify(missingValue[0]), \"`.\"), 'You can use the `getOptionSelected` prop to customize the equality test.'].join('\\n'));\n }\n }\n }\n var focusTag = useEventCallback(function (tagToFocus) {\n if (tagToFocus === -1) {\n inputRef.current.focus();\n } else {\n anchorEl.querySelector(\"[data-tag-index=\\\"\".concat(tagToFocus, \"\\\"]\")).focus();\n }\n }); // Ensure the focusedTag is never inconsistent\n\n React.useEffect(function () {\n if (multiple && focusedTag > value.length - 1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n }, [value, multiple, focusedTag, focusTag]);\n function validOptionIndex(index, direction) {\n if (!listboxRef.current || index === -1) {\n return -1;\n }\n var nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === filteredOptions.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n var option = listboxRef.current.querySelector(\"[data-option-index=\\\"\".concat(nextFocus, \"\\\"]\")); // Same logic as MenuList.js\n\n var nextFocusDisabled = disabledItemsFocusable ? false : option && (option.disabled || option.getAttribute('aria-disabled') === 'true');\n if (option && !option.hasAttribute('tabindex') || nextFocusDisabled) {\n // Move to the next element.\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n var setHighlightedIndex = useEventCallback(function (_ref2) {\n var event = _ref2.event,\n index = _ref2.index,\n _ref2$reason = _ref2.reason,\n reason = _ref2$reason === void 0 ? 'auto' : _ref2$reason;\n highlightedIndexRef.current = index; // does the index exist?\n\n if (index === -1) {\n inputRef.current.removeAttribute('aria-activedescendant');\n } else {\n inputRef.current.setAttribute('aria-activedescendant', \"\".concat(id, \"-option-\").concat(index));\n }\n if (onHighlightChange) {\n onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n }\n if (!listboxRef.current) {\n return;\n }\n var prev = listboxRef.current.querySelector('[data-focus]');\n if (prev) {\n prev.removeAttribute('data-focus');\n }\n var listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]'); // \"No results\"\n\n if (!listboxNode) {\n return;\n }\n if (index === -1) {\n listboxNode.scrollTop = 0;\n return;\n }\n var option = listboxRef.current.querySelector(\"[data-option-index=\\\"\".concat(index, \"\\\"]\"));\n if (!option) {\n return;\n }\n option.setAttribute('data-focus', 'true'); // Scroll active descendant into view.\n // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js\n //\n // Consider this API instead once it has a better browser support:\n // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n\n if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse') {\n var element = option;\n var scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n var elementBottom = element.offsetTop + element.offsetHeight;\n if (elementBottom > scrollBottom) {\n listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n } else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {\n listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n }\n }\n });\n var changeHighlightedIndex = useEventCallback(function (_ref3) {\n var event = _ref3.event,\n diff = _ref3.diff,\n _ref3$direction = _ref3.direction,\n direction = _ref3$direction === void 0 ? 'next' : _ref3$direction,\n _ref3$reason = _ref3.reason,\n reason = _ref3$reason === void 0 ? 'auto' : _ref3$reason;\n if (!popupOpen) {\n return;\n }\n var getNextIndex = function getNextIndex() {\n var maxIndex = filteredOptions.length - 1;\n if (diff === 'reset') {\n return defaultHighlighted;\n }\n if (diff === 'start') {\n return 0;\n }\n if (diff === 'end') {\n return maxIndex;\n }\n var newIndex = highlightedIndexRef.current + diff;\n if (newIndex < 0) {\n if (newIndex === -1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {\n return 0;\n }\n return maxIndex;\n }\n if (newIndex > maxIndex) {\n if (newIndex === maxIndex + 1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap || Math.abs(diff) > 1) {\n return maxIndex;\n }\n return 0;\n }\n return newIndex;\n };\n var nextIndex = validOptionIndex(getNextIndex(), direction);\n setHighlightedIndex({\n index: nextIndex,\n reason: reason,\n event: event\n }); // Sync the content of the input with the highlighted option.\n\n if (autoComplete && diff !== 'reset') {\n if (nextIndex === -1) {\n inputRef.current.value = inputValue;\n } else {\n var option = getOptionLabel(filteredOptions[nextIndex]);\n inputRef.current.value = option; // The portion of the selected suggestion that has not been typed by the user,\n // a completion string, appears inline after the input cursor in the textbox.\n\n var index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n if (index === 0 && inputValue.length > 0) {\n inputRef.current.setSelectionRange(inputValue.length, option.length);\n }\n }\n }\n });\n var syncHighlightedIndex = React.useCallback(function () {\n if (!popupOpen) {\n return;\n }\n var valueItem = multiple ? value[0] : value; // The popup is empty, reset\n\n if (filteredOptions.length === 0 || valueItem == null) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n return;\n }\n if (!listboxRef.current) {\n return;\n } // Synchronize the value with the highlighted index\n\n if (!filterSelectedOptions && valueItem != null) {\n var currentOption = filteredOptions[highlightedIndexRef.current]; // Keep the current highlighted index if possible\n\n if (multiple && currentOption && findIndex(value, function (val) {\n return getOptionSelected(currentOption, val);\n }) !== -1) {\n return;\n }\n var itemIndex = findIndex(filteredOptions, function (optionItem) {\n return getOptionSelected(optionItem, valueItem);\n });\n if (itemIndex === -1) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n } else {\n setHighlightedIndex({\n index: itemIndex\n });\n }\n return;\n } // Prevent the highlighted index to leak outside the boundaries.\n\n if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n setHighlightedIndex({\n index: filteredOptions.length - 1\n });\n return;\n } // Restore the focus to the previous index.\n\n setHighlightedIndex({\n index: highlightedIndexRef.current\n }); // Ignore filteredOptions (and options, getOptionSelected, getOptionLabel) not to break the scroll position\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n // Only sync the highlighted index when the option switch between empty and not\n // eslint-disable-next-line react-hooks/exhaustive-deps\n filteredOptions.length === 0,\n // Don't sync the highlighted index with the value when multiple\n // eslint-disable-next-line react-hooks/exhaustive-deps\n multiple ? false : value, filterSelectedOptions, changeHighlightedIndex, setHighlightedIndex, popupOpen, inputValue, multiple]);\n var handleListboxRef = useEventCallback(function (node) {\n setRef(listboxRef, node);\n if (!node) {\n return;\n }\n syncHighlightedIndex();\n });\n React.useEffect(function () {\n syncHighlightedIndex();\n }, [syncHighlightedIndex]);\n var handleOpen = function handleOpen(event) {\n if (open) {\n return;\n }\n setOpenState(true);\n if (onOpen) {\n onOpen(event);\n }\n };\n var handleClose = function handleClose(event, reason) {\n if (!open) {\n return;\n }\n setOpenState(false);\n if (onClose) {\n onClose(event, reason);\n }\n };\n var handleValue = function handleValue(event, newValue, reason, details) {\n if (value === newValue) {\n return;\n }\n if (onChange) {\n onChange(event, newValue, reason, details);\n }\n setValue(newValue);\n };\n var isTouch = React.useRef(false);\n var selectNewValue = function selectNewValue(event, option) {\n var reasonProp = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'select-option';\n var origin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'options';\n var reason = reasonProp;\n var newValue = option;\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n if (process.env.NODE_ENV !== 'production') {\n var matches = newValue.filter(function (val) {\n return getOptionSelected(option, val);\n });\n if (matches.length > 1) {\n console.error([\"Material-UI: The `getOptionSelected` method of \".concat(componentName, \" do not handle the arguments correctly.\"), \"The component expects a single value to match a given option but found \".concat(matches.length, \" matches.\")].join('\\n'));\n }\n }\n var itemIndex = findIndex(newValue, function (valueItem) {\n return getOptionSelected(option, valueItem);\n });\n if (itemIndex === -1) {\n newValue.push(option);\n } else if (origin !== 'freeSolo') {\n newValue.splice(itemIndex, 1);\n reason = 'remove-option';\n }\n }\n resetInputValue(event, newValue);\n handleValue(event, newValue, reason, {\n option: option\n });\n if (!disableCloseOnSelect) {\n handleClose(event, reason);\n }\n if (blurOnSelect === true || blurOnSelect === 'touch' && isTouch.current || blurOnSelect === 'mouse' && !isTouch.current) {\n inputRef.current.blur();\n }\n };\n function validTagIndex(index, direction) {\n if (index === -1) {\n return -1;\n }\n var nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === value.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n var option = anchorEl.querySelector(\"[data-tag-index=\\\"\".concat(nextFocus, \"\\\"]\")); // Same logic as MenuList.js\n\n if (option && (!option.hasAttribute('tabindex') || option.disabled || option.getAttribute('aria-disabled') === 'true')) {\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n var handleFocusTag = function handleFocusTag(event, direction) {\n if (!multiple) {\n return;\n }\n handleClose(event, 'toggleInput');\n var nextTag = focusedTag;\n if (focusedTag === -1) {\n if (inputValue === '' && direction === 'previous') {\n nextTag = value.length - 1;\n }\n } else {\n nextTag += direction === 'next' ? 1 : -1;\n if (nextTag < 0) {\n nextTag = 0;\n }\n if (nextTag === value.length) {\n nextTag = -1;\n }\n }\n nextTag = validTagIndex(nextTag, direction);\n setFocusedTag(nextTag);\n focusTag(nextTag);\n };\n var handleClear = function handleClear(event) {\n ignoreFocus.current = true;\n setInputValue('');\n if (onInputChange) {\n onInputChange(event, '', 'clear');\n }\n handleValue(event, multiple ? [] : null, 'clear');\n };\n var handleKeyDown = function handleKeyDown(other) {\n return function (event) {\n if (focusedTag !== -1 && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) === -1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n switch (event.key) {\n case 'Home':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'start',\n direction: 'next',\n reason: 'keyboard',\n event: event\n });\n }\n break;\n case 'End':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'end',\n direction: 'previous',\n reason: 'keyboard',\n event: event\n });\n }\n break;\n case 'PageUp':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: -pageSize,\n direction: 'previous',\n reason: 'keyboard',\n event: event\n });\n handleOpen(event);\n break;\n case 'PageDown':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: pageSize,\n direction: 'next',\n reason: 'keyboard',\n event: event\n });\n handleOpen(event);\n break;\n case 'ArrowDown':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: 1,\n direction: 'next',\n reason: 'keyboard',\n event: event\n });\n handleOpen(event);\n break;\n case 'ArrowUp':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: -1,\n direction: 'previous',\n reason: 'keyboard',\n event: event\n });\n handleOpen(event);\n break;\n case 'ArrowLeft':\n handleFocusTag(event, 'previous');\n break;\n case 'ArrowRight':\n handleFocusTag(event, 'next');\n break;\n case 'Enter':\n // Wait until IME is settled.\n if (event.which === 229) {\n break;\n }\n if (highlightedIndexRef.current !== -1 && popupOpen) {\n var option = filteredOptions[highlightedIndexRef.current];\n var disabled = getOptionDisabled ? getOptionDisabled(option) : false; // We don't want to validate the form.\n\n event.preventDefault();\n if (disabled) {\n return;\n }\n selectNewValue(event, option, 'select-option'); // Move the selection to the end.\n\n if (autoComplete) {\n inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n }\n } else if (freeSolo && inputValue !== '' && inputValueIsSelectedValue === false) {\n if (multiple) {\n // Allow people to add new values before they submit the form.\n event.preventDefault();\n }\n selectNewValue(event, inputValue, 'create-option', 'freeSolo');\n }\n break;\n case 'Escape':\n if (popupOpen) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault(); // Avoid the Modal to handle the event.\n\n event.stopPropagation();\n handleClose(event, 'escape');\n } else if (clearOnEscape && (inputValue !== '' || multiple && value.length > 0)) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault(); // Avoid the Modal to handle the event.\n\n event.stopPropagation();\n handleClear(event);\n }\n break;\n case 'Backspace':\n if (multiple && inputValue === '' && value.length > 0) {\n var index = focusedTag === -1 ? value.length - 1 : focusedTag;\n var newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'remove-option', {\n option: value[index]\n });\n }\n break;\n default:\n }\n if (other.onKeyDown) {\n other.onKeyDown(event);\n }\n };\n };\n var handleFocus = function handleFocus(event) {\n setFocused(true);\n if (openOnFocus && !ignoreFocus.current) {\n handleOpen(event);\n }\n };\n var handleBlur = function handleBlur(event) {\n // Ignore the event when using the scrollbar with IE 11\n if (listboxRef.current !== null && document.activeElement === listboxRef.current.parentElement) {\n inputRef.current.focus();\n return;\n }\n setFocused(false);\n firstFocus.current = true;\n ignoreFocus.current = false;\n if (debug && inputValue !== '') {\n return;\n }\n if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {\n selectNewValue(event, filteredOptions[highlightedIndexRef.current], 'blur');\n } else if (autoSelect && freeSolo && inputValue !== '') {\n selectNewValue(event, inputValue, 'blur', 'freeSolo');\n } else if (clearOnBlur) {\n resetInputValue(event, value);\n }\n handleClose(event, 'blur');\n };\n var handleInputChange = function handleInputChange(event) {\n var newValue = event.target.value;\n if (inputValue !== newValue) {\n setInputValue(newValue);\n if (onInputChange) {\n onInputChange(event, newValue, 'input');\n }\n }\n if (newValue === '') {\n if (!disableClearable && !multiple) {\n handleValue(event, null, 'clear');\n }\n } else {\n handleOpen(event);\n }\n };\n var handleOptionMouseOver = function handleOptionMouseOver(event) {\n setHighlightedIndex({\n event: event,\n index: Number(event.currentTarget.getAttribute('data-option-index')),\n reason: 'mouse'\n });\n };\n var handleOptionTouchStart = function handleOptionTouchStart() {\n isTouch.current = true;\n };\n var handleOptionClick = function handleOptionClick(event) {\n var index = Number(event.currentTarget.getAttribute('data-option-index'));\n selectNewValue(event, filteredOptions[index], 'select-option');\n isTouch.current = false;\n };\n var handleTagDelete = function handleTagDelete(index) {\n return function (event) {\n var newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'remove-option', {\n option: value[index]\n });\n };\n };\n var handlePopupIndicator = function handlePopupIndicator(event) {\n if (open) {\n handleClose(event, 'toggleInput');\n } else {\n handleOpen(event);\n }\n }; // Prevent input blur when interacting with the combobox\n\n var handleMouseDown = function handleMouseDown(event) {\n if (event.target.getAttribute('id') !== id) {\n event.preventDefault();\n }\n }; // Focus the input when interacting with the combobox\n\n var handleClick = function handleClick() {\n inputRef.current.focus();\n if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {\n inputRef.current.select();\n }\n firstFocus.current = false;\n };\n var handleInputMouseDown = function handleInputMouseDown(event) {\n if (inputValue === '' || !open) {\n handlePopupIndicator(event);\n }\n };\n var dirty = freeSolo && inputValue.length > 0;\n dirty = dirty || (multiple ? value.length > 0 : value !== null);\n var groupedOptions = filteredOptions;\n if (groupBy) {\n // used to keep track of key and indexes in the result array\n var indexBy = new Map();\n var warn = false;\n groupedOptions = filteredOptions.reduce(function (acc, option, index) {\n var group = groupBy(option);\n if (acc.length > 0 && acc[acc.length - 1].group === group) {\n acc[acc.length - 1].options.push(option);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n if (indexBy.get(group) && !warn) {\n console.warn(\"Material-UI: The options provided combined with the `groupBy` method of \".concat(componentName, \" returns duplicated headers.\"), 'You can solve the issue by sorting the options with the output of `groupBy`.');\n warn = true;\n }\n indexBy.set(group, true);\n }\n acc.push({\n key: index,\n index: index,\n group: group,\n options: [option]\n });\n }\n return acc;\n }, []);\n }\n return {\n getRootProps: function getRootProps() {\n var other = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _extends({\n 'aria-owns': popupOpen ? \"\".concat(id, \"-popup\") : null,\n role: 'combobox',\n 'aria-expanded': popupOpen\n }, other, {\n onKeyDown: handleKeyDown(other),\n onMouseDown: handleMouseDown,\n onClick: handleClick\n });\n },\n getInputLabelProps: function getInputLabelProps() {\n return {\n id: \"\".concat(id, \"-label\"),\n htmlFor: id\n };\n },\n getInputProps: function getInputProps() {\n return {\n id: id,\n value: inputValue,\n onBlur: handleBlur,\n onFocus: handleFocus,\n onChange: handleInputChange,\n onMouseDown: handleInputMouseDown,\n // if open then this is handled imperativeley so don't let react override\n // only have an opinion about this when closed\n 'aria-activedescendant': popupOpen ? '' : null,\n 'aria-autocomplete': autoComplete ? 'both' : 'list',\n 'aria-controls': popupOpen ? \"\".concat(id, \"-popup\") : null,\n // Disable browser's suggestion that might overlap with the popup.\n // Handle autocomplete but not autofill.\n autoComplete: 'off',\n ref: inputRef,\n autoCapitalize: 'none',\n spellCheck: 'false'\n };\n },\n getClearProps: function getClearProps() {\n return {\n tabIndex: -1,\n onClick: handleClear\n };\n },\n getPopupIndicatorProps: function getPopupIndicatorProps() {\n return {\n tabIndex: -1,\n onClick: handlePopupIndicator\n };\n },\n getTagProps: function getTagProps(_ref4) {\n var index = _ref4.index;\n return {\n key: index,\n 'data-tag-index': index,\n tabIndex: -1,\n onDelete: handleTagDelete(index)\n };\n },\n getListboxProps: function getListboxProps() {\n return {\n role: 'listbox',\n id: \"\".concat(id, \"-popup\"),\n 'aria-labelledby': \"\".concat(id, \"-label\"),\n ref: handleListboxRef,\n onMouseDown: function onMouseDown(event) {\n // Prevent blur\n event.preventDefault();\n }\n };\n },\n getOptionProps: function getOptionProps(_ref5) {\n var index = _ref5.index,\n option = _ref5.option;\n var selected = (multiple ? value : [value]).some(function (value2) {\n return value2 != null && getOptionSelected(option, value2);\n });\n var disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n return {\n key: index,\n tabIndex: -1,\n role: 'option',\n id: \"\".concat(id, \"-option-\").concat(index),\n onMouseOver: handleOptionMouseOver,\n onClick: handleOptionClick,\n onTouchStart: handleOptionTouchStart,\n 'data-option-index': index,\n 'aria-disabled': disabled,\n 'aria-selected': selected\n };\n },\n id: id,\n inputValue: inputValue,\n value: value,\n dirty: dirty,\n popupOpen: popupOpen,\n focused: focused || focusedTag !== -1,\n anchorEl: anchorEl,\n setAnchorEl: setAnchorEl,\n focusedTag: focusedTag,\n groupedOptions: groupedOptions\n };\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { withStyles } from '@material-ui/core/styles';\nimport Popper from '@material-ui/core/Popper';\nimport ListSubheader from '@material-ui/core/ListSubheader';\nimport Paper from '@material-ui/core/Paper';\nimport IconButton from '@material-ui/core/IconButton';\nimport Chip from '@material-ui/core/Chip';\nimport CloseIcon from '../internal/svg-icons/Close';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport useAutocomplete, { createFilterOptions } from '../useAutocomplete';\nexport { createFilterOptions };\nexport var styles = function styles(theme) {\n var _option;\n return {\n /* Styles applied to the root element. */\n root: {\n '&$focused $clearIndicatorDirty': {\n visibility: 'visible'\n },\n /* Avoid double tap issue on iOS */\n '@media (pointer: fine)': {\n '&:hover $clearIndicatorDirty': {\n visibility: 'visible'\n }\n }\n },\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {\n width: '100%'\n },\n /* Pseudo-class applied to the root element if focused. */\n focused: {},\n /* Styles applied to the tag elements, e.g. the chips. */\n tag: {\n margin: 3,\n maxWidth: 'calc(100% - 6px)'\n },\n /* Styles applied to the tag elements, e.g. the chips if `size=\"small\"`. */\n tagSizeSmall: {\n margin: 2,\n maxWidth: 'calc(100% - 4px)'\n },\n /* Styles applied when the popup icon is rendered. */\n hasPopupIcon: {},\n /* Styles applied when the clear icon is rendered. */\n hasClearIcon: {},\n /* Styles applied to the Input element. */\n inputRoot: {\n flexWrap: 'wrap',\n '$hasPopupIcon &, $hasClearIcon &': {\n paddingRight: 26 + 4\n },\n '$hasPopupIcon$hasClearIcon &': {\n paddingRight: 52 + 4\n },\n '& $input': {\n width: 0,\n minWidth: 30\n },\n '&[class*=\"MuiInput-root\"]': {\n paddingBottom: 1,\n '& $input': {\n padding: 4\n },\n '& $input:first-child': {\n padding: '6px 0'\n }\n },\n '&[class*=\"MuiInput-root\"][class*=\"MuiInput-marginDense\"]': {\n '& $input': {\n padding: '4px 4px 5px'\n },\n '& $input:first-child': {\n padding: '3px 0 6px'\n }\n },\n '&[class*=\"MuiOutlinedInput-root\"]': {\n padding: 9,\n '$hasPopupIcon &, $hasClearIcon &': {\n paddingRight: 26 + 4 + 9\n },\n '$hasPopupIcon$hasClearIcon &': {\n paddingRight: 52 + 4 + 9\n },\n '& $input': {\n padding: '9.5px 4px'\n },\n '& $input:first-child': {\n paddingLeft: 6\n },\n '& $endAdornment': {\n right: 9\n }\n },\n '&[class*=\"MuiOutlinedInput-root\"][class*=\"MuiOutlinedInput-marginDense\"]': {\n padding: 6,\n '& $input': {\n padding: '4.5px 4px'\n }\n },\n '&[class*=\"MuiFilledInput-root\"]': {\n paddingTop: 19,\n paddingLeft: 8,\n '$hasPopupIcon &, $hasClearIcon &': {\n paddingRight: 26 + 4 + 9\n },\n '$hasPopupIcon$hasClearIcon &': {\n paddingRight: 52 + 4 + 9\n },\n '& $input': {\n padding: '9px 4px'\n },\n '& $endAdornment': {\n right: 9\n }\n },\n '&[class*=\"MuiFilledInput-root\"][class*=\"MuiFilledInput-marginDense\"]': {\n paddingBottom: 1,\n '& $input': {\n padding: '4.5px 4px'\n }\n }\n },\n /* Styles applied to the input element. */\n input: {\n flexGrow: 1,\n textOverflow: 'ellipsis',\n opacity: 0\n },\n /* Styles applied to the input element if tag focused. */\n inputFocused: {\n opacity: 1\n },\n /* Styles applied to the endAdornment element. */\n endAdornment: {\n // We use a position absolute to support wrapping tags.\n position: 'absolute',\n right: 0,\n top: 'calc(50% - 14px)' // Center vertically\n },\n\n /* Styles applied to the clear indicator. */\n clearIndicator: {\n marginRight: -2,\n padding: 4,\n visibility: 'hidden'\n },\n /* Styles applied to the clear indicator if the input is dirty. */\n clearIndicatorDirty: {},\n /* Styles applied to the popup indicator. */\n popupIndicator: {\n padding: 2,\n marginRight: -2\n },\n /* Styles applied to the popup indicator if the popup is open. */\n popupIndicatorOpen: {\n transform: 'rotate(180deg)'\n },\n /* Styles applied to the popper element. */\n popper: {\n zIndex: theme.zIndex.modal\n },\n /* Styles applied to the popper element if `disablePortal={true}`. */\n popperDisablePortal: {\n position: 'absolute'\n },\n /* Styles applied to the `Paper` component. */\n paper: _extends({}, theme.typography.body1, {\n overflow: 'hidden',\n margin: '4px 0'\n }),\n /* Styles applied to the `listbox` component. */\n listbox: {\n listStyle: 'none',\n margin: 0,\n padding: '8px 0',\n maxHeight: '40vh',\n overflow: 'auto'\n },\n /* Styles applied to the loading wrapper. */\n loading: {\n color: theme.palette.text.secondary,\n padding: '14px 16px'\n },\n /* Styles applied to the no option wrapper. */\n noOptions: {\n color: theme.palette.text.secondary,\n padding: '14px 16px'\n },\n /* Styles applied to the option elements. */\n option: (_option = {\n minHeight: 48,\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n cursor: 'pointer',\n paddingTop: 6,\n boxSizing: 'border-box',\n outline: '0',\n WebkitTapHighlightColor: 'transparent',\n paddingBottom: 6,\n paddingLeft: 16,\n paddingRight: 16\n }, _defineProperty(_option, theme.breakpoints.up('sm'), {\n minHeight: 'auto'\n }), _defineProperty(_option, '&[aria-selected=\"true\"]', {\n backgroundColor: theme.palette.action.selected\n }), _defineProperty(_option, '&[data-focus=\"true\"]', {\n backgroundColor: theme.palette.action.hover\n }), _defineProperty(_option, '&:active', {\n backgroundColor: theme.palette.action.selected\n }), _defineProperty(_option, '&[aria-disabled=\"true\"]', {\n opacity: theme.palette.action.disabledOpacity,\n pointerEvents: 'none'\n }), _option),\n /* Styles applied to the group's label elements. */\n groupLabel: {\n backgroundColor: theme.palette.background.paper,\n top: -8\n },\n /* Styles applied to the group's ul elements. */\n groupUl: {\n padding: 0,\n '& $option': {\n paddingLeft: 24\n }\n }\n };\n};\nfunction DisablePortal(props) {\n // eslint-disable-next-line react/prop-types\n var anchorEl = props.anchorEl,\n open = props.open,\n other = _objectWithoutProperties(props, [\"anchorEl\", \"open\"]);\n return /*#__PURE__*/React.createElement(\"div\", other);\n}\nvar _ref = /*#__PURE__*/React.createElement(CloseIcon, {\n fontSize: \"small\"\n});\nvar _ref2 = /*#__PURE__*/React.createElement(ArrowDropDownIcon, null);\nvar Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(props, ref) {\n /* eslint-disable no-unused-vars */\n var _props$autoComplete = props.autoComplete,\n autoComplete = _props$autoComplete === void 0 ? false : _props$autoComplete,\n _props$autoHighlight = props.autoHighlight,\n autoHighlight = _props$autoHighlight === void 0 ? false : _props$autoHighlight,\n _props$autoSelect = props.autoSelect,\n autoSelect = _props$autoSelect === void 0 ? false : _props$autoSelect,\n _props$blurOnSelect = props.blurOnSelect,\n blurOnSelect = _props$blurOnSelect === void 0 ? false : _props$blurOnSelect,\n ChipProps = props.ChipProps,\n classes = props.classes,\n className = props.className,\n _props$clearOnBlur = props.clearOnBlur,\n clearOnBlur = _props$clearOnBlur === void 0 ? !props.freeSolo : _props$clearOnBlur,\n _props$clearOnEscape = props.clearOnEscape,\n clearOnEscape = _props$clearOnEscape === void 0 ? false : _props$clearOnEscape,\n _props$clearText = props.clearText,\n clearText = _props$clearText === void 0 ? 'Clear' : _props$clearText,\n _props$closeIcon = props.closeIcon,\n closeIcon = _props$closeIcon === void 0 ? _ref : _props$closeIcon,\n _props$closeText = props.closeText,\n closeText = _props$closeText === void 0 ? 'Close' : _props$closeText,\n _props$debug = props.debug,\n debug = _props$debug === void 0 ? false : _props$debug,\n _props$defaultValue = props.defaultValue,\n defaultValue = _props$defaultValue === void 0 ? props.multiple ? [] : null : _props$defaultValue,\n _props$disableClearab = props.disableClearable,\n disableClearable = _props$disableClearab === void 0 ? false : _props$disableClearab,\n _props$disableCloseOn = props.disableCloseOnSelect,\n disableCloseOnSelect = _props$disableCloseOn === void 0 ? false : _props$disableCloseOn,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disabledItemsF = props.disabledItemsFocusable,\n disabledItemsFocusable = _props$disabledItemsF === void 0 ? false : _props$disabledItemsF,\n _props$disableListWra = props.disableListWrap,\n disableListWrap = _props$disableListWra === void 0 ? false : _props$disableListWra,\n _props$disablePortal = props.disablePortal,\n disablePortal = _props$disablePortal === void 0 ? false : _props$disablePortal,\n filterOptions = props.filterOptions,\n _props$filterSelected = props.filterSelectedOptions,\n filterSelectedOptions = _props$filterSelected === void 0 ? false : _props$filterSelected,\n _props$forcePopupIcon = props.forcePopupIcon,\n forcePopupIcon = _props$forcePopupIcon === void 0 ? 'auto' : _props$forcePopupIcon,\n _props$freeSolo = props.freeSolo,\n freeSolo = _props$freeSolo === void 0 ? false : _props$freeSolo,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$getLimitTagsTe = props.getLimitTagsText,\n getLimitTagsText = _props$getLimitTagsTe === void 0 ? function (more) {\n return \"+\".concat(more);\n } : _props$getLimitTagsTe,\n getOptionDisabled = props.getOptionDisabled,\n _props$getOptionLabel = props.getOptionLabel,\n getOptionLabel = _props$getOptionLabel === void 0 ? function (x) {\n return x;\n } : _props$getOptionLabel,\n getOptionSelected = props.getOptionSelected,\n groupBy = props.groupBy,\n _props$handleHomeEndK = props.handleHomeEndKeys,\n handleHomeEndKeys = _props$handleHomeEndK === void 0 ? !props.freeSolo : _props$handleHomeEndK,\n idProp = props.id,\n _props$includeInputIn = props.includeInputInList,\n includeInputInList = _props$includeInputIn === void 0 ? false : _props$includeInputIn,\n inputValueProp = props.inputValue,\n _props$limitTags = props.limitTags,\n limitTags = _props$limitTags === void 0 ? -1 : _props$limitTags,\n _props$ListboxCompone = props.ListboxComponent,\n ListboxComponent = _props$ListboxCompone === void 0 ? 'ul' : _props$ListboxCompone,\n ListboxProps = props.ListboxProps,\n _props$loading = props.loading,\n loading = _props$loading === void 0 ? false : _props$loading,\n _props$loadingText = props.loadingText,\n loadingText = _props$loadingText === void 0 ? 'Loading…' : _props$loadingText,\n _props$multiple = props.multiple,\n multiple = _props$multiple === void 0 ? false : _props$multiple,\n _props$noOptionsText = props.noOptionsText,\n noOptionsText = _props$noOptionsText === void 0 ? 'No options' : _props$noOptionsText,\n onChange = props.onChange,\n onClose = props.onClose,\n onHighlightChange = props.onHighlightChange,\n onInputChange = props.onInputChange,\n onOpen = props.onOpen,\n open = props.open,\n _props$openOnFocus = props.openOnFocus,\n openOnFocus = _props$openOnFocus === void 0 ? false : _props$openOnFocus,\n _props$openText = props.openText,\n openText = _props$openText === void 0 ? 'Open' : _props$openText,\n options = props.options,\n _props$PaperComponent = props.PaperComponent,\n PaperComponent = _props$PaperComponent === void 0 ? Paper : _props$PaperComponent,\n _props$PopperComponen = props.PopperComponent,\n PopperComponentProp = _props$PopperComponen === void 0 ? Popper : _props$PopperComponen,\n _props$popupIcon = props.popupIcon,\n popupIcon = _props$popupIcon === void 0 ? _ref2 : _props$popupIcon,\n renderGroupProp = props.renderGroup,\n renderInput = props.renderInput,\n renderOptionProp = props.renderOption,\n renderTags = props.renderTags,\n _props$selectOnFocus = props.selectOnFocus,\n selectOnFocus = _props$selectOnFocus === void 0 ? !props.freeSolo : _props$selectOnFocus,\n _props$size = props.size,\n size = _props$size === void 0 ? 'medium' : _props$size,\n valueProp = props.value,\n other = _objectWithoutProperties(props, [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"classes\", \"className\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeIcon\", \"closeText\", \"debug\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionLabel\", \"getOptionSelected\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"value\"]);\n /* eslint-enable no-unused-vars */\n\n var PopperComponent = disablePortal ? DisablePortal : PopperComponentProp;\n var _useAutocomplete = useAutocomplete(_extends({}, props, {\n componentName: 'Autocomplete'\n })),\n getRootProps = _useAutocomplete.getRootProps,\n getInputProps = _useAutocomplete.getInputProps,\n getInputLabelProps = _useAutocomplete.getInputLabelProps,\n getPopupIndicatorProps = _useAutocomplete.getPopupIndicatorProps,\n getClearProps = _useAutocomplete.getClearProps,\n getTagProps = _useAutocomplete.getTagProps,\n getListboxProps = _useAutocomplete.getListboxProps,\n getOptionProps = _useAutocomplete.getOptionProps,\n value = _useAutocomplete.value,\n dirty = _useAutocomplete.dirty,\n id = _useAutocomplete.id,\n popupOpen = _useAutocomplete.popupOpen,\n focused = _useAutocomplete.focused,\n focusedTag = _useAutocomplete.focusedTag,\n anchorEl = _useAutocomplete.anchorEl,\n setAnchorEl = _useAutocomplete.setAnchorEl,\n inputValue = _useAutocomplete.inputValue,\n groupedOptions = _useAutocomplete.groupedOptions;\n var startAdornment;\n if (multiple && value.length > 0) {\n var getCustomizedTagProps = function getCustomizedTagProps(params) {\n return _extends({\n className: clsx(classes.tag, size === 'small' && classes.tagSizeSmall),\n disabled: disabled\n }, getTagProps(params));\n };\n if (renderTags) {\n startAdornment = renderTags(value, getCustomizedTagProps);\n } else {\n startAdornment = value.map(function (option, index) {\n return /*#__PURE__*/React.createElement(Chip, _extends({\n label: getOptionLabel(option),\n size: size\n }, getCustomizedTagProps({\n index: index\n }), ChipProps));\n });\n }\n }\n if (limitTags > -1 && Array.isArray(startAdornment)) {\n var more = startAdornment.length - limitTags;\n if (!focused && more > 0) {\n startAdornment = startAdornment.splice(0, limitTags);\n startAdornment.push( /*#__PURE__*/React.createElement(\"span\", {\n className: classes.tag,\n key: startAdornment.length\n }, getLimitTagsText(more)));\n }\n }\n var defaultRenderGroup = function defaultRenderGroup(params) {\n return /*#__PURE__*/React.createElement(\"li\", {\n key: params.key\n }, /*#__PURE__*/React.createElement(ListSubheader, {\n className: classes.groupLabel,\n component: \"div\"\n }, params.group), /*#__PURE__*/React.createElement(\"ul\", {\n className: classes.groupUl\n }, params.children));\n };\n var renderGroup = renderGroupProp || defaultRenderGroup;\n var renderOption = renderOptionProp || getOptionLabel;\n var renderListOption = function renderListOption(option, index) {\n var optionProps = getOptionProps({\n option: option,\n index: index\n });\n return /*#__PURE__*/React.createElement(\"li\", _extends({}, optionProps, {\n className: classes.option\n }), renderOption(option, {\n selected: optionProps['aria-selected'],\n inputValue: inputValue\n }));\n };\n var hasClearIcon = !disableClearable && !disabled;\n var hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n className: clsx(classes.root, className, focused && classes.focused, fullWidth && classes.fullWidth, hasClearIcon && classes.hasClearIcon, hasPopupIcon && classes.hasPopupIcon)\n }, getRootProps(other)), renderInput({\n id: id,\n disabled: disabled,\n fullWidth: true,\n size: size === 'small' ? 'small' : undefined,\n InputLabelProps: getInputLabelProps(),\n InputProps: {\n ref: setAnchorEl,\n className: classes.inputRoot,\n startAdornment: startAdornment,\n endAdornment: /*#__PURE__*/React.createElement(\"div\", {\n className: classes.endAdornment\n }, hasClearIcon ? /*#__PURE__*/React.createElement(IconButton, _extends({}, getClearProps(), {\n \"aria-label\": clearText,\n title: clearText,\n className: clsx(classes.clearIndicator, dirty && classes.clearIndicatorDirty)\n }), closeIcon) : null, hasPopupIcon ? /*#__PURE__*/React.createElement(IconButton, _extends({}, getPopupIndicatorProps(), {\n disabled: disabled,\n \"aria-label\": popupOpen ? closeText : openText,\n title: popupOpen ? closeText : openText,\n className: clsx(classes.popupIndicator, popupOpen && classes.popupIndicatorOpen)\n }), popupIcon) : null)\n },\n inputProps: _extends({\n className: clsx(classes.input, focusedTag === -1 && classes.inputFocused),\n disabled: disabled\n }, getInputProps())\n })), popupOpen && anchorEl ? /*#__PURE__*/React.createElement(PopperComponent, {\n className: clsx(classes.popper, disablePortal && classes.popperDisablePortal),\n style: {\n width: anchorEl ? anchorEl.clientWidth : null\n },\n role: \"presentation\",\n anchorEl: anchorEl,\n open: true\n }, /*#__PURE__*/React.createElement(PaperComponent, {\n className: classes.paper\n }, loading && groupedOptions.length === 0 ? /*#__PURE__*/React.createElement(\"div\", {\n className: classes.loading\n }, loadingText) : null, groupedOptions.length === 0 && !freeSolo && !loading ? /*#__PURE__*/React.createElement(\"div\", {\n className: classes.noOptions\n }, noOptionsText) : null, groupedOptions.length > 0 ? /*#__PURE__*/React.createElement(ListboxComponent, _extends({\n className: classes.listbox\n }, getListboxProps(), ListboxProps), groupedOptions.map(function (option, index) {\n if (groupBy) {\n return renderGroup({\n key: option.key,\n group: option.group,\n children: option.options.map(function (option2, index2) {\n return renderListOption(option2, option.index + index2);\n })\n });\n }\n return renderListOption(option, index);\n })) : null)) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiAutocomplete'\n})(Autocomplete);","import { InputLabel, TextField } from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport React, { FC, useEffect, useState } from 'react';\nimport { Control, Controller, FieldValues } from 'react-hook-form';\n\nimport { CraftFormElement, CraftFormElementChoice } from '../../../interfaces/form.interface';\n\nconst RTMultipleSelect: FC<{\n control: Control;\n question: CraftFormElement;\n error: any;\n}> = ({ control, question, error }) => {\n const [choices, setChoices] = useState>(new Map());\n const [options, setOptions] = useState([]);\n\n useEffect(() => {\n setChoices(new Map(question.choices.map(i => [i.value, i])));\n setOptions(question.choices.map(c => c.value));\n }, [question.choices]);\n\n return (\n (\n
\n {question.title}\n {\n onChange(v.map(c => c));\n }}\n filterSelectedOptions\n onBlur={onBlur}\n getOptionLabel={(option: string) => choices.get(option)?.text || ''}\n renderInput={(params: any) => (\n \n )}\n />\n
\n )}\n >\n );\n};\n\nexport default RTMultipleSelect;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n flexDirection: 'column',\n flexWrap: 'wrap'\n },\n /* Styles applied to the root element if `row={true}`. */\n row: {\n flexDirection: 'row'\n }\n};\n/**\n * `FormGroup` wraps controls such as `Checkbox` and `Switch`.\n * It provides compact row layout.\n * For the `Radio`, you should be using the `RadioGroup` component instead of this one.\n */\n\nvar FormGroup = /*#__PURE__*/React.forwardRef(function FormGroup(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$row = props.row,\n row = _props$row === void 0 ? false : _props$row,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"row\"]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className, row && classes.row),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiFormGroup'\n})(FormGroup);","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar RadioGroupContext = React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport FormGroup from '../FormGroup';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\nimport RadioGroupContext from './RadioGroupContext';\nimport useId from '../utils/unstable_useId';\nvar RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n var actions = props.actions,\n children = props.children,\n nameProp = props.name,\n valueProp = props.value,\n onChange = props.onChange,\n other = _objectWithoutProperties(props, [\"actions\", \"children\", \"name\", \"value\", \"onChange\"]);\n var rootRef = React.useRef(null);\n var _useControlled = useControlled({\n controlled: valueProp,\n default: props.defaultValue,\n name: 'RadioGroup'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n value = _useControlled2[0],\n setValue = _useControlled2[1];\n React.useImperativeHandle(actions, function () {\n return {\n focus: function focus() {\n var input = rootRef.current.querySelector('input:not(:disabled):checked');\n if (!input) {\n input = rootRef.current.querySelector('input:not(:disabled)');\n }\n if (input) {\n input.focus();\n }\n }\n };\n }, []);\n var handleRef = useForkRef(ref, rootRef);\n var handleChange = function handleChange(event) {\n setValue(event.target.value);\n if (onChange) {\n onChange(event, event.target.value);\n }\n };\n var name = useId(nameProp);\n return /*#__PURE__*/React.createElement(RadioGroupContext.Provider, {\n value: {\n name: name,\n onChange: handleChange,\n value: value\n }\n }, /*#__PURE__*/React.createElement(FormGroup, _extends({\n role: \"radiogroup\",\n ref: handleRef\n }, other), children));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default RadioGroup;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","import * as React from 'react';\nimport clsx from 'clsx';\nimport RadioButtonUncheckedIcon from '../internal/svg-icons/RadioButtonUnchecked';\nimport RadioButtonCheckedIcon from '../internal/svg-icons/RadioButtonChecked';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n return {\n root: {\n position: 'relative',\n display: 'flex',\n '&$checked $layer': {\n transform: 'scale(1)',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.shortest\n })\n }\n },\n layer: {\n left: 0,\n position: 'absolute',\n transform: 'scale(0)',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeIn,\n duration: theme.transitions.duration.shortest\n })\n },\n checked: {}\n };\n};\n/**\n * @ignore - internal component.\n */\n\nfunction RadioButtonIcon(props) {\n var checked = props.checked,\n classes = props.classes,\n fontSize = props.fontSize;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(classes.root, checked && classes.checked)\n }, /*#__PURE__*/React.createElement(RadioButtonUncheckedIcon, {\n fontSize: fontSize\n }), /*#__PURE__*/React.createElement(RadioButtonCheckedIcon, {\n fontSize: fontSize,\n className: classes.layer\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'PrivateRadioButtonIcon'\n})(RadioButtonIcon);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport SwitchBase from '../internal/SwitchBase';\nimport RadioButtonIcon from './RadioButtonIcon';\nimport { alpha } from '../styles/colorManipulator';\nimport capitalize from '../utils/capitalize';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport withStyles from '../styles/withStyles';\nimport useRadioGroup from '../RadioGroup/useRadioGroup';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n color: theme.palette.text.secondary\n },\n /* Pseudo-class applied to the root element if `checked={true}`. */\n checked: {},\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n '&$checked': {\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n '&$disabled': {\n color: theme.palette.action.disabled\n }\n },\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n '&$checked': {\n color: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: alpha(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n '&$disabled': {\n color: theme.palette.action.disabled\n }\n }\n };\n};\nvar defaultCheckedIcon = /*#__PURE__*/React.createElement(RadioButtonIcon, {\n checked: true\n});\nvar defaultIcon = /*#__PURE__*/React.createElement(RadioButtonIcon, null);\nvar Radio = /*#__PURE__*/React.forwardRef(function Radio(props, ref) {\n var checkedProp = props.checked,\n classes = props.classes,\n _props$color = props.color,\n color = _props$color === void 0 ? 'secondary' : _props$color,\n nameProp = props.name,\n onChangeProp = props.onChange,\n _props$size = props.size,\n size = _props$size === void 0 ? 'medium' : _props$size,\n other = _objectWithoutProperties(props, [\"checked\", \"classes\", \"color\", \"name\", \"onChange\", \"size\"]);\n var radioGroup = useRadioGroup();\n var checked = checkedProp;\n var onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n var name = nameProp;\n if (radioGroup) {\n if (typeof checked === 'undefined') {\n checked = radioGroup.value === props.value;\n }\n if (typeof name === 'undefined') {\n name = radioGroup.name;\n }\n }\n return /*#__PURE__*/React.createElement(SwitchBase, _extends({\n color: color,\n type: \"radio\",\n icon: /*#__PURE__*/React.cloneElement(defaultIcon, {\n fontSize: size === 'small' ? 'small' : 'medium'\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(defaultCheckedIcon, {\n fontSize: size === 'small' ? 'small' : 'medium'\n }),\n classes: {\n root: clsx(classes.root, classes[\"color\".concat(capitalize(color))]),\n checked: classes.checked,\n disabled: classes.disabled\n },\n name: name,\n checked: checked,\n onChange: onChange,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiRadio'\n})(Radio);","import * as React from 'react';\nimport RadioGroupContext from './RadioGroupContext';\nexport default function useRadioGroup() {\n return React.useContext(RadioGroupContext);\n}","import { FormControl, FormControlLabel, FormHelperText, FormLabel, Radio, RadioGroup } from '@material-ui/core';\nimport React, { FC } from 'react';\nimport { Control, Controller, FieldValues } from 'react-hook-form';\nimport { CraftFormElement } from '../../../interfaces/form.interface';\n\nconst RTRadio: FC<{\n control: Control;\n question: CraftFormElement;\n value: any;\n}> = ({ control, question, value }) => {\n return (\n (\n \n \n {question.title}\n \n {question.description}\n \n {question.choices.map((choice, idx) => (\n }\n key={`${choice.value}-${idx}`}\n label={choice.text}\n name={choice.text}\n />\n ))}\n \n \n )}\n />\n );\n};\n\nexport default RTRadio;\n","import { FormControl, FormHelperText, FormLabel, Input } from '@material-ui/core';\nimport React, { FC } from 'react';\nimport { Control, Controller, FieldValues } from 'react-hook-form';\nimport { CraftFormElement } from '../../../interfaces/form.interface';\n\nconst RTText: FC<{\n control: Control;\n question: CraftFormElement;\n error: any;\n}> = ({ control, question, error }) => {\n return (\n (\n \n \n {question.title}\n \n {question.description}\n \n \n )}\n />\n );\n};\n\nexport default RTText;\n","import React from 'react';\nimport { Control, DeepMap, FieldError, FieldValues } from 'react-hook-form';\nimport RTCheckbox from '../../components/form/inputs/checkbox';\nimport RTDate from '../../components/form/inputs/date';\nimport RTMultipleSelect from '../../components/form/inputs/multiple-select';\nimport RTRadio from '../../components/form/inputs/radio';\nimport RTSelect from '../../components/form/inputs/select';\nimport RTText from '../../components/form/inputs/text';\nimport { CraftFormElement } from '../../interfaces/form.interface';\nimport * as style from './form.module.scss';\n\nexport const renderInputs = (\n question: CraftFormElement,\n idx: number,\n setValue: (question: string, value: any, config?: any) => void,\n control: Control,\n errors: DeepMap,\n value: any,\n) => {\n switch (question.type) {\n case 'sectionHeader':\n return (\n

\n {question.title}\n

\n );\n case 'dropdown':\n if (question.name === 'countries') {\n return ;\n }\n return ;\n case 'radiogroup':\n return (\n <>\n \n \n );\n\n case 'checkbox':\n return (\n {\n setTimeout(() => {\n setValue(question.name, e, {});\n });\n }}\n />\n );\n\n case 'date':\n return ;\n\n case 'text':\n return ;\n\n default:\n break;\n }\n};\n\nexport const renderTitle = (idx: number, question: any) => {\n return (\n

\n {question.title} {question.isRequired ? '*' : ''}\n

\n );\n};\n","import { makeStyles } from '@material-ui/core';\nimport { createStyles } from '@material-ui/styles';\n\nexport const useStyles = makeStyles(() =>\n createStyles({\n root: {\n '& .MuiTextField-root': {\n 'margin-bottom': '2.5rem !important',\n },\n '& .MuiFormControlLabel-root': {\n margin: '0.625rem',\n },\n '& .MuiFormLabel-root': {\n fontSize: '1.125rem',\n color: '#fff !important',\n opacity: '30%',\n 'font-family': \"'Mark SC Offc Pro' !important\",\n 'margin-bottom': '1rem',\n },\n '& .MuiInput-input': {\n background: 'none',\n fontSize: '1rem',\n color: '#fff',\n 'font-family': \"'Mark SC Offc Pro' !important\",\n 'line-height': 'normal',\n },\n '& .MuiInput-underline:after': {\n 'border-bottom': '1px solid #fff',\n },\n '& .MuiInput-underline:before': {\n 'border-bottom': '1px solid #fff',\n opacity: '30%',\n },\n '& .MuiFormControl-root': {\n width: '100%',\n 'font-family': \"'Mark SC Offc Pro' !important\",\n margin: '8px',\n },\n '& .MuiFormControlLabel-label': {\n 'font-family': \"'Mark SC Offc Pro' !important\",\n fontSize: '1rem',\n },\n '& button > span.MuiIconButton-label > svg': {\n fill: '#fff',\n opacity: 0.5,\n },\n '& .PrivateNotchedOutline-legendLabelled-11 > span': {\n 'font-size': '12px',\n },\n '& label + .MuiInput-formControl': {\n padding: '10px',\n },\n '& .MuiRadio-colorSecondary.Mui-checked': {\n color: '#d13639',\n },\n },\n }),\n);\n","import { useMutation } from '@apollo/client';\nimport { navigate } from 'gatsby';\nimport * as QueryString from 'query-string';\nimport React, { FC, useEffect, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport RTFormDialog from '../../components/form/form-dialog';\nimport RTSelect from '../../components/form/inputs/select';\nimport RTLayout from '../../components/global/layout/layout';\nimport SEO from '../../components/global/seo/seo';\nimport { GAMES } from '../../constants/games';\nimport { Conditions, CraftForm, CraftFormElement, CraftFormPage } from '../../interfaces/form.interface';\nimport * as style from './form.module.scss';\nimport { ADD_MUTATION, defineApplicationRegion, mapAddMutation, regionCounter } from './form.mutation';\nimport { renderInputs } from './form.service';\nimport { useStyles } from './form.style';\nimport { Region } from './type';\n\nconst RTForm: FC<{ pageContext: CraftForm }> = ({ pageContext }) => {\n const lang = pageContext.lang;\n const classes = useStyles();\n const [currentPage, setCurrentPage] = useState(0);\n const [currentPageForm, setCurrentPageForm] = useState();\n const [elementX, setElementX] = useState([]);\n const [completedForms, setCompletedForms] = useState<{ [key: string]: any }[]>([]);\n const [formPages, setFormPages] = useState([]);\n const [smallTournamentForm, setSmallTournamentForm] = useState();\n const {\n control,\n handleSubmit,\n setValue,\n getValues,\n formState: { errors },\n trigger,\n register,\n } = useForm();\n const [open, setOpen] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [broadcastAmount] = useState(0);\n const [broadcastQuestions, setBroadcastQuestions] = useState([]);\n const [readyToBeSentForm, setReadyToBeSentForm] = useState<{ [key: string]: any }>();\n const [isIntro, setIsIntro] = useState(true);\n\n const allQuestions = pageContext.pages.reduce((acc: any, page) => [...acc, ...page.elements], []);\n\n const [save_applicationsFranceBenelux_applicationsFranceBenelux_Entry] = useMutation(\n ADD_MUTATION('save_applicationsFranceBenelux_applicationsFranceBenelux_Entry', allQuestions),\n );\n const [save_applicationsPaneuropean_tournamentApplication_Entry] = useMutation(\n ADD_MUTATION('save_applicationsPaneuropean_tournamentApplication_Entry', allQuestions),\n );\n const [save_applicationsTurkey_applicationsTurkey_Entry] = useMutation(\n ADD_MUTATION('save_applicationsTurkey_applicationsTurkey_Entry', allQuestions),\n );\n const [save_applicationsUkNordics_applicationsUkNordics_Entry] = useMutation(\n ADD_MUTATION('save_applicationsUkNordics_applicationsUkNordics_Entry', allQuestions),\n );\n const [save_applicationsRussiaCis_applicationsRussiaCis_Entry] = useMutation(\n ADD_MUTATION('save_applicationsRussiaCis_applicationsRussiaCis_Entry', allQuestions),\n );\n const [save_applicationsCentralEurope_applicationsCentralEurope_Entry] = useMutation(\n ADD_MUTATION('save_applicationsCentralEurope_applicationsCentralEurope_Entry', allQuestions),\n );\n const [save_applicationsEasternEurope_applicationsEasternEurope_Entry] = useMutation(\n ADD_MUTATION('save_applicationsEasternEurope_applicationsEasternEurope_Entry', allQuestions),\n );\n const [save_applicationIberiaItaly_applicationIberiaItaly_Entry] = useMutation(\n ADD_MUTATION('save_applicationIberiaItaly_applicationIberiaItaly_Entry', allQuestions),\n );\n const [save_applicationsMiddleEastNorthAfrica_applicationsMiddleEastNorthAfrica_Entry] = useMutation(\n ADD_MUTATION('save_applicationsMiddleEastNorthAfrica_applicationsMiddleEastNorthAfrica_Entry', allQuestions),\n );\n\n const onError = (errors: any) => {\n console.log(errors);\n };\n\n /**\n * Check wether the form should end or not\n **/\n const shouldExit = (conditions: Conditions[], data: { [key: string]: any }) => {\n const operators: any = {\n '===': (a: any, b: any) => a === b,\n '!==': (a: any, b: any) => a !== b,\n '<': (a: number, b: number) => a < b,\n '>': (a: number, b: number) => a > b,\n '<=': (a: number, b: number) => a <= b,\n '>=': (a: number, b: number) => a >= b,\n };\n\n const conditionArray = conditions?.reduce((acc: boolean[], currentValue) => {\n const orQuestion =\n currentValue?.reduce((accQuestion, c: any) => {\n if (accQuestion === true) {\n return true;\n }\n accQuestion = operators[c.operator](data[c.key], c.value);\n return accQuestion;\n }, false) || false;\n acc = [...acc, orQuestion];\n return acc;\n }, []);\n return conditionArray.filter(c => c === false).length === 0;\n };\n\n const onSubmit = (data: { [key: string]: any }) => {\n trigger();\n scrollTo(0, 0);\n if (formPages) {\n const form = { ...completedForms, ...data };\n setCompletedForms(form);\n localStorage?.setItem('application-form', JSON.stringify(form));\n\n const conditions: Conditions[] = eval(pageContext.endingConditions);\n\n if (shouldExit(conditions, data)) {\n setOpen(true);\n } else {\n const maxLength = formPages.length - 1;\n if (currentPage < maxLength) setCurrentPage(currentPage + 1);\n if (currentPage === maxLength) setReadyToBeSentForm(form);\n }\n }\n };\n\n const handleClose = (val: boolean) => {\n setOpen(false);\n if (val) {\n navigate(`${lang ? '/' + lang : '/'}`);\n }\n };\n\n const scrollToTop = (): void => {\n window.scrollTo(0, 0);\n };\n\n // Create form\n useEffect(() => {\n const smallForm = pageContext.pages.filter(\n (page: { name: string }) => page.name === 'Please fill in your information to receive your licence',\n )[0];\n const basicForm = pageContext.pages.filter(\n (page: { name: string }) => page.name !== 'Please fill in your information to receive your licence',\n );\n setFormPages(basicForm);\n setSmallTournamentForm(smallForm);\n }, [pageContext]);\n\n // Parse url\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const params = QueryString.parse(location.search);\n if (localStorage) {\n const formData = JSON.parse(localStorage.getItem('application-form') || '{}');\n setCompletedForms(formData);\n for (const [key, value] of Object.entries(formData)) {\n register(key);\n setValue(key, value);\n }\n }\n if (params.game) {\n setValue('game', params.game as string);\n }\n }\n }, []);\n\n // Listen if the form is completed, format form && redirect user to completed page\n useEffect(() => {\n if (readyToBeSentForm) {\n setIsLoading(true);\n if (Object.keys(readyToBeSentForm).length > 7) {\n const counter = regionCounter(readyToBeSentForm);\n readyToBeSentForm.applicationRegion = defineApplicationRegion(counter);\n const currentLang = JSON.parse(localStorage.getItem('RT_current_lang') || '{}').value;\n const variables = mapAddMutation(readyToBeSentForm, readyToBeSentForm.game, currentLang);\n\n const successCallback = () => {\n setIsLoading(false);\n localStorage.removeItem('application-form');\n navigate(`${lang ? '/' + lang : ''}/form/completed?type=normal`);\n };\n switch (readyToBeSentForm.applicationRegion as Region) {\n case 'paneuropean' || !readyToBeSentForm.countries:\n save_applicationsPaneuropean_tournamentApplication_Entry({ variables }).then(() => {\n successCallback();\n });\n break;\n case 'franceBenelux':\n save_applicationsFranceBenelux_applicationsFranceBenelux_Entry({ variables }).then(() => {\n successCallback();\n });\n break;\n case 'easternEurope':\n save_applicationsEasternEurope_applicationsEasternEurope_Entry({ variables }).then(() => {\n successCallback();\n });\n break;\n case 'centralEurope':\n save_applicationsCentralEurope_applicationsCentralEurope_Entry({ variables }).then(() => {\n successCallback();\n });\n break;\n case 'russiaCis':\n save_applicationsRussiaCis_applicationsRussiaCis_Entry({ variables }).then(() => {\n successCallback();\n });\n break;\n case 'turkey':\n save_applicationsTurkey_applicationsTurkey_Entry({ variables }).then(() => {\n successCallback();\n });\n break;\n case 'iberiaItaly':\n save_applicationIberiaItaly_applicationIberiaItaly_Entry({ variables }).then(() => {\n successCallback();\n });\n break;\n case 'ukNordics':\n save_applicationsUkNordics_applicationsUkNordics_Entry({ variables }).then(() => {\n successCallback();\n });\n break;\n case 'middleEastNorthAfrica':\n save_applicationsMiddleEastNorthAfrica_applicationsMiddleEastNorthAfrica_Entry({ variables }).then(() => {\n successCallback();\n });\n break;\n }\n } else {\n setIsLoading(false);\n navigate(`${lang ? '/' + lang : ''}/form/completed?type=small`);\n }\n }\n }, [readyToBeSentForm]);\n\n useEffect(() => {\n if (formPages) {\n setCurrentPageForm(formPages[currentPage]);\n }\n }, [formPages, currentPage]);\n\n useEffect(() => {\n if (broadcastAmount === 0 && currentPageForm) {\n return;\n }\n\n if (broadcastAmount === 1 && currentPageForm) {\n setElementX(currentPageForm.elements.filter((el: any) => el.group === 'broadcast'));\n }\n\n if (currentPageForm) {\n setBroadcastQuestions([\n ...broadcastQuestions,\n elementX.reduce((results: any, question: any) => {\n question.name = `${question.name}-${broadcastAmount}`;\n return [...results, question];\n }, []),\n ]);\n }\n }, [broadcastAmount]);\n\n const gameQuestion: CraftFormElement = {\n type: 'radiogroup',\n name: 'game',\n title: pageContext?.uiElements?.gameFieldTitle || 'Game',\n isRequired: 'true',\n description: pageContext?.uiElements?.gameFieldDescription || 'Choose the game you are applying for',\n choices: GAMES,\n };\n\n return (\n \n \n \n
\n
\n

{currentPageForm?.name}

\n {isIntro ? (\n <>\n \n
\n {\n setIsIntro(false);\n scrollToTop();\n }}\n >\n / {pageContext?.uiElements?.controlButtonTxt[0].next || 'Next'}\n \n
\n \n ) : (\n
\n {currentPage === 0 && }\n {currentPageForm?.elements\n .filter(el => !el.group)\n .map((question, idx) => {\n return [renderInputs(question, idx, setValue, control, errors, getValues(question.name))];\n })}\n
\n {\n scrollToTop();\n currentPage === 0 ? setIsIntro(true) : setCurrentPage(currentPage - 1);\n }}\n >\n / {pageContext?.uiElements?.controlButtonTxt[0].previous || 'Previous'}\n \n currentPage < formPages.length - 1 && scrollToTop()}\n >\n {currentPage < formPages.length - 1\n ? `/ ${pageContext?.uiElements?.controlButtonTxt[0].next || 'Next'}`\n : `/ ${pageContext?.uiElements?.controlButtonTxt[0].submit || 'Submit'}`}\n \n
\n
\n {currentPage + 1}/{formPages.length}\n
\n \n )}\n
\n
\n \n );\n};\n\nexport default RTForm;\n","// extracted by mini-css-extract-plugin\nexport var broadcast = \"form-module--broadcast--4kQhH\";\nexport var broadcastButton = \"form-module--broadcast-button--jVZeb\";\nexport var buttonWrapper = \"form-module--button-wrapper--auII0\";\nexport var form = \"form-module--form--sIQoh\";\nexport var formContainer = \"form-module--form-container--d5TgZ\";\nexport var formDescription = \"form-module--form-description--064Bp\";\nexport var formTitle = \"form-module--form-title--nQsah\";\nexport var legend = \"form-module--legend--J7ccD\";\nexport var pager = \"form-module--pager--IXY4g\";\nexport var previousButton = \"form-module--previous-button--O8Xml\";\nexport var sectionTitle = \"form-module--section-title--bznJw\";\nexport var submitButton = \"form-module--submit-button--lQxQ5\";"],"names":["DocumentType","cache","operationName","type","name","Query","Mutation","Subscription","parser","document","A","variables","cached","get","kind","fragments","queries","mutations","subscriptions","_i","_a","definitions","length","x","operation","push","definition","variableDefinitions","payload","value","set","resetCache","undefined","globalThis","__DEV__","size","useIsomorphicLayoutEffect","useMutation","mutation","options","client","override","context","useApolloClient","requiredOperationName","usedOperationName","verifyDocumentType","called","loading","result","setResult","ref","mutationId","isMounted","Object","assign","current","execute","executeOptions","baseOptions","ignoreResults","error","data","clientOptions","mergeOptions","mutate","then","response","_b","errors","graphQLErrors","onError","result_1","onCompleted","catch","result_2","reset","result_3","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","err","left","slice","right","Array","prototype","concat","call","decode","input","tokens","match","i","module","exports","encodedURI","TypeError","replace","replaceMap","exec","entries","keys","key","customDecodeURIComponent","obj","predicate","ret","isArr","isArray","val","indexOf","hookCallback","some","hooks","apply","arguments","setHookCallback","callback","toString","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","getOwnPropertyNames","k","isUndefined","isNumber","isDate","Date","map","arr","fn","res","arrLen","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","m","_pf","isValid","flags","parsedParts","isNowValid","_d","isNaN","getTime","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","t","this","len","momentProperties","updateInProgress","copyConfig","to","from","prop","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","argLen","Error","stack","deprecations","deprecateSimple","isFunction","Function","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","func","localeData","removeFormattingTokens","makeFormatFunction","array","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","s","ss","mm","h","hh","d","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","aliases","D","dates","date","days","day","e","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hours","hour","ms","milliseconds","millisecond","minutes","minute","months","month","Q","quarters","quarter","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","week","W","isoweeks","isoweek","years","year","normalizeUnits","units","toLowerCase","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","u","unit","priority","sort","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod","n","daysInMonth","modMonth","o","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","min","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","charAt","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","loadLocale","isLocaleNameSane","oldLocale","_abbr","getSetGlobalLocale","values","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","defaults","c","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","strictUriEncode","decodeComponent","splitOnFirst","filterObject","validateArrayFormatSeparator","encode","encodeURIComponent","keysSorter","Number","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","trim","parseBooleans","parse","query","arrayFormat","arrayFormatSeparator","formatter","accumulator","includes","isEncodedArray","newValue","parserForArrayFormat","create","param","reduce","Boolean","stringify","object","shouldFilter","skipNull","skipEmptyString","encoderForArrayFormat","objectCopy","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","exclude","exclusionFilter","isCheckBoxInput","element","isDateObject","isNullOrUndefined","isObjectType","getEventValue","event","target","checked","isNameInFieldArray","has","substring","search","getNodeParentName","isPlainObject","tempObject","prototypeCopy","constructor","isWeb","window","HTMLElement","cloneObject","copy","isFileListInstance","FileList","Set","Blob","compact","path","defaultValue","isBoolean","isKey","stringToPath","tempPath","objValue","EVENTS","BLUR","FOCUS_OUT","CHANGE","VALIDATION_MODE","onBlur","onChange","onSubmit","onTouched","all","INPUT_VALIDATION_RULES","HookFormContext","useFormContext","getProxyFormState","formState","control","localProxyFormState","isRoot","defaultValues","_defaultValues","defineProperty","_key","_proxyFormState","isEmptyObject","shouldRenderFormState","formStateData","updateFormState","find","convertToArrayPayload","shouldSubscribeByName","signalName","exact","currentName","startsWith","useSubscribe","props","_props","subscription","disabled","subject","subscribe","unsubscribe","generateWatchOutput","_names","formValues","isGlobal","watch","fieldName","watchAll","useController","methods","shouldUnregister","isArrayField","_name","_subjects","updateValue","_formValues","_getWatch","_removeUnmounted","useWatch","_formState","_mounted","_localProxyFormState","isDirty","isLoading","dirtyFields","touchedFields","validatingFields","isValidating","_updateFormState","state","_updateValid","useFormState","_registerProps","register","rules","fieldState","defineProperties","enumerable","isTouched","elm","_fields","focus","select","setCustomValidity","message","reportValidity","_shouldUnregisterField","_options","updateMounted","mount","_state","action","unregister","_updateDisabledField","fields","Controller","render","appendErrors","validateAllFieldCriteria","types","getValidationModes","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isWatched","isBlurEvent","watchName","iterateFieldsByAction","fieldsNames","abortEarly","currentField","refs","updateFieldArrayRootError","fieldArrayErrors","isFileInput","isHTMLElement","owner","ownerDocument","defaultView","isMessage","isRadioInput","isRegex","defaultResult","validResult","getCheckboxValue","option","attributes","defaultReturn","getRadioValue","previous","getValidateError","every","getValueAndMessage","validationData","validateField","async","disabledFieldNames","shouldUseNativeValidation","isFieldArray","required","maxLength","minLength","pattern","validate","valueAsNumber","inputValue","inputRef","isRadio","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueDate","valueAsDate","convertTimeToDate","toDateString","isTime","isWeek","valueNumber","maxLengthOutput","minLengthOutput","patternValue","validateError","validationResult","unset","paths","childObject","updatePath","baseGet","isEmptyArray","createSubject","_observers","observers","observer","isPrimitive","deepEqual","object1","object2","keys1","keys2","val1","val2","isMultipleSelect","live","isConnected","objectHasFunction","markFieldsDirty","isParentNodeArray","getDirtyFieldsFromDefaultValues","dirtyFieldsFromValues","getDirtyFields","getFieldValueAs","_ref2","setValueAs","getFieldValue","files","selectedOptions","_ref3","getResolverOptions","criteriaMode","getRuleValue","rule","ASYNC_FUNCTION","hasPromiseValidation","fieldReference","validateFunction","hasValidation","schemaErrorLookup","foundError","pop","skipValidation","isSubmitted","reValidateMode","unsetEmptyArray","defaultOptions","shouldFocusError","createFormControl","delayErrorCallback","submitCount","isSubmitting","isSubmitSuccessful","unMount","timer","validationModeBeforeSubmit","validationModeAfterSubmit","shouldDisplayAllAssociatedErrors","shouldUpdateValid","resolver","_executeSchema","executeBuiltInValidation","_updateIsValidating","updateValidAndValue","shouldSkipSetValueAs","defaultChecked","setFieldValue","updateTouchAndDirty","fieldValue","shouldDirty","shouldRender","shouldUpdateField","isPreviousDirty","disabledField","_getDirty","isCurrentFieldPristine","isPreviousFieldTouched","shouldRenderByError","previousFieldError","delayError","updateErrors","wait","clearTimeout","setTimeout","updatedFormState","shouldOnlyCheckValid","valid","isFieldArrayRoot","isPromiseFunction","fieldError","getValues","optionRef","selected","checkboxRef","radioRef","shouldTouch","shouldValidate","trigger","setValues","fieldKey","setValue","cloneValue","isFieldValueUpdated","_updateIsFieldValueUpdated","shouldSkipValidation","deps","watched","previousErrorLookupResult","errorLookupResult","_focusInput","fieldNames","executeSchemaAndUpdateState","Promise","shouldFocus","getFieldState","setError","currentError","currentRef","restOfErrorTree","delete","keepValue","keepError","keepDirty","keepTouched","keepIsValidating","keepDefaultValue","keepIsValid","_ref4","disabledIsDefined","progressive","fieldRef","querySelectorAll","radioOrCheckbox","_focusError","handleSubmit","onValid","onInvalid","onValidError","preventDefault","persist","fieldValues","_reset","keepStateOptions","updatedValues","cloneUpdatedValues","isEmptyResetValues","keepDefaultValues","keepValues","keepDirtyValues","fieldsToCheck","form","closest","keepSubmitCount","keepIsSubmitted","keepErrors","keepIsSubmitSuccessful","_updateFieldArray","method","shouldSetValues","shouldUpdateFieldsAndState","argA","argB","_getFieldArray","_resetDefaultValues","resetOptions","_disableForm","_setErrors","resetField","clearErrors","inputName","setFocus","shouldSelect","useForm","_formControl","_values","separatorIndex","str","charCodeAt","_ref","onClose","open","dialogSentence","nextTxt","React","Dialog","className","onClick","GlobalButton","text","Close","question","choices","InputLabel","title","isRequired","FormHelperText","style","marginBottom","description","Select","MenuProps","anchorOrigin","vertical","horizontal","transformOrigin","getContentAnchorEl","labelId","choice","idx","MenuItem","globalButton","bgColor","txtColor","animated","button","useRef","hovered","setHovered","useState","mouseover","mouseout","Link","onMouseOver","onMouseOut","styles","opacity","transform","color","backgroundColor","devAssert","condition","_typeof","iterator","asyncIterator","SYMBOL_TO_STRING_TAG","toStringTag","getLocation","position","lineRegexp","line","column","body","printLocation","location","printSourceLocation","start","sourceLocation","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","lines","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","padLen","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_defineProperty","configurable","writable","_defineProperties","descriptor","_possibleConstructorReturn","self","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","Map","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","Parent","_isNativeReflectConstruct","Reflect","construct","instance","sham","Proxy","p","setPrototypeOf","__proto__","getPrototypeOf","GraphQLError","_Error","subClass","superClass","_inherits","Derived","hasNativeReflectConstruct","Constructor","protoProps","staticProps","_super","Super","NewTarget","nodes","positions","originalError","extensions","_nodeLocations","_nodeLocations2","_nodeLocations3","_this","_classCallCheck","undefinedIfEmpty","nodeLocations","_i2","_this$nodes","loc","locations","originalExtensions","getOwnPropertyDescriptors","_objectSpread","captureStackTrace","_i4","_error$nodes2","node","_i6","_error$locations2","printError","_error$message","formatError","syntaxError","freeze","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","NAME","INT","FLOAT","STRING","BLOCK_STRING","COMMENT","Source","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","FRAGMENT_SPREAD","INLINE_FRAGMENT","VARIABLE_DEFINITION","SCHEMA","SCALAR","OBJECT","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","Lexer","startOfFileToken","lastToken","lineStart","_proto","advance","lookahead","_token$next","readToken","printCharCode","code","JSON","fromCharCode","lexer","prev","bodyLength","end","_line","_col","readComment","readBlockString","readString","readNumber","readName","unexpectedCharacterMessage","col","firstCode","isFloat","readDigits","isNameStart","chunkStart","charCode","char2hex","invalidSequence","rawValue","Parser","sourceObj","instanceOf","isSource","_lexer","parseName","expectToken","parseDocument","DOCUMENT","many","parseDefinition","peek","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","OPERATION_DEFINITION","directives","selectionSet","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","variable","parseVariable","parseTypeReference","expectOptionalToken","parseValueLiteral","VARIABLE","SELECTION_SET","selections","parseSelection","parseFragment","parseField","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","ARGUMENT","hasTypeCondition","expectOptionalKeyword","parseFragmentName","typeCondition","parseNamedType","_this$_options","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","BOOLEAN","NULL","block","LIST","any","_this2","parseObjectField","OBJECT_FIELD","parseDirective","DIRECTIVE","LIST_TYPE","NON_NULL_TYPE","NAMED_TYPE","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","operationTypes","parseOperationTypeDefinition","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","interfaces","parseImplementsInterfaces","parseFieldsDefinition","OBJECT_TYPE_DEFINITION","_this$_options2","allowLegacySDLImplementsInterfaces","delimitedMany","_this$_options3","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","parseUnionMemberTypes","UNION_TYPE_DEFINITION","parseEnumValuesDefinition","ENUM_TYPE_DEFINITION","parseEnumValueDefinition","ENUM_VALUE_DEFINITION","parseInputFieldsDefinition","INPUT_OBJECT_TYPE_DEFINITION","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","repeatable","parseDirectiveLocations","DIRECTIVE_DEFINITION","parseDirectiveLocation","startToken","_this$_options4","noLocation","getTokenKindDesc","getTokenDesc","atToken","openKind","parseFn","closeKind","delimiterKind","isPunctuatorTokenKind","docCache","fragmentSourceMap","printFragmentWarnings","normalize","processFragments","ast","seenKeys","fragmentDefinition","fragmentName","sourceKey","sourceKeySet","cacheKey","parsed","allowLegacyFragmentVariables","doc","workSet","endToken","stripLoc","gql","literals","gql_1","extras","clear","resetCaches","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","applicationsCentralEurope","applicationsEasternEurope","applicationsFranceBenelux","applicationsRussiaCis","applicationTurkey","applicationIberiaItaly","applicationsUkNordics","applicationsMiddleEastNorthAfrica","ADD_MUTATION","functionName","mutationVariables","mutationArguments","mapAddMutation","game","mutationData","eventName","defineApplicationRegion","counter","definedCounter","franceBenelux","centralEurope","easternEurope","russiaCis","turkey","iberiaItaly","ukNordics","middleEastNorthAfrica","regionCounter","countries","country","FormControlLabel","classes","disabledProp","label","_props$labelPlacement","labelPlacement","muiFormControl","useFormControl","controlProps","root","capitalize","Typography","component","withStyles","theme","display","alignItems","cursor","verticalAlign","WebkitTapHighlightColor","marginLeft","marginRight","labelPlacementStart","flexDirection","labelPlacementTop","labelPlacementBottom","palette","checkedValues","setCheckedValues","setRequired","isChecked","v","useEffect","maxWidth","Checkbox","MomentUtils","moment","yearFormat","yearMonthFormat","dateTime12hFormat","dateTime24hFormat","time12hFormat","time24hFormat","isNull","getDiff","comparing","isAfterDay","isBeforeDay","isBeforeYear","isAfterYear","startOfDay","endOfDay","formatString","formatNumber","numberToFormat","addDays","count","isSameDay","isSameMonth","isSameYear","isSameHour","getMeridiemText","ampm","startOfMonth","endOfMonth","getNextMonth","getPreviousMonth","getMonthArray","monthArray","prevMonth","getYear","setYear","mergeDateAndTime","getWeekdays","isEqual","getWeekArray","nestedWeeks","weekNumber","getYearRange","startDate","endDate","getCalendarHeaderText","getYearText","getDatePickerHeaderText","getDateTimePickerHeaderText","getMonthText","getDayText","getHourText","getMinuteText","getSecondText","FormLabel","MuiPickersUtilsProvider","utils","KeyboardDatePicker","disableToolbar","variant","margin","disablePast","helperText","KeyboardButtonProps","ListSubheader","_props$color","_props$component","Component","_props$disableGutters","disableGutters","_props$disableSticky","disableSticky","_props$inset","inset","sticky","gutters","boxSizing","lineHeight","listStyle","secondary","fontFamily","typography","fontWeight","fontWeightMedium","fontSize","pxToRem","colorPrimary","primary","main","colorInherit","paddingLeft","paddingRight","top","zIndex","createSvgIcon","isDeleteKeyboardEvent","keyboardEvent","Chip","avatarProp","avatar","clickableProp","clickable","ComponentProp","deleteIconProp","deleteIcon","_props$disabled","iconProp","icon","onDelete","onKeyDown","onKeyUp","_props$size","_props$variant","chipRef","handleRef","useForkRef","handleDeleteIconClick","stopPropagation","small","ButtonBase","moreProps","customClasses","deleteIconSmall","Cancel","avatarSmall","iconSmall","role","outlined","outlinedPrimary","outlinedSecondary","sizeSmall","deletable","tabIndex","currentTarget","blur","labelSmall","grey","deleteIconColor","justifyContent","height","getContrastText","borderRadius","whiteSpace","transition","transitions","outline","textDecoration","border","padding","pointerEvents","width","contrastText","dark","colorSecondary","userSelect","boxShadow","shadows","clickableColorPrimary","clickableColorSecondary","deletableColorPrimary","deletableColorSecondary","hoverOpacity","avatarColorPrimary","avatarColorSecondary","iconColorPrimary","iconColorSecondary","textOverflow","deleteIconColorPrimary","deleteIconColorSecondary","deleteIconOutlinedColorPrimary","deleteIconOutlinedColorSecondary","stripDiacritics","findIndex","comp","defaultFilterOptions","_config$ignoreAccents","ignoreAccents","_config$ignoreCase","ignoreCase","_config$matchFrom","matchFrom","_config$trim","getOptionLabel","filteredOptions","candidate","createFilterOptions","useAutocomplete","_props$autoComplete","autoComplete","_props$autoHighlight","autoHighlight","_props$autoSelect","autoSelect","_props$blurOnSelect","blurOnSelect","_props$clearOnBlur","clearOnBlur","freeSolo","_props$clearOnEscape","clearOnEscape","_props$componentName","componentName","_props$debug","debug","_props$defaultValue","multiple","_props$disableClearab","disableClearable","_props$disableCloseOn","disableCloseOnSelect","_props$disabledItemsF","disabledItemsFocusable","_props$disableListWra","disableListWrap","_props$filterOptions","filterOptions","_props$filterSelected","filterSelectedOptions","_props$freeSolo","getOptionDisabled","_props$getOptionLabel","getOptionLabelProp","_props$getOptionSelec","getOptionSelected","groupBy","_props$handleHomeEndK","handleHomeEndKeys","idProp","id","_props$includeInputIn","includeInputInList","inputValueProp","_props$multiple","onHighlightChange","onInputChange","onOpen","openProp","_props$openOnFocus","openOnFocus","_props$selectOnFocus","selectOnFocus","valueProp","ignoreFocus","firstFocus","listboxRef","_React$useState","anchorEl","setAnchorEl","_React$useState2","focusedTag","setFocusedTag","defaultHighlighted","highlightedIndexRef","_useControlled","useControlled","controlled","default","_useControlled2","_useControlled3","_useControlled4","setInputValue","_React$useState3","focused","setFocused","resetInputValue","useEventCallback","newInputValue","optionLabel","_useControlled5","_useControlled6","setOpenState","inputValueIsSelectedValue","popupOpen","value2","focusTag","tagToFocus","querySelector","setHighlightedIndex","_ref2$reason","reason","removeAttribute","setAttribute","listboxNode","parentElement","scrollHeight","clientHeight","scrollBottom","scrollTop","elementBottom","offsetTop","offsetHeight","changeHighlightedIndex","_ref3$direction","_ref3$reason","nextIndex","nextFocus","nextFocusDisabled","getAttribute","hasAttribute","validOptionIndex","maxIndex","newIndex","getNextIndex","setSelectionRange","syncHighlightedIndex","valueItem","currentOption","itemIndex","optionItem","handleListboxRef","setRef","handleOpen","handleClose","handleValue","details","isTouch","selectNewValue","origin","splice","handleFocusTag","nextTag","validTagIndex","handleClear","handleKeyDown","which","handleFocus","handleBlur","activeElement","handleInputChange","handleOptionMouseOver","handleOptionTouchStart","handleOptionClick","handleTagDelete","handlePopupIndicator","handleMouseDown","handleClick","selectionEnd","selectionStart","handleInputMouseDown","dirty","groupedOptions","acc","group","getRootProps","onMouseDown","getInputLabelProps","htmlFor","getInputProps","onFocus","autoCapitalize","spellCheck","getClearProps","getPopupIndicatorProps","getTagProps","getListboxProps","getOptionProps","_ref5","onTouchStart","DisablePortal","ArrowDropDown","Autocomplete","startAdornment","ChipProps","_props$clearText","clearText","_props$closeIcon","closeIcon","_props$closeText","closeText","_props$disablePortal","disablePortal","_props$forcePopupIcon","forcePopupIcon","_props$fullWidth","fullWidth","_props$getLimitTagsTe","getLimitTagsText","more","_props$limitTags","limitTags","_props$ListboxCompone","ListboxComponent","ListboxProps","_props$loading","_props$loadingText","loadingText","_props$noOptionsText","noOptionsText","_props$openText","openText","_props$PaperComponent","PaperComponent","Paper","_props$PopperComponen","PopperComponent","PopperComponentProp","Popper","_props$popupIcon","popupIcon","renderGroupProp","renderGroup","renderInput","renderOptionProp","renderOption","renderTags","_useAutocomplete","getCustomizedTagProps","params","tag","tagSizeSmall","groupLabel","groupUl","children","renderListOption","optionProps","hasClearIcon","hasPopupIcon","InputLabelProps","InputProps","inputRoot","endAdornment","IconButton","clearIndicator","clearIndicatorDirty","popupIndicator","popupIndicatorOpen","inputProps","inputFocused","popper","popperDisablePortal","clientWidth","paper","noOptions","listbox","option2","index2","_option","visibility","flexWrap","minWidth","paddingBottom","paddingTop","flexGrow","modal","body1","maxHeight","minHeight","breakpoints","up","hover","disabledOpacity","background","setChoices","setOptions","_","_choices$get","TextField","FormGroup","_props$row","row","actions","nameProp","rootRef","Provider","easing","easeOut","shortest","layer","easeIn","RadioButtonUnchecked","RadioButtonChecked","defaultCheckedIcon","defaultIcon","Radio","checkedProp","onChangeProp","radioGroup","createChainedFunction","SwitchBase","checkedIcon","FormControl","RadioGroup","Input","placeholder","validators","renderInputs","RTMultipleSelect","RTSelect","RTRadio","RTCheckbox","RTDate","RTText","useStyles","makeStyles","createStyles","fill","RTForm","_pageContext$uiElemen","_pageContext$uiElemen2","_pageContext$uiElemen3","_pageContext$uiElemen4","_pageContext$uiElemen5","_pageContext$uiElemen6","_pageContext$uiElemen7","_pageContext$uiElemen8","_pageContext$uiElemen9","_pageContext$uiElemen10","_pageContext$uiElemen11","_pageContext$uiElemen12","pageContext","currentPage","setCurrentPage","currentPageForm","setCurrentPageForm","elementX","setElementX","completedForms","setCompletedForms","formPages","setFormPages","smallTournamentForm","setSmallTournamentForm","setOpen","setIsLoading","broadcastAmount","broadcastQuestions","setBroadcastQuestions","readyToBeSentForm","setReadyToBeSentForm","isIntro","setIsIntro","allQuestions","pages","page","_toConsumableArray","elements","save_applicationsFranceBenelux_applicationsFranceBenelux_Entry","save_applicationsPaneuropean_tournamentApplication_Entry","save_applicationsTurkey_applicationsTurkey_Entry","save_applicationsUkNordics_applicationsUkNordics_Entry","save_applicationsRussiaCis_applicationsRussiaCis_Entry","save_applicationsCentralEurope_applicationsCentralEurope_Entry","save_applicationsEasternEurope_applicationsEasternEurope_Entry","save_applicationIberiaItaly_applicationIberiaItaly_Entry","save_applicationsMiddleEastNorthAfrica_applicationsMiddleEastNorthAfrica_Entry","log","shouldExit","conditions","operators","===","!==","<",">","<=",">=","currentValue","orQuestion","accQuestion","operator","scrollTo","_localStorage","localStorage","setItem","eval","endingConditions","navigate","scrollToTop","smallForm","basicForm","QueryString","formData","getItem","applicationRegion","currentLang","successCallback","removeItem","el","results","gameQuestion","uiElements","gameFieldTitle","gameFieldDescription","GAMES","RTLayout","menuText","menuTxt","footerText","footerTxt","langModalTranslations","languageModalTitle","subtitle","languageModalText","cookie","cookieContent","cookieButtonAccept","cookieButtonReject","SEO","RTFormDialog","formTxt","controlButtonTxt","dangerouslySetInnerHTML","__html","questionnaireIntroduction","submit","buttonWrapper","formContainer","formTitle","pager","previousButton","sectionTitle","submitButton"],"sourceRoot":""}