{"version":3,"file":"481.79523f5140c08f1ba057.js","mappings":"0GAAA,EAAQ,MAER,IAOIA,EAAkB,CAClBC,KAAM,qBACNC,YAAa,WACbC,aAAc,CAAC,kBAAmB,UAAW,UAAW,mBACxDC,YAAa,WACbC,QAAS,cAAcC,QAAQ,aAAc,IAC7CC,iBAAkB,4EAItB,SAAUC,EAAGC,EAAQC,GACjB,IAMIC,EANAC,EAAQH,EAAOG,MAAQH,EAAOG,OAAS,CAAEC,SAAU,CAAC,GACpDC,EAASN,EAAEM,OACXC,EAAOP,EAAEO,KACTC,EAAUC,MAAMD,QAChBE,EAAOV,EAAEU,KACTC,EAAOC,KAEPC,EAAOZ,EAAOY,MAAQ,CAAC,EACvBC,EAAU,CAAC,EACXC,EAAgB,IAChBC,EAAe,uBACfC,EAAkB,sEAClBC,EAAe,uBACfC,EAAW,WACXC,EAAS,SACTC,EAAS,SACTC,EAAS,SACTC,EAAO,OACPC,EAAU,UACVC,EAAY,YACZC,EAAS,SACTC,EAAkB,kBAClBC,EAAa,aAEbC,EAAc,CAAC,EACfC,EAAc,CAAC,EACfC,EAAQ,GAAGA,MACXC,EAAqB,CAAE,aAAc,WAAY,QAAS,OAAQ,UAAW,gBAE7EC,EAAoB,WAChB,IAAIC,EAAKC,EAAaC,EAAM3C,EAAM4C,EAASC,EACvCC,EAASC,UAAW,IAAO,CAAC,EAC5BC,EAAI,EACJC,EAASF,UAAUE,OACnBC,GAAO,EAsBX,IAnBuB,kBAAXJ,IACRI,EAAOJ,EAGPA,EAASC,UAAWC,IAAO,CAAC,EAC5BA,KAImB,iBAAXF,GAAyC,mBAAXA,IACtCA,EAAS,CAAC,GAITE,IAAMC,IACPH,EAASK,KACTH,KAGIA,EAAIC,EAAQD,IAGhB,GAAqC,OAA9BJ,EAAUG,UAAWC,IAGxB,IAAMhD,KAAQ4C,EAGE,WAAR5C,GAA6B,UAARA,GAA4B,KAARA,IAG7CyC,EAAMK,EAAQ9C,GAIT8C,KAHLH,EAAOC,EAAS5C,MAQXkD,GAAQP,IAAUS,OAAOC,cAAeV,KACvCD,EAAc1B,MAAMD,QAAS4B,MAE1BD,GACDA,GAAc,EACdG,EAAQJ,GAAOzB,MAAMD,QAAS0B,GAAQA,EAAM,IAG5CI,EAAQJ,GAAOW,OAAOC,cAAeZ,GAAQA,EAAM,CAAC,EAIxDK,EAAQ9C,GAASwC,EAAmBU,EAAML,EAAOF,IAGzCA,IAASlC,IACjBqC,EAAQ9C,GAAS2C,KAOjC,OAAOG,CACX,EAIJ,SAASQ,IAAS,CAFlB3C,EAAMP,QAAU,cAAcC,QAAQ,aAAc,IAIpDiD,EAAMzC,OAAS,SAAS0C,GACpB,IACIC,EAKAC,EANAC,EAAO,WAAY,EAEnBC,EAAOR,KACPS,EAAWL,GAASA,EAAMM,KAAON,EAAMM,KAAO,WAC1CF,EAAKG,MAAMX,KAAMJ,UACrB,EAMJ,IAAKS,KAHLE,EAAKK,UAAYJ,EAAKI,UACtBN,EAAKG,EAASH,GAAKG,EAASG,UAAY,IAAIL,EAE7BH,EACU,MAAjBA,EAAMC,IAAmBD,EAAMC,GAAQQ,cAAgBC,OAEvDR,EAAGD,GAAU3C,GAAO,EAAM,CAAC,EAAG6C,EAAKK,UAAUP,GAASD,EAAMC,IAE5DC,EAAGD,GAAUD,EAAMC,GAO3B,OAHAC,EAAGO,YAAcJ,EACjBA,EAAS/C,OAAS8C,EAAK9C,OAEhB+C,CACX,EAEAN,EAAMS,UAAUG,aAAe,SAAStB,GACpCO,KAAKP,QAAUuB,EAAW,CAAC,EAAGhB,KAAKP,QAASA,EAChD,EAEA,IAAIwB,EAAazD,EAAMyD,WAAa,SAASX,GACzC,MAAqB,mBAAPA,CAClB,EAEIY,EAAiB,WACjBlB,KAAKmB,mBAAoB,CAC7B,EAEIC,EAAqB,WACrB,OAAkC,IAA3BpB,KAAKmB,iBAChB,EAEIE,EAAalB,EAAMzC,OAAO,CAC1BgD,KAAM,WACFV,KAAKsB,QAAU,CAAC,CACpB,EAEAC,KAAM,SAASC,EAAWC,EAAUC,GAChC,IACIC,EAEA7B,EACA8B,EACAC,EALArB,EAAOR,KAEP8B,SAAoBN,IAAchD,EAAS,CAACgD,GAAaA,EAIzDO,SAA4BN,IAAalD,EAG7C,GAAIkD,IAAanE,EAAa,CAC1B,IAAKqE,KAAOH,EACRhB,EAAKe,KAAKI,EAAKH,EAAUG,IAE7B,OAAOnB,CACX,CAEA,IAAKmB,EAAM,EAAG7B,EAASgC,EAAWhC,OAAQ6B,EAAM7B,EAAQ6B,IACpDH,EAAYM,EAAWH,IAEvBE,EAAUE,EAAqBN,EAAWA,EAASD,MAG3CE,IACAE,EAAWC,EACXA,EAAU,WACNrB,EAAKwB,OAAOR,EAAWK,GACvBD,EAASjB,MAAMH,EAAMZ,UACzB,EACAiC,EAAQD,SAAWA,IAEdpB,EAAKc,QAAQE,GAAahB,EAAKc,QAAQE,IAAc,IACvDS,KAAKJ,IAIpB,OAAOrB,CACX,EAEAkB,IAAK,SAASI,EAAYL,GACtB,OAAOzB,KAAKuB,KAAKO,EAAYL,GAAU,EAC3C,EAEAS,MAAO,SAASV,EAAWC,GACvB,IACIE,EAEA7B,EACA+B,EAJArB,EAAOR,KAEP8B,SAAoBN,IAAchD,EAAS,CAACgD,GAAaA,EAGzDO,SAA4BN,IAAalD,EAG7C,IAAKoD,EAAM,EAAG7B,EAASgC,EAAWhC,OAAQ6B,EAAM7B,EAAQ6B,IACpDH,EAAYM,EAAWH,IAEvBE,EAAUE,EAAqBN,EAAWA,EAASD,MAGtChB,EAAKc,QAAQE,GAAahB,EAAKc,QAAQE,IAAc,IACvDW,QAAQN,GAIvB,OAAOrB,CACX,EAEA4B,QAAS,SAASZ,EAAWa,GACzB,IAEIV,EACA7B,EAHAU,EAAOR,KACPsC,EAAS9B,EAAKc,QAAQE,GAI1B,GAAIc,EAAQ,CAaR,KAZAD,EAAIA,GAAK,CAAC,GAERE,OAAS/B,EAEX6B,EAAElB,mBAAoB,EAEtBkB,EAAEnB,eAAiBA,EAEnBmB,EAAEjB,mBAAqBA,EAIlBO,EAAM,EAAG7B,GAFdwC,EAASA,EAAOnD,SAEcW,OAAQ6B,EAAM7B,EAAQ6B,IAChDW,EAAOX,GAAKa,KAAKhC,EAAM6B,GAG3B,OAA+B,IAAxBA,EAAElB,iBACb,CAEA,OAAO,CACX,EAEAa,OAAQ,SAASR,EAAWK,GACxB,IAEIF,EAFAnB,EAAOR,KACPsC,EAAS9B,EAAKc,QAAQE,GAG1B,GAAIA,IAAclE,EACdkD,EAAKc,QAAU,CAAC,OACb,GAAIgB,EACP,GAAIT,EACA,IAAKF,EAAMW,EAAOxC,OAAS,EAAG6B,GAAO,EAAGA,IAChCW,EAAOX,KAASE,GAAWS,EAAOX,GAAKC,WAAaC,GACpDS,EAAOG,OAAOd,EAAK,QAI3BnB,EAAKc,QAAQE,GAAa,GAIlC,OAAOhB,CACX,IAIH,SAASkC,EAAYC,EAAMC,GACvB,GAAIA,EACA,MAAO,IACHD,EAAKE,MAAM,KAAKC,KAAK,OAChBD,MAAM,OAAOC,KAAK,WAClB5F,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OAAS,IAEjC,IAAIgF,EAAQS,EAAKI,OAAO,GACpBC,EAAOL,EAAKM,UAAU,GAE1B,MAAc,MAAVf,EACO,KAAOc,EAAO,KACJ,MAAVd,EACA,qBAAuBc,EAAO,KAE9B,IAAML,EAAO,iBAGhC,CAED,IAAIO,EAAqB,OACrBC,EAAe,iBACfC,EAAqB,QACrBC,EAAc,aACdC,EAAqB,OACrBC,EAAc,aACdC,EAAQ,CAAC,GAAI,IAAK,KAAM,MAAO,QA6DvC,SAASC,EAAIC,EAAQC,EAAQC,GAKzB,OAFAA,GADAD,EAASA,GAAU,IADnBD,GAAkB,IAEI5D,QAGX0D,EAAMG,GAAQV,UAAU,EAAGW,GAAOF,EAGtCA,CACX,CAg4CI,SAASG,EAAWC,EAASC,GACzB,IACIC,EAAaxG,EAAMyG,YACnBC,EAAc1G,EAAM2G,aACpBC,EAAUN,EAAQO,OAAO,0BACzBC,EAAeF,EAAQ,GAAGG,MAE1BH,EAAQI,GAAG,YACXJ,EAAQK,IAAI,CACRC,QAAS,GACTC,SAAU,KAILxG,EAAcyG,KAAKN,EAAaO,QAAU1G,EAAcyG,KAAKN,EAAaQ,SAGnFV,EAAQK,IAAI,CACRI,MAAOd,EAAWC,EAAWF,GAAW,EAAIE,EAAWF,GACvDgB,OAAQZ,EAAYJ,GACpBiB,UAAW,cACXC,aAAc,cACdC,gBAAiB,eAG7B,CAEA,SAASjE,EAAWkE,GAChB,IAAIrF,EAAI,EACJC,EAASF,UAAUE,OAEvB,IAAKD,EAAI,EAAGA,EAAIC,EAAQD,IACpBsF,EAAcD,EAAatF,UAAUC,IAGzC,OAAOqF,CACX,CAEA,SAASC,EAAcD,EAAaE,GAChC,IAIIC,EACAC,EACAC,EACAC,EACAC,EARAC,EAAkBlI,EAAMmI,KAAKD,gBAC7BE,EAAsBpI,EAAMmI,KAAKC,oBACjCC,EAAarI,EAAMmI,KAAKE,WACxBC,EAAyBtI,EAAMmI,KAAKG,uBAOxC,IAAKT,KAAYD,IAKTI,GAHJD,SADAD,EAAYF,EAAOC,OAGF3G,GAAwB,OAAd4G,EACZA,EAAUzE,YAEV,OAIX2E,IAAa3H,OAAS2H,IAAaE,GAAmBF,IAAaI,GACnEJ,IAAaK,GAAcL,IAAaM,GAA0BN,IAAaO,QAC7EvI,EAAMyD,WAAW5D,EAAO2I,cAAgBR,IAAaQ,aAAkBV,aAAqBW,YAevFV,IAAa1G,IACpBqG,EAAYG,GAAYC,GAdpBA,aAAqBY,KACrBhB,EAAYG,GAAY,IAAIa,KAAKZ,EAAUa,WACpClF,EAAWqE,EAAU5F,OAC5BwF,EAAYG,GAAYC,EAAU5F,SAElC+F,EAAWP,EAAYG,GAEnBH,EAAYG,UADL,IAAe3G,GACE+G,GAEA,CAAC,EAE7BN,EAAcD,EAAYG,GAAWC,IAOjD,OAAOJ,CACX,CAEA,SAASkB,EAAOC,EAAOC,EAAKC,GACxB,IAAK,IAAIC,KAAMF,EACX,GAAIA,EAAIG,eAAeD,IAAOF,EAAIE,GAAI5B,KAAKyB,GACvC,OAAOG,EAGf,OAAOD,IAASjJ,EAAciJ,EAAOF,CACzC,CAQA,SAASK,EAAYC,GACjB,OAAOA,EAAIzJ,QAAQ,WAAW,SAAS0J,EAAUC,GAC7C,OAAOA,EAAGC,aACd,GACJ,CAEA,SAASC,EAAkBjD,EAASkD,GAChC,IAAiBC,EAAbC,EAAS,CAAC,EAwBd,OAtBIC,SAASC,aAAeD,SAASC,YAAYC,kBAC7CJ,EAAgBE,SAASC,YAAYC,iBAAiBvD,EAAS,IAE3DkD,GACA5J,EAAEO,KAAKqJ,GAAY,SAASrF,EAAK2F,GAC7BJ,EAAOI,GAASL,EAAcM,iBAAiBD,EACnD,MAGJL,EAAgBnD,EAAQ0D,aAEpBR,GACA5J,EAAEO,KAAKqJ,GAAY,SAASrF,EAAK2F,GAC7BJ,EAAOI,GAASL,EAAcP,EAAYY,GAC9C,KAIH9J,EAAMiK,KAAKP,KACZA,EAASD,GAGNC,CACX,CAzkDA3J,EAAW,CACPmK,UAAW,OACXC,cAAc,EACdC,OAAQ,SAASC,EAAUlC,GACvB,IAAIhE,EACA7B,EACAgI,EAAO,GAEX,IAAKnG,EAAM,EAAG7B,EAAS6F,EAAK7F,OAAQ6B,EAAM7B,EAAQ6B,IAC9CmG,GAAQD,EAASlC,EAAKhE,IAG1B,OAAOmG,CACX,EACAC,QAAS,SAASF,EAAUpI,GACxB,IAKIa,EACA0H,EACArG,EAPAsG,EAAWvK,EAAO,CAAC,EAAGsC,KAAMP,GAC5BiI,EAAYO,EAASP,UACrBQ,EAAeR,EAAUS,MAAMjF,GAAoB,GACnDyE,EAAeM,EAASN,aACxBS,EAAe,yDAKnB,GAAInH,EAAW4G,GACX,OAAOA,EAcX,IAXAO,GAAgBT,EAAe,QAAUD,EAAY,KAAO,GAE5DU,GAAgB,gBAEhBJ,EAAQH,EACH3K,QAAQkG,EAAoB,aAC5BlG,QAAQiG,EAAc,2BACtBjG,QAAQmG,EAAa,KACrBnG,QAAQoG,EAAoB,aAC5BT,MAAM,KAENlB,EAAM,EAAGA,EAAMqG,EAAMlI,OAAQ6B,IAC9ByG,GAAgB1F,EAAYsF,EAAMrG,GAAMA,EAAM,GAAM,GAGxDyG,GAAgBT,EAAe,KAAO,IAItCS,GAFAA,GAAgB,wBAEYlL,QAAQqG,EAAa,KAEjD,IAGI,OAFAjD,EAAK,IAAI+H,SAASH,EAAcE,IAC7BE,WAAatK,KAAKuK,MAAMP,EAAMlI,OAAS,GACnCQ,CACX,CAAE,MAAO+B,GACL,MAAM,IAAImG,MAAMhL,EAAMiL,OAAO,8CAA+CZ,EAAUO,GAC1F,CACJ,GAgBR,WACI,IACIM,EACAC,EAUAC,EAZAC,EAAY,2HAGZC,EAAO,CACH,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,IAAM,MACN,KAAM,QAGVC,EAAW,CAAC,EAAEA,SAsBlB,SAASC,EAAMC,GAEX,OADAJ,EAAUK,UAAY,EACfL,EAAUjE,KAAKqE,GAAU,IAAOA,EAAO/L,QAAQ2L,GAAW,SAASM,GACtE,IAAIC,EAAIN,EAAKK,GACb,cAAcC,IAAM5K,EAAS4K,EACzB,OAAS,OAASD,EAAEE,WAAW,GAAGN,SAAS,KAAK5J,OAAO,EAC/D,IAAK,IAAO,IAAO8J,EAAS,GAChC,CAEA,SAAStC,EAAI2C,EAAKC,GACd,IAAI1J,EACA2J,EACAC,EACA3J,EAEA4J,EAEAC,EAHAC,EAAOlB,EAEPpB,EAAQiC,EAAOD,GAYnB,GATIhC,UAAgBA,IAAU5I,UAAiB4I,EAAMuC,SAAWtL,IAC5D+I,EAAQA,EAAMuC,OAAOP,WAGdV,IAAQrK,IACf+I,EAAQsB,EAAIpG,KAAK+G,EAAQD,EAAKhC,KAGlCqC,SAAcrC,KACD9I,EACT,OAAOwK,EAAM1B,GACV,GAAIqC,IAASlL,EAChB,OAAOqL,SAASxC,GAASyC,OAAOzC,GAAS3I,EACtC,GAAIgL,IAAS/K,GAAW+K,IAAShL,EACpC,OAAOoL,OAAOzC,GACX,GAAIqC,IAASjL,EAAQ,CACxB,IAAK4I,EACD,OAAO3I,EAIX,GAFA+J,GAAOC,EACPe,EAAU,GACoB,mBAA1BX,EAASpI,MAAM2G,GAA6B,CAE5C,IADAxH,EAASwH,EAAMxH,OACVD,EAAI,EAAGA,EAAIC,EAAQD,IACpB6J,EAAQ7J,GAAK8G,EAAI9G,EAAGyH,IAAU3I,EAMlC,OAJA8K,EAAuB,IAAnBC,EAAQ5J,OAAe,KAAO4I,EAC9B,MAAQA,EAAMgB,EAAQ5G,KAAK,MAAQ4F,GAAO,KAAOkB,EAAO,IACxD,IAAMF,EAAQ5G,KAAK,KAAO,IAC9B4F,EAAMkB,EACCH,CACX,CACA,GAAIb,UAAcA,IAAQlK,EAEtB,IADAoB,EAAS8I,EAAI9I,OACRD,EAAI,EAAGA,EAAIC,EAAQD,WACT+I,EAAI/I,KAAOrB,IAElBiL,EAAI9C,EADJ6C,EAAIZ,EAAI/I,GACGyH,KAEPoC,EAAQzH,KAAK+G,EAAMQ,IAAMd,EAAM,KAAO,KAAOe,QAKzD,IAAKD,KAAKlC,EACFxG,OAAO2F,eAAejE,KAAK8E,EAAOkC,KAClCC,EAAI9C,EAAI6C,EAAGlC,KAEPoC,EAAQzH,KAAK+G,EAAMQ,IAAMd,EAAM,KAAO,KAAOe,GAU7D,OAJAA,EAAuB,IAAnBC,EAAQ5J,OAAe,KAAO4I,EAC9B,MAAQA,EAAMgB,EAAQ5G,KAAK,MAAQ4F,GAAO,KAAOkB,EAAO,IACxD,IAAMF,EAAQ5G,KAAK,KAAO,IAC9B4F,EAAMkB,EACCH,CACX,CACJ,QAlGWvD,KAAKtF,UAAUiJ,SAAWtL,IAEjC2H,KAAKtF,UAAUiJ,OAAS,WACpB,IAAIrJ,EAAOR,KAEX,OAAO8J,SAAStJ,EAAKwJ,WACjBvG,EAAIjD,EAAKyJ,iBAAkB,GAAK,IAChCxG,EAAIjD,EAAK0J,cAAgB,GAAK,IAC9BzG,EAAIjD,EAAK2J,cAAgB,IACzB1G,EAAIjD,EAAK4J,eAAiB,IAC1B3G,EAAIjD,EAAK6J,iBAAmB,IAC5B5G,EAAIjD,EAAK8J,iBAAmB,IAAM,IAC1C,EAEAP,OAAOnJ,UAAUiJ,OAASU,OAAO3J,UAAUiJ,OAASW,QAAQ5J,UAAUiJ,OAAS,WAC3E,OAAO7J,KAAKgK,SAChB,UAoFO/L,EAAKwM,YAAclM,IAC1BN,EAAKwM,UAAY,SAASnD,EAAOoD,EAAUC,GACvC,IAAI9K,EAIJ,GAHA6I,EAAM,GACNC,EAAS,UAEEgC,IAAUlM,EACjB,IAAKoB,EAAI,EAAGA,EAAI8K,EAAO9K,GAAK,EACxB8I,GAAU,gBAGAgC,IAAUnM,IACxBmK,EAASgC,GAIb,GADA/B,EAAM8B,EACFA,UAAmBA,IAAanM,WAAoBmM,IAAahM,UAAiBgM,EAAS5K,SAAWrB,GACtG,MAAM,IAAI+J,MAAM,kBAGpB,OAAO7B,EAAI,GAAI,CAAE,GAAIW,GACzB,EAEP,CA5ID,GA+IA,WACI,IAAIsD,EAAmB,gGACnBC,EAAuB,oBACvBC,EAAgB,uCAChBC,EAAc,MACdC,EAAQ,GACRC,EAAQ,IAERC,EAAQ,IACRC,EAAO,IAEPC,EAAK,QACLC,EAAiB,CAAC,EAAEtC,SAmEvB,SAASuC,EAAYC,GAClB,GAAIA,EAAS,CACT,GAAIA,EAAQC,aACR,OAAOD,EAGX,UAAWA,IAAY/M,EAAQ,CAC3B,IAAIf,EAAWD,EAAMC,SACrB,OAAOA,EAAS8N,IAAY9N,EAAS8N,EAAQ1I,MAAM,KAAK,KAAO,IACnE,CAEA,OAAO,IACX,CAEA,OAAO,IACX,CAEA,SAAS4I,EAAWF,GAKhB,OAJIA,IACAA,EAAUD,EAAYC,IAGnBA,GAAW/N,EAAMC,SAASiO,OACrC,CAvFAlO,EAAMC,SAAS,SAAW,CACtBZ,KAAMuO,EACNI,aAAc,CACVG,QAAS,CAAC,MACVC,SAAU,EACV,IAAK,IACL,IAAK,IACLC,UAAW,CAAC,GACZC,QAAS,CACLH,QAAS,CAAC,OAAQ,OAClBC,SAAU,EACV,IAAK,IACL,IAAK,IACLC,UAAW,CAAC,GACZE,OAAQ,KAEZC,SAAU,CACNnP,KAAM,YACNoP,KAAM,MACNN,QAAS,CAAC,OAAQ,MAClBC,SAAU,EACV,IAAK,IACL,IAAK,IACLC,UAAW,CAAC,GACZE,OAAQ,MAGhBG,UAAW,CACPC,SAAU,CACNC,KAAM,CACFC,MAAO,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC1EC,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDC,WAAY,CAAE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEtDC,OAAQ,CACJH,MAAO,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACtHC,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAE7FG,GAAI,CAAE,KAAM,KAAM,MAClBC,GAAI,CAAE,KAAM,KAAM,MAClBC,SAAU,CACNC,EAAG,WACHC,EAAG,sBACHC,EAAG,iCACHC,EAAG,mBACHC,EAAG,sBACHC,EAAG,UACHC,EAAG,UACHC,EAAG,8BACHC,EAAG,UACHC,EAAG,aACHC,EAAG,iCACHC,EAAG,aACHC,EAAG,cAEP,IAAK,IACL,IAAK,IACLC,SAAU,EACVC,gBAAiB,QA+B7BlQ,EAAM+N,QAAU,SAASoC,GACrB,IAA+BpC,EAA3B9N,EAAWD,EAAMC,SAErB,GAAIkQ,IAAgBrQ,EAKhB,OAAOG,EAASiO,SAJhBH,EAAUD,EAAYqC,IAAgBlQ,EAAS2N,IACvCwC,SAAWrC,EAAQW,UAAUC,SACrC1O,EAASiO,QAAUH,CAI3B,EAEA/N,EAAM8N,YAAcA,EACpB9N,EAAMiO,WAAaA,EAGnBjO,EAAM+N,QAAQH,GAuad,IAAIyC,EAAe,SAASnK,EAAQoK,EAAOlK,EAAK4H,GAC5C,IAGIuC,EAASC,EACTrM,EAAKqG,EAAOV,EACZ2G,EALAC,EAAexK,EAAOyK,QAAQ3C,EAAaP,IAC3CmD,EAAa5C,EAAaK,UAAU1M,QACpC0M,EAAYuC,EAAWC,QAU3B,GALAzK,GAAwB,IAAlBsK,EAAsBA,EAAetK,EAAM,GAGjDoK,GADAD,EAAUrK,EAAOT,UAAU6K,EAAOlK,IACV9D,SAEH+L,EAAW,CAI5B,IAHAlK,EAAMqM,EACNhG,EAAQ,GAEDrG,GAAO,GASV,IARA2F,EAAQyG,EAAQ9K,UAAUtB,EAAMkK,EAAWlK,KAEvCqG,EAAM/F,KAAKqF,GAEf3F,GAAOkK,EAIW,KAFlBA,GADAoC,EAAeG,EAAWC,WACG/Q,EAAc2Q,EAAepC,GAErC,CACblK,EAAM,GACNqG,EAAM/F,KAAK8L,EAAQ9K,UAAU,EAAGtB,IAEpC,KACJ,CAGJoM,EAAU/F,EAAMsG,UAAUxL,KAAK0I,EA1jB3B,MA2jBJ9H,EAASA,EAAOT,UAAU,EAAG6K,GAASC,EAAUrK,EAAOT,UAAUW,EACrE,CAEA,OAAOF,CACX,EAEI6K,EAAQ,SAASjH,EAAOkH,EAAWC,GAanC,OAZAD,EAAYA,GAAa,EAEzBlH,EAAQA,EAAMyB,WAAWlG,MAAM,KAC/ByE,EAAQtJ,KAAKuQ,QAAQjH,EAAM,GAAK,KAAOA,EAAM,IAAOA,EAAM,GAAKkH,EAAaA,KAExEC,IACAnH,GAASA,IAIbA,KADAA,EAAQA,EAAMyB,WAAWlG,MAAM,MACf,GAAK,KAAOyE,EAAM,IAAOA,EAAM,GAAKkH,GAAcA,KAErDE,QAAQ1Q,KAAK2Q,IAAIH,EAAW,IAC7C,EAEIzF,EAAW,SAASzB,EAAOsH,EAAKrD,GAChC,GAAIqD,EAAK,CACL,GAAmC,kBAA/BvD,EAAe7I,KAAK8E,GACpB,OAjeZ,SAAoBuH,EAAMpG,EAAQ8C,GAG9B,IAAIqC,GAFJrC,EAAUE,EAAWF,IAEEW,UAAUC,SAC7BC,EAAOwB,EAASxB,KAChBI,EAASoB,EAASpB,OAItB,OAFA/D,EAASmF,EAASjB,SAASlE,IAAWA,GAExBvL,QAAQ0N,GAAkB,SAASzC,GAC7C,IAAI2G,EACAC,EACAC,EAmEJ,MAjEc,MAAV7G,EACA4G,EAASF,EAAKI,UACG,OAAV9G,EACP4G,EAAStL,EAAIoL,EAAKI,WACD,QAAV9G,EACP4G,EAAS3C,EAAKE,UAAUuC,EAAKK,UACZ,SAAV/G,EACP4G,EAAS3C,EAAKC,MAAMwC,EAAKK,UACR,MAAV/G,EACP4G,EAASF,EAAKM,WAAa,EACV,OAAVhH,EACP4G,EAAStL,EAAIoL,EAAKM,WAAa,GACd,QAAVhH,EACP4G,EAASvC,EAAOF,UAAUuC,EAAKM,YACd,SAAVhH,EACP4G,EAASvC,EAAOH,MAAMwC,EAAKM,YACV,OAAVhH,EACP4G,EAAStL,EAAIoL,EAAKO,cAAgB,KACjB,SAAVjH,EACP4G,EAAStL,EAAIoL,EAAKO,cAAe,GAChB,MAAVjH,EACP4G,EAASF,EAAKQ,WAAa,IAAM,GAChB,OAAVlH,EACP4G,EAAStL,EAAIoL,EAAKQ,WAAa,IAAM,IACpB,MAAVlH,EACP4G,EAASF,EAAKQ,WACG,OAAVlH,EACP4G,EAAStL,EAAIoL,EAAKQ,YACD,MAAVlH,EACP4G,EAASF,EAAKS,aACG,OAAVnH,EACP4G,EAAStL,EAAIoL,EAAKS,cACD,MAAVnH,EACP4G,EAASF,EAAKU,aACG,OAAVpH,EACP4G,EAAStL,EAAIoL,EAAKU,cACD,MAAVpH,EACP4G,EAAShR,EAAKwK,MAAMsG,EAAKW,kBAAoB,KAC5B,OAAVrH,IACP4G,EAASF,EAAKW,mBACD,KACTT,EAAShR,EAAKwK,MAAMwG,EAAS,KAEjCA,EAAStL,EAAIsL,IACI,QAAV5G,EACP4G,EAAStL,EAAIoL,EAAKW,kBAAmB,GACpB,OAAVrH,EACP4G,EAASF,EAAKQ,WAAa,GAAKzB,EAASnB,GAAG,GAAKmB,EAASlB,GAAG,GAC5C,QAAVvE,GAEP6G,GADAF,EAAUD,EAAKY,qBACE,EAEjBV,EAAShR,EAAK2R,IAAIZ,EAAU,IAAI/F,WAAWlG,MAAM,KAAK,GACtDiM,EAAU/Q,EAAK2R,IAAIZ,GAAqB,GAATC,EAE/BA,GAAUC,EAAO,IAAM,KAAOvL,EAAIsL,GAClCA,GAAU,IAAMtL,EAAIqL,IACH,OAAV3G,GAA4B,MAAVA,IAEzB6G,GADAD,EAASF,EAAKY,oBAAsB,IACpB,EAEhBV,EAAShR,EAAK2R,IAAIX,GAAQhG,WAAWlG,MAAM,KAAK,GAChDkM,GAAUC,EAAO,IAAM,MAAkB,OAAV7G,EAAiB1E,EAAIsL,GAAUA,IAG3DA,IAAWzR,EAAcyR,EAAS5G,EAAMhJ,MAAM,EAAGgJ,EAAMrI,OAAS,EAC3E,GACJ,CAgZmB6P,CAAWrI,EAAOsH,EAAKrD,GAC3B,UAAWjE,IAAU7I,EACxB,OA/YZ,SAAsBiF,EAAQ+E,EAAQ8C,GAGlC,IAKIQ,EACA6D,EAAYC,EACZC,EACAC,EAEAhC,EACAiC,EACAhC,EAIArM,EACA7B,EACAmQ,EACAC,EACAC,EACAjC,EACAkC,EACAC,EACAC,EAASC,EAETC,EAGA5M,EADAkK,EA5BAtC,GAFJD,EAAUE,EAAWF,IAEMC,aACvBiF,EAAUjF,EAAaP,GACvBuD,EAAYhD,EAAaI,SACzBD,EAAUH,EAAaG,QAAQ,GAC/B+E,EAAW,GAKXjC,EAAW/K,EAAS,EAKpBiN,EAAc3F,EACd1D,EAAQ0D,EAiBZ,GAAItH,IAAWpG,EACX,OAAO0N,EAGX,IAAKlB,SAASpG,GACV,OAAOA,EAIX,IAAK+E,EACD,OAAO8C,EAAQ1O,KAAKiD,OAAS4D,EAAOkN,iBAAmBlN,EAAOqF,WAMlE,GAHAgH,EAAqBlF,EAAqBgG,KAAKpI,GAGvB,CAsBpB,GAlBAoH,EAAuB,OAHvBpH,EAASsH,EAAmB,GAAGe,iBAE/BlB,EAAwB,MAAXnH,IAGKoH,KAGdY,GADAjF,EAAeoE,EAAapE,EAAaQ,SAAWR,EAAaM,SAC1Cb,GACvBuD,EAAYhD,EAAaI,SACzBG,EAASP,EAAaO,OACtBJ,EAAUH,EAAaG,QAAQ8C,EAAW,EAAI,KAGlDqB,EAAkBC,EAAmB,MAGjCvB,GAAasB,GAIF,MAAXrH,EAGA,OAFUqH,EAAkBpM,EAAOqN,cAAcvC,GAAa9K,EAAOqN,iBAE1D7T,QAAQ+N,EAAOO,EAAaP,IA0B3C,GAtBI4E,IACAnM,GAAU,KAId+K,GADA/K,EAAS6K,EAAM7K,EAAQ8K,IACH,EAGpBT,GAFArK,EAASA,EAAOb,MAAMoI,IAEL,GACjB+E,EAAWtM,EAAO,GAGd+K,IACAV,EAAUA,EAAQ9K,UAAU,IAGhCqE,EAAQuG,EAAaE,EAAS,EAAGA,EAAQjO,OAAQ0L,GAE7CwE,IACA1I,GAASmJ,EAAUT,GAGR,MAAXvH,IAAmBgG,EACnB,OAAOnH,EAKX,IAFA5D,EAASsH,EAEJrJ,EAAM,EAAG7B,EAAS6L,EAAQ7L,OAAQ6B,EAAM7B,EAAQ6B,IAI7C+B,GADO,OAFXuM,EAAKtE,EAAQ5I,OAAOpB,IAGN2F,EACI,MAAP2I,GAAqB,MAAPA,EACXlE,EAEAkE,EAIlB,OAAOvM,CACX,CAkBA,IAZI+E,EAAO0F,QAAQ,MAAQ,GAAK1F,EAAO0F,QAAQ,MAAS,GAAK1F,EAAO0F,QAAQ,OAAS,KACjF1F,EAASA,EAAOvL,QAAQ4N,GAAe,SAAS3C,GAC5C,IAAI6I,EAAY7I,EAAMpF,OAAO,GAAG7F,QAAQ,KAAM,IAC1C+T,EAAU9I,EAAMhJ,MAAM,GAAGjC,QAAQ8T,EAAW,IAIhD,OAFAN,EAASzO,KAAKgP,GAxUR,IA2UV,KAGJxI,EAASA,EAAO5F,MAAM,KAClB4L,GAAYhG,EAAO,GAEnBA,EAASA,EAAO,GAChB0H,GAAoB,OACjB,GAAe,IAAXzM,GAAgB+E,EAAO,IAG9B,IAA8B,IAD9BA,EAASA,EAAO,IACL0F,QAAQjD,KAAyC,GAAzBzC,EAAO0F,QAAQhD,GAE9C,OAAO1C,OAGXA,EAASA,EAAO,GAmCpB,IA7BAoH,GAA6B,GAHdpH,EAAO0F,QAAQ,QAQ1BzK,GAAU,MAJdkM,GAA+B,IAH/BY,EAAgB/H,EAAO0F,QAAQ,QAUiB,OAA9B1F,EAAO+H,EAAgB,KACrC/H,EAASA,EAAO5F,MAAM,MAAMC,KAAK,IACjC8M,GAAa,IAGbA,GAAcC,KAGdY,GADAjF,EAAeoE,EAAapE,EAAaQ,SAAWR,EAAaM,SAC1Cb,GACvBuD,EAAYhD,EAAaI,SACzBG,EAASP,EAAaO,SAG1BmE,EAAWzH,EAAO0F,QAzXV,MAyX4B,KAEhC1F,EAASA,EAAOvL,QAAQ6N,EAAaC,IAGzCkD,EAAezF,EAAO0F,QAAQlD,GAC9BnL,EAAS2I,EAAO3I,QAEK,GAAjBoO,EAqBA,GAdA8B,GAJIA,GAFJA,EAAWtM,EAAOqF,WAAWlG,MAAM,MACtB,GACE0L,EAAM7K,EAAQ1F,KAAK0R,IAAIM,EAAS,KAEhCA,EAAS,IAEJnN,MAAMoI,GAAO,IAAMD,EAGvCsF,GAFAD,EAAY5H,EAAOyI,YAAY/F,GAAQ+C,IAEhB,EACvBqC,GAFAH,EAAa3H,EAAOyI,YAAYhG,GAASgD,IAEhB,EACzBvM,EAAMqO,EAASlQ,OAEVwQ,GAAYC,IAEbzQ,GADA2I,EAASA,EAAOxF,UAAU,EAAGiL,GAAgBzF,EAAOxF,UAAUiL,EAAe,IAC7DpO,OAChBoO,GAAgB,EAChBvM,EAAM,GAGN2O,GAAWD,EAAYD,EACvBzO,EAAM0O,OACH,GAAID,EAAaC,EACpB,GAAIE,GAAY5O,EAAMyO,EAAY,CAG9B,IAFA,IAAIe,EAAU5C,EAAM7K,EAAQ0M,EAAY3B,GAEjC0C,EAAQpO,OAAOoO,EAAQrR,OAAS,KAAOqL,GAAQiF,EAAa,GAAKA,EAAaC,GACjFD,IAEAe,EAAU5C,EAAM7K,EAAQ0M,EAAY3B,GAGxC9M,EAAMyO,CACV,MAAWE,GAAW3O,EAAM0O,IACxB1O,EAAM0O,GAmClB,GA9BA3M,EAAS6K,EAAM7K,EAAQ/B,EAAK8M,GAE5B2B,EAAa3H,EAAO0F,QAAQjD,GACXmF,EAAY5H,EAAO0F,QAAQhD,GAIxC2C,GADe,GAAfsC,IAAkC,GAAdC,EACZA,GACc,GAAfD,IAAkC,GAAdC,EACnBD,EAEAA,EAAaC,EAAYA,EAAYD,EAGjDA,EAAa3H,EAAOyI,YAAYhG,GAChCmF,EAAY5H,EAAOyI,YAAY/F,GAI3BvH,GADe,GAAfwM,IAAkC,GAAdC,EACdA,GACgB,GAAfD,IAAkC,GAAdC,GAGrBD,EAAaC,EAFbD,EAEsCC,EAG5CvC,GAAShO,IACT8D,EAAMkK,IAGI,GAAVA,EAAa,CAkBb,IAhBAC,GADAzG,EAAQ5D,EAAOqF,WAAWlG,MAAMoI,IAChB,GAChB+E,EAAW1I,EAAM,IAAM0D,EAEvBgD,EAAgBD,EAAQjO,OACPkQ,EAASlQ,OAEtB2O,IAAuB,EAAV/K,GAAgB,IAC7B+K,GAAW,GAGf/K,EAAS+E,EAAOxF,UAAU,EAAG6K,GAEzBW,IAAa0B,IACbzM,GAAU,KAGT/B,EAAMmM,EAAOnM,EAAM7B,EAAQ6B,IAAO,CAGnC,GAFAsO,EAAKxH,EAAO1F,OAAOpB,IAEE,GAAjBuM,GACA,GAAItK,EAAMjC,EAAMqM,EAAe,CAC3BtK,GAAUqK,EACV,KACJ,OAWA,IATkB,GAAdsC,GAAmBA,EAAY1O,IAC/BgP,EAAc3F,GAGbkD,EAAevM,GAAQqM,GAAiBE,EAAevM,GAAO,IAC/D+B,GAAUqK,EACVpM,EAAMuM,GAGNA,IAAiBvM,EAAK,CACtB+B,IAAWsM,EAAWS,EAAUzF,GAASgF,EACzCrO,GAAOiC,EAAMsK,EAAe,EAC5B,QACJ,CAGA+B,IAAO9E,GACPzH,GAAUuM,EACVU,EAAcV,GACPA,IAAO/E,IACdxH,GAAUiN,EAElB,CAWA,GATIT,IACAxM,EAASmK,EAAanK,EAAQoK,GAASW,IAAa0B,EAAoB,EAAI,GAAInS,KAAKoT,IAAIxN,EAAMoK,EAAgBF,GAAStC,IAGxH5H,GAAOkK,IACPpK,GAAU+E,EAAOxF,UAAUW,EAAM,IAIjCgM,GAAcC,EAAW,CAEzB,IADAvI,EAAQ0D,EACHrJ,EAAM,EAAG7B,EAAS4D,EAAO5D,OAAQ6B,EAAM7B,EAAQ6B,IAEhD2F,GAAiB,OADjB2I,EAAKvM,EAAOX,OAAOpB,KACY,MAAPsO,EAAclE,EAASkE,EAEnDvM,EAAS4D,CACb,CAIA,GAFAxH,EAAS4Q,EAAS5Q,OAGd,IAAK6B,EAAM,EAAGA,EAAM7B,EAAQ6B,IACxB+B,EAASA,EAAOxG,QA7gBd,KA6gBmCwT,EAAS/O,GAG1D,CAEA,OAAO+B,CACX,CAgEmB2N,CAAa/J,EAAOsH,EAAKrD,EAExC,CAEA,OAAOjE,IAAUhK,EAAcgK,EAAQ,EAC3C,EAEA9J,EAAMiL,OAAS,SAASmG,GACpB,IAAI0C,EAAS1R,UAEb,OAAOgP,EAAI1R,QAAQkB,GAAc,SAAS+J,EAAOoJ,EAAOC,GACpD,IAAIlK,EAAQgK,EAAOG,SAASF,EAAO,IAAM,GAEzC,OAAOxI,EAASzB,EAAOkK,EAAoBA,EAAkBvO,UAAU,GAAK,GAChF,GACJ,EAEAzF,EAAMkU,eAAiB,SAASjJ,GAK5B,MAJ0B,QAAtBA,EAAOtJ,MAAM,EAAE,KACfsJ,EAASA,EAAOtJ,MAAM,EAAGsJ,EAAO3I,OAAS,IAGtC2I,CACX,EAEAjL,EAAMmU,eAAiB,WACnB,IACI,OAAOxK,SAASyK,aACpB,CAAE,MAAOvP,GACL,OAAO8E,SAAS0K,gBAAgBD,aACpC,CACJ,EAEApU,EAAMsU,OAASvD,EACf/Q,EAAMyG,YAAc,SAASH,EAASiO,GAAiB,OAAO3U,EAAE0G,GAASE,WAAW+N,IAAiB,IAAU,CAAG,EAClHvU,EAAM2G,aAAe,SAASL,EAASiO,GAAiB,OAAO3U,EAAE0G,GAASI,YAAY6N,IAAiB,IAAU,CAAG,EACpHvU,EAAMuL,SAAWA,CACpB,CAloBD,GAqoBA,WACI,IAAIiJ,EAAyB,UACzBC,EAAc,MACdC,EAAiB,mBACjBC,EAAsB,gBACtBC,EAAqB,uBACrBC,EAAa,sBACbC,EAAe,UACfC,EAAmB,CAAE,GAAI,CAAE,IAAK,IAAK,KAAO,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,MACvEC,EAAmB,CACf,CACA,iCACA,8BACA,6BACA,0BACA,2BACA,yBACA,sBACA,qBACA,sBACA,sBACA,uBACG,CACH,mBACA,mBACA,oBACG,CACH,aACA,aACA,WACA,UAGJlU,EAAe,CACX,EAAG,WACH,EAAG,WACH,EAAG,UAEP+M,EAAiB,CAAC,EAAEtC,SAExB,SAAS0J,EAAWnL,EAAOwG,EAAOlK,GAC9B,QAAS0D,GAASwG,GAASxG,GAAS1D,EACxC,CAEA,SAAS8O,EAAoBC,GACzB,OAAOA,EAAW5P,OAAO,EAC7B,CAEA,SAAS6P,EAAeC,GACpB,OAAOzV,EAAE0V,IAAID,EAAaH,EAC9B,CASA,SAASK,EAAWpN,GAKhB,IAJA,IAAIhE,EAAM,EACN7B,EAAS6F,EAAK7F,OACdkT,EAAQ,GAELrR,EAAM7B,EAAQ6B,IACjBqR,EAAMrR,IAAQgE,EAAKhE,GAAO,IAAImP,cAGlC,OAAOkC,CACX,CAEA,SAASC,EAAeC,GACpB,IAAuB7N,EAAnB8N,EAAe,CAAC,EAEpB,IAAK9N,KAAY6N,EACbC,EAAa9N,GAAY0N,EAAWG,EAAU7N,IAGlD,OAAO8N,CACX,CAEA,SAASC,EAAW9L,EAAOmB,EAAQ8C,EAAS8H,GACxC,IAAK/L,EACD,OAAO,KAGX,IA0EI2I,EAAIqD,EAAOxT,EAAQ6L,EACnB4H,EAAQC,EAAKC,EACbC,EAAeC,EACfC,EAAaC,EACJ1L,EA9ET2L,EAAY,SAAS3L,GAEjB,IADA,IAAItI,EAAI,EACD4I,EAAO9G,KAASwG,GACnBtI,IACA8B,IAKJ,OAHI9B,EAAI,IACJ8B,GAAO,GAEJ9B,CACX,EACAkU,EAAY,SAAStM,GACjB,IAAIuM,EAAK1V,EAAamJ,IAAS,IAAI1B,OAAO,UAAY0B,EAAO,KACzDU,EAAQb,EAAM2M,OAAOC,EAAUzM,GAAMU,MAAM6L,GAE/C,OAAI7L,GACAA,EAAQA,EAAM,GACd+L,GAAY/L,EAAMrI,OACX2R,SAAStJ,EAAO,KAEpB,IACX,EACAgM,EAAiB,SAAS9H,EAAO+H,GAQ7B,IAPA,IAEIvX,EAAMwX,EAGNC,EALAzU,EAAI,EACJC,EAASuM,EAAMvM,OAEfyU,EAAc,EACdC,EAAW,EAGR3U,EAAIC,EAAQD,IAEfwU,GADAxX,EAAOwP,EAAMxM,IACKC,OAClBwU,EAAWhN,EAAM2M,OAAOC,EAAUG,GAE9BD,IACAE,EAAWA,EAASxD,eAGpBwD,GAAYzX,GAAQwX,EAAaE,IACjCA,EAAcF,EACdG,EAAW3U,GAInB,OAAI0U,GACAL,GAAYK,EACLC,EAAW,GAGf,IACX,EACAC,EAAe,WACX,IAAI1F,GAAS,EAKb,OAJIzH,EAAMvE,OAAOmR,KAAczL,EAAO9G,KAClCuS,IACAnF,GAAS,GAENA,CACX,EACAnB,EAAWrC,EAAQW,UAAUC,SAC7BuI,EAAO,KACPC,EAAQ,KACRC,EAAM,KACNC,EAAQ,KACR/F,EAAU,KACVgG,EAAU,KACVC,EAAe,KACfpT,EAAM,EACNuS,EAAW,EACXjD,GAAU,EACVpC,EAAO,IAAI3I,KACXwH,EAAkBE,EAASF,iBAAmB,KAC9CsH,EAAcnG,EAAKO,cAoBvB,IAbK3G,IACDA,EAAS,MAIbkD,EAAUiC,EAASjB,SAASlE,MAExBA,EAASkD,GAIb7L,GADA2I,EAASA,EAAO5F,MAAM,KACN/C,OAET6B,EAAM7B,EAAQ6B,IAGjB,GAFAsO,EAAKxH,EAAO9G,GAERsP,EACW,MAAPhB,EACAgB,GAAU,EAEVwD,SAGJ,GAAW,MAAPxE,EAAY,CAMZ,GALAqD,EAAQQ,EAAU,KACblG,EAASqH,aACVrH,EAASqH,WAAahC,EAAerF,EAASxB,OAGtC,OAARwI,GAAgBtB,EAAQ,EACxB,SAKJ,GAAY,QAFZsB,EAAMtB,EAAQ,EAAIS,EAAU,GAAKI,EAAevG,EAASqH,WAAoB,GAAT3B,EAAa,YAAc,UAAU,KAErFb,EAAWmC,EAAK,EAAG,IACnC,OAAO,IAEf,MAAO,GAAW,MAAP3E,EAAY,CAOnB,GANAqD,EAAQQ,EAAU,KACblG,EAASsH,eACVtH,EAASsH,aAAejC,EAAerF,EAASpB,SAItC,QAFdmI,EAAQrB,EAAQ,EAAIS,EAAU,GAAKI,EAAevG,EAASsH,aAAsB,GAAT5B,EAAa,YAAc,UAAU,KAEvFb,EAAWkC,EAAO,EAAG,IACvC,OAAO,KAEXA,GAAS,CACb,MAAO,GAAW,MAAP1E,EAAY,CAInB,GAAa,QAFbyE,EAAOX,EADPT,EAAQQ,EAAU,OAId,OAAO,KAGE,GAATR,IAC+B,iBAApB5F,IACPA,EAAkBsH,EAAcvD,SAAS/D,EAAiB,MAG9DgH,EAAQM,EAAcA,EAAc,IAAON,GAChChH,IACPgH,GAAQ,KAGpB,MAAO,GAAW,MAAPzE,GAMP,GALA6D,EAAU,KAEG,KADbe,EAAQd,EAAU,MAEdc,EAAQ,GAEE,OAAVA,GAAkBpC,EAAWoC,EAAO,EAAG,IACvC,OAAO,UAER,GAAW,MAAP5E,GAGP,GAFA6D,EAAU,KAEI,QADde,EAAQd,EAAU,KACItB,EAAWoC,EAAO,EAAG,IACvC,OAAO,UAER,GAAW,MAAP5E,GAGP,GAFA6D,EAAU,KAEM,QADhBhF,EAAUiF,EAAU,KACItB,EAAW3D,EAAS,EAAG,IAC3C,OAAO,UAER,GAAW,MAAPmB,GAGP,GAFA6D,EAAU,KAEM,QADhBgB,EAAUf,EAAU,KACItB,EAAWqC,EAAS,EAAG,IAC3C,OAAO,UAER,GAAW,MAAP7E,GAYP,GAXAqD,EAAQQ,EAAU,KAElB3L,EAAQb,EAAM2M,OAAOC,EAAUZ,GAAOnL,MAAM7J,EAAa,IAGpC,QAFrByW,EAAehB,EAAUT,MAGrByB,EAAeI,WAAW,KAAOhN,EAAM,GAAI,IAC3C4M,EAAevX,EAAMsU,OAAOiD,EAAc,GAC1CA,GAAgB,KAGC,OAAjBA,GAAyBtC,EAAWsC,EAAc,EAAG,KACrD,OAAO,UAGR,GAAW,MAAP9E,GAWP,GAVAqD,EAAQQ,EAAU,KAClBJ,EAAgB9F,EAASnB,GACzBkH,EAAgB/F,EAASlB,GAEX,IAAV4G,IACAI,EAAgBd,EAAec,GAC/BC,EAAgBf,EAAee,MAGnCJ,EAASY,EAAeR,MACRQ,EAAeT,GAC3B,OAAO,UAGV,GAAW,MAAPzD,EAAY,CAIjB,GAHAuD,GAAM,EACNF,EAAQQ,EAAU,KAEgB,MAA9BxM,EAAM2M,OAAOC,EAAU,GAAY,CACnCO,IACA,QACJ,CAKA,KAHAhB,EAAUnM,EAAM2M,OAAOC,EAAU,GACjB/L,MAAMmL,EAAQ,EAAIlB,EAAqBD,IAGnD,OAAO,KAeX,GAVAyB,GAFAH,EAAUA,EAAQ,GAAG5Q,MAAM,MAEL,KACtBgR,EAAgBJ,EAAQ,KAEFG,EAAY9T,OAAS,IACvCoU,EAAWN,EAAY9T,OAAS,EAChC+T,EAAgBD,EAAY3Q,UAAUiR,GACtCN,EAAcA,EAAY3Q,UAAU,EAAGiR,IAIvCzB,EADJmB,EAAcnC,SAASmC,EAAa,KACP,GAAI,IAC7B,OAAO,KAGX,GAAIN,EAAQ,IACRO,EAAgBJ,EAAQ,GAAG,GAAKI,EAChCA,EAAgBpC,SAASoC,EAAe,IACpCuB,MAAMvB,IAAkBpB,EAAWoB,GAAgB,GAAI,KACvD,OAAO,IAGnB,MAAO,GAAW,MAAP5D,EACPgB,GAAU,EACVwD,SACG,IAAKA,IACR,OAAO,KAOnB,OAAIpB,IAAW,QAAQzO,KAAK0C,EAAM2M,OAAOC,IAC9B,MAKE,OAATQ,GAA2B,OAAVC,GAA0B,OAARC,GAFnB,OAAVC,GAA8B,OAAZ/F,IAAoBgG,GAO/B,OAATJ,IACAA,EAAOM,GAGC,OAARJ,IACAA,EAAM,KATVF,EAAOM,EACPL,EAAQ9F,EAAKM,WACbyF,EAAM/F,EAAKI,WAWXsE,GAAUsB,EAAQ,KAClBA,GAAS,IAGTrB,GACII,IACAiB,IAAUjB,GAGVC,IACA/E,IAAY+E,GAGhBvM,EAAQ,IAAIpB,KAAKA,KAAKsN,IAAIkB,EAAMC,EAAOC,EAAKC,EAAO/F,EAASgG,EAASC,KAjU7E,SAAmBlG,EAAMgG,GAChBA,GAA6B,KAApBhG,EAAKQ,YACfR,EAAKwG,SAASxG,EAAKQ,WAAa,EAExC,CAgUQiG,CADAhO,EAAQ,IAAIpB,KAAKwO,EAAMC,EAAOC,EAAKC,EAAO/F,EAASgG,EAASC,GAC3CF,GAGjBH,EAAO,KACPpN,EAAMiO,YAAYb,GAGlBpN,EAAM2H,YAAc2F,GAAOpB,IAAQlW,EAC5B,KAGJgK,EACX,CA6BA,SAASkO,EAAkBlO,EAAOmO,EAASlK,EAAS8H,GAChD,GAAmC,kBAA/BhI,EAAe7I,KAAK8E,GACpB,OAAOA,EAGX,IAEIxH,EACA4V,EAnC4BC,EAC5B3G,EA+BArN,EAAM,EACNkN,EAAO,KAIX,GAAIvH,GAAiC,IAAxBA,EAAM6G,QAAQ,QACvBU,EAAOwD,EAAWxB,KAAKvJ,IAanB,OAXAuH,EAAOA,EAAK,GACZ6G,EAAWpD,EAAazB,KAAKhC,EAAK5L,UAAU,IAE5C4L,EAAO,IAAI3I,KAAKuL,SAAS5C,EAAM,KAE3B6G,IA5CR1G,EAA+B,OADH2G,EA8CkBD,EAAS,IA7CzCzB,OAAO,EAAG,IAAc,EAAI,EAE9C0B,EAASA,EAAO1S,UAAU,GA2CdyS,EAxCL1G,GAFuC,GAApCyC,SAASkE,EAAO1B,OAAO,EAAG,GAAI,IAAYxC,SAASkE,EAAO1S,UAAU,GAAI,KA2CtE4L,EAAOrR,EAAMoY,SAASjV,MAAMkO,EAAM,GAClCA,EAAOrR,EAAMoY,SAASC,QAAQhH,EAAM,GAAI,EAAI6G,IAGzC7G,EAaf,IATAtD,EAAU/N,EAAMiO,WAAWF,GAEtBkK,IACDA,EAjDR,SAA2BlK,GACvB,IAGIuK,EAAgBC,EAAWpU,EAH3B7B,EAAS/B,EAAKqT,IAAImB,EAAiBzS,OAAQ0S,EAAiB1S,QAE5D6M,GADWpB,EAAQqC,UAAYrC,EAAQW,UAAUC,UAC7BQ,SAEpB8I,EAAU,GAEd,IAAK9T,EAAM,EAAGA,EAAM7B,EAAQ6B,IAAO,CAE/B,IADAmU,EAAiBvD,EAAiB5Q,GAC7BoU,EAAY,EAAGA,EAAYD,EAAehW,OAAQiW,IACnDN,EAAQxT,KAAK0K,EAASmJ,EAAeC,KAEzCN,EAAUA,EAAQO,OAAOxD,EAAiB7Q,GAC9C,CAEA,OAAO8T,CACX,CAiCkBQ,CAAkB1K,IAIhCzL,GADA2V,EAAU7X,EAAQ6X,GAAWA,EAAU,CAACA,IACvB3V,OAEV6B,EAAM7B,EAAQ6B,IAEjB,GADAkN,EAAOuE,EAAW9L,EAAOmO,EAAQ9T,GAAM4J,EAAS8H,GAE5C,OAAOxE,EAIf,OAAOA,CACX,CAEArR,EAAM0Y,UAAY,SAAS5O,EAAOmO,EAASlK,GACvC,OAAOiK,EAAkBlO,EAAOmO,EAASlK,GAAS,EACtD,EAEA/N,EAAM2Y,eAAiB,SAAS7O,EAAOmO,EAASlK,GAC5C,OAAOiK,EAAkBlO,EAAOmO,EAASlK,GAAS,EACtD,EAEA/N,EAAMiU,SAAW,SAASnK,EAAOiE,GAC7B,IAAIwD,EAASvR,EAAM2X,WAAW7N,EAAOiE,GAIrC,OAHIwD,IACAA,GAAkB,GAEfA,CACX,EAEAvR,EAAM2X,WAAa,SAAS7N,EAAOiE,EAAS9C,GACxC,IAAKnB,GAAmB,IAAVA,EACX,OAAO,KAGV,UAAWA,IAAU7I,EAClB,OAAO6I,EAGVA,EAAQA,EAAMyB,WAGd,IAMIf,EAAO6H,EANPnM,GAFJ6H,EAAU/N,EAAMiO,WAAWF,IAENC,aACjBM,EAAUpI,EAAOoI,QACjBE,EAAWtI,EAAOsI,SAClBD,EAASC,EAASD,OAClBqK,EAAgBtK,EAAQC,OACxB0C,EAAWnH,EAAM6G,QAAQ,KAI7B,OAAI+D,EAAetN,KAAK0C,IACpBA,EAAQ6N,WAAW7N,EAAMpK,QAAQwG,EAAO,KAAM,MAC1C0R,MAAM9N,KACNA,EAAQ,MAELA,GAGPmH,EAAW,EACJ,MAEPA,EAAWA,GAAY,EAGvBnH,EAAM6G,QAAQpC,IAAW,GAAMtD,GAAUA,EAAOqI,cAAc3C,QAAQ,MAAQ,GAE9EnG,GADAtE,EAASsI,GACML,QAAQ,GAAGzO,QAAQ,IAAK6O,GAAQlJ,MAAM,KACjDyE,EAAM6G,QAAQnG,EAAM,KAAO,GAAKV,EAAM6G,QAAQnG,EAAM,KAAO,IAC3DV,EAAQA,EAAMpK,QAAQ8K,EAAM,GAAI,IAAI9K,QAAQ8K,EAAM,GAAI,IACtDyG,GAAW,IAERnH,EAAM6G,QAAQiI,IAAkB,IACvCvG,GAAY,EACZnM,EAASoI,EACTC,EAASqK,GAGb9O,EAAQA,EAAMpK,QAAQ,IAAK,IACbA,QAAQ6O,EAAQ,IAChB7O,QAAQ8U,EAAwB,KAChCnP,MAAMa,EAAO,KAAKxG,QAAQ8U,EAAwB,MAAMlP,KAAK,IAC7D5F,QAAQ+U,EAAa,IACrB/U,QAAQwG,EAAO,KAAM,KAEnC4D,EAAQ6N,WAAW7N,GAEf8N,MAAM9N,GACNA,EAAQ,KACDmH,IACPnH,IAAU,GAGVA,GAASuI,IACTvI,GAAS,KAGNA,EACX,CACH,CAtiBD,GAqyBI,WACIpJ,EAAQmY,WAAa/Y,EAErBY,EAAQoY,UAAY,SAASC,GACzB,GAAKnB,MAAMlX,EAAQmY,aAAgBE,EAE5B,CACH,IACIxH,EADAyH,EAAMrP,SAASsP,cAAc,OAWjC,OARAD,EAAIjS,MAAMmS,QAAU,oEACpBF,EAAIG,UAAY,SAChBxP,SAASyP,KAAKC,YAAYL,GAE1BtY,EAAQmY,WAAatH,EAASyH,EAAIM,YAAcN,EAAIO,YAEpD5P,SAASyP,KAAKI,YAAYR,GAEnBzH,CACX,CAdI,OAAO7Q,EAAQmY,UAevB,EAEAnY,EAAQ+Y,MAAQ,SAASnT,GACrB,OAAO1G,EAAE0G,GAASoT,QAAQ,UAAUpX,OAAS,CACjD,EAEA,IAAIqX,EAAQhQ,SAASsP,cAAc,SAGnC,IACIU,EAAMR,UAAY,qBAElBzY,EAAQkZ,gBAAiB,CAC7B,CAAE,MAAO/U,GACLnE,EAAQkZ,gBAAiB,CAC7B,CAEAlZ,EAAQmZ,MAAQ,iBAAkBha,EAElC,IAAIia,EAAWnQ,SAAS0K,gBAAgBtN,MACpCgT,EAAcrZ,EAAQqZ,aAAc,EACpCC,EAAatZ,EAAQsZ,YAAa,EAClCC,EAAe,gBAAiBpa,EAAS4I,YAAYrF,UAAY,GAErE1C,EAAQwZ,QAAW,oBAAqBra,GAAU,QAAS,IAAIA,EAAOsa,iBAAsB,mBAAoBL,GAAY,kBAAmBA,EAC/IpZ,EAAQ0Z,WAAc,aAAcN,GAAc,mBAAoBA,GAAc,eAAgBA,EAEpG3Z,EAAK,CAAE,MAAO,SAAU,IAAK,OAAQ,WACjC,IAAIka,EAAS7X,KAAK+I,WACd+O,SAAwBX,EAAM5S,MAAMsT,EAAS,gBAAkBrZ,EAEnE,GAAIsZ,UAAyBX,EAAM5S,MAAMsT,EAAS,eAAiBrZ,EAAQ,CACvE,IAAIuZ,EAAYF,EAAO/G,cAavB,OAXA0G,EAAa,CACT/S,IAAmB,MAAbsT,EAAqB,IAAMA,EAAY,IAAM,GACnDF,OAAQA,EACRG,MAAsB,MAAdD,GAAmC,WAAdA,EAA0BA,EAAY,IAGnED,KACAP,EAAcC,GACFQ,MAAQT,EAAYS,MAAQT,EAAYS,MAAQ,gBAAkB,kBAG3E,CACX,CACJ,IAEAb,EAAQ,KAERjZ,EAAQsZ,WAAaA,EACrBtZ,EAAQqZ,YAAcA,EAEtBrZ,EAAQ+Z,iBAAmB5a,EAAO4a,mBAAqB3a,EAAc,EAAID,EAAO4a,iBAEhF,IACI/Z,EAAQga,YAAc7a,EAAO2G,YAAc3G,EAAO8a,OAAS9a,EAAO8a,OAAOC,WAAa/a,EAAOgb,WAC7Fna,EAAQoa,aAAejb,EAAO6G,aAAe7G,EAAO8a,OAAS9a,EAAO8a,OAAOI,YAAclb,EAAOmb,WACpG,CAAE,MAAOnW,GAELnE,EAAQga,YAAc7a,EAAO8a,OAAOC,WACpCla,EAAQoa,aAAejb,EAAO8a,OAAOI,WACzC,CAEAra,EAAQua,SAAW,SAASC,GACxB,IAAgBC,EAAZC,GAAK,EAAqBzQ,EAAQ,GAClC0Q,GAAmB,iBAAiBjU,KAAK8T,GACzCI,EAAW,CACPC,GAAI,gDACJC,KAAM,+BACNC,QAAS,qEACTC,OAAQ,2CACRC,KAAM,kCACNC,MAAO,2CACPC,MAAO,gCACPC,WAAY,oDACZC,SAAU,kDACVC,QAAS,gCACTC,MAAO,2CACPC,SAAU,gDACVC,KAAM,8CAEVC,EAAQ,CACJC,IAAK,sBACLZ,QAAS,kBACTK,WAAY,wBACZE,QAAS,UACTT,GAAI,KACJe,KAAM,uBACNV,MAAO,SAEXW,EAAgB,CACZC,OAAQ,uBAEZC,EAAa,CACTC,MAAO,eACPC,QAAS,eACTC,QAAS,kBACTC,aAAc,qBACdC,GAAI,uBACJC,OAAQ,gBACRC,OAAQ,WAGhB,IAAK,IAAInU,KAASyS,EACd,GAAIA,EAASrS,eAAeJ,KACxB8B,EAAQuQ,EAAGvQ,MAAM2Q,EAASzS,KACf,CACP,GAAa,WAATA,GAAsB,YAAaoU,UAAa,OAAO,GAE3D7B,EAAK,CAAC,GACH8B,OAASrU,EACZuS,EAAGoB,OAAS5T,EAAOC,EAAO0T,GAAe,GACzCnB,EAAG+B,QAAUvU,EAAOsS,EAAIuB,EAAY,WACpCrB,EAAG/b,KAAOuJ,EAAOC,EAAOuT,GACxBhB,EAAGA,EAAG/b,OAAQ,EACd+b,EAAGgC,aAAezS,EAAM,GACxByQ,EAAGD,cAAgBxQ,EAAM,IAAM,KAAKjL,QAAQ,IAAK,KACjDyb,EAAeC,EAAGD,aAAazb,QAAQ,IAAK,IAAI+W,OAAO,EAAG,GAC1D2E,EAAGiC,YAAcjC,EAAGgC,aAAejC,EAAgB,IAAI9a,MAAM,GAAK8a,EAAa7Y,OAAS,EAAI6Y,EAAa7Y,OAAS,IAAIgD,KAAK,KAC3H8V,EAAGkC,eAAiBzd,EAAO0d,WAAalc,UAAoBxB,EAAOyd,UAAYjc,EAC/E+Z,EAAGoC,QAAU3d,EAAOod,UAAUQ,YAAc,mBAAqBrW,KAAKvH,EAAO6d,SAASC,WAAavC,EAAGkC,QAElGlC,EAAGK,UAAY/a,EAAQ+Z,iBAAmB,KAAOW,EAAGiC,YAAc,KAAOhC,KAAqB3a,EAAQga,YAAc,KAAOha,EAAQoa,aAAe,OAClJM,EAAGoB,OAAS3T,GAGhB,KACJ,CAGR,OAAOuS,CACX,EAEA,IA+HU+B,EAEFS,EACAC,EACAT,EAnIJU,EAAWpd,EAAQod,SAAWpd,EAAQua,SAASgC,UAAUc,WAE7Drd,EAAQsd,mBAAqBF,EAASvC,GAAKZ,OAAOtT,MAAQ,IAAM,EAEhE3G,EAAQud,oBAAqB,GAEzBH,EAASzB,KAAQyB,EAASrC,SAAWqC,EAASV,aAAe,GAAMU,EAASvC,MAC5E7a,EAAQud,mBAAqBH,GAGjCpd,EAAQwd,aAAe,WAGnB,GAAIxd,EAAQmZ,MAAO,CAGf,GAAIiE,EAASzB,IACT,OAAO,EAGX,GAAIyB,EAASrC,QAET,OAAK/a,EAAQyc,QAAQJ,UAKjBrc,EAAQyc,QAAQ1d,QAAU,OAKrBG,EAAE,uBAAuBue,KAAK,YAAc,IAAIxT,MAAM,oBAEvE,CAEA,OAAO,CACX,EAEAjK,EAAQ0d,qBAAuB1d,EAAQmZ,SAAWnZ,EAAQod,SAASzB,KAAO3b,EAAQod,SAASrC,SAE3F/a,EAAQ2d,cAAgB,SAASnD,GAC7B,IAAIiC,GAAU,EACVxS,EAAQ,GAER8R,EAAa,CACT6B,KAAM,uBACNtB,OAAQ,+BACRuB,OAAQ,yBACRC,MAAO,sCACPC,KAAM,mCACNC,QAAS,kCAGjB,IAAK,IAAI7V,KAAS4T,EACd,GAAIA,EAAWxT,eAAeJ,KAC1B8B,EAAQuQ,EAAGvQ,MAAM8R,EAAW5T,KACjB,EACPsU,EAAU,CAAC,GACHtU,IAAS,EACjBsU,EAAQxS,EAAM,GAAG2I,cAAcjO,MAAM,KAAK,GAAGA,MAAM,KAAK,KAAM,EAC9D8X,EAAQ1d,QAAUwU,SAAStK,SAASgV,cAAgBhU,EAAM,GAAI,IAE1DwS,EAAQJ,QACY7B,EAAGvQ,MAAM,yBAGzBwS,EAAQyB,cAAe,GAI/B,KACJ,CAIR,OAAOzB,CACX,EAEAzc,EAAQyc,QAAUzc,EAAQ2d,cAAcpB,UAAUc,YAE7CD,GAAYpd,EAAQmZ,OAASnZ,EAAQyc,QAAQoB,SAC9CT,EAAWpd,EAAQod,SAAW,CAC1BzB,KAAK,EACLG,OAAQ,SACRU,OAAQ,SAIhBxc,EAAQme,sBAAwB,WAC5B,IAAIC,EAAW,CACX9c,OAAM2H,SAASoV,uBAAwBpV,SAASoV,sBAAsB,QACtEC,MAAKrV,SAASoV,uBAAwBpV,SAASoV,sBAAsB,OACrEE,QAAOtV,SAASoV,uBAAwBpV,SAASoV,sBAAsB,UAY3E,OATIre,EAAQyc,QAAQJ,SAEhB+B,EAASG,OAAQ,EACbve,EAAQyc,QAAQ1d,SAAW,KAC3Bqf,EAAS9c,MAAO,EAChB8c,EAASE,KAAM,IAIhBF,CACX,EAEApe,EAAQwe,UAAYxe,EAAQme,wBAE5Bne,EAAQye,UAAY,WAChB,IACI,IAAIhC,EAAUzc,EAAQyc,QAClBiC,EAAsB,EACtBC,EAAQ1V,SAAS0K,gBAMrB,OAJI8I,EAAQsB,MAA2B,IAAnBtB,EAAQ1d,SAAiB4f,EAAMC,aAAeD,EAAME,eAAiB7e,EAAQmZ,QAC7FuF,EAAsB1e,EAAQoY,aAG3BpY,EAAQmZ,MAASwF,EAAMG,YAAc3f,EAAOgb,WAC5CsC,EAAQsB,MAAQtB,EAAQ1d,SAAW,KAAQggB,KAAO5f,GAAQ8J,SAAS0K,gBAAgBiF,YAAc8F,IAAwBK,KAAO5f,GAAQgb,WAAc,CACjK,CAAE,MAAOhW,GACL,OAAO,CACX,CACJ,EAEUsY,EAgCPzc,EAAQyc,QA9BHS,EAAW,GACXC,EAAaje,EAAE+J,SAAS0K,iBACxB+I,EAAenJ,SAASkJ,EAAQ1d,QAAS,IAEzC0d,EAAQsB,KACRb,EAAW,KACJT,EAAQuB,QACfd,EAAW,KACJT,EAAQoB,OACfX,EAAW,SACJT,EAAQH,OACfY,EAAW,SACJT,EAAQqB,MACfZ,EAAW,QACJT,EAAQmB,OACfV,EAAW,QAGXA,IACAA,EAAW,KAAOA,EAAW,MAAQA,EAAWR,GAEhD1c,EAAQod,WACRF,GAAY,aAGXld,EAAQ0Z,aACTwD,GAAY,iBAGhBC,EAAW6B,SAAS9B,GAGxBld,EAAQif,aAAehW,SAAS0K,gBAAgBuL,iBAEhD,IAAIC,EAAQlW,SAASsP,cAAc,SAEnCvY,EAAQof,YAAc,gBAAiBD,EACvCnf,EAAQqf,oBAAsB,qBAAsBF,EAEpDnf,EAAQmf,MAAQ,WAQZ,IAPA,IAKI1T,EALA6T,EAAQ,CAAC,SAAU,OAAQ,OAAQ,QAAS,OAAQ,WAAY,kBAChE1d,EAAS0d,EAAM1d,OACfwH,EAAQ,OACRyH,EAAS,CAAC,EACVpN,EAAM,EAGJA,EAAM7B,EAAQ6B,IAChBgI,EAAO6T,EAAM7b,GACb0b,EAAMI,aAAa,OAAQ9T,GAC3B0T,EAAM/V,MAAQA,EAEdyH,EAAOpF,EAAKzM,QAAQ,IAAK,KAAsB,SAAfmgB,EAAM1T,MAAmB0T,EAAM/V,QAAUA,EAG7E,OAAOyH,CACV,CAjBe,GAmBhBsO,EAAM9Y,MAAMmS,QAAU,cAEtBxY,EAAQwf,WAAaL,EAAM9Y,MAAMmZ,SAEjCL,EAAQ,KAERnf,EAAQyf,WAAa,WAUjB,IAPA,IAEIC,EAAS,CAAC,CACVrM,MAAO,EACPsM,MAAO,MAGFhe,EAAI,EAAGA,EAPA,IAOeA,IAC3B+d,EAAO3b,KAAK,CACRsP,MAAO1R,EACPge,MAAO,MAQf,OAJAD,EAAOE,MAAK,SAAS3U,EAAG4U,GACpB,OAAO5U,EAAE0U,MAAQE,EAAEF,MAAQ,EAAK1U,EAAE0U,MAAQE,EAAEF,OAAS,EAAI,CAC7D,IAE2B,IAApBD,EAAO,GAAGrM,KACpB,CAtBoB,GAwBrBrT,EAAQ8f,gBAAkBvG,EAAawG,uBAAyBxG,EAAayG,oBACnDzG,EAAa0G,mBAAqB1G,EAAa2G,kBAC/C3G,EAAauG,iBAAmBvG,EAAahE,SACrE,SAAU4K,GAIN,IAHA,IAAIC,EAAWnX,SAASoX,kBAAqBve,KAAKwe,YAAcrX,UAAWoX,iBAAkBF,IAAc,GAAKjhB,EAAEihB,GAC9Gxe,EAAIye,EAASxe,OAEVD,KACH,GAAIye,EAASze,IAAMG,KACf,OAAO,EAIf,OAAO,CACX,EAEF9B,EAAQugB,WAAa,eAAgBphB,EAErCa,EAAQwgB,UAAYrhB,EAAOshB,SAAWthB,EAAOshB,QAAQD,UAErDxgB,EAAQ0gB,WAAa,iBAAkBvhB,EAEvCa,EAAQ2gB,eAAiB,oBAAqBxhB,EAAO8J,SAErD,IAAIoT,EAASrc,EAAQyc,QAAQJ,OACzBuE,EAAe5gB,EAAQyc,QAAQoE,MAC/B7C,EAAUhe,EAAQyc,QAAQuB,QAC1BH,EAAS7d,EAAQyc,QAAQoB,OAC7B7d,EAAQ8gB,YAAczE,GAAUld,EAAO4hB,eACvC/gB,EAAQghB,UAAY3E,IAAWuE,IAAiB5C,IAAYH,GAAU1e,EAAO8hB,aAC7EjhB,EAAQkhB,oBAAsB9D,IAAapd,EAAQmZ,OAASnZ,EAAQ8gB,YAAc9gB,EAAQghB,SAC7F,CAnZD,GAmdA,IAAIG,EAAU,CAAC,EAyCf,SAASC,EAAwB7f,EAAS8f,EAAUjR,EAASkR,GA6BzD,cA5BW/f,IAAYjB,IAIfyC,EAAWse,KACXC,EAAWD,EACXA,EAAW,IACXjR,GAAU,GAGVrN,EAAWqN,KACXkR,EAAWlR,EACXA,GAAU,UAGHiR,IAAa3gB,IACpB0P,EAAUiR,EACVA,EAAW,KAGf9f,EAAU,CACN4f,QAAS5f,EACT8f,SAAUA,EACVjR,QAASA,EACTkR,SAAUA,IAIX9hB,EAAO,CAEV2hB,QAAS,CAAC,EACVE,SAAU,IACVjR,SAAS,EACT5N,KAAM5C,EACN2hB,SAAU3hB,EACV4hB,MAAM,GACPjgB,EAAS,CAAEkgB,iBAAkBlgB,EAAQ+f,SAAUA,SAAU1hB,GAEhE,CAEA,SAAS8hB,GAAQ9b,EAASrE,EAAS8f,EAAUjR,EAASkR,GAKlD,IAJA,IAEIK,EAFAle,EAAM,EACN7B,EAASgE,EAAQhE,OAGd6B,EAAM7B,EAAQ6B,KACjBke,EAAWziB,EAAE0G,EAAQnC,KACZme,OAAM,WACXT,EAAQU,QAAQF,EAAUP,EAAwB7f,EAAS8f,EAAUjR,EAASkR,GAClF,IAGJ,OAAO1b,CACX,CA7FA1G,EAAEM,OAAO2hB,EAAS,CACdW,SAAS,EACTC,QAAS,SAASnc,GACd9D,KAAK8D,QAAU1G,EAAE0G,EACrB,EAEAic,QAAS,SAASjc,EAASrE,GAClBqE,EAAQU,GAAG,aACZV,EAAQW,IAAI,CAAEC,QAASZ,EAAQ6B,KAAK,eAAiB,UAAWlB,IAAI,WAGpEhF,EAAQigB,MACR5b,EAAQ6B,KAAK,aAAc7B,EAAQW,IAAI,YAAYib,OAGnDjgB,EAAQiB,MACRjB,EAAQiB,OAGRjB,EAAQkgB,kBACRlgB,EAAQkgB,iBAAiB7b,GAG7BA,EAAQoc,SACZ,EAEAC,QAAS,WACLngB,KAAKggB,SAAU,EACfhgB,KAAK+f,QAAU/f,KAAKogB,WACxB,EAEAC,OAAQ,WACJrgB,KAAKggB,SAAU,EACfhgB,KAAK+f,QAAU/f,KAAKsgB,eACxB,IAGJjB,EAAQe,YAAcf,EAAQU,QAsExB,iBAAkB3iB,EAAEkD,IACtB5C,EAAON,EAAEkD,GAAI,CACTigB,UAAW,SAASC,EAAYC,GAC5B,OAAOzgB,KAAK0gB,KAAKF,EAAYC,EACjC,EAEAE,aAAc,SAASlhB,EAAS8f,EAAUjR,EAASkR,GAC/C,OAAOI,GAAQ5f,KAAMP,EAAS8f,EAAUjR,EAASkR,EACrD,EAEAoB,cAAe,SAASC,EAASphB,GAC7B,OAAOjC,EAAMsjB,YAAY9gB,KAAM6gB,EAASphB,GAAS,EACrD,EAEAshB,iBAAkB,SAASF,EAASphB,GAChC,OAAOjC,EAAMsjB,YAAY9gB,KAAM6gB,EAASphB,GAAS,EACrD,EACAuhB,iBAAkB,SAASH,EAASphB,EAASwhB,GACzC,OAAOzjB,EAAMsjB,YAAY9gB,KAAM6gB,EAASphB,EAASwhB,EACrD,IAIR,IAAIC,GAAY,KACZC,GAAW,KACXC,GAAc,KACdC,GAAa,KACbC,GAAW,KAsBXC,GAAc,SAASlf,GACvB,OAAOA,EAAE1C,MACb,EAEIzB,EAAQmZ,QAERkK,GAAc,SAASlf,GACnB,IAAImf,EAAU,kBAAmBnf,EAAIA,EAAEof,cAAcC,eAAiB,mBAAoBrf,EAAIA,EAAEqf,eAAiB,KAEjH,OAAOF,EAAUra,SAASwa,iBAAiBH,EAAQ,GAAGI,QAASJ,EAAQ,GAAGK,SAAWxf,EAAE1C,MAC3F,EAEAhC,EAAK,CAAC,QAAS,YAAa,aAAc,UAAW,YAAa,YAAa,QAAQ,SAASsP,EAAG3F,GAC/FlK,EAAEkD,GAAGgH,GAAS,SAASwa,GACnB,OAAO9hB,KAAK+hB,GAAGza,EAAOwa,EAC1B,CACJ,KAGA5jB,EAAQmZ,MACHnZ,EAAQod,UAQTpd,EAAQ8jB,UAAY,aACpB9jB,EAAQ+jB,QAAU,WAClB/jB,EAAQgkB,UAAY,YACpBhkB,EAAQikB,YAAc,cACtBjkB,EAAQkkB,MAAQ,WAChBlkB,EAAQmkB,OAAS,sBAZjBnkB,EAAQ8jB,UAAY,uBACpB9jB,EAAQ+jB,QAAU,mBAClB/jB,EAAQgkB,UAAY,sBACpBhkB,EAAQikB,YAAc,yBACtBjkB,EAAQkkB,MAAQ,QAChBlkB,EAAQmkB,OAAS,UASdnkB,EAAQghB,UACfhhB,EAAQgkB,UAAY,cACpBhkB,EAAQ8jB,UAAY,cACpB9jB,EAAQ+jB,QAAU,YAClB/jB,EAAQikB,YAAc,gBACtBjkB,EAAQkkB,MAAQ,YAChBlkB,EAAQmkB,OAAS,4BACVnkB,EAAQ8gB,YACf9gB,EAAQgkB,UAAY,gBACpBhkB,EAAQ8jB,UAAY,gBACpB9jB,EAAQ+jB,QAAU,cAClB/jB,EAAQikB,YAAc,kBACtBjkB,EAAQkkB,MAAQ,cAChBlkB,EAAQmkB,OAAS,6BAEjBnkB,EAAQgkB,UAAY,YACpBhkB,EAAQ8jB,UAAY,YACpB9jB,EAAQ+jB,QAAU,UAClB/jB,EAAQikB,YAAc,aACtBjkB,EAAQkkB,MAAQ,QAChBlkB,EAAQmkB,OAAS,UAGrB,IA4BAC,GAAa,mBAEb5kB,EAAOF,EAAO,CACV+kB,QAAS,GACTC,2BAA4B,GAC5BC,GAAIjlB,EAAMilB,IAAM,CAAC,EACjBC,GAAIllB,EAAMklB,IA9Pd,SAAY5e,GACR,OAAO,IAAItG,EAAM6hB,QAAQY,QAAQnc,EACrC,EA6PIub,QAAS7hB,EAAM6hB,SAAWA,EAC1BsD,OAAQnlB,EAAMmlB,QAAU,CAAE,EAC1Bhd,KAAMnI,EAAMmI,MAAQ,CAAC,EACrBid,QAASplB,EAAMolB,SAAW,CAAC,EAC3BC,QAASrlB,EAAMqlB,SAAW,CAAC,EAC3BC,YAAa,CAAEC,SAAU,CAAC,GAC1BC,KAAM,CACFC,OAAQ,GACRC,OAAQ,GACRC,UAAW,EACXC,IAAK,EACLC,MAAO,GACPC,IAAK,GACLC,KAAM,GACNC,GAAI,GACJC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,KAAM,GACNC,SAAU,GACVC,OAAQ,GACRC,SAAU,GACVC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,YAAa,IACbC,aAAc,IACdC,WAAY,KAEhBnmB,QAASV,EAAMU,SAAWA,EAC1B0hB,QAASpiB,EAAMoiB,SAAWA,GAC1B0E,GAAI,GACJ3I,KAAM,SAASrU,GACX,MAAO,QAAU9J,EAAM8mB,GAAKhd,CAChC,EACAid,WA9+BJ,SAAoBzgB,GAChB,IAAI0gB,EAAS1gB,EAAQW,IAAIjH,EAAMU,QAAQqZ,YAAY9S,IAAM,eAAiBX,EAAQW,IAAI,cAClFggB,EAASD,GAASA,EAAOrc,MAAM9J,IAAwC,CAAE,EAAG,EAAG,EAAG,EAAG,GACrFqmB,EAAO3mB,EAAKqT,KAAMqT,EAAO,KAAOA,EAAO,IAAM,IAEjD,MAAO,CACHE,MAAQF,EAAO,GAAMC,EACrBE,OAASH,EAAO,GAAMC,EACtBG,QAAUJ,EAAO,GAAMC,EAE/B,EAq+BII,KAn+BJ,SAAchhB,EAASC,GACnB,IAAIghB,EACA/gB,EAAaxG,EAAMyG,YACnBC,EAAc1G,EAAM2G,aACpBE,EAASP,EAAQO,SACjB2gB,EAAmBhhB,EAAW3G,GAIlC,GAFAgH,EAAO4gB,YAAY,4BAEd5gB,EAAO6gB,SAAS,yBAgCjBrhB,EAAWC,EAASC,OAhCuB,CAC3C,IAAIc,EAAQf,EAAQ,GAAGS,MAAMM,MACzBC,EAAShB,EAAQ,GAAGS,MAAMO,OAC1BqgB,EAAehnB,EAAcyG,KAAKC,GAClCugB,EAAgBjnB,EAAcyG,KAAKE,GACnCugB,EAAavhB,EAAQohB,SAAS,cAAgBphB,EAAQU,GAAG,qCAE7DugB,EAAaI,GAAgBC,GAExBD,KAAkBphB,GAAaA,GAAYc,GAAUwgB,KAAexgB,EAAQd,EAAWC,EAAWF,GAAW,EAAIE,EAAWF,MAC5HshB,KAAmBrhB,GAAaA,GAAYe,IAAYhB,EAAQU,GAAG,wCAAwCM,EAASZ,EAAYJ,IAErIA,EAAQghB,KACK1nB,EAAE,UACD8f,SAAS,yBACTvB,KAAK,OAAQ,UACblX,IAAI,CACDI,MAAOA,EACPC,OAAQA,KAEzBT,EAASP,EAAQO,SAEb0gB,GACAjhB,EAAQW,IAAI,CACRI,MAAO,OACPC,OAAQ,OACRC,UAAW,aACXC,aAAc,aACdC,gBAAiB,cAG7B,CAUA,OANI+f,EAAmBhhB,EAAWK,KAC9BA,EAAO6Y,SAAS,4BAEhBrZ,EAAWC,EAASC,IAGjBM,CACX,EAi7BIrD,WAAYA,EACZ+F,kBAAmBA,EACnBue,aA3yBJ,SAAsBxhB,GAClB,GAAiD,UAA7CA,EAAQyhB,QAAQ/nB,EAAM8mB,GAAK,cAC3B,OAAO,EAGX,GAAIxgB,GAAWA,EAAQ0hB,WAA2C,iBAAvB1hB,EAAiB,WAAkBA,EAAQ0hB,UAAUrX,QAAQ,sBAAwB,EAC5H,OAAO,EAGX,IAAIsX,EAAW1e,EAAkBjD,EAAS,CAAC,aAAa2hB,SACxD,OAAOA,EAAStX,QAAQ,SAAW,GAAKsX,EAAStX,QAAQ,WAAa,CAC1E,EAiyBIuX,WA/xBJ,SAASA,EAAW5hB,EAASwD,GACzB,IAGIqe,EAAI1O,EAHJuD,EAAStc,EAAQyc,QAAQH,OACzBoL,EAAS1nB,EAAQyc,QAAQuB,QACzB2J,EAAiB3nB,EAAQyc,QAAQ1d,QAGrC,GAAI6G,aAAmB1G,GAAKkK,IAAUhK,EAClCwG,EAAQnG,MAAK,SAASkC,EAAGwC,GACrBqjB,EAAWrjB,EAAGiF,EAClB,SAOJ,GAHIqe,EAAK7hB,aAAmB1G,EAAI0G,EAAQ,GAAKA,EAG7C,CAQA,GAJAmT,EAAQ/Y,EAAQ+Y,MAAMnT,GAIlBwD,IAAUhK,EASV,OAAI2Z,GAASuD,IAAWqL,EAAiB,IAAM3nB,EAAQyc,QAAQoB,QACpD4J,EAAG5O,YAAc4O,EAAG3I,YAAc2I,EAAGD,WAErC1nB,KAAK0R,IAAIiW,EAAGD,YAXnBzO,GAASuD,IAAWqL,EAAiB,IAAM3nB,EAAQyc,QAAQoB,QAC3D4J,EAAGD,WAAaC,EAAG5O,YAAc4O,EAAG3I,YAAc1V,EAElDqe,EAAGD,WADIzO,IAAU2O,GAAUpL,IAAWlT,EAAQ,GAC7BA,EAEDA,CAZxB,CAqBJ,EAyvBIG,KAjWJ,SAAcqe,GACV,IAAgBxc,EAAZyF,EAAS,EACb,IAAKzF,KAAOwc,EACJA,EAAIrf,eAAe6C,IAAe,UAAPA,GAC3ByF,IAIR,OAAOA,CACX,EAyVIrI,YAAaA,EACbqf,UAv1BJ,SAAmBpf,GACf,OAAOA,EAAIzJ,QAAQ,iBAAiB,SAAS6P,GACzC,OAAOA,EAAEhK,OAAO,GAAK,IAAMgK,EAAEhK,OAAO,GAAG+N,aAC3C,GACJ,EAo1BIkV,UAAWxoB,EAAMwoB,WAzVrB,SAAmBliB,EAAS6F,EAAMsc,GACzBtc,IACDA,EAAO,UAGX,IAAIgM,EAAS7R,EAAQ6F,KAEjBoF,EAAS,CACTkO,IAAKtH,EAAOsH,IACZ2H,MAAOjP,EAAOiP,MACdC,OAAQlP,EAAOkP,OACfF,KAAMhP,EAAOgP,MAIjB,GAAIzmB,EAAQyc,QAAQsB,OAAS/d,EAAQghB,UAAYhhB,EAAQ8gB,cAAgBiH,EAAY,CACjF,IAAIjX,EAAO9Q,EAAQ+Y,MAAMnT,GAAW,GAAK,EAEzCiL,EAAOkO,KAAQ5f,EAAO6oB,YAAe/e,SAAS0K,gBAAyB,UACvE9C,EAAO4V,MAAStnB,EAAO8oB,YAAenX,EAAO7H,SAAS0K,gBAAgB6T,UAC1E,CAEA,OAAO3W,CACX,EAmUIqX,aAAc5oB,EAAM4oB,cAtTxB,SAAsB/I,GAClB,IAAIgC,EAAU,CAAC,EAMf,OAJA1hB,EAAuB,iBAAV0f,EAAqBA,EAAMxa,MAAM,KAAOwa,GAAQ,SAAS1b,GAClE0d,EAAQ1d,GAAO3B,IACnB,IAEOqf,CACX,EA+SIyB,YAAatjB,EAAMsjB,aAxMvB,SAAqBhd,EAAS+c,EAASphB,EAAS4mB,GAS5C,OARIxF,IACAA,EAAUA,EAAQhe,MAAM,KAExBlF,EAAKkjB,GAAS,SAASlf,EAAK2F,GACxBxD,EAAQgd,YAAYxZ,EAAO+e,EAC/B,KAGGviB,CACX,EA+LIwiB,WAAY9oB,EAAM8oB,YAnUL,CACb3B,KAAM,CAAErW,QAAS,SACjBsW,MAAO,CAAEtW,QAAS,QAClBiY,KAAM,CAAEjY,QAAS,MACjBkY,GAAI,CAAElY,QAAS,QACf2O,IAAK,CAAE3O,QAAS,UAChBuW,OAAQ,CAAEvW,QAAS,OACnB,GAAM,CAAEA,QAAS,OACjBmY,IAAK,CAAEnY,QAAS,OA4ThBjN,WAAYA,EACZlB,MAAOA,EACP5C,SAAUA,EACVsK,SAAUtK,EAASwK,QAAQxG,KAAKhE,GAChCqK,OAAQrK,EAASqK,OAAOrG,KAAKhE,GAC7BkN,UAAWxM,EAAKwM,UAAUlJ,KAAKtD,GAC/BsjB,YAAaA,GACbmF,WAzKJ,SAAoBpf,GAChB,OAAQ,GAAKA,GAAOpK,QAAQgkB,GAAW,SAAShkB,QAAQikB,GAAU,QAAQjkB,QAAQokB,GAAU,QAAQpkB,QAAQkkB,GAAa,UAAUlkB,QAAQmkB,GAAY,QAC3J,EAwKIsF,SAtKJ,SAAkBrf,GACd,IAAIO,EAEJ,IACIA,EAAWxK,EAAOupB,mBAAmBtf,EACzC,CAAE,MAAOuf,GAILhf,EAAWP,EAAMpK,QAAQ,kCAAkC,SAAS4pB,EAAGC,EAAIC,GACvE,OAAOjd,OAAOkd,aAAaxV,SAAS,MAAQsV,GAAMC,GAAK,IAC3D,GACJ,CAEA,OAAOnf,CACX,EAwJIqf,WAAY,SAASC,GACjB,OAAOA,IAAQ7E,GAAW1d,KAAKuiB,EACnC,EAEAC,KAAM,SAASC,EAAYC,EAAM5f,GAuB7B,cApBW4f,GAAQ9oB,IACfkJ,EAAY4f,EACZA,GAAO,GAGX5f,EAAYA,GAAa,KAPzB2f,EAAaA,GAAc,KASgB,MAAzBA,EAAWtkB,OAAO,KAChCskB,EAAa,IAAMA,GAGnBC,GAGAD,EAjHS,SAASE,EAAS7f,GACnC,IACI6J,EACA5P,EACA7B,EACAO,EAJA0O,EAASrH,GAAa,IAKtB4L,EAAQ,EAEZ,IAAK3R,EAAM,EAAG7B,EAASynB,EAAQznB,OAAQ6B,EAAM7B,EAAQ6B,IAElC,MADftB,EAASknB,EAAQ5lB,MAIC,KAFd4P,EAAQlR,EAAO8N,QAAQ,SAGL,GAAVoD,EACAlR,EAAS,IAAMA,GAEfiT,IACAjT,EAAS,IAAMA,EAAO4C,UAAU,EAAGsO,GAAS,UAAYlR,EAAO4C,UAAUsO,KAIjF+B,IACAvE,GAAU1O,GAAWsB,EAAM7B,EAAS,EAAK,UAAY,MAG7D,OAAO,IAAIjC,MAAMyV,GAAOxQ,KAAK,KAAOiM,CACxC,CAsFyByY,EADbH,GADAA,EAAaA,EAAWnqB,QAAQ,sBAAsB,kBAC9BA,QAAQ,sBAAsB,kBACf2F,MAAM,KAAM6E,GACnD2f,EAAaA,EAAWnqB,QAAQ,aAAc,MAE9CmqB,EAAa3f,EAAY2f,EAGtBA,CACX,EAEAI,OAAQ,SAASJ,EAAYC,GACzB,IAAIhe,EAAM+d,EAAaC,EACvB,OAAOroB,EAAYqK,GAAOrK,EAAYqK,IAAQ,IAAIjB,SAAS,IAAK,UAAY7K,EAAM4pB,KAAKC,EAAYC,GACvG,EAEAI,OAAQ,SAASL,GACb,OAAOnoB,EAAYmoB,GAAcnoB,EAAYmoB,IAAe,IAAIhf,SAAS,UAAW7K,EAAM4pB,KAAKC,GAAc,SACjH,EAEAM,SAAU,SAASN,GACf,MAAO,CACHO,IAAKpqB,EAAMiqB,OAAOJ,GAClBQ,IAAKrqB,EAAMkqB,OAAOL,GAE1B,EAEAS,KAAM,WACF,IAAajoB,EAAGkoB,EAAZC,EAAK,GAIT,IAFAA,GAFgC,SAEpBhqB,KAAKuK,MAAMvK,KAAK+pB,SAAW/pB,KAAKuK,MAAM0f,KAE7CpoB,EAAI,EAAGA,EAAI,GAAIA,IAChBkoB,EAAyB,GAAhBhqB,EAAKgqB,SAAgB,EAErB,GAALloB,GAAe,IAALA,GAAgB,IAALA,GAAgB,IAALA,IAChCmoB,GAAM,KAEVA,IAAY,IAALnoB,EAAU,EAAU,IAALA,EAAoB,EAATkoB,EAAa,EAAKA,GAAShf,SAAS,IAGzE,OAAOif,CACX,EAEAE,aAAc,SAASC,GACnB,OAAOA,EAAKjrB,QAAQ,SAAU,IAAMM,EAAMme,KAAK,QAAU,SAASxc,MAAM,GAAI,EAChF,EAEAipB,kBAAmB,SAASC,GACxB,IAAIC,EAAYD,EAAWxlB,MAAM,KAEjC,GAAIylB,EACA,IAAK,IAAIzoB,EAAI,EAAGA,EAAIyoB,EAAUxoB,OAAQD,IACd,QAAhByoB,EAAUzoB,KACVyoB,EAAUzoB,GAAKyoB,EAAUzoB,GAAG3C,QAAQ,8BAA+B,UAK/E,OAAOorB,EAAUxlB,KAAK,KAAK5F,QAAQ,SAAU,oBAAoBiC,MAAM,GAAI,EAC/E,EAEAopB,iBAAkB,SAASlmB,GACvB,MAAO,mCAAqCuC,KAAKvC,EAAE1C,OAAO6oB,QAC9D,EAEAC,mBAAoB,SAAS3G,GACzB,IAAK,IAAIjiB,EAAI,EAAG6oB,EAAMlrB,EAAM+kB,QAAQziB,OAAQD,EAAI6oB,EAAK7oB,IACjDiiB,EAAStkB,EAAM+kB,QAAQ1iB,IAG3BrC,EAAMglB,2BAA2BvgB,KAAK6f,EAC1C,EAEA6G,aAAc,SAASC,EAASjf,GAC5B,IAAIkf,EAAUxrB,EAAOwrB,SAEhBrrB,EAAMsrB,kBAAkC,IAAb,GAA4BD,EAAQE,KAChEF,EAAQlf,GAAQ,OAAOif,EAE/B,IAGJ,IAAII,GAAS3nB,EAAW3D,OAAQ,CAC5BgD,KAAM,SAASoD,EAASrE,GACpB,IAAIe,EAAOR,KAgzEfipB,GAAeC,gBAAgBtsB,GA5yE3B4D,EAAKsD,QAAUtG,EAAMyC,OAAO6D,GAASjC,QAAQrB,GAE7CA,EAAK2oB,QAAQ,OAAQ1pB,GAErB4B,EAAWf,GAAGI,KAAK8B,KAAKhC,GAExB,IACI4oB,EADAC,EAAa5pB,EAAUA,EAAQ4pB,WAAa,KAG5C5pB,IACA2pB,GAAS5oB,EAAK8oB,gBAAkB,CAAC,IAAI7pB,GAAW,CAAC,GAAG8pB,gBAGpDF,IAEA5pB,EAAU/B,EAAO,CAAC,EAAG+B,EAAS,CAAE4pB,WAAY,CAAC,KAGjD5pB,EAAUe,EAAKf,QAAU/B,GAAO,EAAM,CAAC,EAAG8C,EAAKf,QAASe,EAAKgpB,SAAUJ,GAAS,CAAC,EAAG3pB,GAEhF4pB,IACA5pB,EAAQ4pB,WAAaA,GAGpB7oB,EAAKsD,QAAQ6X,KAAKne,EAAMme,KAAK,UAC9Bnb,EAAKsD,QAAQ6X,KAAKne,EAAMme,KAAK,SAAUlc,EAAQ5C,MAAQ,IAAIiU,eAG/DtQ,EAAKsD,QAAQ6B,KAAK,QAAUlG,EAAQoY,OAASpY,EAAQ5C,KAAM2D,GAE3DA,EAAKe,KAAKf,EAAK8B,OAAQ7C,EAC3B,EAEA6C,OAAQ,GAER7C,QAAS,CACLoY,OAAQ,IAGZ4R,kBAAmB,WACf,QAASzpB,KAAK8D,QAAQ,GAAG4lB,kBAC7B,EAEAC,UAAW,SAAShqB,GAChBA,EAASA,GAAUK,KAAKoE,QAExB,IAAIN,EAAU9D,KAAK8D,QACf8lB,EAAW,WACXC,EAAWlqB,EAAOgc,KAAKiO,IAAa9lB,EAAQ6X,KAAKiO,GAErD9lB,EAAQgmB,WAAWF,GAEnBjqB,EAAOgc,KAAKiO,EAAWxU,MAAMyU,GAAuB,EAAXA,EAC7C,EAEAE,WAAY,SAAStqB,GACjBO,KAAKgqB,iBAAiBvqB,GACtBO,KAAKiqB,WAAWxqB,GAChBrC,EAAEM,OAAOsC,KAAKP,QAASA,GACvBO,KAAKkqB,kBACT,EAEAD,WAAY,SAASxqB,GAMjB,IALA,IAGI4C,EAHA7B,EAAOR,KACP2B,EAAM,EACN7B,EAASU,EAAK8B,OAAOxC,OAGlB6B,EAAM7B,EAAQ6B,IACjBU,EAAI7B,EAAK8B,OAAOX,GACZnB,EAAKf,QAAQ4C,IAAM5C,EAAQ4C,KAC3B7B,EAAKwB,OAAOK,EAAG7B,EAAKf,QAAQ4C,IACxB7B,EAAKc,SAAWd,EAAKc,QAAQe,WACtB7B,EAAKc,QAAQe,IAKhC7B,EAAKe,KAAKf,EAAK8B,OAAQ7C,EAC3B,EAEA4iB,OAAQ,SAAS8H,GACb,IAAI1iB,EAAOzH,KAAKoqB,UACZC,EAAcrqB,KAAKsqB,OAEnBH,IAAU1iB,EAAK5C,MAAQ,GAAK4C,EAAK3C,OAAS,MAAQulB,GAAe5iB,EAAK5C,QAAUwlB,EAAYxlB,OAAS4C,EAAK3C,SAAWulB,EAAYvlB,WACjI9E,KAAKsqB,MAAQ7iB,EACbzH,KAAKuqB,QAAQ9iB,EAAM0iB,GACnBnqB,KAAKoC,QAAQ,SAAUqF,GAE/B,EAEA2iB,QAAS,WACL,OAAO5sB,EAAMgtB,WAAWxqB,KAAK8D,QACjC,EAEA2D,KAAM,SAASA,GACX,IAAKA,EACD,OAAOzH,KAAKoqB,UAEZpqB,KAAKyqB,QAAQhjB,EAErB,EAEAgjB,QAASrtB,EAAEU,KACXysB,QAASntB,EAAEU,KAEX4sB,QAAS,WACL,IAAIlqB,EAAOR,KAEXQ,EAAKsD,QAAQ6mB,WAAW,QAAUnqB,EAAKf,QAAQoY,OAASrX,EAAKf,QAAQ5C,MACrE2D,EAAKsD,QAAQ6mB,WAAW,WACxBnqB,EAAKwB,QACT,EACA4oB,SAAU,WACN5qB,KAAK0qB,SACT,EACAvB,QAAS,WAAY,EAErB0B,mBAAoB,SAAS/I,GACzB9hB,KAAK8qB,aAAc,EAEnBhJ,EAAStf,KAAKxC,MAEdA,KAAK8qB,aAAc,CACvB,EAEAZ,iBAAkB,SAASpmB,GACvB,IAIIjE,EAAGkrB,EAAMC,EAAWC,EAJpBC,EAAelrB,KAAKmrB,UAAU1rB,QAC9BA,EAAUO,KAAKP,QACfkmB,EAAK7hB,GAAW9D,KAAKoE,SAAWpE,KAAK8D,QACrC+c,EAAU,GAGd,GAAKrjB,EAAM4tB,cAAcC,mBAAmBH,EAAaruB,MAAzD,CAIA,IAAKgD,EAAI,EAAGA,EAAIT,EAAmBU,OAAQD,IACvCkrB,EAAO3rB,EAAmBS,GAC1BorB,EAAajrB,KAAKP,QAAQ6rB,UAAYJ,EAAaruB,KAE/CquB,EAAazkB,eAAeskB,KACf,eAATA,GACAC,EAAYxtB,EAAM4tB,cAAcG,cAAc,CAC1CC,OAAQP,EACRQ,SAAU,WACVnkB,MAAO7H,EAAQisB,aAGFV,EAAUlrB,QACvB+gB,EAAQ5e,KAAKzE,EAAM4tB,cAAcG,cAAc,CAC3CC,OAAQP,EACRQ,SAAUV,EACVzjB,MAAO7H,EAAQsrB,GACfY,KAAMlsB,EAAQisB,YAItB7K,EAAQ5e,KAAKzE,EAAM4tB,cAAcG,cAAc,CAC3CC,OAAQP,EACRQ,SAAUV,EACVzjB,MAAO7H,EAAQsrB,OAM/BpF,EAAGzI,SAAS2D,EAAQ/d,KAAK,KAhCzB,CAiCJ,EAEA8oB,WAAY,SAASjsB,GACjB,IAMIksB,EALAC,EADO9rB,KACS8D,QAChBioB,EAAUD,EAASnQ,KAAK,MACxBqQ,EAAW5uB,EAAE,cAAiB2uB,EAAU,MACxCE,EAAYH,EAASnQ,KAAK3c,GAC1BktB,EAAiBJ,EAASnQ,KAAK5c,GAG/BY,EAAO,KAAOmsB,EAAS,KAIvBG,EACAtsB,EAAOgc,KAAK3c,EAAYitB,GACjBC,EACPvsB,EAAOgc,KAAK5c,EAAiBmtB,GACtBF,EAASlsB,SAChB+rB,EAAUG,EAASrQ,KAAK,OAjBjB3b,KAiB+BmsB,iBAAiBH,EAAUD,GAAWvuB,EAAMsqB,QAClFnoB,EAAOgc,KAAK5c,EAAiB8sB,IAErC,EAEA7B,iBAAkB,SAASoC,EAAYtoB,GACnC,IAGIjE,EAAGkrB,EAAME,EAHTC,EAAelrB,KAAKmrB,UAAU1rB,QAC9B4sB,EAAiBrsB,KAAKP,QACtBkmB,EAAK7hB,GAAW9D,KAAKoE,SAAWpE,KAAK8D,QAGzC,GAAKtG,EAAM4tB,cAAcC,mBAAmBH,EAAaruB,MAIzD,IAAKgD,EAAI,EAAGA,EAAIT,EAAmBU,OAAQD,IACvCkrB,EAAO3rB,EAAmBS,GAC1BorB,EAAajrB,KAAKP,QAAQ6rB,UAAYJ,EAAaruB,KAE/CquB,EAAazkB,eAAeskB,IAASqB,EAAW3lB,eAAeskB,KAClD,eAATA,EACApF,EAAGV,YAAYznB,EAAM4tB,cAAcG,cAAc,CAC7CC,OAAQP,EACRQ,SAAUV,EACVzjB,MAAO+kB,EAAetB,GACtBY,KAAMU,EAAeX,aAGZ,aAATX,GACApF,EAAGV,YAAYznB,EAAM4tB,cAAcG,cAAc,CAC7CC,OAAQP,EACRQ,SAAU,aACVnkB,MAAO+kB,EAAeC,WACtBX,KAAMU,EAAeX,YAI7B/F,EAAGV,YAAYznB,EAAM4tB,cAAcG,cAAc,CAC7CC,OAAQP,EACRQ,SAAUV,EACVzjB,MAAO+kB,EAAetB,OAK1C,EAEAoB,iBAAkB,SAASI,EAAOR,GAC9B,IAAIF,EAAUE,EA1/FJ,SA8/FV,OAFAQ,EAAM5Q,KAAK,KAAMkQ,GAEVA,CACX,IAGAW,GAAkBxD,GAAOtrB,OAAO,CAEhC+uB,UAAW,WACP,OAAOzsB,KAAKqpB,WAAWqD,UAC3B,EAEAC,cAAe,SAASC,GACpB,IAAIpsB,EAAOR,KACXQ,EAAK2oB,QAAQyD,GAAK,WACd,MAAO,CACHC,SAAUrsB,EAAKssB,QACfnnB,KAAMvI,EAAE0V,IAAItS,EAAKisB,aAAa,SAASM,GACnC,MAAO,CAAEA,SAAUA,EACvB,IAER,GACJ,IAGJvvB,EAAMgtB,WAAa,SAAS1mB,EAAS0mB,GACjC,IAAIwC,EAAalpB,EAAQ,GAMzB,OAJI0mB,GACA1mB,EAAQW,IAAI+lB,GAGT,CAAE3lB,MAAOmoB,EAAWlW,YAAahS,OAAQkoB,EAAWC,aAC/D,EAEAzvB,EAAM0vB,OAASpvB,EAEf,IAAIqvB,GAAiB,aACjBC,GAAa,oDACbC,GAAmB,wCACnBC,GAAa,WAEjB,SAASC,GAAYzpB,EAAS0pB,GAC1B,IAAIlmB,EAwBJ,OAtB+B,IAA3BkmB,EAAOrf,QAAQ,UAEfqf,GADAA,EAASA,EAAOvqB,UAAU,IACVF,OAAO,GAAG+N,cAAgB0c,EAAOvqB,UAAU,IAG/DuqB,EAASA,EAAOtwB,QAAQowB,GAAY,OAGtB,QAFdhmB,EAAQxD,EAAQ2pB,aAAa,QAAUjwB,EAAM8mB,GAAKkJ,IAG9ClmB,EAAQhK,EACS,SAAVgK,EACPA,EAAQ,KACS,SAAVA,EACPA,GAAQ,EACS,UAAVA,EACPA,GAAQ,EACDhJ,EAAasG,KAAK0C,IAAoB,QAAVkmB,GAA8B,UAAVA,EACvDlmB,EAAQ6N,WAAW7N,GACZ8lB,GAAWxoB,KAAK0C,KAAW+lB,GAAiBzoB,KAAK0C,KACxDA,EAAQ,IAAIe,SAAS,WAAaf,EAAQ,IAAlC,IAGLA,CACX,CAEA,SAASomB,GAAa5pB,EAASrE,EAAS2F,GACpC,IACIooB,EACAlmB,EAFAyH,EAAS,CAAC,EAGVoZ,EAAOrkB,EAAQ2pB,aAAa,QAAUjwB,EAAM8mB,GAAK,QAErD,IAAKkJ,KAAU/tB,GACX6H,EAAQimB,GAAYzpB,EAAS0pB,MAEflwB,IAEN6vB,GAAevoB,KAAK4oB,IAAmB,UAARrF,IACV,iBAAV7gB,EACHlK,EAAE,IAAMkK,GAAOxH,OACfwH,EAAQ9J,EAAMqK,SAASzK,EAAE,IAAMkK,GAAOQ,QAC/B1C,IACPkC,EAAQ9J,EAAMqK,SAASzC,EAAOkC,KAGlCA,EAAQxD,EAAQ2pB,aAAaD,IAIrCze,EAAOye,GAAUlmB,GAIzB,OAAOyH,CACX,CAoIA,SAAS4e,GAAoBxkB,EAAG4U,GAC5B,OAAO3gB,EAAEwwB,SAASzkB,EAAG4U,IAAM,EAAI,CACnC,CAEA,SAAS8P,KACL,IAAIrC,EAASpuB,EAAE4C,MACf,OAAQ5C,EAAE0wB,QAAQtC,EAAO7P,KAAK,QAAUne,EAAM8mB,GAAK,QAAS,CAAC,SAAU,cAAe,gBAAkB,GAAMkH,EAAOhnB,GAAG,WAC5H,CAzIAhH,EAAMuwB,WAAa,SAASjqB,EAASrE,EAASuuB,GAC1C,IAAIjf,EACAye,EACAhC,EACA7pB,EACA7B,EACAqoB,EACA7gB,EACA+hB,EACA4E,EACAC,EAaJ,GAVKF,EAEMA,EAAMA,QACbA,EAAQA,EAAMA,OAFdA,EAAQxwB,EAAMilB,GAAGuL,MAOrB7F,GAFArkB,EAAUA,EAAQqqB,SAAWrqB,EAAUA,EAAQ,IAEhC2pB,aAAa,QAAUjwB,EAAM8mB,GAAK,QAEjD,CAWIkH,GAPJyC,GAAkC,IAAvB9F,EAAKha,QAAQ,MAOX6f,EAAM7F,GAEN3qB,EAAMiqB,OAAOU,EAAb3qB,CAAmBH,GAGhC,IAAIsI,EAAOvI,EAAE0G,GAAS6B,OAClByoB,EAAY5C,EAAS,QAAUA,EAAOlrB,GAAGb,QAAQoY,OAAS2T,EAAOlrB,GAAGb,QAAQ5C,KAAO,GAQvF,IAAK,IAAIyM,KALL4kB,EADAD,EACkB,IAAIloB,OAAO,WAAaoiB,EAAO,IAAK,KAEpC,IAAIpiB,OAAO,IAAMqoB,EAAY,IAAK,KAGxCzoB,EACZ,GAAI2D,EAAInB,MAAM+lB,GAAkB,CAE5B,GAAI5kB,IAAQ8kB,EAGR,OAAOzoB,EAAK2D,GAFZyF,EAASpJ,EAAK2D,EAItB,CAGJ,GAAKkiB,EAAL,CAgBA,IAZAnC,EAAakE,GAAYzpB,EAAS,cAElCrE,EAAUrC,EAAEM,OAAO,CAAC,EAAGgwB,GAAa5pB,EAAS1G,EAAEM,OAAO,CAAC,EAAG8tB,EAAOlrB,GAAGb,QAAS+rB,EAAOlrB,GAAGkpB,WAAa/pB,GAEhG4pB,IAEI5pB,EAAQ4pB,kBADDA,IAAe7qB,EACDhB,EAAMiqB,OAAO4B,EAAb7rB,CAAyBH,GAEzBgsB,GAIxB1nB,EAAM,EAAG7B,EAAS0rB,EAAOlrB,GAAGgC,OAAOxC,OAAQ6B,EAAM7B,EAAQ6B,KAG1D2F,EAAQimB,GAAYzpB,EAFpB0pB,EAAShC,EAAOlrB,GAAGgC,OAAOX,OAIZrE,IACVmC,EAAQ+tB,GAAUhwB,EAAMiqB,OAAOngB,EAAb9J,CAAoBH,IAU9C,OANK0R,EAEO3R,EAAEixB,cAAc5uB,IACxBsP,EAAOgb,WAAWtqB,GAFlBsP,EAAS,IAAIyc,EAAO1nB,EAASrE,GAK1BsP,CA9BP,CApCA,CAmEJ,EAEAvR,EAAM8wB,oBAAsB,SAASC,GACjC,IACI5sB,EACA7B,EAFAkuB,EAAQ,GAQZ,IAJKO,EAAW,KACZA,EAAa,CAAC/wB,EAAMilB,GAAIjlB,EAAMolB,QAAQH,KAGrC9gB,EAAM,EAAG7B,EAASyuB,EAAWzuB,OAAQ6B,EAAM7B,EAAQ6B,IACpDqsB,EAAMrsB,GAAO4sB,EAAW5sB,GAAKqsB,MAGjC,OAAOtwB,EAAOiD,MAAM,KAAM,CAAC,CAAC,GAAGqV,OAAOgY,EAAM1f,WAChD,EAEA9Q,EAAMkD,KAAO,SAASoD,GAClB,IAAIkqB,EAAQxwB,EAAM8wB,oBAAoBnvB,EAAMqD,KAAK5C,UAAW,IAE5DxC,EAAE0G,GAAS0qB,KAAK,SAAWhxB,EAAM8mB,GAAK,SAASmK,UAAU9wB,MAAK,WAC1DH,EAAMuwB,WAAW/tB,KAAM,CAAC,EAAGguB,EAC/B,GACJ,EAEAxwB,EAAMktB,QAAU,SAAS5mB,GACrB1G,EAAE0G,GAAS0qB,KAAK,SAAWhxB,EAAM8mB,GAAK,SAASmK,UAAU9wB,MAAK,WAC1D,IAAIgI,EAAOvI,EAAE4C,MAAM2F,OAEnB,IAAK,IAAI2D,KAAO3D,EACiB,IAAzB2D,EAAI6E,QAAQ,iBAAyBxI,EAAK2D,GAAKohB,UAAYnsB,GAC3DoH,EAAK2D,GAAKohB,SAGtB,GACJ,EAWAltB,EAAM6kB,OAAS,SAASve,EAASqmB,GAC7B,IAAI5H,EAAUnlB,EAAE0G,GAAS0qB,KAAK,SAAWhxB,EAAM8mB,GAAK,SAASmK,UAAUC,OAAOb,IAE9E,GAAKtL,EAAQziB,OAAb,CAKA,IAAI6uB,EAAevxB,EAAEwxB,UAAUrM,GAC/BoM,EAAa7Q,KAAK6P,IAGlBvwB,EAAEO,KAAKgxB,GAAc,WACjB,IAAInD,EAAShuB,EAAMqxB,eAAezxB,EAAE4C,OAChCwrB,GACAA,EAAOnJ,OAAO8H,EAEtB,GAZA,CAaJ,EAEA3sB,EAAMkwB,aAAeA,GAErBhwB,EAAOF,EAAMilB,GAAI,CACbuG,OAAQA,GACRwD,gBAAiBA,GACjBwB,MAAO,CAAC,EACRc,SAAU,SAASC,EAAW9N,EAAQxhB,GAClC,IAGIwX,EAAO+X,EAAWC,EAAkBC,EAAqB9T,EAHzD+T,EAAOJ,EAAUP,KAAK,mBACtBtwB,EAAUV,EAAMU,QAChByc,EAAUzc,EAAQyc,QAUlBS,GAPA3b,EAAUrC,EAAEM,OAAO,CAAC,EAAG,CACnBmH,MAAO,OACPC,OAAQ,OACRmY,IAAK8R,EAAUK,YACfC,SAAS,GACV5vB,IAEgB4vB,QAAU,0BAA4B,iBAEzDpO,EACKkO,EAAKrvB,SAENkvB,GADA/X,EAAQ/Y,EAAQ+Y,MAAM8X,IACF,QAAU,OAC9BG,EAAsB1xB,EAAMkoB,WAAWqJ,GACvCE,EAAmBtU,EAAQH,QAAWvD,EAAY8X,EAAU,GAAGhY,YAAcgY,EAAUlqB,QAAU,EAAIqqB,EAAuB,EAE5HC,EAAO/xB,EAAEI,EAAMiL,OAAO,uKAAwK2S,EAAU5d,EAAMilB,GAAGqM,SAAS/L,SAASuM,UAC9NzqB,MAAMpF,EAAQoF,OAAOC,OAAOrF,EAAQqF,QACpCL,IAAI,MAAOhF,EAAQwd,KACnBxY,IAAIuqB,EAAWhxB,KAAK0R,IAAIwf,GAAuBD,GAC/CM,UAAUR,IAEZI,GACPA,EAAKK,QAEb,EACAC,OAAQ,SAASjE,EAAQkE,EAAU7X,GAC/B,IACI4P,EADA5qB,EAAO2uB,EAAOlrB,GAAGb,QAAQ5C,KAI7Bgb,EAASA,GAAU,IADnB6X,EAAWA,GAAYlyB,EAAMilB,IAGpB5lB,GAAQ2uB,EAEjBkE,EAAS1B,MAAMnxB,EAAKiU,eAAiB0a,EAErC/D,EAAS,WAAa5P,EAAShb,EAG/B,IAAI8yB,EAAc,CAAE9yB,KAFpBA,EAAO,QAAUgb,EAAShb,EAEM2uB,OAAQA,EAAQ3T,OAAQA,GAAU,IAClEra,EAAM+kB,QAAQtgB,KAAK0tB,GAEnB,IAAK,IAAI9vB,EAAI,EAAG6oB,EAAMlrB,EAAMglB,2BAA2B1iB,OAAQD,EAAI6oB,EAAK7oB,IACpErC,EAAMglB,2BAA2B3iB,GAAG8vB,GAGxCvyB,EAAEkD,GAAGzD,GAAQ,SAAS4C,GAClB,IACImwB,EADAtoB,EAAQtH,KAkCZ,cA/BWP,IAAYjB,GACnBoxB,EAAOzwB,EAAMqD,KAAK5C,UAAW,GAE7BI,KAAKrC,MAAK,WACN,IACIkyB,EACA9gB,EAFAyc,EAASpuB,EAAEuI,KAAK3F,KAAMnD,GAI1B,IAAK2uB,EACD,MAAM,IAAIhjB,MAAMhL,EAAMiL,OAAO,2DAA4DhJ,EAAS5C,IAKtG,UAFAgzB,EAASrE,EAAO/rB,MAEMlB,EAClB,MAAM,IAAIiK,MAAMhL,EAAMiL,OAAO,kCAAmChJ,EAAS5C,IAK7E,IAFAkS,EAAS8gB,EAAOlvB,MAAM6qB,EAAQoE,MAEftyB,EAEX,OADAgK,EAAQyH,GACD,CAEf,KAEA/O,KAAKrC,MAAK,WACN,OAAO,IAAI6tB,EAAOxrB,KAAMP,EAC5B,IAGG6H,CACX,EAEAlK,EAAEkD,GAAGzD,GAAM2uB,OAASA,EAEpBpuB,EAAEkD,GAAGmnB,GAAU,WACX,OAAOznB,KAAK2F,KAAK9I,EACrB,CACJ,IAGJW,EAAMilB,GAAGqM,SAAS/L,SAAW,CACzBuM,QAAS,cAGb,IAAIQ,GAAsB,CAAEvuB,KAAM,WAAa,OAAOvB,IAAM,EAAG+vB,YAAY,EAAMtwB,QAAS,CAAC,GAEvFuwB,GAAehH,GAAOtrB,OAAO,CAC7BgD,KAAM,SAASoD,EAASrE,GACpBupB,GAAO1oB,GAAGI,KAAK8B,KAAKxC,KAAM8D,EAASrE,GACnCO,KAAK8D,QAAQmsB,cACbjwB,KAAKoE,QAAUpE,KAAK8D,QACpB9D,KAAK8D,QAAQoZ,SAAS,YAC1B,EAEAwN,QAAS,WACL1B,GAAO1oB,GAAGoqB,QAAQloB,KAAKxC,MACvBA,KAAK8D,QAAQosB,cACjB,EAEAzwB,QAAS,CACLoY,OAAQ,UAGZvV,OAAQ,GAER6tB,KAAM,WACF,IAAIC,EAAcpwB,KAAK8D,QAAQoT,QAAQ1Z,EAAM0qB,aAAa,oCAC1D,OAAO1qB,EAAMqxB,eAAeuB,EAAa5yB,EAAMmlB,OAAOF,KAAOqN,EACjE,EAEAO,uBAAwB,WACpB,IAAIF,EAAOnwB,KAAKmwB,OAChB,OAAOA,GAAQA,EAAK1wB,QAAQ6wB,kBAChC,EAEAvB,UAAW,WACP,IAAIjrB,EAAU9D,KAAK8D,QAAQoT,QAAQ1Z,EAAM0qB,aAAa,2CACtD,OAAO1qB,EAAMqxB,eAAe/qB,EAAQysB,GAAG,GAAI/yB,EAAMmlB,OAAOF,KAAOqN,EACnE,IAGJpyB,EAAOF,EAAMmlB,OAAQ,CACjBjiB,KAAM,SAASoD,GACXtG,EAAMkD,KAAKoD,EAAStG,EAAMmlB,OAAOF,GAAIjlB,EAAMilB,GAAIjlB,EAAMolB,QAAQH,GACjE,EAEA+N,wBAAyB,WACrB,OAAOhzB,EAAMmlB,OAAO8N,aAAejzB,EAAMmlB,OAAO8N,YAAYhxB,SAAWjC,EAAMmlB,OAAO8N,YAAYhxB,QAAQ6wB,kBAC5G,EAEAtC,MAAO,CAAC,EAERvL,GAAI,CACAuG,OAAQgH,GACRxD,gBAAiBA,GAAgB9uB,OAAOsyB,GAAapvB,WACrDotB,MAAO,CAAC,EACRyB,OAAQ,SAASjE,GACbhuB,EAAMilB,GAAGgN,OAAOjE,EAAQhuB,EAAMmlB,OAAOF,GAAI,SAC7C,KAIRzhB,EAAWxD,EAAMolB,QAAS,CACtBliB,KAAM,SAASoD,GACXtG,EAAMkD,KAAKoD,EAAStG,EAAMolB,QAAQH,GACtC,EACAA,GAAI,CACAuL,MAAO,CAAC,EACR0C,OAAQ,CAAC,EACTC,MAAO,GACPlB,OAAQ,SAASjE,GACbhuB,EAAMilB,GAAGgN,OAAOjE,EAAQhuB,EAAMolB,QAAQH,GAC1C,GAEJuL,MAAO,CAAC,IAGZxwB,EAAMozB,cAAgB,SAAS/D,EAAUptB,GAMrC,OAJKA,IAAWA,EAAU,CAAC,GAE3BA,EAAQoxB,WAAY,EAEbzzB,EAAEyvB,GAAU/Z,KAAI,SAASnR,EAAKmC,GAEjC,OADAA,EAAU1G,EAAE0G,MACR5F,EAAQkhB,sBAAuB5hB,EAAMmlB,OAAOF,GAAGqO,UAAahtB,EAAQ6B,KAAK,0BACzE7B,EAAQitB,oBAAoBtxB,GACrBqE,EAAQ6B,KAAK,uBAI5B,IAAG,EACP,EAEAnI,EAAM0D,eAAiB,SAASmB,GAC5BA,EAAEnB,gBACN,EAEA1D,EAAMqxB,eAAiB,SAAS/qB,EAASktB,GACrC,IACkBnxB,EAAGC,EADjBqoB,EAAOrkB,EAAQ6B,KAAKnI,EAAM8mB,GAAK,QAC/B/B,EAAU,GACV0O,EAAcntB,EAAQ6B,KAAK,aAE/B,GAAIwiB,EAAM,CAQN,GANa,YAATA,IACAA,EAAO,YAKE,kBAATA,EAA0B,CAC1B,IAAI+I,EAAgBptB,EAAQ6B,KAAK,sBACjC,GAAIurB,EACA,OAAOA,CAEf,CAIA,GAAa,SAAT/I,GAAmB8I,EACnB,OAAOA,EAGX,GAAID,EACA,GAAIA,EAAO,GACP,IAAKnxB,EAAI,EAAGC,EAASkxB,EAAOlxB,OAAQD,EAAIC,EAAQD,IAC5C0iB,EAAQtgB,KAAK+uB,EAAOnxB,GAAGmuB,MAAM7F,SAGjC5F,EAAQtgB,KAAK+uB,EAAOhD,MAAM7F,SAI9B5F,EAAU,CAAE/kB,EAAMilB,GAAGuL,MAAM7F,GAAO3qB,EAAMolB,QAAQH,GAAGuL,MAAM7F,GAAO3qB,EAAMmlB,OAAOF,GAAGuL,MAAM7F,IAO1F,IAJIA,EAAKha,QAAQ,MAAQ,IACrBoU,EAAU,CAAE/kB,EAAMiqB,OAAOU,EAAb3qB,CAAmBH,KAG9BwC,EAAI,EAAGC,EAASyiB,EAAQziB,OAAQD,EAAIC,EAAQD,IAAM,CACnD,IAAI2rB,EAASjJ,EAAQ1iB,GACrB,GAAI2rB,EAAQ,CACR,IAAI3L,EAAW/b,EAAQ6B,KAAK,QAAU6lB,EAAOlrB,GAAGb,QAAQoY,OAAS2T,EAAOlrB,GAAGb,QAAQ5C,MACnF,GAAIgjB,EACA,OAAOA,CAEf,CACJ,CACJ,CACJ,EAEAriB,EAAM2zB,SAAW,SAASrP,GACtB,IAAIjgB,EAAUigB,EAMd,OALI5jB,EAAQod,SAASrC,UACjBpX,EAAU,WAAauvB,WAAWtP,EAAU,IAAM,GAGtD1kB,EAAEC,GAAQ0kB,GAAG7jB,EAAQmkB,OAAQxgB,GACtBA,CACX,EAEArE,EAAM6zB,aAAe,SAASvP,GAC1B1kB,EAAEC,GAAQi0B,IAAIpzB,EAAQmkB,OAAQP,EAClC,EAEAtkB,EAAM+zB,UAAY,SAASztB,EAASwF,GAChC,OAAOxF,EAAQ6B,KAAKnI,EAAM8mB,GAAKhb,EACnC,EAEA9L,EAAM4O,KAAO,CACTolB,OAAQ,EACRC,OAAQ,EACRC,QAAS,EACTC,UAAW,EACXC,SAAU,EACVC,OAAQ,EACRC,SAAU,GAsBd10B,EAAEM,OAAON,EAAEgqB,KAAK2K,QAAS,CACrBC,eAAgB,SAASluB,GACrB,IAAInC,EAAMvE,EAAEue,KAAK7X,EAAS,YAC1B,OAtBR,SAAmBA,EAASmuB,GACxB,IAAIC,EAAWpuB,EAAQouB,SAASphB,cAEhC,OAAQ,sCAAsClM,KAAKstB,IAC1CpuB,EAAQquB,SACI,MAAbD,GACApuB,EAAQsuB,MACRH,IAKZ,SAAiBnuB,GACb,OAAO1G,EAAEgqB,KAAK2K,QAAQM,QAAQvuB,KACzB1G,EAAE0G,GAASwuB,UAAU7D,UAAUC,QAAO,WACnC,MAAoC,WAA7BtxB,EAAEqH,IAAIzE,KAAK,aACtB,IAAGF,MACX,CARQuyB,CAAQvuB,EAChB,CAYeyuB,CAAUzuB,GAAUsR,MAAMzT,IAAQA,GAAO,EACpD,IAGJ,IAAI6wB,GAAe,CAAC,YAAa,YAAa,aAAc,aAAc,YAAa,WAAY,UAAW,SAG1GC,GAAuB,CACvBC,eAAgB,WACZ,IAAI/wB,EAAM,EACN7B,EAAS0yB,GAAa1yB,OACtBgE,EAAUqD,SAAS0K,gBAEvB,IAAI4gB,GAAqBE,WAAcz0B,EAAQif,aAA/C,CAIAsV,GAAqBE,WAAY,EAEjCF,GAAqBG,WAAY,EACjCH,GAAqBI,cAAe,EAepC,IAbA,IAAIhxB,EAAU,SAASQ,GACfowB,GAAqBI,eACN,UAAXxwB,EAAEsH,KACE8oB,GAAqBG,YAAcx1B,EAAEiF,EAAE1C,QAAQ6E,GApBrC,uCAqBVnC,EAAEnB,iBACFmB,EAAEywB,mBAGNzwB,EAAEywB,kBAGd,EAEOnxB,EAAM7B,EAAQ6B,IACjBmC,EAAQsZ,iBAAiBoV,GAAa7wB,GAAME,GAAS,EArBzD,CAuBJ,EAEAkxB,UAAW,SAAS1wB,GAChBowB,GAAqBI,cAAe,EAChCxwB,EAAEsD,KAAKitB,YACPH,GAAqBG,WAAY,GAErCI,aAAaP,GAAqBQ,mBACtC,EAEAC,YAAa,WACTF,aAAaP,GAAqBQ,oBAClCR,GAAqBQ,mBAAqB7B,YAAW,WACjDqB,GAAqBI,cAAe,EACpCJ,GAAqBG,WAAY,CACrC,GAAG,IACP,GAGAO,GAAW,CACX5M,KAAM,uBACN6M,KAAM,sBACN5M,GAAI,+BACJ6M,OAAQ,0BAGRn1B,EAAQmZ,QAAUnZ,EAAQod,SAASzB,KAAO3b,EAAQod,SAASrC,SAC3Dka,GAAW,CACP5M,KAAM,aACN6M,KAAM,YACN5M,GAAI,uBACJ6M,OAAQ,eAELn1B,EAAQghB,SACfiU,GAAW,CACP5M,KAAM,cACN6M,KAAM,cACN5M,GAAI,YACJ6M,OAAQ,8BAELn1B,EAAQ8gB,aACfmU,GAAW,CACP5M,KAAM,gBACN6M,KAAM,gBACN5M,GAAI,cACJ6M,OAAQ,mCAIZn1B,EAAQ8gB,cAAgB,qBAAsB3hB,IAE9CD,EAAEO,KAAK,CACH21B,eAAgB,gBAChBC,eAAgB,iBACjB,SAAUC,EAAMC,GACfr2B,EAAE4a,MAAM0b,QAASF,GAAS,CACtBG,aAAcF,EACdG,SAAUH,EAEVI,OAAQ,SAAU7b,GACd,IAAI8b,EAEAC,EAAU/b,EAAMgc,cAChBC,EAAYjc,EAAMic,UAStB,OALMF,IAAYA,IANL/zB,MAM4B5C,EAAEwwB,SAN9B5tB,KAMgD+zB,MACzD/b,EAAMrO,KAAOsqB,EAAUC,SACvBJ,EAAMG,EAAUpyB,QAAQlB,MAAOX,KAAMJ,WACrCoY,EAAMrO,KAAO8pB,GAEVK,CACX,EAER,IAIJ,IAAIK,GAAc,SAAS9xB,GAAK,OAAQ8wB,GAAS9wB,IAAMA,CAAI,EACvD+xB,GAAa,WAEjB52B,EAAM62B,cAAgB,SAAS/xB,EAAQgiB,GAOnC,OANAhiB,EAASA,EAAOpF,QAAQk3B,GAAYD,IAEhC7P,IACAhiB,EAASA,EAAOpF,QAAQk3B,GAAY,MAAQ9P,IAGzChiB,CACX,EAEA9E,EAAM82B,eAAiB,SAASjyB,EAAGmpB,GAC/B,IAAIlpB,EAASkpB,EAAOlqB,QAAQizB,aAE5B,IAAKjyB,EACD,OAAO,EAGXA,EAASA,EAAOnD,QAChBkD,EAAEE,OAASipB,EACXnpB,EAAEmyB,qBAAsB,EACxB,IAAK,IAAI7yB,EAAM,EAAG7B,EAASwC,EAAOxC,OAAQ6B,EAAM7B,EAAQ6B,IACpDW,EAAOX,GAAKa,KAAKgpB,EAAQnpB,GAG7B,OAAQA,EAAEmyB,mBACd,EAEA,IAAIzS,GAAK3kB,EAAEkD,GAAGyhB,GAEd,SAAS0S,GAAYpW,EAAUqW,GAC3B,OAAO,IAAID,GAAYn0B,GAAGI,KAAK2d,EAAUqW,EAC7C,CAEAr1B,GAAkB,EAAMo1B,GAAar3B,GAErCq3B,GAAYn0B,GAAKm0B,GAAY7zB,UAAY,IAAIxD,EAE7Cq3B,GAAYn0B,GAAGO,YAAc4zB,GAE7BA,GAAYn0B,GAAGI,KAAO,SAAS2d,EAAUqW,GAKrC,OAJIA,GAAWA,aAAmBt3B,KAAOs3B,aAAmBD,MACxDC,EAAUD,GAAYC,IAGnBt3B,EAAEkD,GAAGI,KAAK8B,KAAKxC,KAAMqe,EAAUqW,EAASC,GACnD,EAEAF,GAAYn0B,GAAGI,KAAKE,UAAY6zB,GAAYn0B,GAE5C,IAAIq0B,GAAaF,GAAYttB,UAE7BzJ,EAAO+2B,GAAYn0B,GAAI,CACnBuB,QAAS,SAASA,GAEd,OADA7B,KAAK2F,KAAK,UAAW9D,GACd7B,IACX,EAEAiwB,YAAa,SAAS3L,GAElB,OADAtkB,KAAK2F,KAAK,UAAW2e,GAAM9mB,EAAMsqB,QAC1B9nB,IACX,EAEA+hB,GAAI,WACA,IAAIvhB,EAAOR,KACPskB,EAAK9jB,EAAKmF,KAAK,WAGnB,GAAyB,IAArB/F,UAAUE,OACV,OAAOiiB,GAAGvf,KAAKhC,EAAMZ,UAAU,IAGnC,IAAI80B,EAAUl0B,EACVovB,EAAOzwB,EAAMqD,KAAK5C,kBAEXgwB,EAAKA,EAAK9vB,OAAS,KAAOjB,GACjC+wB,EAAKgF,MAGT,IAAI9S,EAAW8N,EAAKA,EAAK9vB,OAAS,GAC9BwC,EAAS9E,EAAM62B,cAAczE,EAAK,GAAItL,GAG1C,GAAIpmB,EAAQ0d,sBAAwBtZ,EAAOuyB,OAAO,gBAAkB,GAAK70B,KAAK,KAAOmH,SAAS0K,gBAAiB,CAC3G4gB,GAAqBC,iBAErB,IAAIrU,EAA2B,IAAhBuR,EAAK9vB,OAAe,KAAO8vB,EAAK,GAC3CgD,EAAYtwB,EAAO6L,QAAQ,UAAY,GAAK7L,EAAO6L,QAAQ,aAAe,EAE9E4T,GAAGvf,KAAKxC,KACJ,CACI80B,WAAYrC,GAAqBM,UACjCgC,SAAUtC,GAAqBS,aAEnC7U,EACA,CACIuU,UAAWA,GAEvB,CAEA,IAAyC,IAArChzB,UAAU,GAAGuO,QAAQ,YAAqByhB,EAAK,IAAMA,EAAK,GAAGnwB,QAAS,CACtEmwB,EAAK,GAAKttB,EACV,IAAIkpB,EAASoE,EAAK,GACdoF,EAAkBpF,EAAKA,EAAK9vB,OAAS,GAOzC,OANA8vB,EAAKA,EAAK9vB,OAAS,GAAK,SAASuC,GAC7B,GAAI7E,EAAM82B,eAAejyB,EAAGmpB,GACzB,OAAOwJ,EAAgBr0B,MAAMX,KAAM,CAACqC,GAE3C,EACA0f,GAAGphB,MAAMH,EAAMovB,GACRpvB,CACX,CAeA,cAbWshB,IAAatjB,IACpBk2B,EAAUl0B,EAAKmF,KAAK,WACpBmc,EAAW4S,EAAQ5S,GAEnB8N,EAAKA,EAAK9vB,OAAS,GAAK,SAASuC,GAC7Byf,EAAStf,KAAKkyB,EAASryB,EAC3B,GAGJutB,EAAK,GAAKttB,EAEVyf,GAAGphB,MAAMH,EAAMovB,GAERpvB,CACX,EAEA0vB,aAAc,SAAS5L,GAOnB,OANAA,EAAKA,GAAMtkB,KAAK2F,KAAK,aAGjB3F,KAAKsxB,IAAI,IAAMhN,GAGZtkB,IACX,IAGJxC,EAAMyC,OAASw0B,GACfj3B,EAAM21B,SAAWA,GAEjB31B,EAAMoY,SAAW,WACb,IAAIpJ,EAAS,CAAEyoB,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,GAAIC,IAAK,IACzGxpB,EAAO,CAAEypB,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,GAElE,SAASC,EAAW1hB,EAAM2hB,GACtB,IAAIxnB,EACAynB,EACAC,EACA5hB,EAAQ0hB,EAAK,GACbtU,EAAKsU,EAAK,GACVG,EAAOH,EAAK,GACZI,EAAQJ,EAAK,GAMjB,OAJKI,IACDJ,EAAK,GAAKI,EAAQ,CAAC,GAGnBA,EAAM/hB,GACC+hB,EAAM/hB,IAGZU,MAAM2M,GAEuB,IAAvBA,EAAG5T,QAAQ,SAClBU,EAAO,IAAI3I,KAAKA,KAAKsN,IAAIkB,EAAMlI,EAAOmI,GAAS,EAAG,EAAG6hB,EAAK,GAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,IAErFF,EAAYlqB,EAAK2V,EAAG9N,OAAO,EAAG,IAC9BsiB,EAAS1nB,EAAK6nB,YAEd7nB,EAAK8nB,WAAW9nB,EAAK1E,aAAemsB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,KAC5ExU,EAAG5T,QAAQ,OAAS,GAC3BU,EAAO,IAAI3I,KAAKA,KAAKsN,IAAIkB,EAAMlI,EAAOmI,GAAQoN,EAAG9N,OAAO,GAAIuiB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,IAEvFF,EAAYlqB,EAAK2V,EAAG9N,OAAO,EAAG,IAC9BsiB,EAAS1nB,EAAK6nB,YAEd7nB,EAAK8nB,WAAW9nB,EAAK1E,aAAemsB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,KAC5ExU,EAAG5T,QAAQ,OAAS,IAC3BU,EAAO,IAAI3I,KAAKA,KAAKsN,IAAIkB,EAAMlI,EAAOmI,GAAQoN,EAAG9N,OAAO,GAAIuiB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,IAEvFF,EAAYlqB,EAAK2V,EAAG9N,OAAO,EAAG,IAC9BsiB,EAAS1nB,EAAK6nB,YAEd7nB,EAAK8nB,WAAW9nB,EAAK1E,aAAemsB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,KArBnF1nB,EAAO,IAAI3I,KAAKA,KAAKsN,IAAIkB,EAAMlI,EAAOmI,GAAQoN,EAAIyU,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,IAwB1EC,EAAM/hB,GAAQ7F,EACzB,CAEA,SAAS+nB,EAASC,EAASC,EAAOC,GAG9B,KAFAD,EAAQA,EAAMC,IAEF,CACR,IAAIP,EAAOO,EAAKl0B,MAAM,KAClB8S,EAAS,EAMb,OAJI6gB,EAAK12B,OAAS,IACd6V,EAAmB,GAAV6gB,EAAK,GAAUjsB,OAAOisB,EAAK,KAGjC,EAAE,IAAS,MAAO,IAAK,MAAO,EAAG,CAAC,EAAG,EAAG,GAAI7gB,EAAQ,IAC/D,CAEA,IAAIjB,EAAO,IAAIxO,KAAK2wB,GAAS5sB,iBAE7B6sB,EAAQ72B,OAAO+2B,KAAKF,GAAO,SAAST,GAChC,IAAIY,EAAOZ,EAAK,GACZa,EAAKb,EAAK,GAEd,OAAOY,GAAQviB,IAASwiB,GAAMxiB,GAASuiB,GAAQviB,GAAc,QAANwiB,GAAuB,OAANA,EAC5E,IAEAJ,EAAM70B,KAAK40B,GAEXC,EAAMhZ,MAAK,SAAS3U,EAAG4U,GASnB,MARgB,iBAAL5U,IACPA,EAAIoB,OAAO6rB,EAAW1hB,EAAMvL,KAGhB,iBAAL4U,IACPA,EAAIxT,OAAO6rB,EAAW1hB,EAAMqJ,KAGzB5U,EAAI4U,CACf,IAEA,IAAIsY,EAAOS,EAAM72B,OAAO6tB,QAAQ+I,EAASC,GAAS,IAAMA,EAAMA,EAAMh3B,OAAS,GAE7E,OAAOsV,MAAMihB,GAAQA,EAAO,IAChC,CA8BA,SAASc,EAAYN,EAASO,EAAON,EAAOlhB,UAC7BihB,GAAWp4B,IAClBo4B,EAAU3wB,KAAKsN,IAAIqjB,EAAQznB,cAAeynB,EAAQ1nB,WAC9C0nB,EAAQ5nB,UAAW4nB,EAAQxnB,WAAYwnB,EAAQvnB,aAC/CunB,EAAQtnB,aAAcsnB,EAAQrnB,oBAGtC,IAAIunB,EAnCR,SAAkBF,EAASO,EAAOxhB,GAC9B,IAAIyhB,EAAYD,EAAMxhB,GAMtB,GAJyB,iBAAdyhB,IACPA,EAAYD,EAAMC,KAGjBA,EACD,MAAM,IAAI7uB,MAAM,aAAeoN,EAAW,qEAG9C,IAAK,IAAIjU,EAAM01B,EAAUv3B,OAAS,EAAG6B,GAAO,EAAGA,IAAO,CAClD,IAAI21B,EAAQD,EAAU11B,GAAK,GAE3B,GAAI21B,GAAST,EAAUS,EACnB,KAER,CAEA,IAAIP,EAAOM,EAAU11B,EAAM,GAE3B,IAAKo1B,EACD,MAAM,IAAIvuB,MAAM,aAAeoN,EAAW,kBAAoBihB,EAAU,KAG5E,OAAOE,CACX,CASeQ,CAASV,EAASO,EAAOxhB,GAEpC,MAAO,CACHmhB,KAAMA,EACNV,KAAMO,EAASC,EAASC,EAAOC,EAAK,IAE5C,CAqEA,MAAO,CACJK,MAAO,CAAC,EACRN,MAAO,CAAC,EACRnhB,OAtEH,SAAgBkhB,EAASjhB,GACrB,GAAgB,WAAZA,GAAqC,WAAZA,EACzB,OAAO,EAGX,IAAI4hB,EAAOL,EAAYN,EAAS72B,KAAKo3B,MAAOp3B,KAAK82B,MAAOlhB,GACpDmhB,EAAOS,EAAKT,KACZV,EAAOmB,EAAKnB,KAEhB,OAAO74B,EAAM2X,WAAWkhB,EAAOU,EAAK,GAAKV,EAAK,GAAKU,EAAK,GAC5D,EA6DGlhB,QA3CH,SAAiBhH,EAAM4oB,EAAYC,GAC/B,IACIC,EADAC,EAAeF,SAGRD,GAAcj5B,IACrBi5B,EAAaz3B,KAAK2V,OAAO9G,EAAM4oB,WAGxBC,GAAYl5B,IACnBk5B,EAAW13B,KAAK2V,OAAO9G,EAAM6oB,IAGjC,IAAIG,EAAkBhpB,EAAKY,oBAIvBqoB,GAFJjpB,EAAO,IAAI3I,KAAK2I,EAAK1I,UAAsC,KAAzBsxB,EAAaC,KAEtBjoB,oBAQzB,cANWmoB,GAAgBp5B,IACvBo5B,EAAe53B,KAAK2V,OAAO9G,EAAM+oB,IAGrCD,EAAQG,EAAgBD,GAAoBH,EAAWE,GAEhD,IAAI1xB,KAAK2I,EAAK1I,UAAmB,IAAPwxB,EACrC,EAmBGh3B,MAjBH,SAAekO,EAAM+G,GAClB,OAAO5V,KAAK6V,QAAQhH,EAAMA,EAAKY,oBAAqBmG,EACvD,EAgBG4Z,OAdH,SAAgB3gB,EAAM+G,GACnB,OAAO5V,KAAK6V,QAAQhH,EAAM+G,EAAU/G,EAAKY,oBAC5C,EAaGxD,KA9DH,SAAc4qB,EAASjhB,GACnB,IAAI4hB,EAAOL,EAAYN,EAAS72B,KAAKo3B,MAAOp3B,KAAK82B,MAAOlhB,GACpDmhB,EAAOS,EAAKT,KACZV,EAAOmB,EAAKnB,KAEZ91B,EAAOw2B,EAAK,GAEhB,OAAIx2B,EAAK4N,QAAQ,MAAQ,EACd5N,EAAKsC,MAAM,KAAKwzB,IAASA,EAAK,GAAK,EAAI,GACvC91B,EAAK4N,QAAQ,OAAS,EACtB5N,EAAKrD,QAAQ,KAAQm5B,GAAmB,KAAXA,EAAK,GAAkBA,EAAK,GAAV,IAGnD91B,CACX,EAiDGw3B,YAZH,SAAqBvB,GACjB,OAAOx2B,KAAKW,MAAM,IAAIuF,KAAKswB,GAAO,UACtC,EAYH,CAnNgB,GAqNjBh5B,EAAMqR,KAAO,WACT,IAAImpB,EAAgB,IAChBC,EAAa,MAEjB,SAAS3iB,EAAUzG,EAAMgG,GACrB,OAAc,IAAVA,GAAmC,KAApBhG,EAAKQ,aACpBR,EAAKwG,SAASxG,EAAKQ,WAAa,IACzB,EAIf,CAEA,SAAS6oB,EAAarpB,EAAM+F,EAAKujB,GAC7B,IAAItjB,EAAQhG,EAAKQ,WAEjB8oB,EAAMA,GAAO,EACbvjB,GAAQA,EAAM/F,EAAKK,SAAa,EAAIipB,GAAQ,EAE5CtpB,EAAKupB,QAAQvpB,EAAKI,UAAY2F,GAC9BU,EAAUzG,EAAMgG,EACpB,CAEA,SAASwjB,EAAUxpB,EAAM+F,EAAKujB,GAG1B,OADAD,EADArpB,EAAO,IAAI3I,KAAK2I,GACG+F,EAAKujB,GACjBtpB,CACX,CAEA,SAASypB,EAAgBzpB,GACrB,OAAO,IAAI3I,KACP2I,EAAKO,cACLP,EAAKM,WACL,EAER,CA8BA,SAASopB,EAAe1pB,EAAM2pB,GAC1B,IAAIC,EAAkB,IAAIvyB,KAAK2I,EAAKO,cAAe,EAAG,GAAI,GAEtDspB,EAXR,SAA6B7pB,EAAM2pB,GAC/B,OAAqB,IAAjBA,EACOG,EAAQN,EAAUxpB,EAAM2pB,GAAe,GAAI,GAG/CG,EAAQ9pB,EAAO,GAAKA,EAAKK,UAAY,GAChD,CAKkB0pB,CAAoB/pB,EAAM2pB,GAEpCK,EAAWH,EAAQvyB,UAAYsyB,EAAgBtyB,UAE/CiG,EAAOpO,KAAKuK,MAAMswB,EAAWZ,GAEjC,OAAO,EAAIj6B,KAAKuK,MAAM6D,EAAO,EACjC,CAuBA,SAAS6C,EAAQJ,GAGb,OADAyG,EADAzG,EAAO,IAAI3I,KAAK2I,EAAKO,cAAeP,EAAKM,WAAYN,EAAKI,UAAW,EAAG,EAAG,GAC3D,GACTJ,CACX,CAQA,SAASW,EAAgBX,GACrB,OAAOiqB,EAAgBjqB,GAAM1I,UAAY8I,EAAQ6pB,EAAgBjqB,GACrE,CA0CA,SAAS8pB,EAAQ9pB,EAAM8G,GACnB,IAAId,EAAQhG,EAAKQ,WAKjB,OAFA0pB,EAFIlqB,EAAO,IAAI3I,KAAK2I,GAEN8G,EAASsiB,GACvB3iB,EAAUzG,EAAMgG,GACThG,CACX,CAEA,SAASkqB,EAAQlqB,EAAMkG,EAAcikB,GACjC,IACIC,EADAtjB,EAAS9G,EAAKY,oBAGlBZ,EAAKkqB,QAAQlqB,EAAK1I,UAAY4O,GAEzBikB,IACDC,EAAapqB,EAAKY,oBAAsBkG,EACxC9G,EAAKkqB,QAAQlqB,EAAK1I,UAAY8yB,EAAajB,GAEnD,CAQA,SAASkB,IACL,OAAOjqB,EAAQ,IAAI/I,KACvB,CAMA,SAAS4yB,EAAgBjqB,GACrB,IAAIsqB,EAAa,IAAIjzB,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GAM5C,OAJI2I,GACAsqB,EAAW9jB,SAASxG,EAAKQ,WAAYR,EAAKS,aAAcT,EAAKU,aAAcV,EAAKW,mBAG7E2pB,CACX,CAEA,SAASC,EAAQvqB,EAAM8G,GACnB,IAAI0jB,EAAc,IAAInzB,KAAK2I,GAE3B,OAAO,IAAI3I,KAAKmzB,EAAY9jB,YAAY8jB,EAAYjqB,cAAgBuG,GACxE,CAEA,MAAO,CACHL,UAAWA,EACX+iB,UAAWA,EACXH,aAAcA,EACdjpB,QAASA,EACTqqB,cAtEJ,SAAuBhyB,EAAOqH,EAAKyC,GAC/B,IAEImoB,EAFAC,EAAQ7qB,EAAIxI,UACZszB,EAAQroB,EAAIjL,UAShB,OANIqzB,GAASC,IACTA,GAASxB,IAGbsB,EAAUjyB,EAAMnB,YAEEqzB,GAASD,GAAWE,CAC1C,EA2DIC,cAjGJ,SAAuBpyB,EAAOqH,EAAKyC,GAC/B,IAEImoB,EAFAC,EAAQhqB,EAAgBb,GACxB8qB,EAAQjqB,EAAgB4B,GAG5B,OAAK9J,GAASkyB,GAASC,IAInB9qB,GAAOyC,IACPA,GAAO6mB,GAKPuB,GAFJD,EAAU/pB,EAAgBlI,MAGtBiyB,GAAWtB,GAGXwB,EAAQD,IACRC,GAASxB,GAGNsB,GAAWC,GAASD,GAAWE,EAC1C,EA0EIE,QA3BJ,SAAiB9qB,GACd,OAAOI,EAAQJ,GAAM1I,WAAa+yB,IAAQ/yB,SAC7C,EA0BIyzB,QAAS,SAAS/qB,GACd,OAAO8pB,EAAQ9pB,EAAM,EACzB,EACAgrB,YAAa,SAAShrB,GAClB,OAAO8pB,EAAQ9pB,GAAO,EAC1B,EACAirB,UAnHJ,SAAmBjrB,GACf,OAAO3I,KAAKsN,IAAI3E,EAAKO,cAAeP,EAAKM,WAC7BN,EAAKI,UAAWJ,EAAKQ,WAAYR,EAAKS,aACtCT,EAAKU,aAAcV,EAAKW,kBACxC,EAgHIyoB,WAAYA,EACZ8B,YAAa,GAAK/B,EAClBA,cAAeA,EACfe,QAASA,EACT1jB,SAjDJ,SAAkBxG,EAAM2nB,GAGpB,OADAlhB,EADAzG,EAAO,IAAI3I,KAAK2I,EAAKO,cAAeP,EAAKM,WAAYN,EAAKI,UAAWunB,EAAKnnB,WAAYmnB,EAAKlnB,aAAcknB,EAAKjnB,aAAcinB,EAAKhnB,mBACjHgnB,EAAKnnB,YACdR,CACX,EA8CI8pB,QAASA,EACTO,MAAOA,EACPJ,gBAAiBA,EACjBR,gBAAiBA,EACjB0B,eAhMJ,SAAwBnrB,GACpB,IAAIorB,EAAO,IAAI/zB,KAAK2I,EAAKO,cAAeP,EAAKM,WAAa,EAAG,GACzDjN,EAAQo2B,EAAgBzpB,GACxBqrB,EAAal8B,KAAK0R,IAAIuqB,EAAKxqB,oBAAsBvN,EAAMuN,qBAM3D,OAJIyqB,GACAD,EAAK5kB,SAASnT,EAAMmN,WAAc6qB,EAAa,IAG5CD,CACX,EAuLIE,WAzJJ,SAAoBtrB,EAAM2pB,GAClBA,IAAiBl7B,IACjBk7B,EAAeh7B,EAAM+N,UAAUqC,SAASH,UAG5C,IAAI2sB,EAAezB,EAAQ9pB,GAAO,GAC9BwrB,EAAe1B,EAAQ9pB,EAAM,GAE7ByrB,EAAa/B,EAAe1pB,EAAM2pB,GAEtC,OAAmB,IAAf8B,EACO/B,EAAe6B,EAAc5B,GAAgB,EAGrC,KAAf8B,GAAqB/B,EAAe8B,EAAc7B,GAAgB,EAC3D,EAGJ8B,CACX,EAuII9qB,gBAAiBA,EACjB+qB,eAvLJ,SAAwB1rB,GACpB,OAAO,IAAI3I,KAAK2I,EAAKO,cAAe,EAAG,EAC3C,EAsLIorB,cApLJ,SAAuB3rB,GACnB,OAAO,IAAI3I,KAAK2I,EAAKO,cAAe,GAAI,GAC5C,EAmLIqrB,SAAU,SAAS5rB,GACf,OAAOuqB,EAAQvqB,EAAM,EACzB,EACA6rB,aAAc,SAAS7rB,GACnB,OAAOuqB,EAAQvqB,GAAO,EAC1B,EAEP,CAjPY,GAoPbrR,EAAMm9B,gBAAkB,SAAS72B,GAC7B,GAAIqD,SAASyzB,mBAKT,IAJA,IAAIC,EAAW1zB,SAASyzB,mBAAmB92B,EAASg3B,WAAWC,WAAW,SAASC,GAC3E,OAAOA,EAAKxc,YAAc1a,EAAUg3B,WAAWG,cAAgBH,WAAWI,aAC9E,IAAG,GAEAL,EAASM,YACRN,EAASO,gBAAkBP,EAASO,cAAcC,YAAYC,QAC9DT,EAASO,cAAc5c,WAAWxH,YAAY6jB,EAASO,oBAI/D,IAAK,IAAIv7B,EAAI,EAAGA,EAAIiE,EAAQy3B,WAAWz7B,OAAQD,IAAK,CAChD,IAAI27B,EAAQ13B,EAAQy3B,WAAW17B,GAET,GAAlB27B,EAAMrN,UAAkB,KAAKvpB,KAAK42B,EAAMC,aACxC33B,EAAQkT,YAAYwkB,GACpB37B,KAGkB,GAAlB27B,EAAMrN,UACN3wB,EAAMm9B,gBAAgBa,EAE9B,CAER,EAEA,IAAIE,GAAiBr+B,EAAOs+B,uBACNt+B,EAAOu+B,6BACPv+B,EAAOw+B,0BACPx+B,EAAOy+B,wBACPz+B,EAAO0+B,yBACP,SAASja,GAAYsP,WAAWtP,EAAU,IAAO,GAAK,EAE5EtkB,EAAMk+B,eAAiB,SAAS5Z,GAC5B4Z,GAAel5B,KAAKnF,EAAQykB,EAChC,EAEA,IAAIka,GAAiB,GAErBx+B,EAAMy+B,eAAiB,SAASna,GAC5Bka,GAAeA,GAAel8B,QAAUgiB,EACV,IAA1Bka,GAAel8B,QACftC,EAAM0+B,kBAEd,EAEA1+B,EAAM0+B,iBAAmB,WACrB1+B,EAAMk+B,gBAAe,WACbM,GAAe,KACfA,GAAe3tB,OAAf2tB,GACIA,GAAe,IACfx+B,EAAM0+B,mBAGlB,GACJ,EAEA1+B,EAAM2+B,uBAAyB,SAAShV,GAOpC,IANA,IACIiV,EAAS,CAAC,EACVC,GAFclV,EAAItkB,MAAM,KAAK,IAAM,IAEVA,MAAM,OAC/B/C,EAASu8B,EAAWv8B,OACpB6B,EAAM,EAEHA,EAAM7B,EAAQ6B,GAAO,EACA,KAApB06B,EAAW16B,KACXy6B,EAAOxV,mBAAmByV,EAAW16B,KAASilB,mBAAmByV,EAAW16B,EAAM,KAI1F,OAAOy6B,CACX,EAEA5+B,EAAM8+B,mBAAqB,SAASj6B,GAChC,QAAyB,IAAdA,EAAEk6B,EAAEC,OACX,OAAOr1B,SAASwa,iBAAiBtf,EAAEk6B,EAAEC,OAAQn6B,EAAEkL,EAAEivB,OAEzD,EAEAh/B,EAAMi/B,YAAc,SAASC,GACzB,IAEIC,EAFAt6B,EAAIq6B,EAAYjb,cAChBmb,EAASv6B,EAAEo6B,YAWf,OARQp6B,EAAEw6B,YACED,IAAWt/B,GAAes/B,KAC1BD,EAAQt6B,EAAEw6B,YAEPx6B,EAAEy6B,QAAUz6B,EAAE06B,OAAS16B,EAAE26B,gBAChCL,EAAsB,IAAZt6B,EAAEy6B,QAGbH,CACX,EAEAn/B,EAAMy/B,SAAW,SAAS38B,EAAI48B,GAC1B,IAAIC,EACAC,EAAe,EAEnB,IAAKF,GAASA,GAAS,EACnB,OAAO58B,EAGX,IAAI+8B,EAAY,WACZ,IAAI78B,EAAOR,KACPs9B,GAAW,IAAIp3B,KAASk3B,EACxBxN,EAAOhwB,UAEX,SAASiR,IACLvQ,EAAGK,MAAMH,EAAMovB,GACfwN,GAAgB,IAAIl3B,IACxB,CAGA,IAAKk3B,EACD,OAAOvsB,IAGPssB,GACAnK,aAAamK,GAGbG,EAAUJ,EACVrsB,IAEAssB,EAAU/L,WAAWvgB,EAAMqsB,EAAQI,EAE3C,EAMA,OAJAD,EAAUhK,OAAS,WACfL,aAAamK,EACjB,EAEOE,CACX,EAGA7/B,EAAM+/B,MAAQ,SAASz5B,EAASgK,EAAOlK,GACnC,IAAI45B,EACAC,EAAa3vB,IAAUxQ,EAU3B,GARIsG,IAAQtG,IACRsG,EAAMkK,GAGNhK,EAAQ,KACRA,EAAUA,EAAQ,KAGlB25B,IAAc35B,EAAQquB,SAA1B,CAIA,IACI,GAAIruB,EAAQ45B,iBAAmBpgC,EAC3B,GAAImgC,EAAY,CACZ35B,EAAQ65B,QACR,IAAIhb,EAASzkB,EAAQod,SACjBqH,EAAO5J,IAAM4J,EAAO1J,QACpBmY,YAAW,WAAattB,EAAQ85B,kBAAkB9vB,EAAOlK,EAAM,GAAG,GAGlEE,EAAQ85B,kBAAkB9vB,EAAOlK,EAEzC,MACIkK,EAAQ,CAAChK,EAAQ45B,eAAgB55B,EAAQ+5B,mBAE1C,GAAI12B,SAAS22B,UAOhB,GANI1gC,EAAE0G,GAASU,GAAG,aACdV,EAAQ65B,QAGZH,EAAe15B,EAAQi6B,kBAEnBN,EACAD,EAAaQ,UAAS,GACtBR,EAAaS,UAAU,YAAanwB,GACpC0vB,EAAaU,QAAQ,YAAat6B,EAAMkK,GACxC0vB,EAAaW,aACV,CACH,IACIT,EAAgBG,EADhBO,EAAkBZ,EAAaa,YAG/Bb,EAAac,eAAen3B,SAAS22B,UAAUS,cAAcC,eAC7DJ,EAAgBK,YAAY,aAAcjB,GAE1CK,GADAH,EAAiBU,EAAgBM,KAAK5+B,QACN09B,EAAakB,KAAK5+B,OAEtDgO,EAAQ,CAAC4vB,EAAgBG,EAC7B,CAER,CAAE,MAAOx7B,GAELyL,EAAQ,EACZ,CAEA,OAAOA,CA7CP,CA8CJ,EAEAtQ,EAAMmhC,uBAAyB,SAAS76B,EAAS86B,GAC7C,IAAIzV,EAAU9rB,EAAO8rB,QAYrB,OAVArlB,EAAQ6X,KAAK,QAAUne,EAAM8mB,GAAK,OAAQxgB,EAAQ,GAAG0kB,QAAQ1X,cAAc5T,QAAQ,gBAAiB,IAAIA,QAAQ,IAAK,KAErHisB,EAAQrlB,QAAQA,GAAS+6B,WAAWC,OAAO,CAAC,WAAY,SAASC,GAC7DA,EAASj7B,EAATi7B,CAAkBH,GAEb,qBAAqBh6B,KAAKg6B,EAAMI,UACjCJ,EAAMK,SAEd,IAEOzhC,EAAMqxB,eAAe/qB,EAAStG,EAAMmlB,OAAOF,GACtD,EAEAjlB,EAAM0hC,kBAAoB,WACtB,IAAIC,EAAS,CAAE,EACXC,EAAahiC,EAAE,0CAA0Cue,KAAK,WAC9D0jB,EAAajiC,EAAE,iDAAiDue,KAAK,WAUzE,OARAve,EAAE,6CAA6CO,MAAK,WAChDwhC,EAAOn/B,KAAKnD,MAAQmD,KAAKsH,KAC7B,IAEI+3B,IAAe/hC,GAAe8hC,IAAe9hC,IAC/C6hC,EAAOE,GAAcD,GAGhBD,CACX,EAEA3hC,EAAM8hC,UAAY,SAASC,GACvB,IAAIC,EAAeD,EAAK/Q,KAAK,kDAAkDtsB,QAC3Eu9B,EAAcF,EAAK/Q,KAAK,qBAAqByL,OAEjD,SAAS0D,EAAMhY,GACX,IAAI6F,EAAShuB,EAAMqxB,eAAelJ,GAE9B6F,GAAUA,EAAOmS,MACnBnS,EAAOmS,QAEPhY,EAAGvjB,QAAQ,QAEjB,CAEAq9B,EAAY1d,GAAG,WAAW,SAAS1f,GAC7BA,EAAEq9B,SAAWliC,EAAMwlB,KAAKI,KAAQ/gB,EAAEs9B,WACpCt9B,EAAEnB,iBACFy8B,EAAM6B,GAEV,IAEAA,EAAazd,GAAG,WAAW,SAAS1f,GAC9BA,EAAEq9B,SAAWliC,EAAMwlB,KAAKI,KAAO/gB,EAAEs9B,WACnCt9B,EAAEnB,iBACFy8B,EAAM8B,GAEV,GACJ,EAEAjiC,EAAMoiC,aAAe,SAAS97B,GAC1B,IAAI+7B,EAAqB,GACrBC,EAAoBh8B,EAAQi8B,aAAa,QACpCrR,QAAO,SAASnd,EAAOzN,GAEpB,MAAkC,YADdtG,EAAMuJ,kBAAkBjD,EAAS,CAAC,aACjC2hB,QACzB,IACCY,IAAIhpB,GAEbyiC,EAAkBniC,MAAK,SAAS4T,EAAOlN,GACnCw7B,EAAmBtuB,GAASnU,EAAEiH,GAAQ+qB,WAC1C,IAEA,IAEItrB,EAAQ,GAAGk8B,WACf,CAAE,MAAO39B,GACLyB,EAAQ,GAAG65B,OACf,CAEAmC,EAAkBniC,MAAK,SAAS4T,EAAOlN,GACnCjH,EAAEiH,GAAQ+qB,UAAUyQ,EAAmBtuB,GAC3C,GACJ,EAEA/T,EAAMyiC,iBAAmB,WACrB,GAAI94B,SAASyK,cAAe,CACxB,IAAIsuB,EAAa9iC,EAAE,mBACfmU,EAAQ2uB,EAAW3uB,MAAMpK,SAASyK,eAElCL,GAAS,IACQ2uB,EAAW3uB,EAAQ,IAAM2uB,EAAW,IAC1CvC,OAEnB,CACJ,EAEAngC,EAAM89B,KAAO,SAASh0B,GAClB,OAAMA,EACKA,EAAMyB,WAAWuyB,OAEjB,EAEf,EAEA99B,EAAM2iC,0BAA4B,SAASr8B,GACvC,IAAIs8B,EAAgBt8B,EAAQoT,QAAQ,mBAChC2X,EAAiBrxB,EAAMqxB,eAAe/qB,GAa1C,OAVIs8B,EAActgC,OACLsgC,EACFvR,EACkC,WAAhCA,EAAepvB,QAAQ5C,KAC5BO,EAAEyxB,EAAejY,MACjBiY,EAAezqB,QAAQoqB,KAAK,mBAAmBtsB,QAE1C4B,CAIjB,EAEAtG,EAAM6iC,aAAe,SAASv8B,EAASw8B,EAAWh5B,GAC9C,IAAIoE,EAAU5H,EAAQ6X,KAAK2kB,IAAc,GAErC50B,EAAQyC,QAAQ7G,GAAS,GACzBxD,EAAQ6X,KAAK2kB,GAAY50B,EAAU,IAAMpE,GAAOg0B,OAExD,EAEA99B,EAAM+iC,gBAAkB,SAASz8B,EAASw8B,EAAWh5B,GACjD,IAAIoE,EAAU5H,EAAQ6X,KAAK2kB,IAAc,GAEzCx8B,EAAQ6X,KAAK2kB,EAAW50B,EAAQxO,QAAQoK,EAAO,IAAIg0B,OACvD,EAEA99B,EAAMgjC,gBAAkB,SAAS18B,EAASw8B,EAAWh5B,IACnCxD,EAAQ6X,KAAK2kB,IAAc,IAE7BnyB,QAAQ7G,GAAS,EACzB9J,EAAM6iC,aAAav8B,EAASw8B,EAAWh5B,GAEvC9J,EAAM+iC,gBAAgBz8B,EAASw8B,EAAWh5B,EAElD,EAEA9J,EAAMijC,aAAe,SAASC,GAC1B,IAAIC,EAAQnjC,EAAMojC,kBAAkBF,IAAeA,EACnD,OAAOxiC,EAAQugB,YAAcphB,EAAOohB,WAAWkiB,GAAOltB,OAC1D,EAEAjW,EAAMojC,kBAAoB,SAASC,GAC/B,MAAO,CACH,GAAM,qBACN,GAAM,qBACN,GAAM,qBACN,GAAM,qBACN,GAAM,uBACRA,EACN,EAEArjC,EAAMsjC,aAAe,CACjBC,MAAO,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACxGC,MAAO,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAChG,MAAO,OAAQ,OAAQ,QAC/BC,MAAO,CAAC,MAAO,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACxF,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,QAAS,OAAQ,SAChEC,IAAK,CAAC,OAAQ,QAAS,OAAQ,SAAU,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,QAClGC,aAAc,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,SAC/Cx7B,KAAM,CAAC,OAAQ,OAAQ,SACvBy7B,YAAa,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,QACzF,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,MAC1F,OAAQ,OAAQ,UAC9BC,IAAK,CAAC,QACNC,OAAQ,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAAW,OAAQ,QAC5EC,IAAK,CAAC,MAAO,OAAQ,MAAO,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAAW,KAAM,OAAQ,SACtG,aAAc,CAAC,OAAQ,OAAQ,SAAU,OAAQ,OAAQ,OAAQ,SAGrE/jC,EAAMgkC,aAAe,SAASC,EAAWC,GACrC,IAAIC,EAAcnkC,EAAMsjC,aACpBc,EAAS9gC,OAAOkiB,KAAK2e,GACrBh4B,EAAO,OAEX,GAAI83B,IAAcnkC,IAAgBmkC,EAAU3hC,OACxC,OAAO6J,EAGX,IAAK,IAAI9J,EAAI,EAAGA,EAAI+hC,EAAO9hC,OAAQD,GAAK,EAGpC,GAFiB8hC,EAAYC,EAAO/hC,IAErBsO,QAAQszB,EAAU3wB,gBAAkB,EAChD,OAAO4wB,EAAa,QAAUE,EAAO/hC,GAAK+hC,EAAO/hC,GAIxD,OAAO8J,CACX,EAEAnM,EAAMqkC,mBAAqB,SAASp6B,GAGhC,GAAa,IAATA,EACA,MAAO,SAGX,IAAI5H,EAAI4R,SAASzT,KAAKuK,MAAMvK,KAAK+qB,IAAIthB,GAAQzJ,KAAK+qB,IAAI,OAAQ,IAC9D,OAAO/qB,KAAKuQ,MAAM9G,EAAOzJ,KAAK8jC,IAAI,KAAMjiC,GAAI,GAAK,IAPrC,CAAC,QAAS,KAAM,KAAM,KAAM,MAOqBA,EACjE,EAEArC,EAAMukC,oBAAsB,SAASlhB,GACjC,MAAO,IAAMA,EAAQhe,MAAM,KAAKC,KAAK,IACzC,EAIA,IAAIk/B,GAAmB,CAAC,OAAQ,UAAW,YAAa,WAAY,UAAW,OAAQ,UAAW,UAAW,QAAS,OAAQ,QAAS,WACnIC,GAAa,CAAC,QAAS,UAAW,QAElCC,GAAc,CAAC,YAAa,UAC5BC,GAAa,CAAE,CAAC,QAAS,MAAO,CAAC,SAAU,MAAO,CAAC,QAAS,OAC5DC,GAAgB,CAAE,CAAC,QAAS,MAAO,CAAC,SAAU,MAAO,CAAC,QAAS,OAE/DC,GAAqB,CAAE,QAAS,SAAU,SAAU,YACpDC,GAAe,CAAE,OAAQ,aAAc,YACvCC,GAAiB,CAAE,OAAQ,SAAU,UAAW,SAAU,QAE9D/kC,EAAM4tB,cAAiB,WACnB,IAAIoX,EAAgB,CAAC,EAuCrB,SAASC,EAAiBhX,EAAUnkB,EAAOo7B,GAClCF,EAAc/W,KACf+W,EAAc/W,GAAY,CAAC,GAG/B+W,EAAc/W,GAAUnkB,GAASo7B,GAAap7B,CAClD,CAEA,SAASq7B,EAAmBlX,EAAUmX,GAClC,IAAK,IAAI/iC,EAAI,EAAGA,EAAI+iC,EAAI9iC,OAAQD,IACxBjC,EAAQglC,EAAI/iC,IACZ4iC,EAAiBhX,EAAUmX,EAAI/iC,GAAG,GAAI+iC,EAAI/iC,GAAG,IAE7C4iC,EAAiBhX,EAAUmX,EAAI/iC,GAG3C,CAiDA,OATA8iC,EAAmB,aAAcX,IACjCW,EAAmB,WAAYV,IAC/BU,EAAmB,QAAST,IAC5BS,EAAmB,OAAQR,IAC3BQ,EAAmB,eAAgBN,IACnCM,EAAmB,UAAWP,IAC9BO,EAAmB,SAAUL,IAC7BK,EAAmB,WAAYJ,IAExB,CACHF,mBAAoBA,GACpBD,cAAeA,GACfD,WAAYA,GACZD,YAAaA,GACbW,eAAgBZ,GAChBD,iBAAkBA,GAElBQ,cAAeA,EACfnX,mBAhHqB,CAAC,EAkHtByX,eAtGJ,SAAwBtX,EAAQoE,GAC5B,IACI/vB,EAAGkjC,EAAGhY,EAAMzZ,EAAQ0xB,EAAWC,EAD/BC,EAAO1lC,EAAM4tB,cAAcC,mBAG/B,IAAKxrB,EAAI,EAAGA,EAAI+vB,EAAK9vB,OAAQD,IAUzB,IATAkrB,EAAO6E,EAAK/vB,GAAGkrB,KACfiY,EAAYpT,EAAK/vB,GAAGyR,OAEf4xB,EAAK1X,GAAQT,KACdmY,EAAK1X,GAAQT,GAAQ,CAAC,GAG1BzZ,EAAS4xB,EAAK1X,GAAQT,GAEjBgY,EAAI,EAAGA,EAAIC,EAAUljC,OAAQijC,IAC9BE,EAAeD,EAAUD,GAErBnlC,EAAQolC,EAAUD,IAClBzxB,EAAO2xB,EAAa,IAAMA,EAAa,GAEvC3xB,EAAO2xB,GAAgBA,CAIvC,EA+EI1X,cA3DJ,SAAuBqE,GACnB,IAOIuT,EAAcC,EAPd5X,EAASoE,EAAKpE,OACdC,EAAWmE,EAAKnE,SAChBnkB,EAAQsoB,EAAKtoB,MACbqkB,EAAOiE,EAAKjE,KACZP,EAAgB5tB,EAAM4tB,cACtBoX,EAAgBpX,EAAcoX,cAAc/W,GAC5C4X,EAAmBjY,EAAcC,mBAAmBG,GAGxD,OAAK6X,IAKLD,GADAD,EAAeE,EAAiB5X,KACJ0X,EAAa77B,IAAiCk7B,EAAcl7B,KAGnE,eAAbmkB,EACS4X,EAAiBvkC,GAAU6sB,EAAO,IACvB,iBAAbF,EACE,SACW,YAAbA,EACE,aACW,WAAbA,EACE,YACW,aAAbA,EACE,cAEA4X,EAAiBvkC,IAGdskC,EArBT,EAyBf,EAwBIE,eAlHJ,SAAwB9X,EAAQ3T,GAC5B,IAAIqrB,EAAO1lC,EAAM4tB,cAAcC,mBAE1B6X,EAAK1X,KACN0X,EAAK1X,GAAU,CAAC,GAGpB0X,EAAK1X,GAAQ1sB,GAAU+Y,CAC3B,EA4GJ,CAxHsB,GA2HtBra,EAAMilC,iBAAmB,SAAShX,EAAUnkB,EAAOo7B,GAC1CllC,EAAM+lC,sBAAsB9X,KAC7BjuB,EAAM+lC,sBAAsB9X,GAAY,CAAC,GAG7CjuB,EAAM+lC,sBAAsB9X,GAAUnkB,GAASo7B,GAAap7B,CAChE,EAEA9J,EAAMmlC,mBAAqB,SAASlX,EAAUmX,GAC1C,IAAK,IAAI/iC,EAAI,EAAGA,EAAI+iC,EAAI9iC,OAAQD,IACxBjC,EAAQglC,EAAI/iC,IACZrC,EAAMilC,iBAAiBhX,EAAUmX,EAAI/iC,GAAG,GAAI+iC,EAAI/iC,GAAG,IAEnDrC,EAAMilC,iBAAiBhX,EAAUmX,EAAI/iC,GAGjD,EAEArC,EAAMgmC,iBAAmB,SAAS3rB,EAAQ4T,EAAUnkB,GAChD,IAAI87B,EAAa5lC,EAAM+lC,sBAAsB9X,GAAUnkB,GAEvD,GAAI87B,EACA,OAAOvrB,EAASurB,CAExB,EAEA5lC,EAAM+lC,sBAAwB,CAAC,EAE/B/lC,EAAMmlC,mBAAmB,aAAcX,IACvCxkC,EAAMmlC,mBAAmB,OAAQV,IAEjCzkC,EAAMmlC,mBAAmB,QAAST,IAClC1kC,EAAMmlC,mBAAmB,OAAQR,IAEjC3kC,EAAMmlC,mBAAmB,eAAgBN,IAKzC7kC,EAAMimC,QAAU,SAASzwB,GACrB,IASI1L,EATAo8B,EAAoC,GAApB9jC,UAAUE,QAAejC,MAAMD,QAAQoV,GAASA,EAAQnV,MAAM+C,UAAUzB,MAAMqD,KAAK5C,WACnGE,EAAS4jC,EAAc5jC,OACvB6jC,EAAY7jC,EACZ8jC,EAAWxmC,EAAEymC,WACbhkC,EAAI,EACJikC,EAAS,EACTC,EAAiBlmC,MAAMiC,GACvBkkC,EAAenmC,MAAMiC,GACrBmkC,EAAkBpmC,MAAMiC,GAG5B,SAASokC,EAAW3yB,EAAO4yB,EAAU7yB,GACjC,OAAO,WACCA,GAAUoyB,GACVI,IAGJF,EAASQ,WACLD,EAAS5yB,GAASvR,KAClBsR,EAAOC,GAAS1T,MAAM+C,UAAUzB,MAAMqD,KAAK5C,cAGvC+jC,GACJC,GAAWE,EAAqB,SAAZ,WAAwB,QAAQK,EAAU7yB,EAEtE,CACJ,CAEA,KAAOzR,EAAIC,EAAQD,KACVyH,EAAQo8B,EAAc7jC,KAAOrC,EAAMyD,WAAWqG,EAAMyY,SACrDzY,EAAMyY,UACDskB,KAAKH,EAAWrkC,EAAGokC,EAAiBP,IACpCY,KAAKJ,EAAWrkC,EAAGkkC,EAAgBC,KAIxCJ,EAASQ,WAAWpkC,KAAMsH,KACxBq8B,GAQV,OAJKA,GACDC,EAASW,YAAYN,EAAiBP,GAGnCE,EAAS7jB,SACpB,EAGA,WACI,SAASykB,EAAYC,EAASC,EAAUC,EAAUC,GAC9C,IAAIrF,EAAOniC,EAAE,UAAUue,KAAK,CACxBkpB,OAAQF,EACR9U,OAAQ,OACRlwB,OAAQilC,IAGRj/B,EAAOnI,EAAM0hC,oBACjBv5B,EAAK++B,SAAWA,EAEhB,IAAI18B,EAAQy8B,EAAQ5hC,MAAM,YAI1B,IAAK,IAAIhG,KAHT8I,EAAKm/B,YAAc98B,EAAM,GAAG9K,QAAQ,QAAS,IAC7CyI,EAAKo/B,OAAS/8B,EAAM,GAEHrC,EACTA,EAAKc,eAAe5J,IACpBO,EAAE,WAAWue,KAAK,CACdrU,MAAO3B,EAAK9I,GACZA,KAAMA,EACN8M,KAAM,WACPq7B,SAASzF,GAIpBA,EAAKyF,SAAS,QAAQC,SAASzV,QACnC,CAEA,IAAI0V,EAAY/9B,SAASsP,cAAc,KACnC0uB,EAAoB,aAAcD,IAAc1nC,EAAMU,QAAQyc,QAAQmB,KAE1E,SAASspB,EAAWX,EAASC,GACzB,IAAIW,EAAOZ,EAEX,GAAsB,iBAAXA,EAAqB,CAM5B,IALA,IAAIz8B,EAAQy8B,EAAQ5hC,MAAM,YACtBiiC,EAAc98B,EAAM,GACpB+8B,EAASO,KAAKt9B,EAAM,IACpBgL,EAAQ,IAAIuyB,WAAWR,EAAOjlC,QAEzB6B,EAAM,EAAGA,EAAMojC,EAAOjlC,OAAQ6B,IACnCqR,EAAMrR,GAAOojC,EAAO17B,WAAW1H,GAEnC0jC,EAAO,IAAIG,KAAK,CAACxyB,EAAMyyB,QAAS,CAAE97B,KAAMm7B,GAC5C,CAEArqB,UAAUirB,WAAWL,EAAMX,EAC/B,CAEA,SAASiB,EAAclB,EAASC,GACxBrnC,EAAOmoC,MAAQf,aAAmBe,OAClCf,EAAUmB,IAAIC,gBAAgBpB,IAGlCS,EAAUY,SAAWpB,EACrBQ,EAAU9S,KAAOqS,EAEjB,IAAIpiC,EAAI8E,SAAS4+B,YAAY,eAC7B1jC,EAAE2jC,eAAe,SAAS,GAAM,EAAO3oC,EACnC,EAAG,EAAG,EAAG,EAAG,GAAG,GAAO,GAAO,GAAO,EAAO,EAAG,MAElD6nC,EAAUe,cAAc5jC,GACxB+uB,YAAW,WACPwU,IAAIM,gBAAgBzB,EACxB,GACJ,CAEAjnC,EAAM2oC,OAAS,SAAS1mC,GACpB,IAAI2mC,EAAO5B,EAEN/kC,EAAQ4mC,aACLlB,EACAiB,EAAOT,EACAlrB,UAAUirB,aACjBU,EAAOhB,IAIfgB,EAAK3mC,EAAQglC,QAAShlC,EAAQilC,SAAUjlC,EAAQklC,SAAUllC,EAAQmlC,YACtE,CACH,CAhFD,GAmFApnC,EAAM8oC,kBAAoB,SAA2B3gC,GACjD,IAAI4gC,EAAa,CAAC,EAclB,OAZAzlC,OAAOkiB,KAAKrd,GAAQ,CAAC,GAAG6gC,SAAQ,SAASnhC,GACvCvE,OAAO2lC,eAAeF,EAAYlhC,EAAU,CAC1CuiB,IAAK,WACH,OAAOjiB,EAAKN,EACd,EACAwiB,IAAK,SAASvgB,GACZ3B,EAAKN,GAAYiC,EACjB3B,EAAK+gC,OAAQ,CACf,GAEJ,IAEOH,CACX,EAEA/oC,EAAMmpC,gBAAkB,WACpB,IAMIC,EAASxpC,EANc,sNAOvBypC,EAAS,GAUb,OARAD,EAAO5B,SAAS5nC,EAAE,SAElBwpC,EAAOjpC,MAAK,SAASkC,EAAGinC,GACpBD,EAAO5kC,KAAK7E,EAAE0pC,GAAMriC,IAAI,oBAC5B,IAEAmiC,EAAOpX,SAEAqX,CACX,EAEArpC,EAAMupC,UAAY,SAASjjC,GACvB,OAAOA,aAAmBmc,SAAWnc,aAAmBkjC,YAC5D,EAKIxpC,EAAMgsB,SAAWhsB,EAAMgsB,UAAY,CAAC,EACpChsB,EAAMypC,YAAc,SAAS39B,EAAKhC,GAC9B,IAAI4/B,EAAO59B,EAAIzG,MAAM,KACjBskC,EAAO3pC,EAAMgsB,SAEjBlgB,EAAM49B,EAAKtS,MAEXsS,EAAKV,SAAQ,SAAS7jC,GACdwkC,EAAKxkC,KAAUrF,IACf6pC,EAAKxkC,GAAQ,CAAC,GAGlBwkC,EAAOA,EAAKxkC,EAChB,IAEI2E,EAAMzG,cAAgBC,OACtBqmC,EAAK79B,GAAOtI,EAAW,CAAC,EAAGmmC,EAAK79B,GAAMhC,GAEtC6/B,EAAK79B,GAAOhC,CAEpB,EAMA9J,EAAM4pC,WAAa,CAAC,EAEpBnnC,OAAOtC,KAAM,uEAAuEkF,MAAO,MACvF,SAAUwkC,EAAIxqC,GACVW,EAAM4pC,WAAY,WAAavqC,EAAO,KAAQA,EAAKiU,aACvD,IAEJtT,EAAMmM,KAAO,SAASmc,GAClB,OAAY,MAAPA,EACMA,EAAM,GAIK,iBAARA,GAAmC,mBAARA,EACrCtoB,EAAM4pC,WAAWtmC,OAAOF,UAAUmI,SAASvG,KAAKsjB,KAAS,gBAClDA,CACf,EAGJ,IAA2xCwhB,GAAUC,GAAjyCC,GAAQ,CAAC,WAAW,WAAW,+DAA+D,WAAW,WAAW,WAAW,eAAe,WAAW,WAAW,WAAW,WAAW,WAAW,eAAe,WAAW,WAAW,WAAW,OAAO,eAAe,mCAAmC,WAAW,mBAAmB,WAAW,2CAA2C,uBAAuB,WAAW,mBAAmB,WAAW,WAAW,WAAW,WAAW,WAAW,uBAAuB,WAAW,eAAe,WAAW,mBAAmB,WAAW,WAAW,WAAW,WAAW,eAAe,OAAO,eAAe,+BAA+B,mBAAmB,WAAW,eAAe,WAAW,eAAe,WAAW,WAAW,WAAW,WAAW,eAAe,WAAW,WAAW,WAAW,WAAW,mBAAmB,OAAO,WAAW,WAAW,WAAW,WAAW,mCAAmC,eAAe,2BAA2B,mBAAmB,+CAA+C,WAAW,WAAW,uBAAuB,WAAW,WAAW,WAAW,WAAW,mBAAmB,eAAe,WAAW,WAAW,mBAAmB,WAAW,OAAO,WAAW,4BAAsCF,GAA8IE,GAApID,GAA4I,IAAnH,SAASE,GAAW,OAAQA,GAAWH,GAAgB,KAAEA,GAAiB,QAAM,CAAEI,GAAYH,IAA6B,IAAII,GAAQ,SAASL,EAAUC,GAAmC,IAAIG,EAAUF,GAAtCF,GAAoB,QAA4DM,IAApBD,GAAgB,SAA4gBA,GAAgB,OAAE,SAASE,GAA+D,IAApD,IAAIC,EAAzhB,SAASC,GAA+J,IAApJ,IAA0KC,EAAUC,EAAlGC,EAAUn+B,OAAOg+B,GAAoB,QAAE,MAAM,IAAQI,EAAU,GAAWC,EAAU,EAAwBC,EAAU,EAAIJ,EAAUC,EAAkB,OAAEG,MAAcJ,IAAYD,EAAUI,EAAU,EAAc,GAAVJ,EAAeC,EAAUA,EAAUG,IAAY,GAAKD,GAAWp+B,OAAqB,aAAE,IAAKi+B,KAAa,EAAII,EAAU,IAAM,EAAKH,EAA/Y,oEAA4a,QAAEA,GAAY,OAAOE,CAAU,CAAsDV,CAAUI,GAAeS,EAAU,GAAWC,EAAU,EAAIC,EAAUV,EAAkB,OAAES,EAAUC,EAAUD,IAAaD,GAAW,KAAK,KAAKR,EAAsB,WAAES,GAAqB,SAAE,KAAc,OAAG,GAAM,OAAO3hB,mBAAmB0hB,EAAW,EAAEX,GAAgB,OAAE,CAAC,EAAEA,GAAgB,QAAE,GAAM,IAAIc,EAAUd,GAAgB,OAAEL,GAAW,YAAmBM,IAAZa,GAAuBf,EAAUC,GAAgB,OAAED,GAAWC,GAAgB,OAAEL,GAAWI,GAAWA,EAAUe,EAAUf,CAAU,EAAMze,GAAe,SAASyf,GAAW,aAAa,IAAIhU,EAAQ,CAAC/uB,KAAK,UAAUgjC,EAAU,IAAIC,IAA67R,SAASC,EAAUC,GAAW,OAAO,IAAI5iC,KAAe,IAAV4iC,EAAiB,CAAC,OAAOJ,EAAUf,GAAQ,QAA7gP,SAAmBoB,GAAW,GAAGpB,GAAQ,SAAUA,GAAQ,cAAyH,GAAGA,GAAQ,SAASA,GAAQ,QAAQ,IAAI,GAAGA,GAAQ,SAAUA,GAAQ,QAAQ,CAAC,IAAIqB,EAAU/qC,EAAK0pC,GAAQ,SAAhyD,SAAkBsB,GAAW,GAAGtB,GAAQ,SAAUA,GAAQ,QAA0E,CAAkB,IAAjB,IAAIuB,EAAU,GAAWC,EAAU,EAAIA,EAAUF,EAAUtB,GAAQ,SAASwB,GAAW,EAAK,GAAGxB,GAAQ,UAAUA,GAAQ,QAAQ,CAAC,IAAIyB,EAAUH,EAAUtB,GAAQ,SAASwB,EAAUA,EAAU,GAAKD,EAAUvB,GAAQ,SAASp9B,OAAOo9B,GAAQ,SAASyB,EAAU,IAAO,CAA4F,IAAIC,EAAU,GAAy/B,OAA1+BH,EAAUvB,GAAQ,SAAQ,SAAS2B,GAAW,GAAG3B,GAAQ,UAAUA,GAAQ,QAAQ,CAAC,IAAI4B,EAAUD,EAAUD,EAAU,OAAOA,EAAUC,EAAUC,CAAU,CAA4e,IAAG5B,GAAQ,SAAQ,SAAS6B,GAAW,GAAG7B,GAAQ,SAAUA,GAAQ,QAA+N,OAAO59B,OAAO49B,GAAQ,QAAQ6B,EAAW,IAAG7B,GAAQ,QAAQ,GAAqB,CAAC,CAAuS8B,CAASV,IAAYW,EAAU,CAAC,SAAWV,EAAU,GAAKrB,GAAQ,SAAQ,SAASgC,GAAW,GAAGhC,GAAQ,SAAUA,GAAQ,QAAQ,CAAC,IAAIiC,EAAUD,EAAU,GAAKE,EAAUF,EAAU,GAAKG,EAAUH,EAAU,GAAK,MAAM,CAAC,KAAOC,EAAU,sBAAwBC,EAAU,MAAQr/B,QAAQs/B,GAAY,CAA8W,IAAG,OAASd,EAAU,GAAK,UAAYA,EAAU,GAAK,WAAY,GAAMtU,EAAQiT,GAAQ,SAAS1pC,EAAK0pC,GAAQ,SAAS+B,EAAW,CAAmE,CAAC,MAAMK,GAAW,CAAqM,EAAssMrB,EAAUf,GAAQ,SAAvtM,SAAmBqC,GAAW,GAAGrC,GAAQ,UAAUA,GAAQ,QAA2d,CAAC,GAAGgB,EAAUhB,GAAQ,SAASqC,EAAUrC,GAAQ,WAAcA,GAAQ,UAAUA,GAAQ,QAAQ,OAAOgB,EAAUhB,GAAQ,SAASqC,EAAUrC,GAAQ,UAAoL,IAA8XsC,EAA1XC,EAAUF,EAAUrC,GAAQ,QAAQ,KAAQqC,EAAUrC,GAAQ,QAAQ,GAAGwC,EAAUH,EAAUrC,GAAQ,SAASuC,EAAUE,EAAUnsC,EAAK0pC,GAAQ,SAASjT,EAAQiT,GAAQ,UAAU0C,GAAWD,EAAUzC,GAAQ,UAAUyC,EAAUzC,GAAQ,SAAS2C,EAAUF,EAAUzC,GAAQ,gBAAgB1e,KAAiB0e,GAAQ,QAAQ4C,EAAy9I,SAAmBC,EAAUC,GAAW,IAAIC,EAAUF,EAAU7C,GAAQ,QAAQ,KAAI+C,GAAYA,EAAU/C,GAAQ,UAAaA,GAAQ,SAASA,GAAQ,SAAgE,OAAO,KAAM,IAAIgD,EAAU,IAAIC,IAAIH,GAAW,OAAOC,EAAU/C,GAAQ,UAAS,SAASkD,GAAW,GAAGlD,GAAQ,SAAUA,GAAQ,QAAkE,OAAOgD,EAAUhD,GAAQ,SAASkD,EAAUlD,GAAQ,SAAU,GAAG,CAA56JmD,CAAUV,EAAUJ,EAAUrC,GAAQ,UAA4lE,GAArkE0C,GAAWC,EAAc3C,GAAQ,SAAUA,GAAQ,UAAgEsC,EAAU,CAAC,KAAO,EAAI,YAAcE,EAAU,QAAUH,EAAUrC,GAAQ,WAAmBA,GAAQ,QAASA,GAAQ,SAAY4C,EAAynB5C,GAAQ,SAAUA,GAAQ,SAAqS4C,EAAS5C,GAAQ,QAAQqC,EAAUrC,GAAQ,WAAaA,GAAQ,UAAUA,GAAQ,UAAyHsC,EAAU,CAAC,KAAO,EAAI,YAAcE,EAAU,YAActB,EAAUmB,EAAUrC,GAAQ,UAAU,WAAakB,EAAU0B,EAAS5C,GAAQ,SAAS,QAAUqC,EAAUrC,GAAQ,YAAryCA,GAAQ,SAAUA,GAAQ,UAAQsC,EAAU,CAAC,KAAO,EAAI,YAAcE,EAAU,QAAUH,EAAUrC,GAAQ,YAA0tDsC,UAAkBphB,UAAU8e,GAAQ,SAAYA,GAAQ,UAAUA,GAAQ,OAAO,CAAC,IAAIoD,EAAUpD,GAAQ,OAAOqC,EAAUrC,GAAQ,SAASqD,SAAiBniB,QAAQ8e,GAAQ,WAAWA,GAAQ,QAAWqD,EAAcrD,GAAQ,UAAUA,GAAQ,QAAO9e,QAAQ8e,GAAQ,SAASoD,GAAuHpD,GAAQ,QAASA,GAAQ,QAAyU9e,QAAQ8e,GAAQ,SAASoD,GAAYliB,QAAQ8e,GAAQ,SAA6d,SAAmBsD,GAAW,GAAGtD,GAAQ,UAAUA,GAAQ,QAAQ,CAAC,IAAIuD,EAAUvD,GAAQ,QAAQsD,EAAUtD,GAAQ,SAAS,KAAuzB,OAAhxB,IAA7BsD,EAAUtD,GAAQ,SAAmBA,GAAQ,SAAUA,GAAQ,UAAuRuD,GAAWvD,GAAQ,QAAQsD,EAAUtD,GAAQ,SAASA,GAAQ,UAAUA,GAAQ,QAAQsD,EAAUtD,GAAQ,SAASA,GAAQ,UAAU,OAA8C,IAA7BsD,EAAUtD,GAAQ,SAAmBA,GAAQ,SAAUA,GAAQ,UAAQuD,GAAWvD,GAAQ,SAAsH,IAA7BsD,EAAUtD,GAAQ,WAAmBA,GAAQ,UAAUA,GAAQ,UAAiDuD,GAAWvD,GAAQ,UAAkBuD,GAAWvD,GAAQ,QAAQsD,EAAUtD,GAAQ,SAASA,GAAQ,QAAkB,CAAmE,CAAliDwD,CAAUlB,IAAee,IAAcrD,GAAQ,UAAUA,GAAQ,SAAmG9e,QAAQ8e,GAAQ,WAAY,CAAuK,IAAIyD,GAAWnB,EAAU,OAAOtB,EAAUhB,GAAQ,SAASqC,EAAUrC,GAAQ,SAASyD,GAAWA,CAAU,CAAC,EAA6rDtqC,OAAO6mC,GAAQ,SAASe,EAAUf,GAAQ,QAAQ,CAAC,OAAQ,IAAOe,CAAU,CAApuS,CAAsuS,CAAC,GAG30XrrC,EAAO4rB,eAAiB,CACpBoiB,aAAcpiB,GAAeoiB,aAOpC,CAplKD,CAolKGprC,OAAQ5C,O","sources":["webpack://konfigurewebclient/./node_modules/@progress/kendo-ui/js/kendo.core.js"],"sourcesContent":["require('jquery');\n\nvar __meta__ = {\n id: \"core\",\n name: \"Core\",\n category: \"framework\",\n description: \"The core of the Kendo framework.\"\n};\n\nvar packageMetadata = {\n name: '@progress/kendo-ui',\n productName: 'Kendo UI',\n productCodes: ['KENDOUICOMPLETE', 'KENDOUI', 'KENDOUI', 'KENDOUICOMPLETE'],\n publishDate: 1667977239,\n version: '2022.3.1109'.replace(/^\\s+|\\s+$/g, ''),\n licensingDocsUrl: 'https://docs.telerik.com/kendo-ui/intro/installation/using-license-code'\n};\n\n\n(function($, window, undefined$1) {\n var kendo = window.kendo = window.kendo || { cultures: {} },\n extend = $.extend,\n each = $.each,\n isArray = Array.isArray,\n noop = $.noop,\n math = Math,\n Template,\n JSON = window.JSON || {},\n support = {},\n percentRegExp = /%/,\n formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g,\n boxShadowRegExp = /(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+)?/i,\n numberRegExp = /^(\\+|-?)\\d+(\\.?)\\d*$/,\n FUNCTION = \"function\",\n STRING = \"string\",\n NUMBER = \"number\",\n OBJECT = \"object\",\n NULL = \"null\",\n BOOLEAN = \"boolean\",\n UNDEFINED = \"undefined\",\n PREFIX = \"prefix\",\n ARIA_LABELLEDBY = \"aria-labelledby\",\n ARIA_LABEL = \"aria-label\",\n LABELIDPART = \"_label\",\n getterCache = {},\n setterCache = {},\n slice = [].slice,\n cssPropertiesNames = [ \"themeColor\", \"fillMode\", \"shape\", \"size\", \"rounded\", \"positionMode\" ],\n // avoid extending the depricated properties in latest verions of jQuery\n noDepricateExtend = function() {\n var src, copyIsArray, copy, name, options, clone,\n target = arguments[ 0 ] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if ( typeof target === \"boolean\" ) {\n deep = target;\n\n // skip the boolean and the target\n target = arguments[ i ] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if ( typeof target !== \"object\" && typeof target !== \"function\") {\n target = {};\n }\n\n // extend jQuery itself if only one argument is passed\n if ( i === length ) {\n target = this;\n i--;\n }\n\n for ( ; i < length; i++ ) {\n\n // Only deal with non-null/undefined values\n if ( ( options = arguments[ i ] ) != null ) {\n\n // Extend the base object\n for ( name in options ) {\n // filters, concat and : properties are depricated in the jQuery 3.3.0\n // accessing these properties throw a warning when jQuery migrate is included\n if (name == \"filters\" || name == \"concat\" || name == \":\") {\n continue;\n }\n src = target[ name ];\n copy = options[ name ];\n\n // Prevent never-ending loop\n if ( target === copy ) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n ( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n if ( copyIsArray ) {\n copyIsArray = false;\n clone = src && Array.isArray( src ) ? src : [];\n\n } else {\n clone = src && jQuery.isPlainObject( src ) ? src : {};\n }\n\n // Never move original objects, clone them\n target[ name ] = noDepricateExtend( deep, clone, copy );\n\n // Don't bring in undefined values\n } else if ( copy !== undefined$1 ) {\n target[ name ] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n\n kendo.version = \"2022.3.1109\".replace(/^\\s+|\\s+$/g, '');\n\n function Class() {}\n\n Class.extend = function(proto) {\n var base = function() {},\n member,\n that = this,\n subclass = proto && proto.init ? proto.init : function() {\n that.apply(this, arguments);\n },\n fn;\n\n base.prototype = that.prototype;\n fn = subclass.fn = subclass.prototype = new base();\n\n for (member in proto) {\n if (proto[member] != null && proto[member].constructor === Object) {\n // Merge object members\n fn[member] = extend(true, {}, base.prototype[member], proto[member]);\n } else {\n fn[member] = proto[member];\n }\n }\n\n fn.constructor = subclass;\n subclass.extend = that.extend;\n\n return subclass;\n };\n\n Class.prototype._initOptions = function(options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n var isFunction = kendo.isFunction = function(fn) {\n return typeof fn === \"function\";\n };\n\n var preventDefault = function() {\n this._defaultPrevented = true;\n };\n\n var isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n };\n\n var Observable = Class.extend({\n init: function() {\n this._events = {};\n },\n\n bind: function(eventName, handlers, one) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined$1) {\n for (idx in eventName) {\n that.bind(idx, eventName[idx]);\n }\n return that;\n }\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n original = handler;\n handler = function() {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n handler.original = original;\n }\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n }\n\n return that;\n },\n\n one: function(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n },\n\n first: function(eventName, handlers) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n events = that._events[eventName] = that._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n },\n\n trigger: function(eventName, e) {\n var that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n e = e || {};\n\n e.sender = that;\n\n e._defaultPrevented = false;\n\n e.preventDefault = preventDefault;\n\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n },\n\n unbind: function(eventName, handler) {\n var that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined$1) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n\n return that;\n }\n });\n\n\n function compilePart(part, stringPart) {\n if (stringPart) {\n return \"'\" +\n part.split(\"'\").join(\"\\\\'\")\n .split('\\\\\"').join('\\\\\\\\\\\\\"')\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/\\t/g, \"\\\\t\") + \"'\";\n } else {\n var first = part.charAt(0),\n rest = part.substring(1);\n\n if (first === \"=\") {\n return \"+(\" + rest + \")+\";\n } else if (first === \":\") {\n return \"+$kendoHtmlEncode(\" + rest + \")+\";\n } else {\n return \";\" + part + \";$kendoOutput+=\";\n }\n }\n }\n\n var argumentNameRegExp = /^\\w+/,\n encodeRegExp = /\\$\\{([^}]*)\\}/g,\n escapedCurlyRegExp = /\\\\\\}/g,\n curlyRegExp = /__CURLY__/g,\n escapedSharpRegExp = /\\\\#/g,\n sharpRegExp = /__SHARP__/g,\n zeros = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n\n Template = {\n paramName: \"data\", // name of the parameter of the generated template\n useWithBlock: true, // whether to wrap the template in a with() block\n render: function(template, data) {\n var idx,\n length,\n html = \"\";\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n html += template(data[idx]);\n }\n\n return html;\n },\n compile: function(template, options) {\n var settings = extend({}, this, options),\n paramName = settings.paramName,\n argumentName = paramName.match(argumentNameRegExp)[0],\n useWithBlock = settings.useWithBlock,\n functionBody = \"var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;\",\n fn,\n parts,\n idx;\n\n if (isFunction(template)) {\n return template;\n }\n\n functionBody += useWithBlock ? \"with(\" + paramName + \"){\" : \"\";\n\n functionBody += \"$kendoOutput=\";\n\n parts = template\n .replace(escapedCurlyRegExp, \"__CURLY__\")\n .replace(encodeRegExp, \"#=$kendoHtmlEncode($1)#\")\n .replace(curlyRegExp, \"}\")\n .replace(escapedSharpRegExp, \"__SHARP__\")\n .split(\"#\");\n\n for (idx = 0; idx < parts.length; idx ++) {\n functionBody += compilePart(parts[idx], idx % 2 === 0);\n }\n\n functionBody += useWithBlock ? \";}\" : \";\";\n\n functionBody += \"return $kendoOutput;\";\n\n functionBody = functionBody.replace(sharpRegExp, \"#\");\n\n try {\n fn = new Function(argumentName, functionBody);\n fn._slotCount = Math.floor(parts.length / 2);\n return fn;\n } catch (e) {\n throw new Error(kendo.format(\"Invalid template:'{0}' Generated code:'{1}'\", template, functionBody));\n }\n }\n };\n\nfunction pad(number, digits, end) {\n number = number + \"\";\n digits = digits || 2;\n end = digits - number.length;\n\n if (end) {\n return zeros[digits].substring(0, end) + number;\n }\n\n return number;\n}\n\n //JSON stringify\n(function() {\n var escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = {\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"\\\"\": '\\\\\"',\n \"\\\\\": \"\\\\\\\\\"\n },\n rep,\n toString = {}.toString;\n\n\n if (typeof Date.prototype.toJSON !== FUNCTION) {\n\n Date.prototype.toJSON = function() {\n var that = this;\n\n return isFinite(that.valueOf()) ?\n pad(that.getUTCFullYear(), 4) + \"-\" +\n pad(that.getUTCMonth() + 1) + \"-\" +\n pad(that.getUTCDate()) + \"T\" +\n pad(that.getUTCHours()) + \":\" +\n pad(that.getUTCMinutes()) + \":\" +\n pad(that.getUTCSeconds()) + \"Z\" : null;\n };\n\n String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function() {\n return this.valueOf();\n };\n }\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? \"\\\"\" + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === STRING ? c :\n \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) + \"\\\"\" : \"\\\"\" + string + \"\\\"\";\n }\n\n function str(key, holder) {\n var i,\n k,\n v,\n length,\n mind = gap,\n partial,\n value = holder[key],\n type;\n\n if (value && typeof value === OBJECT && typeof value.toJSON === FUNCTION) {\n value = value.toJSON(key);\n }\n\n if (typeof rep === FUNCTION) {\n value = rep.call(holder, key, value);\n }\n\n type = typeof value;\n if (type === STRING) {\n return quote(value);\n } else if (type === NUMBER) {\n return isFinite(value) ? String(value) : NULL;\n } else if (type === BOOLEAN || type === NULL) {\n return String(value);\n } else if (type === OBJECT) {\n if (!value) {\n return NULL;\n }\n gap += indent;\n partial = [];\n if (toString.apply(value) === \"[object Array]\") {\n length = value.length;\n for (i = 0; i < length; i++) {\n partial[i] = str(i, value) || NULL;\n }\n v = partial.length === 0 ? \"[]\" : gap ?\n \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\" :\n \"[\" + partial.join(\",\") + \"]\";\n gap = mind;\n return v;\n }\n if (rep && typeof rep === OBJECT) {\n length = rep.length;\n for (i = 0; i < length; i++) {\n if (typeof rep[i] === STRING) {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n }\n\n v = partial.length === 0 ? \"{}\" : gap ?\n \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\" :\n \"{\" + partial.join(\",\") + \"}\";\n gap = mind;\n return v;\n }\n }\n\n if (typeof JSON.stringify !== FUNCTION) {\n JSON.stringify = function(value, replacer, space) {\n var i;\n gap = \"\";\n indent = \"\";\n\n if (typeof space === NUMBER) {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n }\n\n } else if (typeof space === STRING) {\n indent = space;\n }\n\n rep = replacer;\n if (replacer && typeof replacer !== FUNCTION && (typeof replacer !== OBJECT || typeof replacer.length !== NUMBER)) {\n throw new Error(\"JSON.stringify\");\n }\n\n return str(\"\", { \"\": value });\n };\n }\n})();\n\n// Date and Number formatting\n(function() {\n var dateFormatRegExp = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|\"[^\"]*\"|'[^']*'/g,\n standardFormatRegExp = /^(n|c|p|e)(\\d*)$/i,\n literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g,\n commaRegExp = /\\,/g,\n EMPTY = \"\",\n POINT = \".\",\n COMMA = \",\",\n SHARP = \"#\",\n ZERO = \"0\",\n PLACEHOLDER = \"??\",\n EN = \"en-US\",\n objectToString = {}.toString;\n\n //cultures\n kendo.cultures[\"en-US\"] = {\n name: EN,\n numberFormat: {\n pattern: [\"-n\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n percent: {\n pattern: [\"-n %\", \"n %\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n symbol: \"%\"\n },\n currency: {\n name: \"US Dollar\",\n abbr: \"USD\",\n pattern: [\"($n)\", \"$n\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n symbol: \"$\"\n }\n },\n calendars: {\n standard: {\n days: {\n names: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n namesAbbr: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n namesShort: [ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ]\n },\n months: {\n names: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n namesAbbr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n },\n AM: [ \"AM\", \"am\", \"AM\" ],\n PM: [ \"PM\", \"pm\", \"PM\" ],\n patterns: {\n d: \"M/d/yyyy\",\n D: \"dddd, MMMM dd, yyyy\",\n F: \"dddd, MMMM dd, yyyy h:mm:ss tt\",\n g: \"M/d/yyyy h:mm tt\",\n G: \"M/d/yyyy h:mm:ss tt\",\n m: \"MMMM dd\",\n M: \"MMMM dd\",\n s: \"yyyy'-'MM'-'ddTHH':'mm':'ss\",\n t: \"h:mm tt\",\n T: \"h:mm:ss tt\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\",\n y: \"MMMM, yyyy\",\n Y: \"MMMM, yyyy\"\n },\n \"/\": \"/\",\n \":\": \":\",\n firstDay: 0,\n twoDigitYearMax: 2029\n }\n }\n };\n\n\n function findCulture(culture) {\n if (culture) {\n if (culture.numberFormat) {\n return culture;\n }\n\n if (typeof culture === STRING) {\n var cultures = kendo.cultures;\n return cultures[culture] || cultures[culture.split(\"-\")[0]] || null;\n }\n\n return null;\n }\n\n return null;\n }\n\n function getCulture(culture) {\n if (culture) {\n culture = findCulture(culture);\n }\n\n return culture || kendo.cultures.current;\n }\n\n kendo.culture = function(cultureName) {\n var cultures = kendo.cultures, culture;\n\n if (cultureName !== undefined$1) {\n culture = findCulture(cultureName) || cultures[EN];\n culture.calendar = culture.calendars.standard;\n cultures.current = culture;\n } else {\n return cultures.current;\n }\n };\n\n kendo.findCulture = findCulture;\n kendo.getCulture = getCulture;\n\n //set current culture to en-US.\n kendo.culture(EN);\n\n function formatDate(date, format, culture) {\n culture = getCulture(culture);\n\n var calendar = culture.calendars.standard,\n days = calendar.days,\n months = calendar.months;\n\n format = calendar.patterns[format] || format;\n\n return format.replace(dateFormatRegExp, function(match) {\n var minutes;\n var result;\n var sign;\n\n if (match === \"d\") {\n result = date.getDate();\n } else if (match === \"dd\") {\n result = pad(date.getDate());\n } else if (match === \"ddd\") {\n result = days.namesAbbr[date.getDay()];\n } else if (match === \"dddd\") {\n result = days.names[date.getDay()];\n } else if (match === \"M\") {\n result = date.getMonth() + 1;\n } else if (match === \"MM\") {\n result = pad(date.getMonth() + 1);\n } else if (match === \"MMM\") {\n result = months.namesAbbr[date.getMonth()];\n } else if (match === \"MMMM\") {\n result = months.names[date.getMonth()];\n } else if (match === \"yy\") {\n result = pad(date.getFullYear() % 100);\n } else if (match === \"yyyy\") {\n result = pad(date.getFullYear(), 4);\n } else if (match === \"h\" ) {\n result = date.getHours() % 12 || 12;\n } else if (match === \"hh\") {\n result = pad(date.getHours() % 12 || 12);\n } else if (match === \"H\") {\n result = date.getHours();\n } else if (match === \"HH\") {\n result = pad(date.getHours());\n } else if (match === \"m\") {\n result = date.getMinutes();\n } else if (match === \"mm\") {\n result = pad(date.getMinutes());\n } else if (match === \"s\") {\n result = date.getSeconds();\n } else if (match === \"ss\") {\n result = pad(date.getSeconds());\n } else if (match === \"f\") {\n result = math.floor(date.getMilliseconds() / 100);\n } else if (match === \"ff\") {\n result = date.getMilliseconds();\n if (result > 99) {\n result = math.floor(result / 10);\n }\n result = pad(result);\n } else if (match === \"fff\") {\n result = pad(date.getMilliseconds(), 3);\n } else if (match === \"tt\") {\n result = date.getHours() < 12 ? calendar.AM[0] : calendar.PM[0];\n } else if (match === \"zzz\") {\n minutes = date.getTimezoneOffset();\n sign = minutes < 0;\n\n result = math.abs(minutes / 60).toString().split(\".\")[0];\n minutes = math.abs(minutes) - (result * 60);\n\n result = (sign ? \"+\" : \"-\") + pad(result);\n result += \":\" + pad(minutes);\n } else if (match === \"zz\" || match === \"z\") {\n result = date.getTimezoneOffset() / 60;\n sign = result < 0;\n\n result = math.abs(result).toString().split(\".\")[0];\n result = (sign ? \"+\" : \"-\") + (match === \"zz\" ? pad(result) : result);\n }\n\n return result !== undefined$1 ? result : match.slice(1, match.length - 1);\n });\n }\n\n //number formatting\n function formatNumber(number, format, culture) {\n culture = getCulture(culture);\n\n var numberFormat = culture.numberFormat,\n decimal = numberFormat[POINT],\n precision = numberFormat.decimals,\n pattern = numberFormat.pattern[0],\n literals = [],\n symbol,\n isCurrency, isPercent,\n customPrecision,\n formatAndPrecision,\n negative = number < 0,\n integer,\n fraction,\n integerLength,\n fractionLength,\n replacement = EMPTY,\n value = EMPTY,\n idx,\n length,\n ch,\n hasGroup,\n hasNegativeFormat,\n decimalIndex,\n sharpIndex,\n zeroIndex,\n hasZero, hasSharp,\n percentIndex,\n currencyIndex,\n startZeroIndex,\n start = -1,\n end;\n\n //return empty string if no number\n if (number === undefined$1) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return number;\n }\n\n //if no format then return number.toString() or number.toLocaleString() if culture.name is not defined\n if (!format) {\n return culture.name.length ? number.toLocaleString() : number.toString();\n }\n\n formatAndPrecision = standardFormatRegExp.exec(format);\n\n // standard formatting\n if (formatAndPrecision) {\n format = formatAndPrecision[1].toLowerCase();\n\n isCurrency = format === \"c\";\n isPercent = format === \"p\";\n\n if (isCurrency || isPercent) {\n //get specific number format information if format is currency or percent\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n pattern = numberFormat.pattern[negative ? 0 : 1];\n }\n\n customPrecision = formatAndPrecision[2];\n\n if (customPrecision) {\n precision = +customPrecision;\n }\n\n //return number in exponential format\n if (format === \"e\") {\n var exp = customPrecision ? number.toExponential(precision) : number.toExponential(); // toExponential() and toExponential(undefined) differ in FF #653438.\n\n return exp.replace(POINT, numberFormat[POINT]);\n }\n\n // multiply if format is percent\n if (isPercent) {\n number *= 100;\n }\n\n number = round(number, precision);\n negative = number < 0;\n number = number.split(POINT);\n\n integer = number[0];\n fraction = number[1];\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n value = groupInteger(integer, 0, integer.length, numberFormat);\n\n if (fraction) {\n value += decimal + fraction;\n }\n\n if (format === \"n\" && !negative) {\n return value;\n }\n\n number = EMPTY;\n\n for (idx = 0, length = pattern.length; idx < length; idx++) {\n ch = pattern.charAt(idx);\n\n if (ch === \"n\") {\n number += value;\n } else if (ch === \"$\" || ch === \"%\") {\n number += symbol;\n } else {\n number += ch;\n }\n }\n\n return number;\n }\n\n //custom formatting\n //\n //separate format by sections.\n\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n format = format.replace(literalRegExp, function(match) {\n var quoteChar = match.charAt(0).replace(\"\\\\\", \"\"),\n literal = match.slice(1).replace(quoteChar, \"\");\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n\n format = format.split(\";\");\n if (negative && format[1]) {\n //get negative format\n format = format[1];\n hasNegativeFormat = true;\n } else if (number === 0 && format[2]) {\n //format for zeros\n format = format[2];\n if (format.indexOf(SHARP) == -1 && format.indexOf(ZERO) == -1) {\n //return format if it is string constant.\n return format;\n }\n } else {\n format = format[0];\n }\n\n percentIndex = format.indexOf(\"%\");\n currencyIndex = format.indexOf(\"$\");\n\n isPercent = percentIndex != -1;\n isCurrency = currencyIndex != -1;\n\n //multiply number if the format has percent\n if (isPercent) {\n number *= 100;\n }\n\n if (isCurrency && format[currencyIndex - 1] === \"\\\\\") {\n format = format.split(\"\\\\\").join(\"\");\n isCurrency = false;\n }\n\n if (isCurrency || isPercent) {\n //get specific number format information if format is currency or percent\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n }\n\n hasGroup = format.indexOf(COMMA) > -1;\n if (hasGroup) {\n format = format.replace(commaRegExp, EMPTY);\n }\n\n decimalIndex = format.indexOf(POINT);\n length = format.length;\n\n if (decimalIndex != -1) {\n fraction = number.toString().split(\"e\");\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n hasZero = zeroIndex > -1;\n hasSharp = sharpIndex > -1;\n idx = fraction.length;\n\n if (!hasZero && !hasSharp) {\n format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n length = format.length;\n decimalIndex = -1;\n idx = 0;\n }\n\n if (hasZero && zeroIndex > sharpIndex) {\n idx = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && idx > sharpIndex) {\n var rounded = round(number, sharpIndex, negative);\n\n while (rounded.charAt(rounded.length - 1) === ZERO && sharpIndex > 0 && sharpIndex > zeroIndex) {\n sharpIndex--;\n\n rounded = round(number, sharpIndex, negative);\n }\n\n idx = sharpIndex;\n } else if (hasZero && idx < zeroIndex) {\n idx = zeroIndex;\n }\n }\n }\n\n number = round(number, idx, negative);\n\n sharpIndex = format.indexOf(SHARP);\n startZeroIndex = zeroIndex = format.indexOf(ZERO);\n\n //define the index of the first digit placeholder\n if (sharpIndex == -1 && zeroIndex != -1) {\n start = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n start = sharpIndex;\n } else {\n start = sharpIndex > zeroIndex ? zeroIndex : sharpIndex;\n }\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n //define the index of the last digit placeholder\n if (sharpIndex == -1 && zeroIndex != -1) {\n end = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n end = sharpIndex;\n } else {\n end = sharpIndex > zeroIndex ? sharpIndex : zeroIndex;\n }\n\n if (start == length) {\n end = start;\n }\n\n if (start != -1) {\n value = number.toString().split(POINT);\n integer = value[0];\n fraction = value[1] || EMPTY;\n\n integerLength = integer.length;\n fractionLength = fraction.length;\n\n if (negative && (number * -1) >= 0) {\n negative = false;\n }\n\n number = format.substring(0, start);\n\n if (negative && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (idx = start; idx < length; idx++) {\n ch = format.charAt(idx);\n\n if (decimalIndex == -1) {\n if (end - idx < integerLength) {\n number += integer;\n break;\n }\n } else {\n if (zeroIndex != -1 && zeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), numberFormat);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n //replace symbol placeholders\n if (isCurrency || isPercent) {\n value = EMPTY;\n for (idx = 0, length = number.length; idx < length; idx++) {\n ch = number.charAt(idx);\n value += (ch === \"$\" || ch === \"%\") ? symbol : ch;\n }\n number = value;\n }\n\n length = literals.length;\n\n if (length) {\n for (idx = 0; idx < length; idx++) {\n number = number.replace(PLACEHOLDER, literals[idx]);\n }\n }\n }\n\n return number;\n }\n\n var groupInteger = function(number, start, end, numberFormat) {\n var decimalIndex = number.indexOf(numberFormat[POINT]);\n var groupSizes = numberFormat.groupSize.slice();\n var groupSize = groupSizes.shift();\n var integer, integerLength;\n var idx, parts, value;\n var newGroupSize;\n\n end = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n integer = number.substring(start, end);\n integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n idx = integerLength;\n parts = [];\n\n while (idx > -1) {\n value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined$1 ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n if (idx > 0) {\n parts.push(integer.substring(0, idx));\n }\n break;\n }\n }\n\n integer = parts.reverse().join(numberFormat[COMMA]);\n number = number.substring(0, start) + integer + number.substring(end);\n }\n\n return number;\n };\n\n var round = function(value, precision, negative) {\n precision = precision || 0;\n\n value = value.toString().split('e');\n value = Math.round(+(value[0] + 'e' + (value[1] ? (+value[1] + precision) : precision)));\n\n if (negative) {\n value = -value;\n }\n\n value = value.toString().split('e');\n value = +(value[0] + 'e' + (value[1] ? (+value[1] - precision) : -precision));\n\n return value.toFixed(Math.min(precision, 20));\n };\n\n var toString = function(value, fmt, culture) {\n if (fmt) {\n if (objectToString.call(value) === \"[object Date]\") {\n return formatDate(value, fmt, culture);\n } else if (typeof value === NUMBER) {\n return formatNumber(value, fmt, culture);\n }\n }\n\n return value !== undefined$1 ? value : \"\";\n };\n\n kendo.format = function(fmt) {\n var values = arguments;\n\n return fmt.replace(formatRegExp, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10) + 1];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\");\n });\n };\n\n kendo._extractFormat = function(format) {\n if (format.slice(0,3) === \"{0:\") {\n format = format.slice(3, format.length - 1);\n }\n\n return format;\n };\n\n kendo._activeElement = function() {\n try {\n return document.activeElement;\n } catch (e) {\n return document.documentElement.activeElement;\n }\n };\n\n kendo._round = round;\n kendo._outerWidth = function(element, includeMargin) { return $(element).outerWidth(includeMargin || false) || 0; };\n kendo._outerHeight = function(element, includeMargin) { return $(element).outerHeight(includeMargin || false) || 0; };\n kendo.toString = toString;\n})();\n\n\n(function() {\n var nonBreakingSpaceRegExp = /\\u00A0/g,\n spaceRegExp = /\\s/g,\n exponentRegExp = /[eE][\\-+]?[0-9]+/,\n shortTimeZoneRegExp = /[+|\\-]\\d{1,2}/,\n longTimeZoneRegExp = /[+|\\-]\\d{1,2}:?\\d{2}/,\n dateRegExp = /^\\/Date\\((.*?)\\)\\/$/,\n offsetRegExp = /[+-]\\d*/,\n FORMATS_SEQUENCE = [ [], [ \"G\", \"g\", \"F\" ], [ \"D\", \"d\", \"y\", \"m\", \"T\", \"t\" ] ],\n STANDARD_FORMATS = [\n [\n \"yyyy-MM-ddTHH:mm:ss.fffffffzzz\",\n \"yyyy-MM-ddTHH:mm:ss.fffffff\",\n \"yyyy-MM-ddTHH:mm:ss.fffzzz\",\n \"yyyy-MM-ddTHH:mm:ss.fff\",\n \"ddd MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:sszzz\",\n \"yyyy-MM-ddTHH:mmzzz\",\n \"yyyy-MM-ddTHH:mmzz\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm:ss\"\n ], [\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy/MM/dd HH:mm\"\n ], [\n \"yyyy/MM/dd\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n ]\n ],\n numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n },\n objectToString = {}.toString;\n\n function outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n }\n\n function designatorPredicate(designator) {\n return designator.charAt(0);\n }\n\n function mapDesignators(designators) {\n return $.map(designators, designatorPredicate);\n }\n\n //if date's day is different than the typed one - adjust\n function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n }\n\n function lowerArray(data) {\n var idx = 0,\n length = data.length,\n array = [];\n\n for (; idx < length; idx++) {\n array[idx] = (data[idx] + \"\").toLowerCase();\n }\n\n return array;\n }\n\n function lowerLocalInfo(localInfo) {\n var newLocalInfo = {}, property;\n\n for (property in localInfo) {\n newLocalInfo[property] = lowerArray(localInfo[property]);\n }\n\n return newLocalInfo;\n }\n\n function parseExact(value, format, culture, strict) {\n if (!value) {\n return null;\n }\n\n var lookAhead = function(match) {\n var i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n return i;\n },\n getNumber = function(size) {\n var rg = numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}'),\n match = value.substr(valueIdx, size).match(rg);\n\n if (match) {\n match = match[0];\n valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n },\n getIndexByName = function(names, lower) {\n var i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = value.substr(valueIdx, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue == name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n },\n checkLiteral = function() {\n var result = false;\n if (value.charAt(valueIdx) === format[idx]) {\n valueIdx++;\n result = true;\n }\n return result;\n },\n calendar = culture.calendars.standard,\n year = null,\n month = null,\n day = null,\n hours = null,\n minutes = null,\n seconds = null,\n milliseconds = null,\n idx = 0,\n valueIdx = 0,\n literal = false,\n date = new Date(),\n twoDigitYearMax = calendar.twoDigitYearMax || 2029,\n defaultYear = date.getFullYear(),\n ch, count, length, pattern,\n pmHour, UTC, matches,\n amDesignators, pmDesignators,\n hoursOffset, minutesOffset,\n hasTime, match;\n\n if (!format) {\n format = \"d\"; //shord date format\n }\n\n //if format is part of the patterns get real format\n pattern = calendar.patterns[format];\n if (pattern) {\n format = pattern;\n }\n\n format = format.split(\"\");\n length = format.length;\n\n for (; idx < length; idx++) {\n ch = format[idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n if (ch === \"d\") {\n count = lookAhead(\"d\");\n if (!calendar._lowerDays) {\n calendar._lowerDays = lowerLocalInfo(calendar.days);\n }\n\n if (day !== null && count > 2) {\n continue;\n }\n\n day = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerDays[count == 3 ? \"namesAbbr\" : \"names\"], true);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return null;\n }\n } else if (ch === \"M\") {\n count = lookAhead(\"M\");\n if (!calendar._lowerMonths) {\n calendar._lowerMonths = lowerLocalInfo(calendar.months);\n }\n month = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerMonths[count == 3 ? 'namesAbbr' : 'names'], true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return null;\n }\n month -= 1; //because month is zero based\n } else if (ch === \"y\") {\n count = lookAhead(\"y\");\n year = getNumber(count);\n\n if (year === null) {\n return null;\n }\n\n if (count == 2) {\n if (typeof twoDigitYearMax === \"string\") {\n twoDigitYearMax = defaultYear + parseInt(twoDigitYearMax, 10);\n }\n\n year = (defaultYear - defaultYear % 100) + year;\n if (year > twoDigitYearMax) {\n year -= 100;\n }\n }\n } else if (ch === \"h\" ) {\n lookAhead(\"h\");\n hours = getNumber(2);\n if (hours == 12) {\n hours = 0;\n }\n if (hours === null || outOfRange(hours, 0, 11)) {\n return null;\n }\n } else if (ch === \"H\") {\n lookAhead(\"H\");\n hours = getNumber(2);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return null;\n }\n } else if (ch === \"m\") {\n lookAhead(\"m\");\n minutes = getNumber(2);\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return null;\n }\n } else if (ch === \"s\") {\n lookAhead(\"s\");\n seconds = getNumber(2);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return null;\n }\n } else if (ch === \"f\") {\n count = lookAhead(\"f\");\n\n match = value.substr(valueIdx, count).match(numberRegExp[3]);\n milliseconds = getNumber(count); //move value index position\n\n if (milliseconds !== null) {\n milliseconds = parseFloat(\"0.\" + match[0], 10);\n milliseconds = kendo._round(milliseconds, 3);\n milliseconds *= 1000;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return null;\n }\n\n } else if (ch === \"t\") {\n count = lookAhead(\"t\");\n amDesignators = calendar.AM;\n pmDesignators = calendar.PM;\n\n if (count === 1) {\n amDesignators = mapDesignators(amDesignators);\n pmDesignators = mapDesignators(pmDesignators);\n }\n\n pmHour = getIndexByName(pmDesignators);\n if (!pmHour && !getIndexByName(amDesignators)) {\n return null;\n }\n }\n else if (ch === \"z\") {\n UTC = true;\n count = lookAhead(\"z\");\n\n if (value.substr(valueIdx, 1) === \"Z\") {\n checkLiteral();\n continue;\n }\n\n matches = value.substr(valueIdx, 6)\n .match(count > 2 ? longTimeZoneRegExp : shortTimeZoneRegExp);\n\n if (!matches) {\n return null;\n }\n\n matches = matches[0].split(\":\");\n\n hoursOffset = matches[0];\n minutesOffset = matches[1];\n\n if (!minutesOffset && hoursOffset.length > 3) { //(+|-)[hh][mm] format is used\n valueIdx = hoursOffset.length - 2;\n minutesOffset = hoursOffset.substring(valueIdx);\n hoursOffset = hoursOffset.substring(0, valueIdx);\n }\n\n hoursOffset = parseInt(hoursOffset, 10);\n if (outOfRange(hoursOffset, -12, 13)) {\n return null;\n }\n\n if (count > 2) {\n minutesOffset = matches[0][0] + minutesOffset;\n minutesOffset = parseInt(minutesOffset, 10);\n if (isNaN(minutesOffset) || outOfRange(minutesOffset, -59, 59)) {\n return null;\n }\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral();\n } else if (!checkLiteral()) {\n return null;\n }\n }\n }\n\n // if more characters follow, assume wrong format\n // https://github.com/telerik/kendo-ui-core/issues/3476\n if (strict && !/^\\s*$/.test(value.substr(valueIdx))) {\n return null;\n }\n\n hasTime = hours !== null || minutes !== null || seconds || null;\n\n if (year === null && month === null && day === null && hasTime) {\n year = defaultYear;\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = defaultYear;\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset;\n }\n\n value = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n value = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(value, hours);\n }\n\n if (year < 100) {\n value.setFullYear(year);\n }\n\n if (value.getDate() !== day && UTC === undefined$1) {\n return null;\n }\n\n return value;\n }\n\n function parseMicrosoftFormatOffset(offset) {\n var sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n offset = offset.substring(1);\n offset = (parseInt(offset.substr(0, 2), 10) * 60) + parseInt(offset.substring(2), 10);\n\n return sign * offset;\n }\n\n function getDefaultFormats(culture) {\n var length = math.max(FORMATS_SEQUENCE.length, STANDARD_FORMATS.length);\n var calendar = culture.calendar || culture.calendars.standard;\n var patterns = calendar.patterns;\n var cultureFormats, formatIdx, idx;\n var formats = [];\n\n for (idx = 0; idx < length; idx++) {\n cultureFormats = FORMATS_SEQUENCE[idx];\n for (formatIdx = 0; formatIdx < cultureFormats.length; formatIdx++) {\n formats.push(patterns[cultureFormats[formatIdx]]);\n }\n formats = formats.concat(STANDARD_FORMATS[idx]);\n }\n\n return formats;\n }\n\n function internalParseDate(value, formats, culture, strict) {\n if (objectToString.call(value) === \"[object Date]\") {\n return value;\n }\n\n var idx = 0;\n var date = null;\n var length;\n var tzoffset;\n\n if (value && value.indexOf(\"/D\") === 0) {\n date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftFormatOffset(tzoffset[0]);\n date = kendo.timezone.apply(date, 0);\n date = kendo.timezone.convert(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n\n culture = kendo.getCulture(culture);\n\n if (!formats) {\n formats = getDefaultFormats(culture);\n }\n\n formats = isArray(formats) ? formats : [formats];\n length = formats.length;\n\n for (; idx < length; idx++) {\n date = parseExact(value, formats[idx], culture, strict);\n if (date) {\n return date;\n }\n }\n\n return date;\n }\n\n kendo.parseDate = function(value, formats, culture) {\n return internalParseDate(value, formats, culture, false);\n };\n\n kendo.parseExactDate = function(value, formats, culture) {\n return internalParseDate(value, formats, culture, true);\n };\n\n kendo.parseInt = function(value, culture) {\n var result = kendo.parseFloat(value, culture);\n if (result) {\n result = result | 0;\n }\n return result;\n };\n\n kendo.parseFloat = function(value, culture, format) {\n if (!value && value !== 0) {\n return null;\n }\n\n if (typeof value === NUMBER) {\n return value;\n }\n\n value = value.toString();\n culture = kendo.getCulture(culture);\n\n var number = culture.numberFormat,\n percent = number.percent,\n currency = number.currency,\n symbol = currency.symbol,\n percentSymbol = percent.symbol,\n negative = value.indexOf(\"-\"),\n parts, isPercent;\n\n //handle exponential number\n if (exponentRegExp.test(value)) {\n value = parseFloat(value.replace(number[\".\"], \".\"));\n if (isNaN(value)) {\n value = null;\n }\n return value;\n }\n\n if (negative > 0) {\n return null;\n } else {\n negative = negative > -1;\n }\n\n if (value.indexOf(symbol) > -1 || (format && format.toLowerCase().indexOf(\"c\") > -1)) {\n number = currency;\n parts = number.pattern[0].replace(\"$\", symbol).split(\"n\");\n if (value.indexOf(parts[0]) > -1 && value.indexOf(parts[1]) > -1) {\n value = value.replace(parts[0], \"\").replace(parts[1], \"\");\n negative = true;\n }\n } else if (value.indexOf(percentSymbol) > -1) {\n isPercent = true;\n number = percent;\n symbol = percentSymbol;\n }\n\n value = value.replace(\"-\", \"\")\n .replace(symbol, \"\")\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(number[\",\"].replace(nonBreakingSpaceRegExp, \" \")).join(\"\")\n .replace(spaceRegExp, \"\")\n .replace(number[\".\"], \".\");\n\n value = parseFloat(value);\n\n if (isNaN(value)) {\n value = null;\n } else if (negative) {\n value *= -1;\n }\n\n if (value && isPercent) {\n value /= 100;\n }\n\n return value;\n };\n})();\n\n function getShadows(element) {\n var shadow = element.css(kendo.support.transitions.css + \"box-shadow\") || element.css(\"box-shadow\"),\n radius = shadow ? shadow.match(boxShadowRegExp) || [ 0, 0, 0, 0, 0 ] : [ 0, 0, 0, 0, 0 ],\n blur = math.max((+radius[3]), +(radius[4] || 0));\n\n return {\n left: (-radius[1]) + blur,\n right: (+radius[1]) + blur,\n bottom: (+radius[2]) + blur\n };\n }\n\n function wrap(element, autosize) {\n var percentage,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n parent = element.parent(),\n windowOuterWidth = outerWidth(window);\n\n parent.removeClass(\"k-animation-container-sm\");\n\n if (!parent.hasClass(\"k-animation-container\")) {\n var width = element[0].style.width,\n height = element[0].style.height,\n percentWidth = percentRegExp.test(width),\n percentHeight = percentRegExp.test(height),\n forceWidth = element.hasClass(\"k-tooltip\") || element.is(\".k-menu-horizontal.k-context-menu\");\n\n percentage = percentWidth || percentHeight;\n\n if (!percentWidth && (!autosize || (autosize && width) || forceWidth)) { width = autosize ? outerWidth(element) + 1 : outerWidth(element); }\n if (!percentHeight && (!autosize || (autosize && height)) || element.is(\".k-menu-horizontal.k-context-menu\")) { height = outerHeight(element); }\n\n element.wrap(\n $(\"
\")\n .addClass(\"k-animation-container\")\n .attr(\"role\", \"region\")\n .css({\n width: width,\n height: height\n }));\n parent = element.parent();\n\n if (percentage) {\n element.css({\n width: \"100%\",\n height: \"100%\",\n boxSizing: \"border-box\",\n mozBoxSizing: \"border-box\",\n webkitBoxSizing: \"border-box\"\n });\n }\n } else {\n wrapResize(element, autosize);\n }\n\n if (windowOuterWidth < outerWidth(parent)) {\n parent.addClass(\"k-animation-container-sm\");\n\n wrapResize(element, autosize);\n }\n\n return parent;\n }\n\n function wrapResize(element, autosize) {\n var percentage,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n wrapper = element.parent(\".k-animation-container\"),\n wrapperStyle = wrapper[0].style;\n\n if (wrapper.is(\":hidden\")) {\n wrapper.css({\n display: \"\",\n position: \"\"\n });\n }\n\n percentage = percentRegExp.test(wrapperStyle.width) || percentRegExp.test(wrapperStyle.height);\n\n if (!percentage) {\n wrapper.css({\n width: autosize ? outerWidth(element) + 1 : outerWidth(element),\n height: outerHeight(element),\n boxSizing: \"content-box\",\n mozBoxSizing: \"content-box\",\n webkitBoxSizing: \"content-box\"\n });\n }\n }\n\n function deepExtend(destination) {\n var i = 1,\n length = arguments.length;\n\n for (i = 1; i < length; i++) {\n deepExtendOne(destination, arguments[i]);\n }\n\n return destination;\n }\n\n function deepExtendOne(destination, source) {\n var ObservableArray = kendo.data.ObservableArray,\n LazyObservableArray = kendo.data.LazyObservableArray,\n DataSource = kendo.data.DataSource,\n HierarchicalDataSource = kendo.data.HierarchicalDataSource,\n property,\n propValue,\n propType,\n propInit,\n destProp;\n\n for (property in source) {\n propValue = source[property];\n propType = typeof propValue;\n\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit &&\n propInit !== Array && propInit !== ObservableArray && propInit !== LazyObservableArray &&\n propInit !== DataSource && propInit !== HierarchicalDataSource && propInit !== RegExp &&\n (!kendo.isFunction(window.ArrayBuffer) || propInit !== ArrayBuffer) && !(propValue instanceof HTMLElement)) {\n\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n destProp = destination[property];\n if (typeof (destProp) === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n\n return destination;\n }\n\n function testRx(agent, rxs, dflt) {\n for (var rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined$1 ? dflt : agent;\n }\n\n function toHyphens(str) {\n return str.replace(/([a-z][A-Z])/g, function(g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n }\n\n function toCamelCase(str) {\n return str.replace(/\\-(\\w)/g, function(strMatch, g1) {\n return g1.toUpperCase();\n });\n }\n\n function getComputedStyles(element, properties) {\n var styles = {}, computedStyle;\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(element, \"\");\n\n if (properties) {\n $.each(properties, function(idx, value) {\n styles[value] = computedStyle.getPropertyValue(value);\n });\n }\n } else {\n computedStyle = element.currentStyle;\n\n if (properties) {\n $.each(properties, function(idx, value) {\n styles[value] = computedStyle[toCamelCase(value)];\n });\n }\n }\n\n if (!kendo.size(styles)) {\n styles = computedStyle;\n }\n\n return styles;\n }\n\n function isScrollable(element) {\n if (element.dataset[kendo.ns + \"scrollable\"] === \"false\") {\n return false;\n }\n\n if (element && element.className && typeof(element.className) === \"string\" && element.className.indexOf(\"k-auto-scrollable\") > -1) {\n return true;\n }\n\n var overflow = getComputedStyles(element, [\"overflow\"]).overflow;\n return overflow.indexOf(\"auto\") > -1 || overflow.indexOf(\"scroll\") > -1;\n }\n\n function scrollLeft(element, value) {\n var webkit = support.browser.webkit;\n var mozila = support.browser.mozilla;\n var browserVersion = support.browser.version;\n var el, isRtl;\n\n if (element instanceof $ && value !== undefined$1) {\n element.each(function(i, e) {\n scrollLeft(e, value);\n });\n\n return;\n } else {\n el = element instanceof $ ? element[0] : element;\n }\n\n if (!el) {\n return;\n }\n\n isRtl = support.isRtl(element);\n\n // After updating browser detection,\n // Test in which if should the Safari browsers go\n if (value !== undefined$1) {\n if (isRtl && webkit && (browserVersion < 85 || support.browser.safari)) {\n el.scrollLeft = el.scrollWidth - el.clientWidth - value;\n } else if (isRtl && (mozila || webkit) && value > 0) {\n el.scrollLeft = -value;\n } else {\n el.scrollLeft = value;\n }\n } else {\n if (isRtl && webkit && (browserVersion < 85 || support.browser.safari)) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n } else {\n return Math.abs(el.scrollLeft);\n }\n }\n }\n\n (function() {\n support._scrollbar = undefined$1;\n\n support.scrollbar = function(refresh) {\n if (!isNaN(support._scrollbar) && !refresh) {\n return support._scrollbar;\n } else {\n var div = document.createElement(\"div\"),\n result;\n\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n support._scrollbar = result = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n\n return result;\n }\n };\n\n support.isRtl = function(element) {\n return $(element).closest(\".k-rtl\").length > 0;\n };\n\n var table = document.createElement(\"table\");\n\n // Internet Explorer does not support setting the innerHTML of TBODY and TABLE elements\n try {\n table.innerHTML = \"\";\n\n support.tbodyInnerHtml = true;\n } catch (e) {\n support.tbodyInnerHtml = false;\n }\n\n support.touch = \"ontouchstart\" in window;\n\n var docStyle = document.documentElement.style;\n var transitions = support.transitions = false,\n transforms = support.transforms = false,\n elementProto = \"HTMLElement\" in window ? HTMLElement.prototype : [];\n\n support.hasHW3D = (\"WebKitCSSMatrix\" in window && \"m11\" in new window.WebKitCSSMatrix()) || \"MozPerspective\" in docStyle || \"msPerspective\" in docStyle;\n support.cssFlexbox = (\"flexWrap\" in docStyle) || (\"WebkitFlexWrap\" in docStyle) || (\"msFlexWrap\" in docStyle);\n\n each([ \"Moz\", \"webkit\", \"O\", \"ms\" ], function() {\n var prefix = this.toString(),\n hasTransitions = typeof table.style[prefix + \"Transition\"] === STRING;\n\n if (hasTransitions || typeof table.style[prefix + \"Transform\"] === STRING) {\n var lowPrefix = prefix.toLowerCase();\n\n transforms = {\n css: (lowPrefix != \"ms\") ? \"-\" + lowPrefix + \"-\" : \"\",\n prefix: prefix,\n event: (lowPrefix === \"o\" || lowPrefix === \"webkit\") ? lowPrefix : \"\"\n };\n\n if (hasTransitions) {\n transitions = transforms;\n transitions.event = transitions.event ? transitions.event + \"TransitionEnd\" : \"transitionend\";\n }\n\n return false;\n }\n });\n\n table = null;\n\n support.transforms = transforms;\n support.transitions = transitions;\n\n support.devicePixelRatio = window.devicePixelRatio === undefined$1 ? 1 : window.devicePixelRatio;\n\n try {\n support.screenWidth = window.outerWidth || window.screen ? window.screen.availWidth : window.innerWidth;\n support.screenHeight = window.outerHeight || window.screen ? window.screen.availHeight : window.innerHeight;\n } catch (e) {\n //window.outerWidth throws error when in IE showModalDialog.\n support.screenWidth = window.screen.availWidth;\n support.screenHeight = window.screen.availHeight;\n }\n\n support.detectOS = function(ua) {\n var os = false, minorVersion, match = [],\n notAndroidPhone = !/mobile safari/i.test(ua),\n agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.?(\\d+(\\.\\d+)?)?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n },\n osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n },\n formFactorRxs = {\n tablet: /playbook|ipad|fire/i\n },\n browserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n };\n\n for (var agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (match) {\n if (agent == \"windows\" && \"plugins\" in navigator) { return false; } // Break if not Metro/Mobile Windows\n\n os = {};\n os.device = agent;\n os.tablet = testRx(agent, formFactorRxs, false);\n os.browser = testRx(ua, browserRxs, \"default\");\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = (match[3] || \"0\").replace(\"_\", \".\");\n minorVersion = os.minorVersion.replace(\".\", \"\").substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion + (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join(\"0\"));\n os.cordova = typeof window.PhoneGap !== UNDEFINED || typeof window.cordova !== UNDEFINED; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone || (/file|local|wmapp/).test(window.location.protocol) || os.cordova; // Use file protocol to detect appModes.\n\n if (os.android && (support.devicePixelRatio < 1.5 && os.flatVersion < 400 || notAndroidPhone) && (support.screenWidth > 800 || support.screenHeight > 800)) {\n os.tablet = agent;\n }\n\n break;\n }\n }\n }\n return os;\n };\n\n var mobileOS = support.mobileOS = support.detectOS(navigator.userAgent);\n\n support.wpDevicePixelRatio = mobileOS.wp ? screen.width / 320 : 0;\n\n support.hasNativeScrolling = false;\n\n if (mobileOS.ios || (mobileOS.android && mobileOS.majorVersion > 2) || mobileOS.wp) {\n support.hasNativeScrolling = mobileOS;\n }\n\n support.delayedClick = function() {\n\n // only the mobile devices with touch events do this.\n if (support.touch) {\n // All iOS devices so far (by the time I am writing this, iOS 9.0.2 is the latest),\n // delay their click events.\n if (mobileOS.ios) {\n return true;\n }\n\n if (mobileOS.android) {\n\n if (!support.browser.chrome) { // older webkits and webviews delay the click\n return true;\n }\n\n // from here on, we deal with Chrome on Android.\n if (support.browser.version < 32) {\n return false;\n }\n\n // Chrome 32+ does conditional fast clicks if the view port is not user scalable.\n return !($(\"meta[name=viewport]\").attr(\"content\") || \"\").match(/user-scalable=no/i);\n }\n }\n\n return false;\n };\n\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n\n support.detectBrowser = function(ua) {\n var browser = false,\n match = [],\n chromiumEdgeMatch = [],\n browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = ua.match(browserRxs[agent]);\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n if (browser.chrome) {\n chromiumEdgeMatch = ua.match(/(edg)[ \\/]([\\w.]+)/i);\n\n if (chromiumEdgeMatch) {\n browser.chromiumEdge = true;\n }\n }\n\n break;\n }\n }\n }\n\n return browser;\n };\n\n support.browser = support.detectBrowser(navigator.userAgent);\n\n if (!mobileOS && support.touch && support.browser.safari) {\n mobileOS = support.mobileOS = {\n ios: true,\n tablet: \"tablet\",\n device: \"ipad\"\n };\n }\n\n support.detectClipboardAccess = function() {\n var commands = {\n copy: document.queryCommandSupported ? document.queryCommandSupported(\"copy\") : false,\n cut: document.queryCommandSupported ? document.queryCommandSupported(\"cut\") : false,\n paste: document.queryCommandSupported ? document.queryCommandSupported(\"paste\") : false\n };\n\n if (support.browser.chrome) {\n //not using queryCommandSupported due to chromium issues 476508 and 542948\n commands.paste = false;\n if (support.browser.version >= 43) {\n commands.copy = true;\n commands.cut = true;\n }\n }\n\n return commands;\n };\n\n support.clipboard = support.detectClipboardAccess();\n\n support.zoomLevel = function() {\n try {\n var browser = support.browser;\n var ie11WidthCorrection = 0;\n var docEl = document.documentElement;\n\n if (browser.msie && browser.version == 11 && docEl.scrollHeight > docEl.clientHeight && !support.touch) {\n ie11WidthCorrection = support.scrollbar();\n }\n\n return support.touch ? (docEl.clientWidth / window.innerWidth) :\n browser.msie && browser.version >= 10 ? (((top || window).document.documentElement.offsetWidth + ie11WidthCorrection) / (top || window).innerWidth) : 1;\n } catch (e) {\n return 1;\n }\n };\n\n (function(browser) {\n // add browser-specific CSS class\n var cssClass = \"\",\n docElement = $(document.documentElement),\n majorVersion = parseInt(browser.version, 10);\n\n if (browser.msie) {\n cssClass = \"ie\";\n } else if (browser.mozilla) {\n cssClass = \"ff\";\n } else if (browser.safari) {\n cssClass = \"safari\";\n } else if (browser.webkit) {\n cssClass = \"webkit\";\n } else if (browser.opera) {\n cssClass = \"opera\";\n } else if (browser.edge) {\n cssClass = \"edge\";\n }\n\n if (cssClass) {\n cssClass = \"k-\" + cssClass + \" k-\" + cssClass + majorVersion;\n }\n if (support.mobileOS) {\n cssClass += \" k-mobile\";\n }\n\n if (!support.cssFlexbox) {\n cssClass += \" k-no-flexbox\";\n }\n\n docElement.addClass(cssClass);\n })(support.browser);\n\n support.eventCapture = document.documentElement.addEventListener;\n\n var input = document.createElement(\"input\");\n\n support.placeholder = \"placeholder\" in input;\n support.propertyChangeEvent = \"onpropertychange\" in input;\n\n support.input = (function() {\n var types = [\"number\", \"date\", \"time\", \"month\", \"week\", \"datetime\", \"datetime-local\"];\n var length = types.length;\n var value = \"test\";\n var result = {};\n var idx = 0;\n var type;\n\n for (;idx < length; idx++) {\n type = types[idx];\n input.setAttribute(\"type\", type);\n input.value = value;\n\n result[type.replace(\"-\", \"\")] = input.type !== \"text\" && input.value !== value;\n }\n\n return result;\n })();\n\n input.style.cssText = \"float:left;\";\n\n support.cssFloat = !!input.style.cssFloat;\n\n input = null;\n\n support.stableSort = (function() {\n // Chrome sort is not stable for more than *10* items\n // IE9+ sort is not stable for than *512* items\n var threshold = 513;\n\n var sorted = [{\n index: 0,\n field: \"b\"\n }];\n\n for (var i = 1; i < threshold; i++) {\n sorted.push({\n index: i,\n field: \"a\"\n });\n }\n\n sorted.sort(function(a, b) {\n return a.field > b.field ? 1 : (a.field < b.field ? -1 : 0);\n });\n\n return sorted[0].index === 1;\n })();\n\n support.matchesSelector = elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector ||\n elementProto.msMatchesSelector || elementProto.oMatchesSelector ||\n elementProto.matchesSelector || elementProto.matches ||\n function( selector ) {\n var nodeList = document.querySelectorAll ? ( this.parentNode || document ).querySelectorAll( selector ) || [] : $(selector),\n i = nodeList.length;\n\n while (i--) {\n if (nodeList[i] == this) {\n return true;\n }\n }\n\n return false;\n };\n\n support.matchMedia = \"matchMedia\" in window;\n\n support.pushState = window.history && window.history.pushState;\n\n support.hashChange = \"onhashchange\" in window;\n\n support.customElements = \"registerElement\" in window.document;\n\n var chrome = support.browser.chrome,\n mobileChrome = support.browser.crios,\n mozilla = support.browser.mozilla,\n safari = support.browser.safari;\n support.msPointers = !chrome && window.MSPointerEvent;\n support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;\n support.kineticScrollNeeded = mobileOS && (support.touch || support.msPointers || support.pointers);\n })();\n\n\n function size(obj) {\n var result = 0, key;\n for (key in obj) {\n if (obj.hasOwnProperty(key) && key != \"toJSON\") { // Ignore fake IE7 toJSON.\n result++;\n }\n }\n\n return result;\n }\n\n function getOffset(element, type, positioned) {\n if (!type) {\n type = \"offset\";\n }\n\n var offset = element[type]();\n // clone ClientRect object to JS object (jQuery3)\n var result = {\n top: offset.top,\n right: offset.right,\n bottom: offset.bottom,\n left: offset.left\n };\n\n // IE10 touch zoom is living in a separate viewport\n if (support.browser.msie && (support.pointers || support.msPointers) && !positioned) {\n var sign = support.isRtl(element) ? 1 : -1;\n\n result.top -= (window.pageYOffset - (document.documentElement.scrollTop));\n result.left -= (window.pageXOffset + (sign * document.documentElement.scrollLeft));\n }\n\n return result;\n }\n\n var directions = {\n left: { reverse: \"right\" },\n right: { reverse: \"left\" },\n down: { reverse: \"up\" },\n up: { reverse: \"down\" },\n top: { reverse: \"bottom\" },\n bottom: { reverse: \"top\" },\n \"in\": { reverse: \"out\" },\n out: { reverse: \"in\" }\n };\n\n function parseEffects(input) {\n var effects = {};\n\n each((typeof input === \"string\" ? input.split(\" \") : input), function(idx) {\n effects[idx] = this;\n });\n\n return effects;\n }\n\n function fx(element) {\n return new kendo.effects.Element(element);\n }\n\n var effects = {};\n\n $.extend(effects, {\n enabled: true,\n Element: function(element) {\n this.element = $(element);\n },\n\n promise: function(element, options) {\n if (!element.is(\":visible\")) {\n element.css({ display: element.data(\"olddisplay\") || \"block\" }).css(\"display\");\n }\n\n if (options.hide) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n if (options.init) {\n options.init();\n }\n\n if (options.completeCallback) {\n options.completeCallback(element); // call the external complete callback with the element\n }\n\n element.dequeue();\n },\n\n disable: function() {\n this.enabled = false;\n this.promise = this.promiseShim;\n },\n\n enable: function() {\n this.enabled = true;\n this.promise = this.animatedPromise;\n }\n });\n\n effects.promiseShim = effects.promise;\n\n function prepareAnimationOptions(options, duration, reverse, complete) {\n if (typeof options === STRING) {\n // options is the list of effect names separated by space e.g. animate(element, \"fadeIn slideDown\")\n\n // only callback is provided e.g. animate(element, options, function() {});\n if (isFunction(duration)) {\n complete = duration;\n duration = 400;\n reverse = false;\n }\n\n if (isFunction(reverse)) {\n complete = reverse;\n reverse = false;\n }\n\n if (typeof duration === BOOLEAN) {\n reverse = duration;\n duration = 400;\n }\n\n options = {\n effects: options,\n duration: duration,\n reverse: reverse,\n complete: complete\n };\n }\n\n return extend({\n //default options\n effects: {},\n duration: 400, //jQuery default duration\n reverse: false,\n init: noop,\n teardown: noop,\n hide: false\n }, options, { completeCallback: options.complete, complete: noop }); // Move external complete callback, so deferred.resolve can be always executed.\n\n }\n\n function animate(element, options, duration, reverse, complete) {\n var idx = 0,\n length = element.length,\n instance;\n\n for (; idx < length; idx ++) {\n instance = $(element[idx]);\n instance.queue(function() {\n effects.promise(instance, prepareAnimationOptions(options, duration, reverse, complete));\n });\n }\n\n return element;\n }\n\n function toggleClass(element, classes, options, add) {\n if (classes) {\n classes = classes.split(\" \");\n\n each(classes, function(idx, value) {\n element.toggleClass(value, add);\n });\n }\n\n return element;\n }\n\n if (!(\"kendoAnimate\" in $.fn)) {\n extend($.fn, {\n kendoStop: function(clearQueue, gotoEnd) {\n return this.stop(clearQueue, gotoEnd);\n },\n\n kendoAnimate: function(options, duration, reverse, complete) {\n return animate(this, options, duration, reverse, complete);\n },\n\n kendoAddClass: function(classes, options) {\n return kendo.toggleClass(this, classes, options, true);\n },\n\n kendoRemoveClass: function(classes, options) {\n return kendo.toggleClass(this, classes, options, false);\n },\n kendoToggleClass: function(classes, options, toggle) {\n return kendo.toggleClass(this, classes, options, toggle);\n }\n });\n }\n\n var ampRegExp = /&/g,\n ltRegExp = //g;\n function htmlEncode(value) {\n return (\"\" + value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n }\n\n function unescape(value) {\n var template;\n\n try {\n template = window.decodeURIComponent(value);\n } catch (error) {\n // If the string contains Unicode characters\n // the decodeURIComponent() will throw an error.\n // Therefore: convert to UTF-8 character\n template = value.replace(/%u([\\dA-F]{4})|%([\\dA-F]{2})/gi, function(_, m1, m2) {\n return String.fromCharCode(parseInt(\"0x\" + (m1 || m2), 16));\n });\n }\n\n return template;\n }\n\n var eventTarget = function(e) {\n return e.target;\n };\n\n if (support.touch) {\n\n eventTarget = function(e) {\n var touches = \"originalEvent\" in e ? e.originalEvent.changedTouches : \"changedTouches\" in e ? e.changedTouches : null;\n\n return touches ? document.elementFromPoint(touches[0].clientX, touches[0].clientY) : e.target;\n };\n\n each([\"swipe\", \"swipeLeft\", \"swipeRight\", \"swipeUp\", \"swipeDown\", \"doubleTap\", \"tap\"], function(m, value) {\n $.fn[value] = function(callback) {\n return this.on(value, callback);\n };\n });\n }\n\n if (support.touch) {\n if (!support.mobileOS) {\n support.mousedown = \"mousedown touchstart\";\n support.mouseup = \"mouseup touchend\";\n support.mousemove = \"mousemove touchmove\";\n support.mousecancel = \"mouseleave touchcancel\";\n support.click = \"click\";\n support.resize = \"resize\";\n } else {\n support.mousedown = \"touchstart\";\n support.mouseup = \"touchend\";\n support.mousemove = \"touchmove\";\n support.mousecancel = \"touchcancel\";\n support.click = \"touchend\";\n support.resize = \"orientationchange\";\n }\n } else if (support.pointers) {\n support.mousemove = \"pointermove\";\n support.mousedown = \"pointerdown\";\n support.mouseup = \"pointerup\";\n support.mousecancel = \"pointercancel\";\n support.click = \"pointerup\";\n support.resize = \"orientationchange resize\";\n } else if (support.msPointers) {\n support.mousemove = \"MSPointerMove\";\n support.mousedown = \"MSPointerDown\";\n support.mouseup = \"MSPointerUp\";\n support.mousecancel = \"MSPointerCancel\";\n support.click = \"MSPointerUp\";\n support.resize = \"orientationchange resize\";\n } else {\n support.mousemove = \"mousemove\";\n support.mousedown = \"mousedown\";\n support.mouseup = \"mouseup\";\n support.mousecancel = \"mouseleave\";\n support.click = \"click\";\n support.resize = \"resize\";\n }\n\n var wrapExpression = function(members, paramName) {\n var result = paramName || \"d\",\n index,\n idx,\n length,\n member,\n count = 1;\n\n for (idx = 0, length = members.length; idx < length; idx++) {\n member = members[idx];\n if (member !== \"\") {\n index = member.indexOf(\"[\");\n\n if (index !== 0) {\n if (index == -1) {\n member = \".\" + member;\n } else {\n count++;\n member = \".\" + member.substring(0, index) + \" || {})\" + member.substring(index);\n }\n }\n\n count++;\n result += member + ((idx < length - 1) ? \" || {})\" : \")\");\n }\n }\n return new Array(count).join(\"(\") + result;\n },\n localUrlRe = /^([a-z]+:)?\\/\\//i;\n\n extend(kendo, {\n widgets: [],\n _widgetRegisteredCallbacks: [],\n ui: kendo.ui || {},\n fx: kendo.fx || fx,\n effects: kendo.effects || effects,\n mobile: kendo.mobile || { },\n data: kendo.data || {},\n dataviz: kendo.dataviz || {},\n drawing: kendo.drawing || {},\n spreadsheet: { messages: {} },\n keys: {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n },\n support: kendo.support || support,\n animate: kendo.animate || animate,\n ns: \"\",\n attr: function(value) {\n return \"data-\" + kendo.ns + value;\n },\n getShadows: getShadows,\n wrap: wrap,\n deepExtend: deepExtend,\n getComputedStyles: getComputedStyles,\n isScrollable: isScrollable,\n scrollLeft: scrollLeft,\n size: size,\n toCamelCase: toCamelCase,\n toHyphens: toHyphens,\n getOffset: kendo.getOffset || getOffset,\n parseEffects: kendo.parseEffects || parseEffects,\n toggleClass: kendo.toggleClass || toggleClass,\n directions: kendo.directions || directions,\n Observable: Observable,\n Class: Class,\n Template: Template,\n template: Template.compile.bind(Template),\n render: Template.render.bind(Template),\n stringify: JSON.stringify.bind(JSON),\n eventTarget: eventTarget,\n htmlEncode: htmlEncode,\n unescape: unescape,\n isLocalUrl: function(url) {\n return url && !localUrlRe.test(url);\n },\n\n expr: function(expression, safe, paramName) {\n expression = expression || \"\";\n\n if (typeof safe == STRING) {\n paramName = safe;\n safe = false;\n }\n\n paramName = paramName || \"d\";\n\n if (expression && expression.charAt(0) !== \"[\") {\n expression = \".\" + expression;\n }\n\n if (safe) {\n expression = expression.replace(/\"([^.]*)\\.([^\"]*)\"/g,'\"$1_$DOT$_$2\"');\n expression = expression.replace(/'([^.]*)\\.([^']*)'/g,\"'$1_$DOT$_$2'\");\n expression = wrapExpression(expression.split(\".\"), paramName);\n expression = expression.replace(/_\\$DOT\\$_/g, \".\");\n } else {\n expression = paramName + expression;\n }\n\n return expression;\n },\n\n getter: function(expression, safe) {\n var key = expression + safe;\n return getterCache[key] = getterCache[key] || new Function(\"d\", \"return \" + kendo.expr(expression, safe));\n },\n\n setter: function(expression) {\n return setterCache[expression] = setterCache[expression] || new Function(\"d,value\", kendo.expr(expression) + \"=value\");\n },\n\n accessor: function(expression) {\n return {\n get: kendo.getter(expression),\n set: kendo.setter(expression)\n };\n },\n\n guid: function() {\n var id = \"\", i, random, chars = \"abcdef\";\n\n id += chars[Math.floor(Math.random() * Math.floor(chars.length))];\n\n for (i = 1; i < 32; i++) {\n random = math.random() * 16 | 0;\n\n if (i == 8 || i == 12 || i == 16 || i == 20) {\n id += \"-\";\n }\n id += (i == 12 ? 4 : (i == 16 ? (random & 3 | 8) : random)).toString(16);\n }\n\n return id;\n },\n\n roleSelector: function(role) {\n return role.replace(/(\\S+)/g, \"[\" + kendo.attr(\"role\") + \"=$1],\").slice(0, -1);\n },\n\n directiveSelector: function(directives) {\n var selectors = directives.split(\" \");\n\n if (selectors) {\n for (var i = 0; i < selectors.length; i++) {\n if (selectors[i] != \"view\") {\n selectors[i] = selectors[i].replace(/(\\w*)(view|bar|strip|over)$/, \"$1-$2\");\n }\n }\n }\n\n return selectors.join(\" \").replace(/(\\S+)/g, \"kendo-mobile-$1,\").slice(0, -1);\n },\n\n triggeredByInput: function(e) {\n return (/^(label|input|textarea|select)$/i).test(e.target.tagName);\n },\n\n onWidgetRegistered: function(callback) {\n for (var i = 0, len = kendo.widgets.length; i < len; i++) {\n callback(kendo.widgets[i]);\n }\n\n kendo._widgetRegisteredCallbacks.push(callback);\n },\n\n logToConsole: function(message, type) {\n var console = window.console;\n\n if (!kendo.suppressLog && typeof(console) != \"undefined\" && console.log) {\n console[type || \"log\"](message);\n }\n }\n });\n\n var Widget = Observable.extend( {\n init: function(element, options) {\n var that = this;\n\n validatePackage();\n\n that.element = kendo.jQuery(element).handler(that);\n\n that.angular(\"init\", options);\n\n Observable.fn.init.call(that);\n\n var dataSource = options ? options.dataSource : null;\n var props;\n\n if (options) {\n props = (that.componentTypes || {})[(options || {}).componentType];\n }\n\n if (dataSource) {\n // avoid deep cloning the data source\n options = extend({}, options, { dataSource: {} });\n }\n\n options = that.options = extend(true, {}, that.options, that.defaults, props || {}, options);\n\n if (dataSource) {\n options.dataSource = dataSource;\n }\n\n if (!that.element.attr(kendo.attr(\"role\"))) {\n that.element.attr(kendo.attr(\"role\"), (options.name || \"\").toLowerCase());\n }\n\n that.element.data(\"kendo\" + options.prefix + options.name, that);\n\n that.bind(that.events, options);\n },\n\n events: [],\n\n options: {\n prefix: \"\"\n },\n\n _hasBindingTarget: function() {\n return !!this.element[0].kendoBindingTarget;\n },\n\n _tabindex: function(target) {\n target = target || this.wrapper;\n\n var element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = target.attr(TABINDEX) || element.attr(TABINDEX);\n\n element.removeAttr(TABINDEX);\n\n target.attr(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n },\n\n setOptions: function(options) {\n this._clearCssClasses(options);\n this._setEvents(options);\n $.extend(this.options, options);\n this._applyCssClasses();\n },\n\n _setEvents: function(options) {\n var that = this,\n idx = 0,\n length = that.events.length,\n e;\n\n for (; idx < length; idx ++) {\n e = that.events[idx];\n if (that.options[e] && options[e]) {\n that.unbind(e, that.options[e]);\n if (that._events && that._events[e]) {\n delete that._events[e];\n }\n }\n }\n\n that.bind(that.events, options);\n },\n\n resize: function(force) {\n var size = this.getSize(),\n currentSize = this._size;\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n },\n\n getSize: function() {\n return kendo.dimensions(this.element);\n },\n\n size: function(size) {\n if (!size) {\n return this.getSize();\n } else {\n this.setSize(size);\n }\n },\n\n setSize: $.noop,\n _resize: $.noop,\n\n destroy: function() {\n var that = this;\n\n that.element.removeData(\"kendo\" + that.options.prefix + that.options.name);\n that.element.removeData(\"handler\");\n that.unbind();\n },\n _destroy: function() {\n this.destroy();\n },\n angular: function() {},\n\n _muteAngularRebind: function(callback) {\n this._muteRebind = true;\n\n callback.call(this);\n\n this._muteRebind = false;\n },\n\n _applyCssClasses: function(element) {\n var protoOptions = this.__proto__.options,\n options = this.options,\n el = element || this.wrapper || this.element,\n classes = [],\n i, prop, validFill, widgetName;\n\n if (!kendo.cssProperties.propertyDictionary[protoOptions.name]) {\n return;\n }\n\n for (i = 0; i < cssPropertiesNames.length; i++) {\n prop = cssPropertiesNames[i];\n widgetName = this.options._altname || protoOptions.name;\n\n if (protoOptions.hasOwnProperty(prop)) {\n if (prop === \"themeColor\") {\n validFill = kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"fillMode\",\n value: options.fillMode\n });\n\n if (validFill && validFill.length) {\n classes.push(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: options[prop],\n fill: options.fillMode\n }));\n }\n } else {\n classes.push(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: options[prop]\n }));\n }\n }\n }\n\n el.addClass(classes.join(\" \"));\n },\n\n _ariaLabel: function(target) {\n var that = this,\n inputElm = that.element,\n inputId = inputElm.attr(\"id\"),\n labelElm = $(\"label[for=\\\"\" + inputId + \"\\\"]\"),\n ariaLabel = inputElm.attr(ARIA_LABEL),\n ariaLabelledBy = inputElm.attr(ARIA_LABELLEDBY),\n labelId;\n\n if (target[0] === inputElm[0]) {\n return;\n }\n\n if (ariaLabel) {\n target.attr(ARIA_LABEL, ariaLabel);\n } else if (ariaLabelledBy) {\n target.attr(ARIA_LABELLEDBY, ariaLabelledBy);\n } else if (labelElm.length) {\n labelId = labelElm.attr(\"id\") || that._generateLabelId(labelElm, inputId || kendo.guid());\n target.attr(ARIA_LABELLEDBY, labelId);\n }\n },\n\n _clearCssClasses: function(newOptions, element) {\n var protoOptions = this.__proto__.options,\n currentOptions = this.options,\n el = element || this.wrapper || this.element,\n i, prop, widgetName;\n\n if (!kendo.cssProperties.propertyDictionary[protoOptions.name]) {\n return;\n }\n\n for (i = 0; i < cssPropertiesNames.length; i++) {\n prop = cssPropertiesNames[i];\n widgetName = this.options._altname || protoOptions.name;\n\n if (protoOptions.hasOwnProperty(prop) && newOptions.hasOwnProperty(prop)) {\n if (prop === \"themeColor\") {\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: currentOptions[prop],\n fill: currentOptions.fillMode\n }));\n } else {\n if (prop === \"fillMode\") {\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"themeColor\",\n value: currentOptions.themeColor,\n fill: currentOptions.fillMode\n }));\n }\n\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: currentOptions[prop]\n }));\n }\n }\n }\n },\n\n _generateLabelId: function(label, inputId) {\n var labelId = inputId + LABELIDPART;\n\n label.attr(\"id\", labelId);\n\n return labelId;\n },\n });\n\n var DataBoundWidget = Widget.extend({\n // Angular consumes these.\n dataItems: function() {\n return this.dataSource.flatView();\n },\n\n _angularItems: function(cmd) {\n var that = this;\n that.angular(cmd, function() {\n return {\n elements: that.items(),\n data: $.map(that.dataItems(), function(dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n }\n });\n\n kendo.dimensions = function(element, dimensions) {\n var domElement = element[0];\n\n if (dimensions) {\n element.css(dimensions);\n }\n\n return { width: domElement.offsetWidth, height: domElement.offsetHeight };\n };\n\n kendo.notify = noop;\n\n var templateRegExp = /template$/i,\n jsonRegExp = /^\\s*(?:\\{(?:.|\\r\\n|\\n)*\\}|\\[(?:.|\\r\\n|\\n)*\\])\\s*$/,\n jsonFormatRegExp = /^\\{(\\d+)(:[^\\}]+)?\\}|^\\[[A-Za-z_]+\\]$/,\n dashRegExp = /([A-Z])/g;\n\n function parseOption(element, option) {\n var value;\n\n if (option.indexOf(\"data\") === 0) {\n option = option.substring(4);\n option = option.charAt(0).toLowerCase() + option.substring(1);\n }\n\n option = option.replace(dashRegExp, \"-$1\");\n value = element.getAttribute(\"data-\" + kendo.ns + option);\n\n if (value === null) {\n value = undefined$1;\n } else if (value === \"null\") {\n value = null;\n } else if (value === \"true\") {\n value = true;\n } else if (value === \"false\") {\n value = false;\n } else if (numberRegExp.test(value) && option != \"mask\" && option != \"format\") {\n value = parseFloat(value);\n } else if (jsonRegExp.test(value) && !jsonFormatRegExp.test(value)) {\n value = new Function(\"return (\" + value + \")\")();\n }\n\n return value;\n }\n\n function parseOptions(element, options, source) {\n var result = {},\n option,\n value,\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\n\n for (option in options) {\n value = parseOption(element, option);\n\n if (value !== undefined$1) {\n\n if (templateRegExp.test(option) && role != \"drawer\") {\n if (typeof value === \"string\") {\n if ($(\"#\" + value).length) {\n value = kendo.template($(\"#\" + value).html());\n } else if (source) {\n value = kendo.template(source[value]);\n }\n } else {\n value = element.getAttribute(option);\n }\n }\n\n result[option] = value;\n }\n }\n\n return result;\n }\n\n kendo.initWidget = function(element, options, roles) {\n var result,\n option,\n widget,\n idx,\n length,\n role,\n value,\n dataSource,\n fullPath,\n widgetKeyRegExp;\n\n // Preserve backwards compatibility with (element, options, namespace) signature, where namespace was kendo.ui\n if (!roles) {\n roles = kendo.ui.roles;\n } else if (roles.roles) {\n roles = roles.roles;\n }\n\n element = element.nodeType ? element : element[0];\n\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\n\n if (!role) {\n return;\n }\n\n fullPath = role.indexOf(\".\") === -1;\n\n // look for any widget that may be already instantiated based on this role.\n // The prefix used is unknown, hence the regexp\n //\n\n if (fullPath) {\n widget = roles[role];\n } else { // full namespace path - like kendo.ui.Widget\n widget = kendo.getter(role)(window);\n }\n\n var data = $(element).data(),\n widgetKey = widget ? \"kendo\" + widget.fn.options.prefix + widget.fn.options.name : \"\";\n\n if (fullPath) {\n widgetKeyRegExp = new RegExp(\"^kendo.*\" + role + \"$\", \"i\");\n } else { // full namespace path - like kendo.ui.Widget\n widgetKeyRegExp = new RegExp(\"^\" + widgetKey + \"$\", \"i\");\n }\n\n for (var key in data) {\n if (key.match(widgetKeyRegExp)) {\n // we have detected a widget of the same kind - save its reference, we will set its options\n if (key === widgetKey) {\n result = data[key];\n } else {\n return data[key];\n }\n }\n }\n\n if (!widget) {\n return;\n }\n\n dataSource = parseOption(element, \"dataSource\");\n\n options = $.extend({}, parseOptions(element, $.extend({}, widget.fn.options, widget.fn.defaults) ), options);\n\n if (dataSource) {\n if (typeof dataSource === STRING) {\n options.dataSource = kendo.getter(dataSource)(window);\n } else {\n options.dataSource = dataSource;\n }\n }\n\n for (idx = 0, length = widget.fn.events.length; idx < length; idx++) {\n option = widget.fn.events[idx];\n\n value = parseOption(element, option);\n\n if (value !== undefined$1) {\n options[option] = kendo.getter(value)(window);\n }\n }\n\n if (!result) {\n result = new widget(element, options);\n } else if (!$.isEmptyObject(options)) {\n result.setOptions(options);\n }\n\n return result;\n };\n\n kendo.rolesFromNamespaces = function(namespaces) {\n var roles = [],\n idx,\n length;\n\n if (!namespaces[0]) {\n namespaces = [kendo.ui, kendo.dataviz.ui];\n }\n\n for (idx = 0, length = namespaces.length; idx < length; idx ++) {\n roles[idx] = namespaces[idx].roles;\n }\n\n return extend.apply(null, [{}].concat(roles.reverse()));\n };\n\n kendo.init = function(element) {\n var roles = kendo.rolesFromNamespaces(slice.call(arguments, 1));\n\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function() {\n kendo.initWidget(this, {}, roles);\n });\n };\n\n kendo.destroy = function(element) {\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function() {\n var data = $(this).data();\n\n for (var key in data) {\n if (key.indexOf(\"kendo\") === 0 && typeof data[key].destroy === FUNCTION) {\n data[key].destroy();\n }\n }\n });\n };\n\n function containmentComparer(a, b) {\n return $.contains(a, b) ? -1 : 1;\n }\n\n function resizableWidget() {\n var widget = $(this);\n return ($.inArray(widget.attr(\"data-\" + kendo.ns + \"role\"), [\"slider\", \"rangeslider\", \"breadcrumb\"]) > -1) || widget.is(\":visible\");\n }\n\n kendo.resize = function(element, force) {\n var widgets = $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().filter(resizableWidget);\n\n if (!widgets.length) {\n return;\n }\n\n // sort widgets based on their parent-child relation\n var widgetsArray = $.makeArray(widgets);\n widgetsArray.sort(containmentComparer);\n\n // resize widgets\n $.each(widgetsArray, function() {\n var widget = kendo.widgetInstance($(this));\n if (widget) {\n widget.resize(force);\n }\n });\n };\n\n kendo.parseOptions = parseOptions;\n\n extend(kendo.ui, {\n Widget: Widget,\n DataBoundWidget: DataBoundWidget,\n roles: {},\n progress: function(container, toggle, options) {\n var mask = container.find(\".k-loading-mask\"),\n support = kendo.support,\n browser = support.browser,\n isRtl, leftRight, webkitCorrection, containerScrollLeft, cssClass;\n\n options = $.extend({}, {\n width: \"100%\",\n height: \"100%\",\n top: container.scrollTop(),\n opacity: false\n }, options);\n\n cssClass = options.opacity ? 'k-loading-mask k-opaque' : 'k-loading-mask';\n\n if (toggle) {\n if (!mask.length) {\n isRtl = support.isRtl(container);\n leftRight = isRtl ? \"right\" : \"left\";\n containerScrollLeft = kendo.scrollLeft(container);\n webkitCorrection = browser.webkit ? (!isRtl ? 0 : container[0].scrollWidth - container.width() - 2 * containerScrollLeft) : 0;\n\n mask = $(kendo.format(\"
{1}
\", cssClass, kendo.ui.progress.messages.loading))\n .width(options.width).height(options.height)\n .css(\"top\", options.top)\n .css(leftRight, Math.abs(containerScrollLeft) + webkitCorrection)\n .prependTo(container);\n }\n } else if (mask) {\n mask.remove();\n }\n },\n plugin: function(widget, register, prefix) {\n var name = widget.fn.options.name,\n getter;\n\n register = register || kendo.ui;\n prefix = prefix || \"\";\n\n register[name] = widget;\n\n register.roles[name.toLowerCase()] = widget;\n\n getter = \"getKendo\" + prefix + name;\n name = \"kendo\" + prefix + name;\n\n var widgetEntry = { name: name, widget: widget, prefix: prefix || \"\" };\n kendo.widgets.push(widgetEntry);\n\n for (var i = 0, len = kendo._widgetRegisteredCallbacks.length; i < len; i++) {\n kendo._widgetRegisteredCallbacks[i](widgetEntry);\n }\n\n $.fn[name] = function(options) {\n var value = this,\n args;\n\n if (typeof options === STRING) {\n args = slice.call(arguments, 1);\n\n this.each(function() {\n var widget = $.data(this, name),\n method,\n result;\n\n if (!widget) {\n throw new Error(kendo.format(\"Cannot call method '{0}' of {1} before it is initialized\", options, name));\n }\n\n method = widget[options];\n\n if (typeof method !== FUNCTION) {\n throw new Error(kendo.format(\"Cannot find method '{0}' of {1}\", options, name));\n }\n\n result = method.apply(widget, args);\n\n if (result !== undefined$1) {\n value = result;\n return false;\n }\n });\n } else {\n this.each(function() {\n return new widget(this, options);\n });\n }\n\n return value;\n };\n\n $.fn[name].widget = widget;\n\n $.fn[getter] = function() {\n return this.data(name);\n };\n }\n });\n\n kendo.ui.progress.messages = {\n loading: \"Loading...\"\n };\n\n var ContainerNullObject = { bind: function() { return this; }, nullObject: true, options: {} };\n\n var MobileWidget = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n this.element.autoApplyNS();\n this.wrapper = this.element;\n this.element.addClass(\"km-widget\");\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n this.element.kendoDestroy();\n },\n\n options: {\n prefix: \"Mobile\"\n },\n\n events: [],\n\n view: function() {\n var viewElement = this.element.closest(kendo.roleSelector(\"view splitview modalview drawer\"));\n return kendo.widgetInstance(viewElement, kendo.mobile.ui) || ContainerNullObject;\n },\n\n viewHasNativeScrolling: function() {\n var view = this.view();\n return view && view.options.useNativeScrolling;\n },\n\n container: function() {\n var element = this.element.closest(kendo.roleSelector(\"view layout modalview drawer splitview\"));\n return kendo.widgetInstance(element.eq(0), kendo.mobile.ui) || ContainerNullObject;\n }\n });\n\n extend(kendo.mobile, {\n init: function(element) {\n kendo.init(element, kendo.mobile.ui, kendo.ui, kendo.dataviz.ui);\n },\n\n appLevelNativeScrolling: function() {\n return kendo.mobile.application && kendo.mobile.application.options && kendo.mobile.application.options.useNativeScrolling;\n },\n\n roles: {},\n\n ui: {\n Widget: MobileWidget,\n DataBoundWidget: DataBoundWidget.extend(MobileWidget.prototype),\n roles: {},\n plugin: function(widget) {\n kendo.ui.plugin(widget, kendo.mobile.ui, \"Mobile\");\n }\n }\n });\n\n deepExtend(kendo.dataviz, {\n init: function(element) {\n kendo.init(element, kendo.dataviz.ui);\n },\n ui: {\n roles: {},\n themes: {},\n views: [],\n plugin: function(widget) {\n kendo.ui.plugin(widget, kendo.dataviz.ui);\n }\n },\n roles: {}\n });\n\n kendo.touchScroller = function(elements, options) {\n // return the first touch scroller\n if (!options) { options = {}; }\n\n options.useNative = true;\n\n return $(elements).map(function(idx, element) {\n element = $(element);\n if (support.kineticScrollNeeded && kendo.mobile.ui.Scroller && !element.data(\"kendoMobileScroller\")) {\n element.kendoMobileScroller(options);\n return element.data(\"kendoMobileScroller\");\n } else {\n return false;\n }\n })[0];\n };\n\n kendo.preventDefault = function(e) {\n e.preventDefault();\n };\n\n kendo.widgetInstance = function(element, suites) {\n var role = element.data(kendo.ns + \"role\"),\n widgets = [], i, length,\n elementData = element.data(\"kendoView\");\n\n if (role) {\n // HACK!!! mobile view scroller widgets are instantiated on data-role=\"content\" elements. We need to discover them when resizing.\n if (role === \"content\") {\n role = \"scroller\";\n }\n\n // kendoEditorToolbar is not a public plugin, thus it does not exist in kendo.ui.roles.\n // Therefore, this is needed in order to be resized when placed in Kendo Window.\n if (role === \"editortoolbar\") {\n var editorToolbar = element.data(\"kendoEditorToolbar\");\n if (editorToolbar) {\n return editorToolbar;\n }\n }\n\n // kendo.View is not a ui plugin\n\n if (role === \"view\" && elementData) {\n return elementData;\n }\n\n if (suites) {\n if (suites[0]) {\n for (i = 0, length = suites.length; i < length; i ++) {\n widgets.push(suites[i].roles[role]);\n }\n } else {\n widgets.push(suites.roles[role]);\n }\n }\n else {\n widgets = [ kendo.ui.roles[role], kendo.dataviz.ui.roles[role], kendo.mobile.ui.roles[role] ];\n }\n\n if (role.indexOf(\".\") >= 0) {\n widgets = [ kendo.getter(role)(window) ];\n }\n\n for (i = 0, length = widgets.length; i < length; i ++) {\n var widget = widgets[i];\n if (widget) {\n var instance = element.data(\"kendo\" + widget.fn.options.prefix + widget.fn.options.name);\n if (instance) {\n return instance;\n }\n }\n }\n }\n };\n\n kendo.onResize = function(callback) {\n var handler = callback;\n if (support.mobileOS.android) {\n handler = function() { setTimeout(callback, 600); };\n }\n\n $(window).on(support.resize, handler);\n return handler;\n };\n\n kendo.unbindResize = function(callback) {\n $(window).off(support.resize, callback);\n };\n\n kendo.attrValue = function(element, key) {\n return element.data(kendo.ns + key);\n };\n\n kendo.days = {\n Sunday: 0,\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6\n };\n\n function focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n\n return (/input|select|textarea|button|object/.test(nodeName) ?\n !element.disabled :\n nodeName === \"a\" ?\n element.href || isTabIndexNotNaN :\n isTabIndexNotNaN\n ) &&\n visible(element);\n }\n\n function visible(element) {\n return $.expr.pseudos.visible(element) &&\n !$(element).parents().addBack().filter(function() {\n return $.css(this,\"visibility\") === \"hidden\";\n }).length;\n }\n\n $.extend($.expr.pseudos, {\n kendoFocusable: function(element) {\n var idx = $.attr(element, \"tabindex\");\n return focusable(element, !isNaN(idx) && idx > -1);\n }\n });\n\n var MOUSE_EVENTS = [\"mousedown\", \"mousemove\", \"mouseenter\", \"mouseleave\", \"mouseover\", \"mouseout\", \"mouseup\", \"click\"];\n var EXCLUDE_BUST_CLICK_SELECTOR = \"label, input, [data-rel=external]\";\n\n var MouseEventNormalizer = {\n setupMouseMute: function() {\n var idx = 0,\n length = MOUSE_EVENTS.length,\n element = document.documentElement;\n\n if (MouseEventNormalizer.mouseTrap || !support.eventCapture) {\n return;\n }\n\n MouseEventNormalizer.mouseTrap = true;\n\n MouseEventNormalizer.bustClick = false;\n MouseEventNormalizer.captureMouse = false;\n\n var handler = function(e) {\n if (MouseEventNormalizer.captureMouse) {\n if (e.type === \"click\") {\n if (MouseEventNormalizer.bustClick && !$(e.target).is(EXCLUDE_BUST_CLICK_SELECTOR)) {\n e.preventDefault();\n e.stopPropagation();\n }\n } else {\n e.stopPropagation();\n }\n }\n };\n\n for (; idx < length; idx++) {\n element.addEventListener(MOUSE_EVENTS[idx], handler, true);\n }\n },\n\n muteMouse: function(e) {\n MouseEventNormalizer.captureMouse = true;\n if (e.data.bustClick) {\n MouseEventNormalizer.bustClick = true;\n }\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n },\n\n unMuteMouse: function() {\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n MouseEventNormalizer.mouseTrapTimeoutID = setTimeout(function() {\n MouseEventNormalizer.captureMouse = false;\n MouseEventNormalizer.bustClick = false;\n }, 400);\n }\n };\n\n var eventMap = {\n down: \"touchstart mousedown\",\n move: \"mousemove touchmove\",\n up: \"mouseup touchend touchcancel\",\n cancel: \"mouseleave touchcancel\"\n };\n\n if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\n eventMap = {\n down: \"touchstart\",\n move: \"touchmove\",\n up: \"touchend touchcancel\",\n cancel: \"touchcancel\"\n };\n } else if (support.pointers) {\n eventMap = {\n down: \"pointerdown\",\n move: \"pointermove\",\n up: \"pointerup\",\n cancel: \"pointercancel pointerleave\"\n };\n } else if (support.msPointers) {\n eventMap = {\n down: \"MSPointerDown\",\n move: \"MSPointerMove\",\n up: \"MSPointerUp\",\n cancel: \"MSPointerCancel MSPointerLeave\"\n };\n }\n\n if (support.msPointers && !(\"onmspointerenter\" in window)) { // IE10\n // Create MSPointerEnter/MSPointerLeave events using mouseover/out and event-time checks\n $.each({\n MSPointerEnter: \"MSPointerOver\",\n MSPointerLeave: \"MSPointerOut\"\n }, function( orig, fix ) {\n $.event.special[ orig ] = {\n delegateType: fix,\n bindType: fix,\n\n handle: function( event ) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mousenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if ( !related || (related !== target && !$.contains( target, related )) ) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply( this, arguments );\n event.type = fix;\n }\n return ret;\n }\n };\n });\n }\n\n\n var getEventMap = function(e) { return (eventMap[e] || e); },\n eventRegEx = /([^ ]+)/g;\n\n kendo.applyEventMap = function(events, ns) {\n events = events.replace(eventRegEx, getEventMap);\n\n if (ns) {\n events = events.replace(eventRegEx, \"$1.\" + ns);\n }\n\n return events;\n };\n\n kendo.keyDownHandler = function(e, widget) {\n var events = widget._events.kendoKeydown;\n\n if (!events) {\n return true;\n }\n\n events = events.slice();\n e.sender = widget;\n e.preventKendoKeydown = false;\n for (var idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(widget, e);\n }\n\n return !e.preventKendoKeydown;\n };\n\n var on = $.fn.on;\n\n function kendoJQuery(selector, context) {\n return new kendoJQuery.fn.init(selector, context);\n }\n\n noDepricateExtend(true, kendoJQuery, $);\n\n kendoJQuery.fn = kendoJQuery.prototype = new $();\n\n kendoJQuery.fn.constructor = kendoJQuery;\n\n kendoJQuery.fn.init = function(selector, context) {\n if (context && context instanceof $ && !(context instanceof kendoJQuery)) {\n context = kendoJQuery(context);\n }\n\n return $.fn.init.call(this, selector, context, rootjQuery);\n };\n\n kendoJQuery.fn.init.prototype = kendoJQuery.fn;\n\n var rootjQuery = kendoJQuery(document);\n\n extend(kendoJQuery.fn, {\n handler: function(handler) {\n this.data(\"handler\", handler);\n return this;\n },\n\n autoApplyNS: function(ns) {\n this.data(\"kendoNS\", ns || kendo.guid());\n return this;\n },\n\n on: function() {\n var that = this,\n ns = that.data(\"kendoNS\");\n\n // support for event map signature\n if (arguments.length === 1) {\n return on.call(that, arguments[0]);\n }\n\n var context = that,\n args = slice.call(arguments);\n\n if (typeof args[args.length - 1] === UNDEFINED) {\n args.pop();\n }\n\n var callback = args[args.length - 1],\n events = kendo.applyEventMap(args[0], ns);\n\n // setup mouse trap\n if (support.mouseAndTouchPresent && events.search(/mouse|click/) > -1 && this[0] !== document.documentElement) {\n MouseEventNormalizer.setupMouseMute();\n\n var selector = args.length === 2 ? null : args[1],\n bustClick = events.indexOf(\"click\") > -1 && events.indexOf(\"touchend\") > -1;\n\n on.call(this,\n {\n touchstart: MouseEventNormalizer.muteMouse,\n touchend: MouseEventNormalizer.unMuteMouse\n },\n selector,\n {\n bustClick: bustClick\n });\n }\n\n if (arguments[0].indexOf(\"keydown\") !== -1 && args[1] && args[1].options) {\n args[0] = events;\n var widget = args[1];\n var keyDownCallBack = args[args.length - 1];\n args[args.length - 1] = function(e) {\n if (kendo.keyDownHandler(e, widget)) {\n return keyDownCallBack.apply(this, [e]);\n }\n };\n on.apply(that, args);\n return that;\n }\n\n if (typeof callback === STRING) {\n context = that.data(\"handler\");\n callback = context[callback];\n\n args[args.length - 1] = function(e) {\n callback.call(context, e);\n };\n }\n\n args[0] = events;\n\n on.apply(that, args);\n\n return that;\n },\n\n kendoDestroy: function(ns) {\n ns = ns || this.data(\"kendoNS\");\n\n if (ns) {\n this.off(\".\" + ns);\n }\n\n return this;\n }\n });\n\n kendo.jQuery = kendoJQuery;\n kendo.eventMap = eventMap;\n\n kendo.timezone = (function() {\n var months = { Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5, Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11 };\n var days = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 };\n\n function ruleToDate(year, rule) {\n var date;\n var targetDay;\n var ourDay;\n var month = rule[3];\n var on = rule[4];\n var time = rule[5];\n var cache = rule[8];\n\n if (!cache) {\n rule[8] = cache = {};\n }\n\n if (cache[year]) {\n return cache[year];\n }\n\n if (!isNaN(on)) {\n date = new Date(Date.UTC(year, months[month], on, time[0], time[1], time[2], 0));\n } else if (on.indexOf(\"last\") === 0) {\n date = new Date(Date.UTC(year, months[month] + 1, 1, time[0] - 24, time[1], time[2], 0));\n\n targetDay = days[on.substr(4, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n } else if (on.indexOf(\">=\") >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay + (targetDay < ourDay ? 7 : 0));\n } else if (on.indexOf(\"<=\") >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n }\n\n return cache[year] = date;\n }\n\n function findRule(utcTime, rules, zone) {\n rules = rules[zone];\n\n if (!rules) {\n var time = zone.split(\":\");\n var offset = 0;\n\n if (time.length > 1) {\n offset = time[0] * 60 + Number(time[1]);\n }\n\n return [-1000000, 'max', '-', 'Jan', 1, [0, 0, 0], offset, '-'];\n }\n\n var year = new Date(utcTime).getUTCFullYear();\n\n rules = jQuery.grep(rules, function(rule) {\n var from = rule[0];\n var to = rule[1];\n\n return from <= year && (to >= year || (from == year && to == \"only\") || to == \"max\");\n });\n\n rules.push(utcTime);\n\n rules.sort(function(a, b) {\n if (typeof a != \"number\") {\n a = Number(ruleToDate(year, a));\n }\n\n if (typeof b != \"number\") {\n b = Number(ruleToDate(year, b));\n }\n\n return a - b;\n });\n\n var rule = rules[jQuery.inArray(utcTime, rules) - 1] || rules[rules.length - 1];\n\n return isNaN(rule) ? rule : null;\n }\n\n function findZone(utcTime, zones, timezone) {\n var zoneRules = zones[timezone];\n\n if (typeof zoneRules === \"string\") {\n zoneRules = zones[zoneRules];\n }\n\n if (!zoneRules) {\n throw new Error('Timezone \"' + timezone + '\" is either incorrect, or kendo.timezones.min.js is not included.');\n }\n\n for (var idx = zoneRules.length - 1; idx >= 0; idx--) {\n var until = zoneRules[idx][3];\n\n if (until && utcTime > until) {\n break;\n }\n }\n\n var zone = zoneRules[idx + 1];\n\n if (!zone) {\n throw new Error('Timezone \"' + timezone + '\" not found on ' + utcTime + \".\");\n }\n\n return zone;\n }\n\n function zoneAndRule(utcTime, zones, rules, timezone) {\n if (typeof utcTime != NUMBER) {\n utcTime = Date.UTC(utcTime.getFullYear(), utcTime.getMonth(),\n utcTime.getDate(), utcTime.getHours(), utcTime.getMinutes(),\n utcTime.getSeconds(), utcTime.getMilliseconds());\n }\n\n var zone = findZone(utcTime, zones, timezone);\n\n return {\n zone: zone,\n rule: findRule(utcTime, rules, zone[1])\n };\n }\n\n function offset(utcTime, timezone) {\n if (timezone == \"Etc/UTC\" || timezone == \"Etc/GMT\") {\n return 0;\n }\n\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n\n return kendo.parseFloat(rule ? zone[0] - rule[6] : zone[0]);\n }\n\n function abbr(utcTime, timezone) {\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n\n var base = zone[2];\n\n if (base.indexOf(\"/\") >= 0) {\n return base.split(\"/\")[rule && +rule[6] ? 1 : 0];\n } else if (base.indexOf(\"%s\") >= 0) {\n return base.replace(\"%s\", (!rule || rule[7] == \"-\") ? '' : rule[7]);\n }\n\n return base;\n }\n\n function convert(date, fromOffset, toOffset) {\n var tempToOffset = toOffset;\n var diff;\n\n if (typeof fromOffset == STRING) {\n fromOffset = this.offset(date, fromOffset);\n }\n\n if (typeof toOffset == STRING) {\n toOffset = this.offset(date, toOffset);\n }\n\n var fromLocalOffset = date.getTimezoneOffset();\n\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n var toLocalOffset = date.getTimezoneOffset();\n\n if (typeof tempToOffset == STRING) {\n tempToOffset = this.offset(date, tempToOffset);\n }\n\n diff = (toLocalOffset - fromLocalOffset) + (toOffset - tempToOffset);\n\n return new Date(date.getTime() + diff * 60000);\n }\n\n function apply(date, timezone) {\n return this.convert(date, date.getTimezoneOffset(), timezone);\n }\n\n function remove(date, timezone) {\n return this.convert(date, timezone, date.getTimezoneOffset());\n }\n\n function toLocalDate(time) {\n return this.apply(new Date(time), \"Etc/UTC\");\n }\n\n return {\n zones: {},\n rules: {},\n offset: offset,\n convert: convert,\n apply: apply,\n remove: remove,\n abbr: abbr,\n toLocalDate: toLocalDate\n };\n })();\n\n kendo.date = (function() {\n var MS_PER_MINUTE = 60000,\n MS_PER_DAY = 86400000;\n\n function adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n }\n\n function setDayOfWeek(date, day, dir) {\n var hours = date.getHours();\n\n dir = dir || 1;\n day = ((day - date.getDay()) + (7 * dir)) % 7;\n\n date.setDate(date.getDate() + day);\n adjustDST(date, hours);\n }\n\n function dayOfWeek(date, day, dir) {\n date = new Date(date);\n setDayOfWeek(date, day, dir);\n return date;\n }\n\n function firstDayOfMonth(date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n 1\n );\n }\n\n function lastDayOfMonth(date) {\n var last = new Date(date.getFullYear(), date.getMonth() + 1, 0),\n first = firstDayOfMonth(date),\n timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n\n if (timeOffset) {\n last.setHours(first.getHours() + (timeOffset / 60));\n }\n\n return last;\n }\n\n function firstDayOfYear(date) {\n return new Date(date.getFullYear(), 0, 1);\n }\n\n function lastDayOfYear(date) {\n return new Date(date.getFullYear(), 11, 31);\n }\n\n function moveDateToWeekStart(date, weekStartDay) {\n if (weekStartDay !== 1) {\n return addDays(dayOfWeek(date, weekStartDay, -1), 4);\n }\n\n return addDays(date, (4 - (date.getDay() || 7)));\n }\n\n function calcWeekInYear(date, weekStartDay) {\n var firstWeekInYear = new Date(date.getFullYear(), 0, 1, -6);\n\n var newDate = moveDateToWeekStart(date, weekStartDay);\n\n var diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n\n var days = Math.floor(diffInMS / MS_PER_DAY);\n\n return 1 + Math.floor(days / 7);\n }\n\n function weekInYear(date, weekStartDay) {\n if (weekStartDay === undefined$1) {\n weekStartDay = kendo.culture().calendar.firstDay;\n }\n\n var prevWeekDate = addDays(date, -7);\n var nextWeekDate = addDays(date, 7);\n\n var weekNumber = calcWeekInYear(date, weekStartDay);\n\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n\n return weekNumber;\n }\n\n function getDate(date) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n adjustDST(date, 0);\n return date;\n }\n\n function toUtcTime(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(),\n date.getDate(), date.getHours(), date.getMinutes(),\n date.getSeconds(), date.getMilliseconds());\n }\n\n function getMilliseconds(date) {\n return toInvariantTime(date).getTime() - getDate(toInvariantTime(date));\n }\n\n function isInTimeRange(value, min, max) {\n var msMin = getMilliseconds(min),\n msMax = getMilliseconds(max),\n msValue;\n\n if (!value || msMin == msMax) {\n return true;\n }\n\n if (min >= max) {\n max += MS_PER_DAY;\n }\n\n msValue = getMilliseconds(value);\n\n if (msMin > msValue) {\n msValue += MS_PER_DAY;\n }\n\n if (msMax < msMin) {\n msMax += MS_PER_DAY;\n }\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n function isInDateRange(value, min, max) {\n var msMin = min.getTime(),\n msMax = max.getTime(),\n msValue;\n\n if (msMin >= msMax) {\n msMax += MS_PER_DAY;\n }\n\n msValue = value.getTime();\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n function addDays(date, offset) {\n var hours = date.getHours();\n date = new Date(date);\n\n setTime(date, offset * MS_PER_DAY);\n adjustDST(date, hours);\n return date;\n }\n\n function setTime(date, milliseconds, ignoreDST) {\n var offset = date.getTimezoneOffset();\n var difference;\n\n date.setTime(date.getTime() + milliseconds);\n\n if (!ignoreDST) {\n difference = date.getTimezoneOffset() - offset;\n date.setTime(date.getTime() + difference * MS_PER_MINUTE);\n }\n }\n\n function setHours(date, time) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n adjustDST(date, time.getHours());\n return date;\n }\n\n function today() {\n return getDate(new Date());\n }\n\n function isToday(date) {\n return getDate(date).getTime() == today().getTime();\n }\n\n function toInvariantTime(date) {\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n\n if (date) {\n staticDate.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n }\n\n return staticDate;\n }\n\n function addYear(date, offset) {\n var currentDate = new Date(date);\n\n return new Date(currentDate.setFullYear(currentDate.getFullYear() + offset));\n }\n\n return {\n adjustDST: adjustDST,\n dayOfWeek: dayOfWeek,\n setDayOfWeek: setDayOfWeek,\n getDate: getDate,\n isInDateRange: isInDateRange,\n isInTimeRange: isInTimeRange,\n isToday: isToday,\n nextDay: function(date) {\n return addDays(date, 1);\n },\n previousDay: function(date) {\n return addDays(date, -1);\n },\n toUtcTime: toUtcTime,\n MS_PER_DAY: MS_PER_DAY,\n MS_PER_HOUR: 60 * MS_PER_MINUTE,\n MS_PER_MINUTE: MS_PER_MINUTE,\n setTime: setTime,\n setHours: setHours,\n addDays: addDays,\n today: today,\n toInvariantTime: toInvariantTime,\n firstDayOfMonth: firstDayOfMonth,\n lastDayOfMonth: lastDayOfMonth,\n weekInYear: weekInYear,\n getMilliseconds: getMilliseconds,\n firstDayOfYear: firstDayOfYear,\n lastDayOfYear: lastDayOfYear,\n nextYear: function(date) {\n return addYear(date, 1);\n },\n previousYear: function(date) {\n return addYear(date, -1);\n }\n };\n })();\n\n\n kendo.stripWhitespace = function(element) {\n if (document.createNodeIterator) {\n var iterator = document.createNodeIterator(element, NodeFilter.SHOW_TEXT, function(node) {\n return node.parentNode == element ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n }, false);\n\n while (iterator.nextNode()) {\n if (iterator.referenceNode && !iterator.referenceNode.textContent.trim()) {\n iterator.referenceNode.parentNode.removeChild(iterator.referenceNode);\n }\n }\n } else { // IE7/8 support\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n\n if (child.nodeType == 3 && !/\\S/.test(child.nodeValue)) {\n element.removeChild(child);\n i--;\n }\n\n if (child.nodeType == 1) {\n kendo.stripWhitespace(child);\n }\n }\n }\n };\n\n var animationFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n kendo.animationFrame = function(callback) {\n animationFrame.call(window, callback);\n };\n\n var animationQueue = [];\n\n kendo.queueAnimation = function(callback) {\n animationQueue[animationQueue.length] = callback;\n if (animationQueue.length === 1) {\n kendo.runNextAnimation();\n }\n };\n\n kendo.runNextAnimation = function() {\n kendo.animationFrame(function() {\n if (animationQueue[0]) {\n animationQueue.shift()();\n if (animationQueue[0]) {\n kendo.runNextAnimation();\n }\n }\n });\n };\n\n kendo.parseQueryStringParams = function(url) {\n var queryString = url.split('?')[1] || \"\",\n params = {},\n paramParts = queryString.split(/&|=/),\n length = paramParts.length,\n idx = 0;\n\n for (; idx < length; idx += 2) {\n if (paramParts[idx] !== \"\") {\n params[decodeURIComponent(paramParts[idx])] = decodeURIComponent(paramParts[idx + 1]);\n }\n }\n\n return params;\n };\n\n kendo.elementUnderCursor = function(e) {\n if (typeof e.x.client != \"undefined\") {\n return document.elementFromPoint(e.x.client, e.y.client);\n }\n };\n\n kendo.wheelDeltaY = function(jQueryEvent) {\n var e = jQueryEvent.originalEvent,\n deltaY = e.wheelDeltaY,\n delta;\n\n if (e.wheelDelta) { // Webkit and IE\n if (deltaY === undefined$1 || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)\n delta = e.wheelDelta;\n }\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera\n delta = (-e.detail) * 10;\n }\n\n return delta;\n };\n\n kendo.throttle = function(fn, delay) {\n var timeout;\n var lastExecTime = 0;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n var throttled = function() {\n var that = this;\n var elapsed = +new Date() - lastExecTime;\n var args = arguments;\n\n function exec() {\n fn.apply(that, args);\n lastExecTime = +new Date();\n }\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n };\n\n\n kendo.caret = function(element, start, end) {\n var rangeElement;\n var isPosition = start !== undefined$1;\n\n if (end === undefined$1) {\n end = start;\n }\n\n if (element[0]) {\n element = element[0];\n }\n\n if (isPosition && element.disabled) {\n return;\n }\n\n try {\n if (element.selectionStart !== undefined$1) {\n if (isPosition) {\n element.focus();\n var mobile = support.mobileOS;\n if (mobile.wp || mobile.android) {// without the timeout the caret is at the end of the input\n setTimeout(function() { element.setSelectionRange(start, end); }, 0);\n }\n else {\n element.setSelectionRange(start, end);\n }\n } else {\n start = [element.selectionStart, element.selectionEnd];\n }\n } else if (document.selection) {\n if ($(element).is(\":visible\")) {\n element.focus();\n }\n\n rangeElement = element.createTextRange();\n\n if (isPosition) {\n rangeElement.collapse(true);\n rangeElement.moveStart(\"character\", start);\n rangeElement.moveEnd(\"character\", end - start);\n rangeElement.select();\n } else {\n var rangeDuplicated = rangeElement.duplicate(),\n selectionStart, selectionEnd;\n\n rangeElement.moveToBookmark(document.selection.createRange().getBookmark());\n rangeDuplicated.setEndPoint('EndToStart', rangeElement);\n selectionStart = rangeDuplicated.text.length;\n selectionEnd = selectionStart + rangeElement.text.length;\n\n start = [selectionStart, selectionEnd];\n }\n }\n } catch (e) {\n /* element is not focused or it is not in the DOM */\n start = [];\n }\n\n return start;\n };\n\n kendo.compileMobileDirective = function(element, scope) {\n var angular = window.angular;\n\n element.attr(\"data-\" + kendo.ns + \"role\", element[0].tagName.toLowerCase().replace('kendo-mobile-', '').replace('-', ''));\n\n angular.element(element).injector().invoke([\"$compile\", function($compile) {\n $compile(element)(scope);\n\n if (!/^\\$(digest|apply)$/.test(scope.$$phase)) {\n scope.$digest();\n }\n }]);\n\n return kendo.widgetInstance(element, kendo.mobile.ui);\n };\n\n kendo.antiForgeryTokens = function() {\n var tokens = { },\n csrf_token = $(\"meta[name=csrf-token],meta[name=_csrf]\").attr(\"content\"),\n csrf_param = $(\"meta[name=csrf-param],meta[name=_csrf_header]\").attr(\"content\");\n\n $(\"input[name^='__RequestVerificationToken']\").each(function() {\n tokens[this.name] = this.value;\n });\n\n if (csrf_param !== undefined$1 && csrf_token !== undefined$1) {\n tokens[csrf_param] = csrf_token;\n }\n\n return tokens;\n };\n\n kendo.cycleForm = function(form) {\n var firstElement = form.find(\"input, .k-widget, .k-dropdownlist, .k-combobox\").first();\n var lastElement = form.find(\"button, .k-button\").last();\n\n function focus(el) {\n var widget = kendo.widgetInstance(el);\n\n if (widget && widget.focus) {\n widget.focus();\n } else {\n el.trigger(\"focus\");\n }\n }\n\n lastElement.on(\"keydown\", function(e) {\n if (e.keyCode == kendo.keys.TAB && !e.shiftKey) {\n e.preventDefault();\n focus(firstElement);\n }\n });\n\n firstElement.on(\"keydown\", function(e) {\n if (e.keyCode == kendo.keys.TAB && e.shiftKey) {\n e.preventDefault();\n focus(lastElement);\n }\n });\n };\n\n kendo.focusElement = function(element) {\n var scrollTopPositions = [];\n var scrollableParents = element.parentsUntil(\"body\")\n .filter(function(index, element) {\n var computedStyle = kendo.getComputedStyles(element, [\"overflow\"]);\n return computedStyle.overflow !== \"visible\";\n })\n .add(window);\n\n scrollableParents.each(function(index, parent) {\n scrollTopPositions[index] = $(parent).scrollTop();\n });\n\n try {\n //The setActive method does not cause the document to scroll to the active object in the current page\n element[0].setActive();\n } catch (e) {\n element[0].focus();\n }\n\n scrollableParents.each(function(index, parent) {\n $(parent).scrollTop(scrollTopPositions[index]);\n });\n };\n\n kendo.focusNextElement = function() {\n if (document.activeElement) {\n var focussable = $(\":kendoFocusable\");\n var index = focussable.index(document.activeElement);\n\n if (index > -1) {\n var nextElement = focussable[index + 1] || focussable[0];\n nextElement.focus();\n }\n }\n };\n\n kendo.trim = function(value) {\n if (!!value) {\n return value.toString().trim();\n } else {\n return \"\";\n }\n };\n\n kendo.getWidgetFocusableElement = function(element) {\n var nextFocusable = element.closest(\":kendoFocusable\"),\n widgetInstance = kendo.widgetInstance(element),\n target;\n\n if (nextFocusable.length) {\n target = nextFocusable;\n } else if (widgetInstance) {\n target = widgetInstance.options.name === 'Editor' ?\n $(widgetInstance.body) :\n widgetInstance.wrapper.find(\":kendoFocusable\").first();\n } else {\n target = element;\n }\n\n return target;\n };\n\n kendo.addAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n if (current.indexOf(value) < 0) {\n element.attr(attribute, (current + \" \" + value).trim());\n }\n };\n\n kendo.removeAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n element.attr(attribute, current.replace(value, \"\").trim());\n };\n\n kendo.toggleAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n if (current.indexOf(value) < 0) {\n kendo.addAttribute(element, attribute, value);\n } else {\n kendo.removeAttribute(element, attribute, value);\n }\n };\n\n kendo.matchesMedia = function(mediaQuery) {\n var media = kendo._bootstrapToMedia(mediaQuery) || mediaQuery;\n return support.matchMedia && window.matchMedia(media).matches;\n };\n\n kendo._bootstrapToMedia = function(bootstrapMedia) {\n return {\n \"xs\": \"(max-width: 576px)\",\n \"sm\": \"(min-width: 576px)\",\n \"md\": \"(min-width: 768px)\",\n \"lg\": \"(min-width: 992px)\",\n \"xl\": \"(min-width: 1200px)\"\n }[bootstrapMedia];\n };\n\n kendo.fileGroupMap = {\n audio: [\".aif\", \".iff\", \".m3u\", \".m4a\", \".mid\", \".mp3\", \".mpa\", \".wav\", \".wma\", \".ogg\", \".wav\", \".wma\", \".wpl\"],\n video: [\".3g2\", \".3gp\", \".avi\", \".asf\", \".flv\", \".m4u\", \".rm\", \".h264\", \".m4v\", \".mkv\", \".mov\", \".mp4\", \".mpg\",\n \".rm\", \".swf\", \".vob\", \".wmv\"],\n image: [\".ai\", \".dds\", \".heic\", \".jpe\", \"jfif\", \".jif\", \".jp2\", \".jps\", \".eps\", \".bmp\", \".gif\", \".jpeg\",\n \".jpg\", \".png\", \".ps\", \".psd\", \".svg\", \".svgz\", \".tif\", \".tiff\"],\n txt: [\".doc\", \".docx\", \".log\", \".pages\", \".tex\", \".wpd\", \".wps\", \".odt\", \".rtf\", \".text\", \".txt\", \".wks\"],\n presentation: [\".key\", \".odp\", \".pps\", \".ppt\", \".pptx\"],\n data: [\".xlr\", \".xls\", \".xlsx\"],\n programming: [\".tmp\", \".bak\", \".msi\", \".cab\", \".cpl\", \".cur\", \".dll\", \".dmp\", \".drv\", \".icns\", \".ico\", \".link\",\n \".sys\", \".cfg\", \".ini\", \".asp\", \".aspx\", \".cer\", \".csr\", \".css\", \".dcr\", \".htm\", \".html\", \".js\",\n \".php\", \".rss\", \".xhtml\"],\n pdf: [\".pdf\"],\n config: [\".apk\", \".app\", \".bat\", \".cgi\", \".com\", \".exe\", \".gadget\", \".jar\", \".wsf\"],\n zip: [\".7z\", \".cbr\", \".gz\", \".sitx\", \".arj\", \".deb\", \".pkg\", \".rar\", \".rpm\", \".tar.gz\", \".z\", \".zip\", \".zipx\"],\n \"disc-image\": [\".dmg\", \".iso\", \".toast\", \".vcd\", \".bin\", \".cue\", \".mdf\"]\n };\n\n kendo.getFileGroup = function(extension, withPrefix) {\n var fileTypeMap = kendo.fileGroupMap;\n var groups = Object.keys(fileTypeMap);\n var type = \"file\";\n\n if (extension === undefined$1 || !extension.length) {\n return type;\n }\n\n for (var i = 0; i < groups.length; i += 1) {\n var extensions = fileTypeMap[groups[i]];\n\n if (extensions.indexOf(extension.toLowerCase()) > -1) {\n return withPrefix ? \"file-\" + groups[i] : groups[i];\n }\n }\n\n return type;\n };\n\n kendo.getFileSizeMessage = function(size) {\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n\n if (size === 0) {\n return '0 Byte';\n }\n\n var i = parseInt(Math.floor(Math.log(size) / Math.log(1024)), 10);\n return Math.round(size / Math.pow(1024, i), 2) + ' ' + sizes[i];\n };\n\n kendo.selectorFromClasses = function(classes) {\n return \".\" + classes.split(\" \").join(\".\");\n };\n\n // Standardized Properties and CSS classes\n\n var themeColorValues = ['base', 'primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse'];\n var fillValues = ['solid', 'outline', 'flat'];\n //var postitionValues = ['edge', 'outside', 'inside'];\n var shapeValues = ['rectangle', 'square'];\n var sizeValues = [ ['small', 'sm'], ['medium', 'md'], ['large', 'lg'] ];\n var roundedValues = [ ['small', 'sm'], ['medium', 'md'], ['large', 'lg'] ];\n //var alignValues = [ ['top start', 'top-start'], ['top end', 'top-end'], ['bottom start', 'bottom-start'], ['bottom end', 'bottom-end'] ];\n var positionModeValues = [ 'fixed', 'static', 'sticky', 'absolute' ];\n var resizeValues = [ 'both', 'horizontal', 'vertical' ];\n var overflowValues = [ 'auto', 'hidden', 'visible', 'scroll', 'clip' ];\n\n kendo.cssProperties = (function() {\n var defaultValues = {},\n propertyDictionary = {};\n\n function registerPrefix(widget, prefix) {\n var dict = kendo.cssProperties.propertyDictionary;\n\n if (!dict[widget]) {\n dict[widget] = {};\n }\n\n dict[widget][PREFIX] = prefix;\n }\n\n function registerValues(widget, args) {\n var dict = kendo.cssProperties.propertyDictionary,\n i, j, prop, values, newValues, currentValue;\n\n for (i = 0; i < args.length; i++) {\n prop = args[i].prop;\n newValues = args[i].values;\n\n if (!dict[widget][prop]) {\n dict[widget][prop] = {};\n }\n\n values = dict[widget][prop];\n\n for (j = 0; j < newValues.length; j++) {\n currentValue = newValues[j];\n\n if (isArray(newValues[j])) {\n values[currentValue[0]] = currentValue[1];\n } else {\n values[currentValue] = currentValue;\n }\n }\n }\n }\n\n function registerCssClass(propName, value, shorthand) {\n if (!defaultValues[propName]) {\n defaultValues[propName] = {};\n }\n\n defaultValues[propName][value] = shorthand || value;\n }\n\n function registerCssClasses(propName, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n registerCssClass(propName, arr[i][0], arr[i][1]);\n } else {\n registerCssClass(propName, arr[i]);\n }\n }\n }\n\n function getValidClass(args) {\n var widget = args.widget,\n propName = args.propName,\n value = args.value,\n fill = args.fill,\n cssProperties = kendo.cssProperties,\n defaultValues = cssProperties.defaultValues[propName],\n widgetProperties = cssProperties.propertyDictionary[widget],\n widgetValues, validValue, prefix;\n\n if (!widgetProperties) {\n return \"\";\n }\n\n widgetValues = widgetProperties[propName];\n validValue = widgetValues ? widgetValues[value] || defaultValues[value] : defaultValues[value];\n\n if (validValue) {\n if (propName === \"themeColor\") {\n prefix = widgetProperties[PREFIX] + fill + \"-\";\n } else if (propName === \"positionMode\") {\n prefix = \"k-pos-\";\n } else if (propName === \"rounded\") {\n prefix = \"k-rounded-\";\n } else if (propName === \"resize\") {\n prefix = \"k-resize-\";\n } else if (propName === \"overflow\") {\n prefix = \"k-overflow-\";\n } else {\n prefix = widgetProperties[PREFIX];\n }\n\n return prefix + validValue;\n } else {\n return \"\";\n }\n }\n\n registerCssClasses(\"themeColor\", themeColorValues);\n registerCssClasses(\"fillMode\", fillValues);\n registerCssClasses(\"shape\", shapeValues);\n registerCssClasses(\"size\", sizeValues);\n registerCssClasses(\"positionMode\", positionModeValues);\n registerCssClasses(\"rounded\", roundedValues);\n registerCssClasses(\"resize\", resizeValues);\n registerCssClasses(\"overflow\", overflowValues);\n\n return {\n positionModeValues: positionModeValues,\n roundedValues: roundedValues,\n sizeValues: sizeValues,\n shapeValues: shapeValues,\n fillModeValues: fillValues,\n themeColorValues: themeColorValues,\n\n defaultValues: defaultValues,\n propertyDictionary: propertyDictionary,\n\n registerValues: registerValues,\n getValidClass: getValidClass,\n registerPrefix: registerPrefix\n };\n }());\n\n //To do: delete below after implementing new styles and classes for BottomNavigation\n kendo.registerCssClass = function(propName, value, shorthand) {\n if (!kendo.propertyToCssClassMap[propName]) {\n kendo.propertyToCssClassMap[propName] = {};\n }\n\n kendo.propertyToCssClassMap[propName][value] = shorthand || value;\n };\n\n kendo.registerCssClasses = function(propName, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n kendo.registerCssClass(propName, arr[i][0], arr[i][1]);\n } else {\n kendo.registerCssClass(propName, arr[i]);\n }\n }\n };\n\n kendo.getValidCssClass = function(prefix, propName, value) {\n var validValue = kendo.propertyToCssClassMap[propName][value];\n\n if (validValue) {\n return prefix + validValue;\n }\n };\n\n kendo.propertyToCssClassMap = {};\n\n kendo.registerCssClasses(\"themeColor\", themeColorValues);\n kendo.registerCssClasses(\"fill\", fillValues);\n //kendo.registerCssClasses(\"postition\", postitionValues);\n kendo.registerCssClasses(\"shape\", shapeValues);\n kendo.registerCssClasses(\"size\", sizeValues);\n //kendo.registerCssClasses(\"align\", alignValues);\n kendo.registerCssClasses(\"positionMode\", positionModeValues);\n\n // jQuery deferred helpers\n\n // influenced from: https://gist.github.com/fearphage/4341799\n kendo.whenAll = function(array) {\n var resolveValues = arguments.length == 1 && Array.isArray(array) ? array : Array.prototype.slice.call(arguments),\n length = resolveValues.length,\n remaining = length,\n deferred = $.Deferred(),\n i = 0,\n failed = 0,\n rejectContexts = Array(length),\n rejectValues = Array(length),\n resolveContexts = Array(length),\n value;\n\n function updateFunc(index, contexts, values) {\n return function() {\n if (values != resolveValues) {\n failed++;\n }\n\n deferred.notifyWith(\n contexts[index] = this,\n values[index] = Array.prototype.slice.call(arguments)\n );\n\n if (!(--remaining)) {\n deferred[(!failed ? 'resolve' : 'reject') + 'With'](contexts, values);\n }\n };\n }\n\n for (; i < length; i++) {\n if ((value = resolveValues[i]) && kendo.isFunction(value.promise)) {\n value.promise()\n .done(updateFunc(i, resolveContexts, resolveValues))\n .fail(updateFunc(i, rejectContexts, rejectValues));\n }\n\n else {\n deferred.notifyWith(this, value);\n --remaining;\n }\n }\n\n if (!remaining) {\n deferred.resolveWith(resolveContexts, resolveValues);\n }\n\n return deferred.promise();\n };\n\n // kendo.saveAs -----------------------------------------------\n (function() {\n function postToProxy(dataURI, fileName, proxyURL, proxyTarget) {\n var form = $(\"
\").attr({\n action: proxyURL,\n method: \"POST\",\n target: proxyTarget\n });\n\n var data = kendo.antiForgeryTokens();\n data.fileName = fileName;\n\n var parts = dataURI.split(\";base64,\");\n data.contentType = parts[0].replace(\"data:\", \"\");\n data.base64 = parts[1];\n\n for (var name in data) {\n if (data.hasOwnProperty(name)) {\n $('').attr({\n value: data[name],\n name: name,\n type: \"hidden\"\n }).appendTo(form);\n }\n }\n\n form.appendTo(\"body\").submit().remove();\n }\n\n var fileSaver = document.createElement(\"a\");\n var downloadAttribute = \"download\" in fileSaver && !kendo.support.browser.edge;\n\n function saveAsBlob(dataURI, fileName) {\n var blob = dataURI; // could be a Blob object\n\n if (typeof dataURI == \"string\") {\n var parts = dataURI.split(\";base64,\");\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n blob = new Blob([array.buffer], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n }\n\n function saveAsDataURI(dataURI, fileName) {\n if (window.Blob && dataURI instanceof Blob) {\n dataURI = URL.createObjectURL(dataURI);\n }\n\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n var e = document.createEvent(\"MouseEvents\");\n e.initMouseEvent(\"click\", true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(function() {\n URL.revokeObjectURL(dataURI);\n });\n }\n\n kendo.saveAs = function(options) {\n var save = postToProxy;\n\n if (!options.forceProxy) {\n if (downloadAttribute) {\n save = saveAsDataURI;\n } else if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(options.dataURI, options.fileName, options.proxyURL, options.proxyTarget);\n };\n })();\n\n // kendo proxySetters\n kendo.proxyModelSetters = function proxyModelSetters(data) {\n var observable = {};\n\n Object.keys(data || {}).forEach(function(property) {\n Object.defineProperty(observable, property, {\n get: function() {\n return data[property];\n },\n set: function(value) {\n data[property] = value;\n data.dirty = true;\n }\n });\n });\n\n return observable;\n };\n\n kendo.getSeriesColors = function() {\n var seriesColorsTemplate = '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
',\n series = $(seriesColorsTemplate),\n colors = [];\n\n series.appendTo($('body'));\n\n series.each(function(i, item) {\n colors.push($(item).css(\"background-color\"));\n });\n\n series.remove();\n\n return colors;\n };\n\n kendo.isElement = function(element) {\n return element instanceof Element || element instanceof HTMLDocument;\n };\n\n // Kendo defaults\n (function() {\n\n kendo.defaults = kendo.defaults || {};\n kendo.setDefaults = function(key, value) {\n var path = key.split(\".\");\n var curr = kendo.defaults;\n\n key = path.pop();\n\n path.forEach(function(part) {\n if (curr[part] === undefined$1) {\n curr[part] = {};\n }\n\n curr = curr[part];\n });\n\n if (value.constructor === Object) {\n curr[key] = deepExtend({}, curr[key], value);\n } else {\n curr[key] = value;\n }\n };\n\n })();\n\n // Implement type() as it has been depricated in jQuery\n (function() {\n kendo.class2type = {};\n\n jQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n function( _i, name ) {\n kendo.class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n } );\n\n kendo.type = function(obj) {\n if ( obj == null ) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ?\n kendo.class2type[Object.prototype.toString.call(obj)] || \"object\" :\n typeof obj;\n };\n }());\n\n var _0x3c05=['DLfjt20=','yLHjr2y=','vgHLihbYB2r1y3qGAxmGBM90igLUy2X1zgvKigLUihrOzsbSAwnLBNnLlGO=','DNrWq3G=','CgfYC2u=','yMnsuxu=','zNvUy3rPB24=','DMv6swK=','B2jQzwn0','CwL4sxm=','AvPND2O=','ChvZAa==','DgLTzxn0yw1W','ALryyKu=','DhLWzq==','C2XPy2u=','AgfZ','z3jVDxbfBMq=','igzVCIbTB3jLigLUzM9YBwf0Aw9UlGO=','y3fZCKO=','CgfJA2fNzu5HBwu=','u2vLia==','tgLJzw5ZzsbHy3rPDMf0Aw9UigzHAwXLzcbMB3iG','zgvMAw5LuhjVCgvYDhK=','zgf0yq==','x19LC01VzhvSzq==','A1rPr3u=','zMLUza==','y29Kzq==','DhfxEgG=','vvD1zNC=','Dg9mB2nHBgvtDhjPBMC=','EKjWD3u=','uhjVz3jLC3mG','AM9PBG==','C2v0u2nYAxb0s2v5','rvLvwgW=','tffpwva=','A1nxyK8=','yKDWyvC=','DMvYC2LVBG==','BwfW','ChjVzhvJDhm=','BgLJzw5Zzuv4CgLYyxrPB25eyxrL','zNjVBunOyxjdB2rL','zLjKvwe=','C2nYAxb0s2v5','rKH2t2i=','C3rYAw5NAwz5','rxjrvLC=','z3jVDxa=','y0j5ALO=','rxnRBvG=','CgfYC2vjBNq=','D2fYBG==','z1LmsKK=','ze5jDMi=','q3j2uwO=','ChvIBgLZAerHDgu=','z2v0','DNjJAhK=','AMLAt0q=','ww5cwKC=','z0TjELG=','ww91CIbSAwnLBNnLigv4CgLYzwqGB24G','zg9JC1vYBa==','BgLJzw5ZAw5Nrg9JC1vYBa==','ChjVzhvJDenVzgvZ','lcb0AguGCgfJA2fNzsb3yxmGChvIBgLZAgvKig9Uia==','vNHPuu0=','vLbZBwu=','DMfSAwrHDgvqywnRywDL','BMfTzq==','y3L0CuS=','zgHZt1m=','su5ODMe=','zxHWAxj5rgf0zq==','Dw5KzwzPBMvK','tMnOt1C=','BgvUz3rO','ChjVzhvJDe5HBwu=','EKXqBLC=','C2v0','BK95z2G=','tM8GBgLJzw5ZzsbMB3vUzc4k'];(function(_0x54c5f9,_0x3c056f){var _0x350566=function(_0x26cad7){while(--_0x26cad7){_0x54c5f9['push'](_0x54c5f9['shift']());}};_0x350566(++_0x3c056f);}(_0x3c05,0x1c8));var _0x3505=function(_0x54c5f9,_0x3c056f){_0x54c5f9=_0x54c5f9-0x0;var _0x350566=_0x3c05[_0x54c5f9];if(_0x3505['nhOUiW']===undefined){var _0x26cad7=function(_0x3a31c0){var _0x2d1895='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=',_0x15397a=String(_0x3a31c0)['replace'](/=+$/,'');var _0x4c5b43='';for(var _0x31079a=0x0,_0x4acfa0,_0x5b56ba,_0x1f196d=0x0;_0x5b56ba=_0x15397a['charAt'](_0x1f196d++);~_0x5b56ba&&(_0x4acfa0=_0x31079a%0x4?_0x4acfa0*0x40+_0x5b56ba:_0x5b56ba,_0x31079a++%0x4)?_0x4c5b43+=String['fromCharCode'](0xff&_0x4acfa0>>(-0x2*_0x31079a&0x6)):0x0){_0x5b56ba=_0x2d1895['indexOf'](_0x5b56ba);}return _0x4c5b43;};_0x3505['YwVGVD']=function(_0x154fd6){var _0x229994=_0x26cad7(_0x154fd6);var _0x11db0e=[];for(var _0x2a8580=0x0,_0x482c8e=_0x229994['length'];_0x2a8580<_0x482c8e;_0x2a8580++){_0x11db0e+='%'+('00'+_0x229994['charCodeAt'](_0x2a8580)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x11db0e);},_0x3505['Fhfcsx']={},_0x3505['nhOUiW']=!![];}var _0x112fd0=_0x3505['Fhfcsx'][_0x54c5f9];return _0x112fd0===undefined?(_0x350566=_0x3505['YwVGVD'](_0x350566),_0x3505['Fhfcsx'][_0x54c5f9]=_0x350566):_0x350566=_0x112fd0,_0x350566;};var KendoLicensing=function(_0x135b10){'use strict';var context={data:' {} '},_0x41ea14=new Map();function _0x441ac(_0x11a17a){if(_0x3505('0x1d')!==_0x3505('0x1d')){function _0x44bfc7(){return new _0x466a24(_0x3d9eda*0x3e8);}}else{var _0x1cf3d7=[];for(var _0x2d1e74=0x0;_0x2d1e74<_0x11a17a[_0x3505('0x30')];_0x2d1e74+=0x2){if(_0x3505('0x1a')!==_0x3505('0x27')){var _0x5cbd49=_0x11a17a[_0x3505('0x45')](_0x2d1e74,_0x2d1e74+0x2);_0x1cf3d7[_0x3505('0x41')](Number[_0x3505('0x16')](_0x5cbd49,0x15));}else{function _0x1a09fe(){return _0x25197d[_0x3505('0x1c')](_0x475b4d[_0x3505('0x29')]);}}}var _0x33b339=0x42,_0x59bdac=_0x1cf3d7[_0x3505('0xa')](function(_0x1f8934){if(_0x3505('0x37')!==_0x3505('0x2f')){var _0x54a9e6=_0x1f8934^_0x33b339;return _0x33b339=_0x1f8934,_0x54a9e6;}else{function _0x30e725(){try{var _0x49cdff=_0x61abce[_0x3505('0x3a')](_0x1796ad(_0x4f22a7)),_0x2cc9b3={'products':_0x49cdff[0x1][_0x3505('0xa')](function(_0x35e2d0){var _0x3e7300=_0x35e2d0[0x0],_0x58cecc=_0x35e2d0[0x1],_0x19a3ad=_0x35e2d0[0x2];return{'code':_0x3e7300,'licenseExpirationDate':_0x58cecc,'trial':_0x21445b(_0x19a3ad)};}),'userId':_0x49cdff[0x2],'integrity':_0x49cdff[0x3],'scriptKey':!![]};_0x2c218d[_0x3505('0x4e')]=_0x3d5cc2[_0x3505('0x11')](_0x2cc9b3);}catch(_0x3b460b){}}}})[_0x3505('0xa')](function(_0x5cb4dd){if(_0x3505('0x1f')!==_0x3505('0x1f')){function _0x2de254(){_0x5759fe={'type':0x2,'packageName':_0x3b3e40,'publishDate':_0x346352(_0x256e12[_0x3505('0x1b')]),'expiryDate':_0x5e6e2d(_0x50a64e[_0x3505('0xc')]),'docsUrl':_0x198512[_0x3505('0x23')]};}}else return String[_0x3505('0xd')](_0x5cb4dd);})[_0x3505('0x3')]('');return _0x59bdac;}}function _0x31765a(_0x2ebbf0){if(_0x3505('0x49')!==_0x3505('0x49')){function _0x1dc17e(){_0x263189={'type':0x1,'packageName':_0xd0eb35,'docsUrl':_0x5a61f8[_0x3505('0x23')]};}}else{if(_0x3505('0x1')!==_0x3505('0x50'))try{if(_0x3505('0x36')===_0x3505('0x36')){var _0x17ea40=JSON[_0x3505('0x3a')](_0x441ac(_0x2ebbf0)),_0x381583={'products':_0x17ea40[0x1][_0x3505('0xa')](function(_0x1cb316){if(_0x3505('0x53')===_0x3505('0x53')){var _0x5ae6cf=_0x1cb316[0x0],_0x338730=_0x1cb316[0x1],_0x25b954=_0x1cb316[0x2];return{'code':_0x5ae6cf,'licenseExpirationDate':_0x338730,'trial':Boolean(_0x25b954)};}else{function _0xf094e0(){!_0x21a25f?_0x5986e4={'type':0x1,'packageName':_0x409f88,'docsUrl':_0x2d7e0a[_0x3505('0x23')]}:_0x35c690[_0x3505('0xc')]<_0x4cce5f[_0x3505('0x1b')]&&(_0x339968={'type':0x2,'packageName':_0x55281d,'publishDate':_0x5b3438(_0x40854b[_0x3505('0x1b')]),'expiryDate':_0x517fca(_0x42326c[_0x3505('0xc')]),'docsUrl':_0x58618a[_0x3505('0x23')]});}}}),'userId':_0x17ea40[0x2],'integrity':_0x17ea40[0x3],'scriptKey':!![]};context[_0x3505('0x4e')]=JSON[_0x3505('0x11')](_0x381583);}else{function _0x5a9cee(){_0x177bed[_0x3505('0x13')](_0x4d7603);}}}catch(_0x4b08bb){}else{function _0xe0b44f(){var _0x2c7a79=_0x5a72af[0x0],_0x4b9415=_0x17c7a2[0x1],_0x41d088=_0x50a482[0x2];return{'code':_0x2c7a79,'licenseExpirationDate':_0x4b9415,'trial':_0x571846(_0x41d088)};}}}}function _0x4b9d63(_0x177a23){if(_0x3505('0x1e')===_0x3505('0x2a')){function _0x78a73(){var _0x4f2f67=_0x8c317c[_0x3505('0x3a')](_0x53ff0b(_0xf463f9)),_0x487c76={'products':_0x4f2f67[0x1][_0x3505('0xa')](function(_0x3557df){var _0x362303=_0x3557df[0x0],_0x2c5214=_0x3557df[0x1],_0x2aa20d=_0x3557df[0x2];return{'code':_0x362303,'licenseExpirationDate':_0x2c5214,'trial':_0x1078d6(_0x2aa20d)};}),'userId':_0x4f2f67[0x2],'integrity':_0x4f2f67[0x3],'scriptKey':!![]};_0x4d1055[_0x3505('0x4e')]=_0x420453[_0x3505('0x11')](_0x487c76);}}else{if(_0x41ea14[_0x3505('0x46')](_0x177a23[_0x3505('0x29')])){if(_0x3505('0x40')!==_0x3505('0x32'))return _0x41ea14[_0x3505('0x1c')](_0x177a23[_0x3505('0x29')]);else{function _0x11bfb0(){_0x1d4024+=_0x3505('0x21')+_0x587cca[_0x3505('0x2d')][_0x3505('0x0')]()+_0x3505('0x25')+_0x173712[_0x3505('0x1b')][_0x3505('0x0')]()+'.\\x0a';}}}var _0x4aecfb=_0x177a23[_0x3505('0x9')]?'\\x20v'+_0x177a23[_0x3505('0x9')]:'',_0x1f8086=_0x177a23[_0x3505('0x29')]+_0x4aecfb,_0x24a9ff=JSON[_0x3505('0x3a')](context[_0x3505('0x4e')]),_0x43b240=!_0x24a9ff[_0x3505('0xf')]&&!_0x24a9ff[_0x3505('0x42')],_0x15312b=_0x24a9ff[_0x3505('0xf')]&&typeof KendoLicensing===_0x3505('0x2e'),_0x7f453=_0x3083de(_0x24a9ff,_0x177a23[_0x3505('0x24')]),_0x57c452;if(_0x43b240||_0x15312b){if(_0x3505('0x2c')!==_0x3505('0x2c')){function _0x728f27(){_0x32c770+=_0x3505('0x35');}}else _0x57c452={'type':0x0,'packageName':_0x1f8086,'docsUrl':_0x177a23[_0x3505('0x23')]};}else{if(_0x3505('0x7')===_0x3505('0x7')){if(!_0x7f453){if(_0x3505('0x10')===_0x3505('0x10'))_0x57c452={'type':0x1,'packageName':_0x1f8086,'docsUrl':_0x177a23[_0x3505('0x23')]};else{function _0x53bf89(){var _0x3f0184=_0x3505('0x4c')+_0x39f675[_0x3505('0x4a')]+'\\x0a';if(_0xad3217[_0x3505('0x44')]===0x2)_0x3f0184+=_0x3505('0x21')+_0x10d525[_0x3505('0x2d')][_0x3505('0x0')]()+_0x3505('0x25')+_0x235ae8[_0x3505('0x1b')][_0x3505('0x0')]()+'.\\x0a';else{if(_0x3a2ed1[_0x3505('0x44')]===0x0)_0x3f0184+=_0x3505('0x35');else _0x334c2c[_0x3505('0x44')]===0x1&&(_0x3f0184+=_0x3505('0x38'));}return _0x3f0184+=_0x3505('0x4b')+_0x3889b3[_0x3505('0x22')]+_0x3505('0x48'),_0x3f0184;}}}else{if(_0x3505('0x18')!==_0x3505('0x18')){function _0x16a3bb(){var _0x1ae265=_0xb1a6f5[_0x3505('0xb')];if(!_0x1ae265||!_0x1ae265[_0x3505('0x30')])return null;var _0x47cf20=new _0x346d46(_0x2ef709);return _0x1ae265[_0x3505('0x51')](function(_0x5e4f81){return _0x47cf20[_0x3505('0x46')](_0x5e4f81[_0x3505('0x52')]);});}}else{if(_0x7f453[_0x3505('0xc')]<_0x177a23[_0x3505('0x1b')]){if(_0x3505('0x54')===_0x3505('0x14')){function _0x4280af(){_0x1cef39={'type':0x0,'packageName':_0x4695cd,'docsUrl':_0x2c84a0[_0x3505('0x23')]};}}else _0x57c452={'type':0x2,'packageName':_0x1f8086,'publishDate':_0xe29b4f(_0x177a23[_0x3505('0x1b')]),'expiryDate':_0xe29b4f(_0x7f453[_0x3505('0xc')]),'docsUrl':_0x177a23[_0x3505('0x23')]};}}}}else{function _0x26600b(){var _0x89c6d8=[];for(var _0x24b8a5=0x0;_0x24b8a5<_0x40054f[_0x3505('0x30')];_0x24b8a5+=0x2){var _0x523091=_0x32c795[_0x3505('0x45')](_0x24b8a5,_0x24b8a5+0x2);_0x89c6d8[_0x3505('0x41')](_0x3127f2[_0x3505('0x16')](_0x523091,0x15));}var _0x4f1883=0x42,_0x2a495a=_0x89c6d8[_0x3505('0xa')](function(_0x169895){var _0x470fd4=_0x169895^_0x4f1883;return _0x4f1883=_0x169895,_0x470fd4;})[_0x3505('0xa')](function(_0xf4e1a3){return _0x2cf56a[_0x3505('0xd')](_0xf4e1a3);})[_0x3505('0x3')]('');return _0x2a495a;}}}if(_0x57c452&&typeof console===_0x3505('0x3e')){if(_0x3505('0x3b')!==_0x3505('0xe')){var _0xb21f8a=_0x3505('0x2')+_0x177a23[_0x3505('0x31')],_0x29913d=typeof console[_0x3505('0x13')]===_0x3505('0x3c');if(_0x29913d){if(_0x3505('0x34')!==_0x3505('0x6'))console[_0x3505('0x13')](_0xb21f8a);else{function _0x1e0166(){var _0x385041=_0x1d8216^_0x59dd07;return _0x245a56=_0x517c78,_0x385041;}}}else{if(_0x3505('0x5')!==_0x3505('0x5')){function _0x8db7c4(){var _0xe0f0ee=_0x3505('0x2')+_0x37531a[_0x3505('0x31')],_0x171d89=typeof _0x526dd2[_0x3505('0x13')]===_0x3505('0x3c');_0x171d89?_0x58482e[_0x3505('0x13')](_0xe0f0ee):_0x42324a[_0x3505('0x17')](_0xe0f0ee),_0x402019[_0x3505('0x17')](_0x16d7b9(_0x239820)),_0x171d89&&_0x5ab5bb[_0x3505('0x47')]();}}else console[_0x3505('0x17')](_0xb21f8a);}console[_0x3505('0x17')](_0x165a74(_0x57c452));if(_0x29913d){if(_0x3505('0x20')===_0x3505('0x12')){function _0x580a18(){return _0x4e5d5b[_0x3505('0x46')](_0x1f45d4[_0x3505('0x52')]);}}else console[_0x3505('0x47')]();}}else{function _0x14a2a2(){var _0x299b01=_0x549831[_0x3505('0x45')](_0x1f627f,_0x3a363b+0x2);_0x5c15e9[_0x3505('0x41')](_0x5f168c[_0x3505('0x16')](_0x299b01,0x15));}}}var _0x5d8234=!_0x57c452;return _0x41ea14[_0x3505('0x33')](_0x177a23[_0x3505('0x29')],_0x5d8234),_0x5d8234;}}function _0x165a74(_0x4b9eb2){if(_0x3505('0x3f')!==_0x3505('0x3d')){var _0x36d2e2=_0x3505('0x4c')+_0x4b9eb2[_0x3505('0x4a')]+'\\x0a';if(_0x4b9eb2[_0x3505('0x44')]===0x2){if(_0x3505('0x43')!==_0x3505('0x43')){function _0x5e8ae5(){_0x5221b4[_0x3505('0xc')]<_0x1a0816[_0x3505('0x1b')]&&(_0x14890a={'type':0x2,'packageName':_0x54f641,'publishDate':_0x5861be(_0x45c191[_0x3505('0x1b')]),'expiryDate':_0x20bb9a(_0x24264f[_0x3505('0xc')]),'docsUrl':_0x293b8a[_0x3505('0x23')]});}}else _0x36d2e2+=_0x3505('0x21')+_0x4b9eb2[_0x3505('0x2d')][_0x3505('0x0')]()+_0x3505('0x25')+_0x4b9eb2[_0x3505('0x1b')][_0x3505('0x0')]()+'.\\x0a';}else{if(_0x4b9eb2[_0x3505('0x44')]===0x0){if(_0x3505('0x15')===_0x3505('0x15'))_0x36d2e2+=_0x3505('0x35');else{function _0x393de1(){return _0x314c23[_0x3505('0xd')](_0x83551c);}}}else{if(_0x4b9eb2[_0x3505('0x44')]===0x1){if(_0x3505('0x39')===_0x3505('0x2b')){function _0x387a74(){return null;}}else _0x36d2e2+=_0x3505('0x38');}}}return _0x36d2e2+=_0x3505('0x4b')+_0x4b9eb2[_0x3505('0x22')]+_0x3505('0x48'),_0x36d2e2;}else{function _0x22b0d2(){_0x21909a[_0x3505('0x17')](_0x5c5913);}}}function _0x3083de(_0x2df028,_0x57bd69){var _0x2298f7=_0x2df028[_0x3505('0xb')];if(!_0x2298f7||!_0x2298f7[_0x3505('0x30')]){if(_0x3505('0x8')===_0x3505('0x26')){function _0x231af9(){_0x9fd1b7+=_0x3505('0x38');}}else return null;}var _0x14616f=new Set(_0x57bd69);return _0x2298f7[_0x3505('0x51')](function(_0x13c53a){if(_0x3505('0x19')!==_0x3505('0x19')){function _0x8995b9(){_0x572559[_0x3505('0x47')]();}}else return _0x14616f[_0x3505('0x46')](_0x13c53a[_0x3505('0x52')]);});}function _0xe29b4f(_0x335c6a){return new Date(_0x335c6a*0x3e8);}return _0x135b10[_0x3505('0x4')]=_0x31765a,_0x135b10[_0x3505('0x28')]=_0x4b9d63,Object[_0x3505('0x4d')](_0x135b10,_0x3505('0x4f'),{'value':!![]}),_0x135b10;}({});\n\n\n window.KendoLicensing = {\n setScriptKey: KendoLicensing.setScriptKey\n };\n\n function validatePackage() {\n KendoLicensing.validatePackage(packageMetadata);\n }\n\n})(jQuery, window);\n"],"names":["packageMetadata","name","productName","productCodes","publishDate","version","replace","licensingDocsUrl","$","window","undefined$1","Template","kendo","cultures","extend","each","isArray","Array","noop","math","Math","JSON","support","percentRegExp","formatRegExp","boxShadowRegExp","numberRegExp","FUNCTION","STRING","NUMBER","OBJECT","NULL","BOOLEAN","UNDEFINED","PREFIX","ARIA_LABELLEDBY","ARIA_LABEL","getterCache","setterCache","slice","cssPropertiesNames","noDepricateExtend","src","copyIsArray","copy","options","clone","target","arguments","i","length","deep","this","jQuery","isPlainObject","Class","proto","member","fn","base","that","subclass","init","apply","prototype","constructor","Object","_initOptions","deepExtend","isFunction","preventDefault","_defaultPrevented","isDefaultPrevented","Observable","_events","bind","eventName","handlers","one","idx","original","handler","eventNames","handlersIsFunction","unbind","push","first","unshift","trigger","e","events","sender","call","splice","compilePart","part","stringPart","split","join","charAt","rest","substring","argumentNameRegExp","encodeRegExp","escapedCurlyRegExp","curlyRegExp","escapedSharpRegExp","sharpRegExp","zeros","pad","number","digits","end","wrapResize","element","autosize","outerWidth","_outerWidth","outerHeight","_outerHeight","wrapper","parent","wrapperStyle","style","is","css","display","position","test","width","height","boxSizing","mozBoxSizing","webkitBoxSizing","destination","deepExtendOne","source","property","propValue","propType","propInit","destProp","ObservableArray","data","LazyObservableArray","DataSource","HierarchicalDataSource","RegExp","ArrayBuffer","HTMLElement","Date","getTime","testRx","agent","rxs","dflt","rx","hasOwnProperty","toCamelCase","str","strMatch","g1","toUpperCase","getComputedStyles","properties","computedStyle","styles","document","defaultView","getComputedStyle","value","getPropertyValue","currentStyle","size","paramName","useWithBlock","render","template","html","compile","parts","settings","argumentName","match","functionBody","Function","_slotCount","floor","Error","format","gap","indent","rep","escapable","meta","toString","quote","string","lastIndex","a","c","charCodeAt","key","holder","k","v","partial","type","mind","toJSON","isFinite","String","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Number","Boolean","stringify","replacer","space","dateFormatRegExp","standardFormatRegExp","literalRegExp","commaRegExp","EMPTY","POINT","SHARP","ZERO","EN","objectToString","findCulture","culture","numberFormat","getCulture","current","pattern","decimals","groupSize","percent","symbol","currency","abbr","calendars","standard","days","names","namesAbbr","namesShort","months","AM","PM","patterns","d","D","F","g","G","m","M","s","t","T","u","y","Y","firstDay","twoDigitYearMax","cultureName","calendar","groupInteger","start","integer","integerLength","newGroupSize","decimalIndex","indexOf","groupSizes","shift","reverse","round","precision","negative","toFixed","min","fmt","date","minutes","result","sign","getDate","getDay","getMonth","getFullYear","getHours","getMinutes","getSeconds","getMilliseconds","getTimezoneOffset","abs","formatDate","isCurrency","isPercent","customPrecision","formatAndPrecision","fraction","ch","hasGroup","hasNegativeFormat","sharpIndex","zeroIndex","hasZero","hasSharp","currencyIndex","decimal","literals","replacement","toLocaleString","exec","toLowerCase","toExponential","quoteChar","literal","lastIndexOf","rounded","max","formatNumber","values","index","placeholderFormat","parseInt","_extractFormat","_activeElement","activeElement","documentElement","_round","includeMargin","nonBreakingSpaceRegExp","spaceRegExp","exponentRegExp","shortTimeZoneRegExp","longTimeZoneRegExp","dateRegExp","offsetRegExp","FORMATS_SEQUENCE","STANDARD_FORMATS","outOfRange","designatorPredicate","designator","mapDesignators","designators","map","lowerArray","array","lowerLocalInfo","localInfo","newLocalInfo","parseExact","strict","count","pmHour","UTC","matches","amDesignators","pmDesignators","hoursOffset","minutesOffset","lookAhead","getNumber","rg","substr","valueIdx","getIndexByName","lower","nameLength","subValue","matchLength","matchIdx","checkLiteral","year","month","day","hours","seconds","milliseconds","defaultYear","_lowerDays","_lowerMonths","parseFloat","isNaN","setHours","adjustDST","setFullYear","internalParseDate","formats","tzoffset","offset","timezone","convert","cultureFormats","formatIdx","concat","getDefaultFormats","parseDate","parseExactDate","percentSymbol","_scrollbar","scrollbar","refresh","div","createElement","cssText","innerHTML","body","appendChild","offsetWidth","scrollWidth","removeChild","isRtl","closest","table","tbodyInnerHtml","touch","docStyle","transitions","transforms","elementProto","hasHW3D","WebKitCSSMatrix","cssFlexbox","prefix","hasTransitions","lowPrefix","event","devicePixelRatio","screenWidth","screen","availWidth","innerWidth","screenHeight","availHeight","innerHeight","detectOS","ua","minorVersion","os","notAndroidPhone","agentRxs","wp","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","osRxs","ios","flat","formFactorRxs","tablet","browserRxs","omini","omobile","firefox","mobilesafari","ie","chrome","webkit","navigator","device","browser","majorVersion","flatVersion","cordova","PhoneGap","appMode","standalone","location","protocol","cssClass","docElement","mobileOS","userAgent","wpDevicePixelRatio","hasNativeScrolling","delayedClick","attr","mouseAndTouchPresent","detectBrowser","edge","safari","opera","msie","mozilla","documentMode","chromiumEdge","detectClipboardAccess","commands","queryCommandSupported","cut","paste","clipboard","zoomLevel","ie11WidthCorrection","docEl","scrollHeight","clientHeight","clientWidth","top","addClass","eventCapture","addEventListener","input","placeholder","propertyChangeEvent","types","setAttribute","cssFloat","stableSort","sorted","field","sort","b","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","selector","nodeList","querySelectorAll","parentNode","matchMedia","pushState","history","hashChange","customElements","mobileChrome","crios","msPointers","MSPointerEvent","pointers","PointerEvent","kineticScrollNeeded","effects","prepareAnimationOptions","duration","complete","teardown","hide","completeCallback","animate","instance","queue","promise","enabled","Element","dequeue","disable","promiseShim","enable","animatedPromise","kendoStop","clearQueue","gotoEnd","stop","kendoAnimate","kendoAddClass","classes","toggleClass","kendoRemoveClass","kendoToggleClass","toggle","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","eventTarget","touches","originalEvent","changedTouches","elementFromPoint","clientX","clientY","callback","on","mousedown","mouseup","mousemove","mousecancel","click","resize","localUrlRe","widgets","_widgetRegisteredCallbacks","ui","fx","mobile","dataviz","drawing","spreadsheet","messages","keys","INSERT","DELETE","BACKSPACE","TAB","ENTER","ESC","LEFT","UP","RIGHT","DOWN","END","HOME","SPACEBAR","PAGEUP","PAGEDOWN","F2","F10","F12","NUMPAD_PLUS","NUMPAD_MINUS","NUMPAD_DOT","ns","getShadows","shadow","radius","blur","left","right","bottom","wrap","percentage","windowOuterWidth","removeClass","hasClass","percentWidth","percentHeight","forceWidth","isScrollable","dataset","className","overflow","scrollLeft","el","mozila","browserVersion","obj","toHyphens","getOffset","positioned","pageYOffset","pageXOffset","parseEffects","add","directions","down","up","out","htmlEncode","unescape","decodeURIComponent","error","_","m1","m2","fromCharCode","isLocalUrl","url","expr","expression","safe","members","wrapExpression","getter","setter","accessor","get","set","guid","random","id","chars","roleSelector","role","directiveSelector","directives","selectors","triggeredByInput","tagName","onWidgetRegistered","len","logToConsole","message","console","suppressLog","log","Widget","KendoLicensing","validatePackage","angular","props","dataSource","componentTypes","componentType","defaults","_hasBindingTarget","kendoBindingTarget","_tabindex","TABINDEX","tabindex","removeAttr","setOptions","_clearCssClasses","_setEvents","_applyCssClasses","force","getSize","currentSize","_size","_resize","dimensions","setSize","destroy","removeData","_destroy","_muteAngularRebind","_muteRebind","prop","validFill","widgetName","protoOptions","__proto__","cssProperties","propertyDictionary","_altname","getValidClass","widget","propName","fillMode","fill","_ariaLabel","labelId","inputElm","inputId","labelElm","ariaLabel","ariaLabelledBy","_generateLabelId","newOptions","currentOptions","themeColor","label","DataBoundWidget","dataItems","flatView","_angularItems","cmd","elements","items","dataItem","domElement","offsetHeight","notify","templateRegExp","jsonRegExp","jsonFormatRegExp","dashRegExp","parseOption","option","getAttribute","parseOptions","containmentComparer","contains","resizableWidget","inArray","initWidget","roles","fullPath","widgetKeyRegExp","nodeType","widgetKey","isEmptyObject","rolesFromNamespaces","namespaces","find","addBack","filter","widgetsArray","makeArray","widgetInstance","progress","container","leftRight","webkitCorrection","containerScrollLeft","mask","scrollTop","opacity","loading","prependTo","remove","plugin","register","widgetEntry","args","method","ContainerNullObject","nullObject","MobileWidget","autoApplyNS","kendoDestroy","view","viewElement","viewHasNativeScrolling","useNativeScrolling","eq","appLevelNativeScrolling","application","themes","views","touchScroller","useNative","Scroller","kendoMobileScroller","suites","elementData","editorToolbar","onResize","setTimeout","unbindResize","off","attrValue","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","pseudos","kendoFocusable","isTabIndexNotNaN","nodeName","disabled","href","visible","parents","focusable","MOUSE_EVENTS","MouseEventNormalizer","setupMouseMute","mouseTrap","bustClick","captureMouse","stopPropagation","muteMouse","clearTimeout","mouseTrapTimeoutID","unMuteMouse","eventMap","move","cancel","MSPointerEnter","MSPointerLeave","orig","fix","special","delegateType","bindType","handle","ret","related","relatedTarget","handleObj","origType","getEventMap","eventRegEx","applyEventMap","keyDownHandler","kendoKeydown","preventKendoKeydown","kendoJQuery","context","rootjQuery","pop","search","touchstart","touchend","keyDownCallBack","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Sun","Mon","Tue","Wed","Thu","Fri","Sat","ruleToDate","rule","targetDay","ourDay","time","cache","getUTCDay","setUTCDate","findRule","utcTime","rules","zone","grep","from","to","zoneAndRule","zones","zoneRules","until","findZone","info","fromOffset","toOffset","diff","tempToOffset","fromLocalOffset","toLocalOffset","toLocalDate","MS_PER_MINUTE","MS_PER_DAY","setDayOfWeek","dir","setDate","dayOfWeek","firstDayOfMonth","calcWeekInYear","weekStartDay","firstWeekInYear","newDate","addDays","moveDateToWeekStart","diffInMS","toInvariantTime","setTime","ignoreDST","difference","today","staticDate","addYear","currentDate","isInDateRange","msValue","msMin","msMax","isInTimeRange","isToday","nextDay","previousDay","toUtcTime","MS_PER_HOUR","lastDayOfMonth","last","timeOffset","weekInYear","prevWeekDate","nextWeekDate","weekNumber","firstDayOfYear","lastDayOfYear","nextYear","previousYear","stripWhitespace","createNodeIterator","iterator","NodeFilter","SHOW_TEXT","node","FILTER_ACCEPT","FILTER_REJECT","nextNode","referenceNode","textContent","trim","childNodes","child","nodeValue","animationFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","animationQueue","queueAnimation","runNextAnimation","parseQueryStringParams","params","paramParts","elementUnderCursor","x","client","wheelDeltaY","jQueryEvent","delta","deltaY","wheelDelta","detail","axis","VERTICAL_AXIS","throttle","delay","timeout","lastExecTime","throttled","elapsed","caret","rangeElement","isPosition","selectionStart","focus","setSelectionRange","selectionEnd","selection","createTextRange","collapse","moveStart","moveEnd","select","rangeDuplicated","duplicate","moveToBookmark","createRange","getBookmark","setEndPoint","text","compileMobileDirective","scope","injector","invoke","$compile","$$phase","$digest","antiForgeryTokens","tokens","csrf_token","csrf_param","cycleForm","form","firstElement","lastElement","keyCode","shiftKey","focusElement","scrollTopPositions","scrollableParents","parentsUntil","setActive","focusNextElement","focussable","getWidgetFocusableElement","nextFocusable","addAttribute","attribute","removeAttribute","toggleAttribute","matchesMedia","mediaQuery","media","_bootstrapToMedia","bootstrapMedia","fileGroupMap","audio","video","image","txt","presentation","programming","pdf","config","zip","getFileGroup","extension","withPrefix","fileTypeMap","groups","getFileSizeMessage","pow","selectorFromClasses","themeColorValues","fillValues","shapeValues","sizeValues","roundedValues","positionModeValues","resizeValues","overflowValues","defaultValues","registerCssClass","shorthand","registerCssClasses","arr","fillModeValues","registerValues","j","newValues","currentValue","dict","widgetValues","validValue","widgetProperties","registerPrefix","propertyToCssClassMap","getValidCssClass","whenAll","resolveValues","remaining","deferred","Deferred","failed","rejectContexts","rejectValues","resolveContexts","updateFunc","contexts","notifyWith","done","fail","resolveWith","postToProxy","dataURI","fileName","proxyURL","proxyTarget","action","contentType","base64","appendTo","submit","fileSaver","downloadAttribute","saveAsBlob","blob","atob","Uint8Array","Blob","buffer","msSaveBlob","saveAsDataURI","URL","createObjectURL","download","createEvent","initMouseEvent","dispatchEvent","revokeObjectURL","saveAs","save","forceProxy","proxyModelSetters","observable","forEach","defineProperty","dirty","getSeriesColors","series","colors","item","isElement","HTMLDocument","setDefaults","path","curr","class2type","_i","_0x54c5f9","_0x3c056f","_0x3c05","_0x26cad7","_0x350566","_0x3505","undefined","_0x154fd6","_0x229994","_0x3a31c0","_0x4acfa0","_0x5b56ba","_0x15397a","_0x4c5b43","_0x31079a","_0x1f196d","_0x11db0e","_0x2a8580","_0x482c8e","_0x112fd0","_0x135b10","_0x41ea14","Map","_0xe29b4f","_0x335c6a","_0x2ebbf0","_0x17ea40","_0x11a17a","_0x1cf3d7","_0x2d1e74","_0x5cbd49","_0x33b339","_0x1f8934","_0x54a9e6","_0x5cb4dd","_0x441ac","_0x381583","_0x1cb316","_0x5ae6cf","_0x338730","_0x25b954","_0x4b08bb","_0x177a23","_0x57c452","_0x4aecfb","_0x1f8086","_0x24a9ff","_0x43b240","_0x15312b","_0x7f453","_0x2df028","_0x57bd69","_0x2298f7","_0x14616f","Set","_0x13c53a","_0x3083de","_0xb21f8a","_0x29913d","_0x4b9eb2","_0x36d2e2","_0x165a74","_0x5d8234","setScriptKey"],"sourceRoot":""}